refactor to OOP