OOP Refactor