Creating a pull request just so I can leave comments

Seriously, this is many changes, batched up in part for cleanliness.