More and more tests
Throw more useful error objects
Fix so many things...