Refactor, make this OOP