Coverted to OOP