add error handling function