refactoring with