adding makefiles and some OOP