domain model implemented