exercise 2.16.