Refactoring OOP