Exercise 3.24
First cut of Chapter 3.5