OOP abstract and interface