decoupling persistence logic from business logic