Code review!

@maryrosecook and I spent some part of (by which I mean most of) the day reviewing and refactoring this. It was a lot of fun!

Some of these changes are pretty big, so please feel free to grab either one of us if you want to talk through it.