chapter 3: exercise 29