Refactoring and more Object Oriented
Merge conflict resolves