Refactored CollectionDAO for better API using abstract class instead of trait