Note: This is a quick-and-dirty implementation of some of the book's contents. I did not spend a lot of time testing this code or writing comments for it. I do not recommend using this as the basis for anything. This is certainly not the best way to do any of this...