exercise 3.3
exercise 3.4
exercise 3.7
exercise 3.8