Merging Refactoring object oriented branch into master