all exceptions are handled through error_response