exercise 2.18 reverse