Adding the implementation of Collection, this caused some disturbance and decided to rename the generic collection object to GenericCollection to avoid confusion with the Collection api method