improved domain model