Added Exercise 1.21 to 1.28 and refactored a lot of things.