decoupling model from persistence and schema