Improved test coverage.
Improve test coverage.
Remove data races.
Clean up code.
Clean up data races.
Add travis config, update docs.