exercise 4.12-4.13
exercise 4.16
exercise 4.17