solve exercise 18.28