through 1.8
exercise 1.10