moving declaration, because I can
adding assertions for the greater good
small fixes, new test
changes to errors, new tests
changing names
total error message overhaul