Exercise 3.19, INCREDIBLY CHEAPLY
added some notes