improve error tolerance