solve exercise 30.15