cleanup, error tolerance