enhance catching erros