exercise 2.75
exercises 2.78 through 80