2. refactoring