OOP refactor