refactoring domain object strategy