Basics of Software Development - Episode 3 Inheritance, interfaces and polymorphism