Code review!

Hey Pieter!

I'd like to dig further into the JS, as I have some ideas as to how it could be more clear, but this is some of the stuff I took a look at today. I recommend going through it commit-by-commit, and _not_ actually merging it, but rather making the changes yourself if you like them :). I tried to be descriptive in my commit messages, but if anything at all is unclear, feel free to ask me about it!

Another reason not to merge: I'll hopefully have more for you tomorrow, and I'll push to this branch.

- Zach