Refactored Exceptions

Fixes #65 I hope. We'll have to wait for travis to confirm I did this right because I haven't run the test suite locally.