1. homework
2. refactoring