OOP all the stuff i guess