refactoring program