better cancel behavior