adding OOP