domain model should be decoupled from persistence