CRUD abstraction layer