add exercise 3.16-3.20