1. version all in one file no refactoring, 2. version all in one file refactored in methods, 3. version refactored in Classes