abstract collection/models layer on top of different databases or protocols