more tolerant to err