Added more OOP to it