add when_failed, when_changed, and extended when_set/unset