bunch of stuff

see the commit messages for what's going on here

this closes:
- #164
- #167
- #178
- #184
- #172

~~and sets up support for Travis CI, which we need to enable.~~ Travis CI is enabled