always return 0 from cleanup, it is a good-faith attempt