An exercise in Inheritence, a bit of abstract classes and some Java 8