added abstract class for collection