actually implement reset() properly