improved reset()