Mostly operational

Differs from the book in some places. I also disagree with how they had
me encapsulate the classes, however, as this is a tutorial, I went along
with it