revise error function