Moved error reporting to it's own class so we can make it persistantly keep track of reported errors