The current set of collection classes were developed as functionality was needed, there is the necessity to refactor these classes, adding common functionality in the base class abstract methods and focus engine specific functionality in the concrete classes.