use fast_variant in coroutine_observable