Implementing the domain model