better error tolerance