through exercise 2.11
exercises 2.17 & 2.18