Oop refactor