implented inheritance, abstraction, polymorphic arrays and interfaces