Starting with a concrete class
Embedding multiple bicycle types
Misapplying inheritence
Creating an abstract superclass
Promoting abstract behavior
Separating abstract from concrete
Using the template method pattern
Implementing every template method
Extract hard-coded values and promote them to super class
Decoupling subclasess using hook messages