finish refactor for OOP