add extra error handling