OOP version of the project