Finished Chapter 21 though I have many TODOs to fix