exercise 2.28 completed