Feature/nonobvious refactor

Refactored to use https://github.com/eykd/nonobvious

Also, 100% test coverage! Not that it means there aren't bugs... :grin: