Refactored DTO's and domain objects to reduce duplication.