Refactoring continues #3
Refactoring continues #3.1
Refactoring continues #3.2
Refactoring continues #3.3
Refactoring continues #3.4