Adding building

This pull request is for visibility, since this diff is almost certainly not going to readable when I'm done.  Sorry, just a lot of changes that need to happen.

__DO NOT MERGE UNTIL:__
- [x] it's time to merge