Refactored the domain model into multiple objects