starting on db abstraction