refactoring++