add generic error handling