better error handling, show the user what went wrong