refactoringddd