exercises 2.21 through 2.28