exercise 3, some discussion on superclasses
exercise 4