source code refactoring