inheritance, interfaces, polymorphism