diff --git a/pallets/distance/src/lib.rs b/pallets/distance/src/lib.rs
index b9720a57f98fd4b9bcfcb81303d7a94134e7a7df..fc5737ea9095854df10c165e72fa11c164433565 100644
--- a/pallets/distance/src/lib.rs
+++ b/pallets/distance/src/lib.rs
@@ -126,7 +126,7 @@ pub mod pallet {
         _,
         Twox64Concat,
         <T as pallet_certification::Config<I>>::IdtyIndex,
-        DistanceStatus,
+        (<T as frame_system::Config>::AccountId, DistanceStatus),
         OptionQuery,
     >;
 
@@ -242,7 +242,7 @@ pub mod pallet {
         pub fn force_set_distance_status(
             origin: OriginFor<T>,
             identity: <T as pallet_certification::Config<I>>::IdtyIndex,
-            status: Option<DistanceStatus>,
+            status: Option<(<T as frame_system::Config>::AccountId, DistanceStatus)>,
         ) -> DispatchResult {
             ensure_root(origin)?;
 
@@ -322,7 +322,10 @@ pub mod pallet {
                         .try_push((idty_index, median::MedianAcc::new()))
                         .map_err(|_| Error::<T, I>::QueueFull)?;
 
-                    IdentityDistanceStatus::<T, I>::insert(idty_index, DistanceStatus::Pending);
+                    IdentityDistanceStatus::<T, I>::insert(
+                        idty_index,
+                        (who, DistanceStatus::Pending),
+                    );
 
                     DistanceStatusExpireOn::<T, I>::mutate(
                         pallet_session::CurrentIndex::<T>::get() + T::ResultExpiration::get(),
@@ -385,32 +388,36 @@ pub mod pallet {
                 100, //<T as Config<I>>::MaxEvaluatorsPerSession,
             > = Pallet::<T, I>::take_current_pool(index);
             for (idty, median_acc) in current_pool.0.into_iter() {
-                let Some(idty_value) =
-                    pallet_identity::Identities::<T>::get(idty) else {continue};
-                let account_id = idty_value.owner_key;
                 if let Some(median_result) = median_acc.get_median() {
                     let median = match median_result {
                         MedianResult::One(m) => m,
                         MedianResult::Two(m1, m2) => m1 + (m2 - m1) / 2, // Avoid overflow (since max is 1)
                     };
                     if median >= T::MinAccessibleReferees::get() {
-                        IdentityDistanceStatus::<T, I>::mutate(idty, |status| {
-                            *status = Some(DistanceStatus::Valid)
+                        IdentityDistanceStatus::<T, I>::mutate(idty, |entry| {
+                            entry.as_mut().map(|(account_id, status)| {
+                                T::Currency::unreserve(
+                                    account_id,
+                                    <T as Config<I>>::EvaluationPrice::get(),
+                                );
+                                *status = DistanceStatus::Valid;
+                            })
                         });
-                        T::Currency::unreserve(
-                            &account_id,
-                            <T as Config<I>>::EvaluationPrice::get(),
-                        );
-                    } else {
-                        IdentityDistanceStatus::<T, I>::remove(idty);
+                    } else if let Some((account_id, _status)) =
+                        IdentityDistanceStatus::<T, I>::take(idty)
+                    {
                         <T as Config<I>>::Currency::slash_reserved(
                             &account_id,
                             <T as Config<I>>::EvaluationPrice::get(),
                         );
                     }
-                } else {
-                    IdentityDistanceStatus::<T, I>::remove(idty);
-                    T::Currency::unreserve(&account_id, <T as Config<I>>::EvaluationPrice::get());
+                } else if let Some((account_id, _status)) =
+                    IdentityDistanceStatus::<T, I>::take(idty)
+                {
+                    <T as Config<I>>::Currency::unreserve(
+                        &account_id,
+                        <T as Config<I>>::EvaluationPrice::get(),
+                    );
                 }
             }
             Weight::zero()
diff --git a/resources/metadata.scale b/resources/metadata.scale
index 50671f6abfc29105bbfd0d68104bc525fde27b4f..cff4a76115715c21574516f2db1f6534fc94a9c8 100644
Binary files a/resources/metadata.scale and b/resources/metadata.scale differ
diff --git a/runtime/common/src/providers.rs b/runtime/common/src/providers.rs
index 09010882b47df6640c732760590a0c391022616d..cab5f76fa55cb9a623db44255cfec0c96d4c16db 100644
--- a/runtime/common/src/providers.rs
+++ b/runtime/common/src/providers.rs
@@ -117,7 +117,9 @@ where
     I: 'static,
 {
     fn is_distance_ok(idty_id: &<T as pallet_certification::Config<I>>::IdtyIndex) -> bool {
-        pallet_distance::Pallet::<T, I>::identity_distance_status(idty_id)
-            == Some(pallet_distance::DistanceStatus::Valid)
+        matches!(
+            pallet_distance::Pallet::<T, I>::identity_distance_status(idty_id),
+            Some((_, pallet_distance::DistanceStatus::Valid))
+        )
     }
 }
diff --git a/runtime/gdev/tests/integration_tests.rs b/runtime/gdev/tests/integration_tests.rs
index edf2007d79928bf0649608086f6e09e13ac61286..47f7eef77afc2609f5e0ab99d0c78161fee7deac 100644
--- a/runtime/gdev/tests/integration_tests.rs
+++ b/runtime/gdev/tests/integration_tests.rs
@@ -346,7 +346,10 @@ fn test_ud_claimed_membership_on_and_off() {
         assert_ok!(Distance::force_set_distance_status(
             frame_system::RawOrigin::Root.into(),
             1,
-            Some(pallet_distance::DistanceStatus::Valid)
+            Some((
+                AccountKeyring::Alice.to_account_id(),
+                pallet_distance::DistanceStatus::Valid
+            ))
         ));
         assert_ok!(Membership::claim_membership(
             frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into()
@@ -669,7 +672,10 @@ fn test_validate_new_idty_after_few_uds() {
             assert_ok!(Distance::force_set_distance_status(
                 frame_system::RawOrigin::Root.into(),
                 5,
-                Some(pallet_distance::DistanceStatus::Valid)
+                Some((
+                    AccountKeyring::Bob.to_account_id(),
+                    pallet_distance::DistanceStatus::Valid
+                ))
             ));
             assert_ok!(Identity::validate_identity(
                 frame_system::RawOrigin::Signed(AccountKeyring::Bob.to_account_id()).into(),
@@ -727,7 +733,10 @@ fn test_claim_memberhsip_after_few_uds() {
             assert_ok!(Distance::force_set_distance_status(
                 frame_system::RawOrigin::Root.into(),
                 5,
-                Some(pallet_distance::DistanceStatus::Valid)
+                Some((
+                    AccountKeyring::Eve.to_account_id(),
+                    pallet_distance::DistanceStatus::Valid
+                ))
             ));
             assert_ok!(Membership::claim_membership(
                 frame_system::RawOrigin::Signed(AccountKeyring::Eve.to_account_id()).into(),