advantages and refactoring