Updated to OOP