Classes restructured in order to simplify the solution
Refactoring and cleaning