add auto reset function