Initial version for code review

Because the initial development was occurring on master, there isn't an easy way to do code review. This pull exists solely as a means to code review the entire project. Any changes will be put straight into master and this pull will be closed and the `initial-code-review` branch deleted. All future development will use pull requests into master to facilitate code review.
> I agree. I changed it to assertEquals because the test fails when run in travis. I'll see if I can track down what the issue is.

Fixed with 8c16cdc347940f75ac0479b2f96fb50599d152ff. It passes just fine now so I'm not sure what was going on before.