Designing the domain model and the service layer