exercise 2.29 completed