refactoring domain objects