Reworked error reporting to just use implicit typeclasses