optimize error handling