exercise 4.20
exercise 4.21