first 3 sections of Making Our Own Types and Typeclasses