exercise 2.58b