refactor exception, implement nicer error message display
update spec and CHANGES