exercise 1.8
exercise 1.8 with local bindings to hide private implementation methods
exercise 1.11