Exercise 2.18
Exercise 2.19
Exercise 2.20