Improve Error Reporting

THe error parsing / detection can be a lot simpler now the API is consistent
in what it returns