domain refactored