1. refactoring