diff --git a/Cargo.lock b/Cargo.lock
index 0da887cdabde0f3c4a88734abff546b594f9c01b..7ec7e9a8b543f62cc5666c001330e6850d8fcf8f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1472,6 +1472,7 @@ dependencies = [
  "pallet-collective",
  "pallet-distance",
  "pallet-duniter-account",
+ "pallet-duniter-wot",
  "pallet-grandpa",
  "pallet-identity",
  "pallet-im-online",
@@ -6412,7 +6413,6 @@ dependencies = [
  "frame-benchmarking",
  "frame-support",
  "frame-system",
- "impl-trait-for-tuples",
  "parity-scale-codec",
  "scale-info",
  "serde",
@@ -10365,7 +10365,6 @@ name = "sp-membership"
 version = "1.0.0"
 dependencies = [
  "frame-support",
- "impl-trait-for-tuples",
  "parity-scale-codec",
  "scale-info",
  "serde",
diff --git a/Cargo.toml b/Cargo.toml
index ff092519e583cd9b84900b763a5967fab1e828b9..1a2dc0b34f1dd0a5451d3a3507ccf014e14e7bcb 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -63,7 +63,6 @@ graphql_client = { version = "0.10.0" }
 bs58 = { version = "0.5.0", default-features = false }
 placeholder = { version = "1.1.3", default-features = false }
 getrandom = { version = "0.2.12", default-features = false }
-impl-trait-for-tuples = { version = "0.2.2", default-features = false }
 clap = { version = "4.4.18" }
 clap_complete = { version = "4.4.10" }
 reqwest = { version = "0.11.11", default-features = false }
diff --git a/pallets/certification/src/benchmarking.rs b/pallets/certification/src/benchmarking.rs
index 7fa0534d5afa95819aacb5b1d522a83d8f20fe4b..3e47370a09a946b4bbd4ef7c4a95559fc93ee1c3 100644
--- a/pallets/certification/src/benchmarking.rs
+++ b/pallets/certification/src/benchmarking.rs
@@ -47,6 +47,22 @@ mod benchmarks {
         Ok(())
     }
 
+    #[benchmark]
+    fn do_add_cert_checked() -> Result<(), BenchmarkError> {
+        let issuer: T::IdtyIndex = 1.into();
+        let receiver: T::IdtyIndex = 2.into();
+        Pallet::<T>::del_cert(RawOrigin::Root.into(), issuer, receiver)?;
+        frame_system::pallet::Pallet::<T>::set_block_number(T::CertPeriod::get());
+
+        #[block]
+        {
+            Pallet::<T>::do_add_cert_checked(issuer, receiver, true)?;
+        }
+
+        assert_has_event::<T>(Event::<T>::CertAdded { issuer, receiver }.into());
+        Ok(())
+    }
+
     #[benchmark]
     fn add_cert() -> Result<(), BenchmarkError> {
         let issuer: T::IdtyIndex = 1.into();
@@ -82,7 +98,7 @@ mod benchmarks {
     }
 
     #[benchmark]
-    fn del_cert() -> Result<(), BenchmarkError> {
+    fn del_cert() {
         let issuer: T::IdtyIndex = 1.into();
         let receiver: T::IdtyIndex = 2.into();
         // try to add cert if missing, else ignore
@@ -100,7 +116,6 @@ mod benchmarks {
             }
             .into(),
         );
-        Ok(())
     }
 
     #[benchmark]
diff --git a/pallets/certification/src/lib.rs b/pallets/certification/src/lib.rs
index 88cdf0c29eb380a495eaef0cb5f8baff799715a5..b2061d396db5ddaa71c2fd01e951e2490cada2ce 100644
--- a/pallets/certification/src/lib.rs
+++ b/pallets/certification/src/lib.rs
@@ -331,9 +331,7 @@ pub mod pallet {
             idty_index: T::IdtyIndex,
         ) -> DispatchResultWithPostInfo {
             ensure_root(origin)?;
-            for (issuer, _) in CertsByReceiver::<T>::get(idty_index) {
-                Self::do_remove_cert(issuer, idty_index, None);
-            }
+            let _ = Self::do_remove_all_certs_received_by(idty_index);
             Ok(().into())
         }
     }
@@ -341,6 +339,14 @@ pub mod pallet {
     // INTERNAL FUNCTIONS //
 
     impl<T: Config> Pallet<T> {
+        pub fn do_remove_all_certs_received_by(idty_index: T::IdtyIndex) -> Weight {
+            let mut weight = T::DbWeight::get().reads_writes(1, 0);
+            for (issuer, _) in CertsByReceiver::<T>::get(idty_index) {
+                weight = weight.saturating_add(Self::do_remove_cert(issuer, idty_index, None));
+            }
+            weight
+        }
+
         /// get issuer index from origin
         pub fn origin_to_index(origin: OriginFor<T>) -> Result<T::IdtyIndex, DispatchError> {
             let who = ensure_signed(origin)?;
@@ -349,6 +355,7 @@ pub mod pallet {
 
         /// add a certification without checks
         // this is used on identity creation to add the first certification
+        // The weight is approximated on the worst path.
         pub fn do_add_cert_checked(
             issuer: T::IdtyIndex,
             receiver: T::IdtyIndex,
@@ -362,7 +369,6 @@ pub mod pallet {
             };
 
             Self::try_add_cert(block_number, issuer, receiver)?;
-
             Ok(().into())
         }
 
@@ -454,15 +460,18 @@ pub mod pallet {
         // (run at on_initialize step)
         fn prune_certifications(block_number: BlockNumberFor<T>) -> Weight {
             // See on initialize for the overhead weight accounting
-            let mut total_weight = Weight::zero();
+            let mut weight = Weight::zero();
 
             if let Some(certs) = CertsRemovableOn::<T>::take(block_number) {
                 for (issuer, receiver) in certs {
-                    total_weight += Self::do_remove_cert(issuer, receiver, Some(block_number));
+                    weight = weight.saturating_add(Self::do_remove_cert(
+                        issuer,
+                        receiver,
+                        Some(block_number),
+                    ));
                 }
             }
-
-            total_weight
+            weight
         }
 
         /// perform the certification removal
@@ -512,7 +521,6 @@ pub mod pallet {
                     receiver,
                     expiration: block_number_opt.is_some(),
                 });
-                // Should always return Weight::zero
                 T::OnRemovedCert::on_removed_cert(
                     issuer,
                     issuer_issued_count,
diff --git a/pallets/distance/src/mock.rs b/pallets/distance/src/mock.rs
index b880b29cf7b72b1ff528722614d909bbae8e9904..86337cce6a5b40760195e5377a47a7c7ed8c5cb6 100644
--- a/pallets/distance/src/mock.rs
+++ b/pallets/distance/src/mock.rs
@@ -236,7 +236,8 @@ impl pallet_identity::Config for Test {
     type IdtyData = ();
     type IdtyIndex = u32;
     type IdtyNameValidator = IdtyNameValidatorTestImpl;
-    type OnIdtyChange = ();
+    type OnNewIdty = ();
+    type OnRemoveIdty = ();
     type RuntimeEvent = RuntimeEvent;
     type Signature = TestSignature;
     type Signer = UintAuthorityId;
diff --git a/pallets/duniter-wot/src/lib.rs b/pallets/duniter-wot/src/lib.rs
index 9985c6822cea6b38e1f258a5dd5c7be544ca9f03..0abf864d596aca0f4e9b26a882f3e96d6e085c53 100644
--- a/pallets/duniter-wot/src/lib.rs
+++ b/pallets/duniter-wot/src/lib.rs
@@ -32,7 +32,7 @@ pub use pallet::*;
 
 use frame_support::pallet_prelude::*;
 use pallet_certification::traits::SetNextIssuableOn;
-use pallet_identity::{IdtyEvent, IdtyStatus};
+use pallet_identity::IdtyStatus;
 use pallet_membership::MembershipRemovalReason;
 
 type IdtyIndex = u32;
@@ -104,28 +104,34 @@ pub mod pallet {
     }
 }
 
-// implement identity call checks
+/// Implementing identity call allowance check for the pallet.
 impl<AccountId, T: Config> pallet_identity::traits::CheckIdtyCallAllowed<T> for Pallet<T>
 where
     T: frame_system::Config<AccountId = AccountId> + pallet_membership::Config,
 {
-    // identity creation checks
+    /// Checks if identity creation is allowed.
+    /// This implementation checks the following:
+    ///
+    /// - Whether the identity has the right to create an identity.
+    /// - Whether the issuer can emit a certification.
+    /// - Whether the issuer respect creation period.
     fn check_create_identity(creator: IdtyIndex) -> Result<(), DispatchError> {
         let cert_meta = pallet_certification::Pallet::<T>::idty_cert_meta(creator);
-        // perform all checks
-        // 1. check that identity has the right to create an identity
-        // identity can be member with 5 certifications and still not reach identity creation threshold which could be higher (6, 7...)
+
+        // 1. Check that the identity has the right to create an identity
+        // Identity can be a member with 5 certifications and still not reach the identity creation threshold, which could be higher (6, 7...)
         ensure!(
             cert_meta.received_count >= T::MinCertForCreateIdtyRight::get(),
             Error::<T>::NotEnoughReceivedCertsToCreateIdty
         );
-        // 2. check that issuer can emit one more certification
-        // (this is only a partial check)
+
+        // 2. Check that the issuer can emit one more certification (partial check)
         ensure!(
             cert_meta.issued_count < T::MaxByIssuer::get(),
             Error::<T>::MaxEmittedCertsReached
         );
-        // 3. check that issuer respects certification creation period
+
+        // 3. Check that the issuer respects certification creation period
         ensure!(
             cert_meta.next_issuable_on <= frame_system::pallet::Pallet::<T>::block_number(),
             Error::<T>::IdtyCreationPeriodNotRespected
@@ -134,16 +140,18 @@ where
     }
 }
 
-// implement cert call checks
+/// Implementing certification allowance check for the pallet.
 impl<T: Config> pallet_certification::traits::CheckCertAllowed<IdtyIndex> for Pallet<T> {
-    // check the following:
-    // - issuer has identity
-    // - issuer identity is member
-    // - receiver has identity
-    // - receiver identity is confirmed and not revoked
+    /// Checks if certification is allowed.
+    /// This implementation checks the following:
+    ///
+    /// - Whether the issuer has an identity.
+    /// - Whether the issuer's identity is a member.
+    /// - Whether the receiver has an identity.
+    /// - Whether the receiver's identity is confirmed and not revoked.
     fn check_cert_allowed(issuer: IdtyIndex, receiver: IdtyIndex) -> Result<(), DispatchError> {
-        // issuer checks
-        // ensure issuer is member
+        // Issuer checks
+        // Ensure issuer is a member
         let issuer_data =
             pallet_identity::Pallet::<T>::identity(issuer).ok_or(Error::<T>::IdtyNotFound)?;
         ensure!(
@@ -151,8 +159,8 @@ impl<T: Config> pallet_certification::traits::CheckCertAllowed<IdtyIndex> for Pa
             Error::<T>::IssuerNotMember
         );
 
-        // receiver checks
-        // ensure receiver identity is confirmed and not revoked
+        // Receiver checks
+        // Ensure receiver identity is confirmed and not revoked
         let receiver_data =
             pallet_identity::Pallet::<T>::identity(receiver).ok_or(Error::<T>::IdtyNotFound)?;
         ensure!(
@@ -165,10 +173,14 @@ impl<T: Config> pallet_certification::traits::CheckCertAllowed<IdtyIndex> for Pa
     }
 }
 
-// implement membership call checks
+/// Implementing membership operation checks for the pallet.
 impl<T: Config> sp_membership::traits::CheckMembershipOpAllowed<IdtyIndex> for Pallet<T> {
+    /// This implementation checks the following:
+    ///
+    /// - Whether the identity's status is unvalidated or not a member.
+    /// - The count of certifications associated with the identity.
     fn check_add_membership(idty_index: IdtyIndex) -> Result<(), DispatchError> {
-        // check identity status
+        // Check identity status
         let idty_value =
             pallet_identity::Pallet::<T>::identity(idty_index).ok_or(Error::<T>::IdtyNotFound)?;
         ensure!(
@@ -176,99 +188,94 @@ impl<T: Config> sp_membership::traits::CheckMembershipOpAllowed<IdtyIndex> for P
                 || idty_value.status == IdtyStatus::NotMember,
             Error::<T>::TargetStatusInvalid
         );
-        // check cert count
+
+        // Check certificate count
         check_cert_count::<T>(idty_index)?;
         Ok(())
     }
 
-    // membership renewal is only possible when identity is member (otherwise it should claim again)
+    /// This implementation checks the following:
+    ///
+    /// - Whether the identity's status is member.
+    ///
+    /// Note: There is no need to check certification count since losing certifications makes membership expire.
+    /// Membership renewal is only possible when identity is member.
     fn check_renew_membership(idty_index: IdtyIndex) -> Result<(), DispatchError> {
-        // check identity status
         let idty_value =
             pallet_identity::Pallet::<T>::identity(idty_index).ok_or(Error::<T>::IdtyNotFound)?;
         ensure!(
             idty_value.status == IdtyStatus::Member,
             Error::<T>::TargetStatusInvalid
         );
-        // no need to check certification count since loosing certifications make membership expire
         Ok(())
     }
 }
 
-// implement membership event handler
-impl<T: Config> sp_membership::traits::OnEvent<IdtyIndex> for Pallet<T>
+/// Implementing membership event handling for the pallet.
+impl<T: Config> sp_membership::traits::OnNewMembership<IdtyIndex> for Pallet<T>
 where
     T: pallet_membership::Config,
 {
-    fn on_event(membership_event: &sp_membership::Event<IdtyIndex>) {
-        match membership_event {
-            sp_membership::Event::<IdtyIndex>::MembershipAdded(idty_index) => {
-                // when main membership is acquired, tell identity
-                // (only used on first membership acquiry)
-                pallet_identity::Pallet::<T>::membership_added(*idty_index);
-            }
-            sp_membership::Event::<IdtyIndex>::MembershipRemoved(idty_index) => {
-                // when main membership is lost, tell identity
-                pallet_identity::Pallet::<T>::membership_removed(*idty_index);
-            }
-            sp_membership::Event::<IdtyIndex>::MembershipRenewed(_) => {}
-        }
+    /// This implementation notifies the identity pallet when a main membership is acquired.
+    /// It is only used on the first membership acquisition.
+    fn on_created(idty_index: &IdtyIndex) {
+        pallet_identity::Pallet::<T>::membership_added(*idty_index);
     }
+
+    fn on_renewed(_idty_index: &IdtyIndex) {}
 }
 
-// implement identity event handler
-impl<T: Config> pallet_identity::traits::OnIdtyChange<T> for Pallet<T> {
-    fn on_idty_change(idty_index: IdtyIndex, idty_event: &IdtyEvent<T>) {
-        match idty_event {
-            // identity just has been created, a cert must be added
-            IdtyEvent::Created { creator, .. } => {
-                if let Err(e) = <pallet_certification::Pallet<T>>::do_add_cert_checked(
-                    *creator, idty_index, true,
-                ) {
-                    sp_std::if_std! {
-                        println!("fail to force add cert: {:?}", e)
-                    }
-                }
-            }
-            // we could split this event in removed / revoked:
-            // if identity is revoked keep it
-            // if identity is removed also remove certs
-            IdtyEvent::Removed { status } => {
-                // try remove membership in any case
-                <pallet_membership::Pallet<T>>::do_remove_membership(
-                    idty_index,
-                    MembershipRemovalReason::Revoked,
-                );
-
-                // only remove certs if identity is unvalidated
-                match status {
-                    IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => {
-                        if let Err(e) =
-                            <pallet_certification::Pallet<T>>::remove_all_certs_received_by(
-                                frame_system::Origin::<T>::Root.into(),
-                                idty_index,
-                            )
-                        {
-                            sp_std::if_std! {
-                                println!("fail to remove certs received by some idty: {:?}", e)
-                            }
-                        }
-                    }
-                    IdtyStatus::Revoked => {}
-                    IdtyStatus::Member | IdtyStatus::NotMember => {
-                        sp_std::if_std! {
-                            println!("removed non-revoked identity: {:?}", idty_index);
-                        }
-                    }
-                }
+/// Implementing membership removal event handling for the pallet.
+impl<T: Config> sp_membership::traits::OnRemoveMembership<IdtyIndex> for Pallet<T>
+where
+    T: pallet_membership::Config,
+{
+    /// This implementation notifies the identity pallet when a main membership is lost.
+    fn on_removed(idty_index: &IdtyIndex) -> Weight {
+        pallet_identity::Pallet::<T>::membership_removed(*idty_index)
+    }
+}
+
+/// Implementing the identity event handler for the pallet.
+impl<T: Config> pallet_identity::traits::OnNewIdty<T> for Pallet<T> {
+    /// This implementation adds a certificate when a new identity is created.
+    fn on_created(idty_index: &IdtyIndex, creator: &IdtyIndex) {
+        if let Err(e) =
+            <pallet_certification::Pallet<T>>::do_add_cert_checked(*creator, *idty_index, true)
+        {
+            sp_std::if_std! {
+                println!("fail to force add cert: {:?}", e)
             }
         }
     }
 }
 
-// implement certification event handlers
-// new cert handler
+/// Implementing identity removal event handling for the pallet.
+impl<T: Config> pallet_identity::traits::OnRemoveIdty<T> for Pallet<T> {
+    /// This implementation removes both membership and certificates associated with the identity.
+    fn on_removed(idty_index: &IdtyIndex) -> Weight {
+        let mut weight = Self::on_revoked(idty_index);
+        weight = weight.saturating_add(
+            <pallet_certification::Pallet<T>>::do_remove_all_certs_received_by(*idty_index),
+        );
+        weight
+    }
+
+    /// This implementation removes membership only.
+    fn on_revoked(idty_index: &IdtyIndex) -> Weight {
+        let mut weight = Weight::zero();
+        weight = weight.saturating_add(<pallet_membership::Pallet<T>>::do_remove_membership(
+            *idty_index,
+            MembershipRemovalReason::Revoked,
+        ));
+        weight
+    }
+}
+
+/// Implementing the certification event handler for the pallet.
 impl<T: Config> pallet_certification::traits::OnNewcert<IdtyIndex> for Pallet<T> {
+    /// This implementation checks if the receiver has received enough certificates to be able to issue certificates,
+    /// and applies the first issuable if the condition is met.
     fn on_new_cert(
         _issuer: IdtyIndex,
         _issuer_issued_count: u32,
@@ -281,8 +288,10 @@ impl<T: Config> pallet_certification::traits::OnNewcert<IdtyIndex> for Pallet<T>
     }
 }
 
-// remove cert handler
+/// Implementing the certification removal event handler for the pallet.
 impl<T: Config> pallet_certification::traits::OnRemovedCert<IdtyIndex> for Pallet<T> {
+    /// This implementation checks if the receiver has received fewer certificates than required for membership,
+    /// and if so, and the receiver is a member, it expires the receiver's membership.
     fn on_removed_cert(
         _issuer: IdtyIndex,
         _issuer_issued_count: u32,
@@ -293,19 +302,24 @@ impl<T: Config> pallet_certification::traits::OnRemovedCert<IdtyIndex> for Palle
         if receiver_received_count < T::MinCertForMembership::get()
             && pallet_membership::Pallet::<T>::is_member(&receiver)
         {
-            // expire receiver membership
+            // Expire receiver membership
             <pallet_membership::Pallet<T>>::do_remove_membership(
                 receiver,
                 MembershipRemovalReason::NotEnoughCerts,
-            )
+            );
         }
     }
 }
 
-/// valid distance status handler
+/// Implementing the valid distance status event handler for the pallet.
 impl<T: Config + pallet_distance::Config> pallet_distance::traits::OnValidDistanceStatus<T>
     for Pallet<T>
 {
+    /// This implementation handles different scenarios based on the identity's status:
+    ///
+    /// - For `Unconfirmed` or `Revoked` identities, no action is taken.
+    /// - For `Unvalidated` or `NotMember` identities, an attempt is made to add membership.
+    /// - For `Member` identities, an attempt is made to renew membership.
     fn on_valid_distance_status(idty_index: IdtyIndex) {
         if let Some(identity) = pallet_identity::Identities::<T>::get(idty_index) {
             match identity.status {
@@ -356,15 +370,19 @@ impl<T: Config + pallet_distance::Config> pallet_distance::traits::OnValidDistan
     }
 }
 
-/// distance evaluation request allowed check
+/// Implementing the request distance evaluation check for the pallet.
 impl<T: Config + pallet_distance::Config> pallet_distance::traits::CheckRequestDistanceEvaluation<T>
     for Pallet<T>
 {
+    /// This implementation performs the following checks:
+    ///
+    /// - Membership renewal anti-spam check: Ensures that membership renewal requests respect the anti-spam period.
+    /// - Certificate count check: Ensures that the identity has a sufficient number of certificates.
     fn check_request_distance_evaluation(idty_index: IdtyIndex) -> Result<(), DispatchError> {
-        // check membership renewal antispam
+        // Check membership renewal anti-spam
         let maybe_membership_data = pallet_membership::Pallet::<T>::membership(idty_index);
         if let Some(membership_data) = maybe_membership_data {
-            // if membership data exists, this is for a renewal, apply antispam
+            // If membership data exists, this is for a renewal, apply anti-spam
             ensure!(
                 // current_block > expiration block - membership period + renewal period
                 membership_data.expire_on
@@ -374,13 +392,13 @@ impl<T: Config + pallet_distance::Config> pallet_distance::traits::CheckRequestD
                 Error::<T>::MembershipRenewalPeriodNotRespected
             );
         };
-        // check cert count
+        // Check certificate count
         check_cert_count::<T>(idty_index)?;
         Ok(())
     }
 }
 
-/// check certification count
+/// Checks the certificate count for an identity.
 fn check_cert_count<T: Config>(idty_index: IdtyIndex) -> Result<(), DispatchError> {
     let idty_cert_meta = pallet_certification::Pallet::<T>::idty_cert_meta(idty_index);
     ensure!(
diff --git a/pallets/duniter-wot/src/mock.rs b/pallets/duniter-wot/src/mock.rs
index c7be1ef5541523b46ebcc84629918232cd2b3ba3..0a442ac5d6ddb5840384c914abef1028b3a91092 100644
--- a/pallets/duniter-wot/src/mock.rs
+++ b/pallets/duniter-wot/src/mock.rs
@@ -124,7 +124,8 @@ impl pallet_identity::Config for Test {
     type IdtyData = ();
     type IdtyIndex = IdtyIndex;
     type IdtyNameValidator = IdtyNameValidatorTestImpl;
-    type OnIdtyChange = DuniterWot;
+    type OnNewIdty = DuniterWot;
+    type OnRemoveIdty = DuniterWot;
     type RuntimeEvent = RuntimeEvent;
     type Signature = TestSignature;
     type Signer = UintAuthorityId;
@@ -147,7 +148,8 @@ impl pallet_membership::Config for Test {
     type IdtyIdOf = IdentityIndexOf<Self>;
     type MembershipPeriod = MembershipPeriod;
     type MembershipRenewalPeriod = MembershipRenewalPeriod;
-    type OnEvent = DuniterWot;
+    type OnNewMembership = DuniterWot;
+    type OnRemoveMembership = DuniterWot;
     type RuntimeEvent = RuntimeEvent;
     type WeightInfo = ();
 }
diff --git a/pallets/identity/Cargo.toml b/pallets/identity/Cargo.toml
index 4cbd9dab004bf0df6b07c598437d7024e83a2e91..c62eaa2cc27b01629d44e80d31be52f7489fc924 100644
--- a/pallets/identity/Cargo.toml
+++ b/pallets/identity/Cargo.toml
@@ -52,7 +52,6 @@ duniter-primitives = { workspace = true }
 frame-benchmarking = { workspace = true, optional = true }
 frame-support = { workspace = true }
 frame-system = { workspace = true }
-impl-trait-for-tuples = { workspace = true }
 scale-info = { workspace = true, features = ["derive"] }
 serde = { workspace = true, features = ["derive"] }
 sp-core = { workspace = true }
diff --git a/pallets/identity/src/benchmarking.rs b/pallets/identity/src/benchmarking.rs
index e013a2ac4ce3a05ccea869cbcb3d882d7baff722..f693a5de7120dff1feeb6f1b1e0edfa7640d5a94 100644
--- a/pallets/identity/src/benchmarking.rs
+++ b/pallets/identity/src/benchmarking.rs
@@ -429,6 +429,81 @@ mod benchmarks {
         );
     }
 
+    #[benchmark]
+    fn do_remove_identity_handler() {
+        let idty_index: T::IdtyIndex = 1u32.into();
+        let new_identity: T::AccountId = account("Bob", 2, 1);
+        assert!(Identities::<T>::get(idty_index).is_some());
+        frame_system::Pallet::<T>::inc_sufficients(&new_identity);
+        Identities::<T>::mutate(idty_index, |id| {
+            if let Some(id) = id {
+                id.old_owner_key = Some((new_identity, BlockNumberFor::<T>::zero()));
+            }
+        });
+        assert!(Identities::<T>::get(idty_index)
+            .unwrap()
+            .old_owner_key
+            .is_some());
+
+        #[block]
+        {
+            T::OnRemoveIdty::on_removed(&idty_index);
+        }
+    }
+
+    #[benchmark]
+    fn membership_added() -> Result<(), BenchmarkError> {
+        let caller: T::AccountId = Identities::<T>::get(T::IdtyIndex::from(1u32))
+            .unwrap()
+            .owner_key;
+        let caller_origin: <T as frame_system::Config>::RuntimeOrigin =
+            RawOrigin::Signed(caller.clone()).into();
+        let owner_key: T::AccountId = account("new_identity", 2, 1);
+        let owner_key_origin: <T as frame_system::Config>::RuntimeOrigin =
+            RawOrigin::Signed(owner_key.clone()).into();
+        Pallet::<T>::create_identity(caller_origin.clone(), owner_key.clone())?;
+        let name = IdtyName("new_identity".into());
+        Pallet::<T>::confirm_identity(owner_key_origin.clone(), name.clone())?;
+        let idty_index = IdentityIndexOf::<T>::get(&owner_key).unwrap();
+        assert_ne!(
+            Identities::<T>::get(idty_index).unwrap().status,
+            IdtyStatus::Member
+        );
+
+        #[block]
+        {
+            Pallet::<T>::membership_added(idty_index);
+        }
+
+        assert_has_event::<T>(Event::<T>::IdtyValidated { idty_index }.into());
+        assert_eq!(
+            Identities::<T>::get(idty_index).unwrap().status,
+            IdtyStatus::Member
+        );
+        Ok(())
+    }
+
+    #[benchmark]
+    fn membership_removed() -> Result<(), BenchmarkError> {
+        let key: T::AccountId = account("new_identity", 2, 1);
+        let account: Account<T> = create_one_identity(key)?;
+        assert_eq!(
+            Identities::<T>::get(account.index).unwrap().status,
+            IdtyStatus::Member
+        );
+
+        #[block]
+        {
+            Pallet::<T>::membership_removed(account.index);
+        }
+
+        assert_eq!(
+            Identities::<T>::get(account.index).unwrap().status,
+            IdtyStatus::NotMember
+        );
+        Ok(())
+    }
+
     #[benchmark]
     fn prune_identities_noop() {
         assert!(IdentityChangeSchedule::<T>::try_get(BlockNumberFor::<T>::zero()).is_err());
diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs
index eac91bda1c4ec511792487cc13b9342d8807cd9e..3ff6fde96a18f048df687b6f7cdacb2f38361508 100644
--- a/pallets/identity/src/lib.rs
+++ b/pallets/identity/src/lib.rs
@@ -115,8 +115,10 @@ pub mod pallet {
         type AccountLinker: LinkIdty<Self::AccountId, Self::IdtyIndex>;
         /// Handle logic to validate an identity name
         type IdtyNameValidator: IdtyNameValidator;
-        /// On identity confirmed by its owner
-        type OnIdtyChange: OnIdtyChange<Self>;
+        /// On identity created.
+        type OnNewIdty: OnNewIdty<Self>;
+        /// On identity removed.
+        type OnRemoveIdty: OnRemoveIdty<Self>;
         /// Signing key of a payload
         type Signer: IdentifyAccount<AccountId = Self::AccountId>;
         /// Signature of a payload
@@ -325,13 +327,7 @@ pub mod pallet {
                 owner_key: owner_key.clone(),
             });
             T::AccountLinker::link_identity(&owner_key, idty_index)?;
-            T::OnIdtyChange::on_idty_change(
-                idty_index,
-                &IdtyEvent::Created {
-                    creator: creator_index,
-                    owner_key,
-                },
-            );
+            T::OnNewIdty::on_created(&idty_index, &creator_index);
             Ok(().into())
         }
 
@@ -656,7 +652,7 @@ pub mod pallet {
         // only does something if identity is actually member
         // a membership can be removed when the identity is revoked
         // in this case, this does nothing
-        pub fn membership_removed(idty_index: T::IdtyIndex) {
+        pub fn membership_removed(idty_index: T::IdtyIndex) -> Weight {
             if let Some(idty_value) = Identities::<T>::get(idty_index) {
                 if idty_value.status == IdtyStatus::Member {
                     Self::update_identity_status(
@@ -667,6 +663,7 @@ pub mod pallet {
                     );
                 }
             }
+            T::WeightInfo::membership_removed()
             // else should not happen
         }
 
@@ -685,13 +682,11 @@ pub mod pallet {
                     frame_system::Pallet::<T>::dec_sufficients(&old_owner_key);
                 }
                 Self::deposit_event(Event::IdtyRemoved { idty_index, reason });
-                T::OnIdtyChange::on_idty_change(
-                    idty_index,
-                    &IdtyEvent::Removed {
-                        status: idty_value.status,
-                    },
+                let weight = T::OnRemoveIdty::on_removed(&idty_index);
+                return weight.saturating_add(
+                    T::WeightInfo::do_remove_identity()
+                        .saturating_sub(T::WeightInfo::do_remove_identity_handler()),
                 );
-                return T::WeightInfo::do_remove_identity();
             }
             T::WeightInfo::do_remove_identity_noop()
         }
@@ -707,12 +702,7 @@ pub mod pallet {
                 );
 
                 Self::deposit_event(Event::IdtyRevoked { idty_index, reason });
-                T::OnIdtyChange::on_idty_change(
-                    idty_index,
-                    &IdtyEvent::Removed {
-                        status: IdtyStatus::Revoked,
-                    },
-                );
+                T::OnRemoveIdty::on_revoked(&idty_index);
                 return T::WeightInfo::do_revoke_identity();
             }
             T::WeightInfo::do_revoke_identity_noop()
@@ -738,35 +728,46 @@ pub mod pallet {
                     if idty_val.next_scheduled == block_number {
                         match idty_val.status {
                             IdtyStatus::Unconfirmed => {
-                                total_weight +=
-                                    Self::do_remove_identity(idty_index, RemovalReason::Unconfirmed)
+                                total_weight =
+                                    total_weight.saturating_add(Self::do_remove_identity(
+                                        idty_index,
+                                        RemovalReason::Unconfirmed,
+                                    ));
                             }
                             IdtyStatus::Unvalidated => {
-                                total_weight +=
-                                    Self::do_remove_identity(idty_index, RemovalReason::Unvalidated)
+                                total_weight =
+                                    total_weight.saturating_add(Self::do_remove_identity(
+                                        idty_index,
+                                        RemovalReason::Unvalidated,
+                                    ));
                             }
                             IdtyStatus::Revoked => {
-                                total_weight +=
-                                    Self::do_remove_identity(idty_index, RemovalReason::Revoked)
+                                total_weight = total_weight.saturating_add(
+                                    Self::do_remove_identity(idty_index, RemovalReason::Revoked),
+                                );
                             }
                             IdtyStatus::NotMember => {
-                                total_weight +=
-                                    Self::do_revoke_identity(idty_index, RevocationReason::Expired)
+                                total_weight = total_weight.saturating_add(
+                                    Self::do_revoke_identity(idty_index, RevocationReason::Expired),
+                                );
                             }
                             IdtyStatus::Member => { // do not touch identities of member accounts
                                  // this should not happen
                             }
                         }
                     } else {
-                        total_weight += T::WeightInfo::prune_identities_err()
-                            .saturating_sub(T::WeightInfo::prune_identities_none())
+                        total_weight = total_weight.saturating_add(
+                            T::WeightInfo::prune_identities_err()
+                                .saturating_sub(T::WeightInfo::prune_identities_none()),
+                        );
                     }
                 } else {
-                    total_weight += T::WeightInfo::prune_identities_none()
-                        .saturating_sub(T::WeightInfo::prune_identities_noop())
+                    total_weight = total_weight.saturating_add(
+                        T::WeightInfo::prune_identities_none()
+                            .saturating_sub(T::WeightInfo::prune_identities_noop()),
+                    );
                 }
             }
-
             total_weight.saturating_add(T::WeightInfo::prune_identities_noop())
         }
 
diff --git a/pallets/identity/src/mock.rs b/pallets/identity/src/mock.rs
index 8941544143f6bcc790726e2f08def0c65d091efc..8a887b00810c4fda3e67f23b3de4e1348057f878 100644
--- a/pallets/identity/src/mock.rs
+++ b/pallets/identity/src/mock.rs
@@ -109,7 +109,8 @@ impl pallet_identity::Config for Test {
     type IdtyData = ();
     type IdtyIndex = u64;
     type IdtyNameValidator = IdtyNameValidatorTestImpl;
-    type OnIdtyChange = ();
+    type OnNewIdty = ();
+    type OnRemoveIdty = ();
     type RuntimeEvent = RuntimeEvent;
     type Signature = Signature;
     type Signer = AccountPublic;
diff --git a/pallets/identity/src/traits.rs b/pallets/identity/src/traits.rs
index 6a1b457c1850bef852ac42bc0c160fc759b3f039..ed8a2e2e44763c31ca798acdd9f690b39b491331 100644
--- a/pallets/identity/src/traits.rs
+++ b/pallets/identity/src/traits.rs
@@ -16,40 +16,62 @@
 
 use crate::*;
 use frame_support::pallet_prelude::*;
-use impl_trait_for_tuples::impl_for_tuples;
+use frame_support::weights::Weight;
 
+/// A trait defining operations for checking if identity-related calls are allowed.
 pub trait CheckIdtyCallAllowed<T: Config> {
+    /// Checks if creating an identity is allowed.
     fn check_create_identity(creator: T::IdtyIndex) -> Result<(), DispatchError>;
 }
 
-#[impl_for_tuples(5)]
-impl<T: Config> CheckIdtyCallAllowed<T> for Tuple {
-    fn check_create_identity(creator: T::IdtyIndex) -> Result<(), DispatchError> {
-        for_tuples!( #( Tuple::check_create_identity(creator)?; )* );
+impl<T: Config> CheckIdtyCallAllowed<T> for () {
+    fn check_create_identity(_creator: T::IdtyIndex) -> Result<(), DispatchError> {
         Ok(())
     }
 }
 
+/// A trait defining operations for validating identity names.
 pub trait IdtyNameValidator {
+    /// Validates an identity name.
     fn validate(idty_name: &IdtyName) -> bool;
 }
 
-pub trait OnIdtyChange<T: Config> {
-    fn on_idty_change(idty_index: T::IdtyIndex, idty_event: &IdtyEvent<T>);
+/// A trait defining behavior for handling new identities creation.
+pub trait OnNewIdty<T: Config> {
+    /// Called when a new identity is created.
+    fn on_created(idty_index: &T::IdtyIndex, creator: &T::IdtyIndex);
 }
 
-#[impl_for_tuples(5)]
-#[allow(clippy::let_and_return)]
-impl<T: Config> OnIdtyChange<T> for Tuple {
-    fn on_idty_change(idty_index: T::IdtyIndex, idty_event: &IdtyEvent<T>) {
-        for_tuples!( #( Tuple::on_idty_change(idty_index, idty_event); )* );
+/// A trait defining behavior for handling removed identities.
+/// As the weight accounting can be complicated it should be done
+/// at the handler level.
+pub trait OnRemoveIdty<T: Config> {
+    /// Called when an identity is removed.
+    fn on_removed(idty_index: &T::IdtyIndex) -> Weight;
+    /// Called when an identity is revoked.
+    fn on_revoked(idty_index: &T::IdtyIndex) -> Weight;
+}
+
+impl<T: Config> OnNewIdty<T> for () {
+    fn on_created(_idty_index: &T::IdtyIndex, _creator: &T::IdtyIndex) {}
+}
+
+impl<T: Config> OnRemoveIdty<T> for () {
+    fn on_removed(_idty_index: &T::IdtyIndex) -> Weight {
+        Weight::zero()
+    }
+
+    fn on_revoked(_idty_index: &T::IdtyIndex) -> Weight {
+        Weight::zero()
     }
 }
 
-/// trait used to link an account to an identity
+/// A trait defining operations for linking identities to accounts.
 pub trait LinkIdty<AccountId, IdtyIndex> {
+    /// Links an identity to an account.
     fn link_identity(account_id: &AccountId, idty_index: IdtyIndex) -> Result<(), DispatchError>;
 }
+
 impl<AccountId, IdtyIndex> LinkIdty<AccountId, IdtyIndex> for () {
     fn link_identity(_: &AccountId, _: IdtyIndex) -> Result<(), DispatchError> {
         Ok(())
diff --git a/pallets/identity/src/weights.rs b/pallets/identity/src/weights.rs
index 879cbe3f40d0816d10ce88cb99d309200dbdf34f..61d15aba77a28c887301ec22b8c7863c24dedc58 100644
--- a/pallets/identity/src/weights.rs
+++ b/pallets/identity/src/weights.rs
@@ -30,10 +30,12 @@ pub trait WeightInfo {
     fn do_revoke_identity_noop() -> Weight;
     fn do_revoke_identity() -> Weight;
     fn do_remove_identity_noop() -> Weight;
+    fn do_remove_identity_handler() -> Weight;
     fn do_remove_identity() -> Weight;
     fn prune_identities_noop() -> Weight;
     fn prune_identities_none() -> Weight;
     fn prune_identities_err() -> Weight;
+    fn membership_removed() -> Weight;
 }
 
 // Insecure weights implementation, use it for tests only!
@@ -155,6 +157,16 @@ impl WeightInfo for () {
             .saturating_add(RocksDbWeight::get().reads(1))
     }
 
+    fn do_remove_identity_handler() -> Weight {
+        // Proof Size summary in bytes:
+        //  Measured:  `269`
+        //  Estimated: `3734`
+        // Minimum execution time: 104_296_000 picoseconds.
+        Weight::from_parts(115_316_000, 0)
+            .saturating_add(Weight::from_parts(0, 3734))
+            .saturating_add(RocksDbWeight::get().reads(1))
+    }
+
     fn do_remove_identity() -> Weight {
         // Proof Size summary in bytes:
         //  Measured:  `1432`
@@ -197,4 +209,15 @@ impl WeightInfo for () {
             .saturating_add(RocksDbWeight::get().reads(8))
             .saturating_add(RocksDbWeight::get().writes(8))
     }
+
+    fn membership_removed() -> Weight {
+        // Proof Size summary in bytes:
+        //  Measured:  `1177`
+        //  Estimated: `4642`
+        // Minimum execution time: 1_427_848_000 picoseconds.
+        Weight::from_parts(2_637_229_000, 0)
+            .saturating_add(Weight::from_parts(0, 4642))
+            .saturating_add(RocksDbWeight::get().reads(8))
+            .saturating_add(RocksDbWeight::get().writes(8))
+    }
 }
diff --git a/pallets/membership/src/lib.rs b/pallets/membership/src/lib.rs
index d1fb52e3598a9797020ef063cf4449eeaa44eb49..92a82428c0f8730c15b09bfa36c25a92ba8f3962 100644
--- a/pallets/membership/src/lib.rs
+++ b/pallets/membership/src/lib.rs
@@ -99,8 +99,10 @@ pub mod pallet {
         // i.e. asking for distance evaluation
         #[pallet::constant]
         type MembershipRenewalPeriod: Get<BlockNumberFor<Self>>;
-        /// On event handler
-        type OnEvent: OnEvent<Self::IdtyId>;
+        /// On new and renew membership handler.
+        type OnNewMembership: OnNewMembership<Self::IdtyId>;
+        /// On revoked and removed membership handler.
+        type OnRemoveMembership: OnRemoveMembership<Self::IdtyId>;
         /// Because this pallet emits events, it depends on the runtime's definition of an event.
         type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
         type WeightInfo: WeightInfo;
@@ -272,7 +274,7 @@ pub mod pallet {
                 member: idty_id,
                 expire_on,
             });
-            T::OnEvent::on_event(&sp_membership::Event::MembershipAdded(idty_id));
+            T::OnNewMembership::on_created(&idty_id);
         }
 
         /// perform membership renewal
@@ -286,19 +288,21 @@ pub mod pallet {
                 member: idty_id,
                 expire_on,
             });
-            T::OnEvent::on_event(&sp_membership::Event::MembershipRenewed(idty_id));
+            T::OnNewMembership::on_renewed(&idty_id);
         }
 
         /// perform membership removal
-        pub fn do_remove_membership(idty_id: T::IdtyId, reason: MembershipRemovalReason) {
+        pub fn do_remove_membership(idty_id: T::IdtyId, reason: MembershipRemovalReason) -> Weight {
+            let mut weight = T::DbWeight::get().reads_writes(2, 3);
             if let Some(membership_data) = Membership::<T>::take(idty_id) {
                 Self::unschedule_membership_expiry(idty_id, membership_data.expire_on);
                 Self::deposit_event(Event::MembershipRemoved {
                     member: idty_id,
                     reason,
                 });
-                T::OnEvent::on_event(&sp_membership::Event::MembershipRemoved(idty_id));
+                weight += T::OnRemoveMembership::on_removed(&idty_id);
             }
+            weight
         }
 
         /// perform the membership expiry scheduled at given block
diff --git a/pallets/membership/src/mock.rs b/pallets/membership/src/mock.rs
index 27070cd5ff7199212632dfebdfd7e537bdeab161..5fb5d29ecf991aa935d7463a7a1344d6ec3837c2 100644
--- a/pallets/membership/src/mock.rs
+++ b/pallets/membership/src/mock.rs
@@ -85,7 +85,8 @@ impl pallet_membership::Config for Test {
     type IdtyIdOf = ConvertInto;
     type MembershipPeriod = MembershipPeriod;
     type MembershipRenewalPeriod = MembershipRenewalPeriod;
-    type OnEvent = ();
+    type OnNewMembership = ();
+    type OnRemoveMembership = ();
     type RuntimeEvent = RuntimeEvent;
     type WeightInfo = ();
 }
diff --git a/pallets/quota/src/lib.rs b/pallets/quota/src/lib.rs
index 8a063dcb13ca8b19f79023df55f69854ef5c9ede..7c25f1fe7ce9bbb6dfce165b4b0f1d81ec30b74d 100644
--- a/pallets/quota/src/lib.rs
+++ b/pallets/quota/src/lib.rs
@@ -33,7 +33,6 @@ use frame_support::pallet_prelude::*;
 use frame_support::traits::{Currency, ExistenceRequirement};
 use frame_system::pallet_prelude::*;
 pub use pallet::*;
-use pallet_identity::IdtyEvent;
 use sp_runtime::traits::Zero;
 use sp_std::fmt::Debug;
 use sp_std::vec::Vec;
@@ -317,8 +316,9 @@ pub mod pallet {
     }
 }
 
-// implement quota traits
+/// Implementing the refund fee trait for the pallet.
 impl<T: Config> RefundFee<T> for Pallet<T> {
+    /// This implementation checks if the identity is eligible for a refund and queues the refund if so.
     fn request_refund(account: T::AccountId, identity: IdtyId<T>, amount: BalanceOf<T>) {
         if is_eligible_for_refund::<T>(identity) {
             Self::queue_refund(Refund {
@@ -330,31 +330,45 @@ impl<T: Config> RefundFee<T> for Pallet<T> {
     }
 }
 
-/// tells whether an identity is eligible for refund
+/// Checks if an identity is eligible for a refund.
+///
+/// This function returns `true` for all identities, regardless of their status.
+/// If the identity has no quotas or has been deleted, the refund request is still queued,
+/// but when handled, no refund will be issued (and `NoQuotaForIdty` may be raised).
 fn is_eligible_for_refund<T: pallet_identity::Config>(_identity: IdtyId<T>) -> bool {
-    // all identities are eligible for refund, no matter their status
-    // if the identity has no quotas or has been deleted, the refund request is still queued
-    // but when handeled, no refund will be issued (and `NoQuotaForIdty` may be raised)
     true
 }
 
-// implement identity event handler
-impl<T: Config> pallet_identity::traits::OnIdtyChange<T> for Pallet<T> {
-    fn on_idty_change(idty_id: IdtyId<T>, idty_event: &IdtyEvent<T>) {
-        match idty_event {
-            // initialize quota on identity creation
-            IdtyEvent::Created { .. } => {
-                IdtyQuota::<T>::insert(
-                    idty_id,
-                    Quota {
-                        last_use: frame_system::pallet::Pallet::<T>::block_number(),
-                        amount: BalanceOf::<T>::zero(),
-                    },
-                );
-            }
-            IdtyEvent::Removed { .. } => {
-                IdtyQuota::<T>::remove(idty_id);
-            }
-        }
+/// Implementing the on new identity event handler for the pallet.
+impl<T: Config> pallet_identity::traits::OnNewIdty<T> for Pallet<T> {
+    /// This implementation initializes the identity quota for the newly created identity.
+    fn on_created(idty_index: &IdtyId<T>, _creator: &T::IdtyIndex) {
+        IdtyQuota::<T>::insert(
+            idty_index,
+            Quota {
+                last_use: frame_system::pallet::Pallet::<T>::block_number(),
+                amount: BalanceOf::<T>::zero(),
+            },
+        );
+    }
+}
+
+/// Implementing the on remove identity event handler for the pallet.
+impl<T: Config> pallet_identity::traits::OnRemoveIdty<T> for Pallet<T> {
+    /// This implementation removes the identity quota associated with the removed identity.
+    fn on_removed(idty_id: &IdtyId<T>) -> Weight {
+        let mut weight = Weight::zero();
+        let mut add_db_reads_writes = |reads, writes| {
+            weight = weight.saturating_add(T::DbWeight::get().reads_writes(reads, writes));
+        };
+
+        IdtyQuota::<T>::remove(idty_id);
+        add_db_reads_writes(1, 1);
+        weight
+    }
+
+    /// This implementation removes the identity quota associated with the removed identity.
+    fn on_revoked(idty_id: &IdtyId<T>) -> Weight {
+        Self::on_removed(idty_id)
     }
 }
diff --git a/pallets/quota/src/mock.rs b/pallets/quota/src/mock.rs
index a3bb50f43818c472408f3f20c8d58e2709ece753..b5fa5311f30d1d4390212eb75dfbece4db596842 100644
--- a/pallets/quota/src/mock.rs
+++ b/pallets/quota/src/mock.rs
@@ -152,7 +152,8 @@ impl pallet_identity::Config for Test {
     type IdtyData = ();
     type IdtyIndex = u64;
     type IdtyNameValidator = IdtyNameValidatorTestImpl;
-    type OnIdtyChange = ();
+    type OnNewIdty = ();
+    type OnRemoveIdty = ();
     type RuntimeEvent = RuntimeEvent;
     type Signature = Signature;
     type Signer = AccountPublic;
diff --git a/pallets/smith-members/src/benchmarking.rs b/pallets/smith-members/src/benchmarking.rs
index b3730a866f87cf3131a8c749122e1e6e939ab71a..3539c9ed892db0ec4011d366fcfc9395baf5cee1 100644
--- a/pallets/smith-members/src/benchmarking.rs
+++ b/pallets/smith-members/src/benchmarking.rs
@@ -96,6 +96,28 @@ mod benchmarks {
         Ok(())
     }
 
+    #[benchmark]
+    fn on_removed_wot_member() {
+        let idty: T::IdtyIndex = 1.into();
+        assert!(Smiths::<T>::get(idty).is_some());
+
+        #[block]
+        {
+            Pallet::<T>::on_removed_wot_member(idty);
+        }
+    }
+
+    #[benchmark]
+    fn on_removed_wot_member_empty() {
+        let idty: T::IdtyIndex = 100.into();
+        assert!(Smiths::<T>::get(idty).is_none());
+
+        #[block]
+        {
+            Pallet::<T>::on_removed_wot_member(idty);
+        }
+    }
+
     impl_benchmark_test_suite!(
         Pallet,
         crate::mock::new_test_ext(crate::GenesisConfig {
diff --git a/pallets/smith-members/src/lib.rs b/pallets/smith-members/src/lib.rs
index f9e126a18bab3fcc60d678e5ce333659b081a673..b62b99ccc748fcfe38a542708dbccad3d558110e 100644
--- a/pallets/smith-members/src/lib.rs
+++ b/pallets/smith-members/src/lib.rs
@@ -35,6 +35,7 @@ use frame_support::dispatch::DispatchResultWithPostInfo;
 use frame_support::ensure;
 use frame_support::pallet_prelude::Get;
 use frame_support::pallet_prelude::RuntimeDebug;
+use frame_support::pallet_prelude::Weight;
 use frame_system::ensure_signed;
 use frame_system::pallet_prelude::OriginFor;
 use scale_info::TypeInfo;
@@ -491,10 +492,13 @@ impl<T: Config> Pallet<T> {
         }
     }
 
-    pub fn on_removed_wot_member(idty_index: T::IdtyIndex) {
+    pub fn on_removed_wot_member(idty_index: T::IdtyIndex) -> Weight {
+        let mut weight = T::WeightInfo::on_removed_wot_member_empty();
         if Smiths::<T>::get(idty_index).is_some() {
             Self::_do_exclude_smith(idty_index, SmithRemovalReason::LostMembership);
+            weight = weight.saturating_add(T::WeightInfo::on_removed_wot_member());
         }
+        weight
     }
 
     fn _do_exclude_smith(receiver: T::IdtyIndex, reason: SmithRemovalReason) {
diff --git a/pallets/smith-members/src/weights.rs b/pallets/smith-members/src/weights.rs
index 76a6d6af7afaacfe3221db91195b65504f32305a..869d598f729e843b754f23730b8780253387d62d 100644
--- a/pallets/smith-members/src/weights.rs
+++ b/pallets/smith-members/src/weights.rs
@@ -23,6 +23,8 @@ pub trait WeightInfo {
     fn invite_smith() -> Weight;
     fn accept_invitation() -> Weight;
     fn certify_smith() -> Weight;
+    fn on_removed_wot_member() -> Weight;
+    fn on_removed_wot_member_empty() -> Weight;
 }
 
 impl WeightInfo for () {
@@ -37,4 +39,12 @@ impl WeightInfo for () {
     fn certify_smith() -> Weight {
         Weight::zero()
     }
+
+    fn on_removed_wot_member() -> Weight {
+        Weight::zero()
+    }
+
+    fn on_removed_wot_member_empty() -> Weight {
+        Weight::zero()
+    }
 }
diff --git a/primitives/membership/Cargo.toml b/primitives/membership/Cargo.toml
index 0a79733901f4d79ddcc017acbe669a4ef595a6dc..d7ac4600f38fe68121c1cb488fb66f1a9c004b08 100644
--- a/primitives/membership/Cargo.toml
+++ b/primitives/membership/Cargo.toml
@@ -30,7 +30,6 @@ runtime-benchmarks = []
 
 codec = { workspace = true, features = ["derive"] }
 frame-support = { workspace = true }
-impl-trait-for-tuples = { workspace = true }
 scale-info = { workspace = true, features = ["derive"] }
 serde = { workspace = true }
 sp-runtime = { workspace = true }
diff --git a/primitives/membership/src/lib.rs b/primitives/membership/src/lib.rs
index 64f7f821f1ec8a9dd05b77d1491b3c6b9479e490..49756dda269a86543d0532ec07404781ec837aca 100644
--- a/primitives/membership/src/lib.rs
+++ b/primitives/membership/src/lib.rs
@@ -23,6 +23,7 @@ pub mod traits;
 
 use codec::{Decode, Encode};
 use frame_support::pallet_prelude::RuntimeDebug;
+use frame_support::pallet_prelude::Weight;
 
 use scale_info::TypeInfo;
 use serde::{Deserialize, Serialize};
@@ -54,14 +55,14 @@ pub struct MembershipData<BlockNumber: Decode + Encode + TypeInfo> {
     pub expire_on: BlockNumber,
 }
 
-use impl_trait_for_tuples::impl_for_tuples;
-// use sp_std::prelude::*;
-// use frame_support::pallet_prelude::*;
-// use frame_system::pallet_prelude::*;
+impl<IdtyId> traits::OnNewMembership<IdtyId> for () {
+    fn on_created(_idty_index: &IdtyId) {}
 
-#[impl_for_tuples(5)]
-impl<IdtyId> traits::OnEvent<IdtyId> for Tuple {
-    fn on_event(event: &Event<IdtyId>) {
-        for_tuples!( #( Tuple::on_event(event); )* );
+    fn on_renewed(_idty_index: &IdtyId) {}
+}
+
+impl<IdtyId> traits::OnRemoveMembership<IdtyId> for () {
+    fn on_removed(_idty_index: &IdtyId) -> Weight {
+        Weight::zero()
     }
 }
diff --git a/primitives/membership/src/traits.rs b/primitives/membership/src/traits.rs
index a877fa9fb1643804e47a6c30dc1b565f4961c485..7eef2c1bfe83e77a9d74cf30974bbd12d062061f 100644
--- a/primitives/membership/src/traits.rs
+++ b/primitives/membership/src/traits.rs
@@ -16,8 +16,11 @@
 
 use frame_support::pallet_prelude::*;
 
+/// A trait defining operations for checking if membership-related operations are allowed.
 pub trait CheckMembershipOpAllowed<IdtyId> {
+    /// Checks if adding a membership is allowed.
     fn check_add_membership(idty_id: IdtyId) -> Result<(), DispatchError>;
+    /// Checks if renewing a membership is allowed.
     fn check_renew_membership(idty_id: IdtyId) -> Result<(), DispatchError>;
 }
 
@@ -31,14 +34,22 @@ impl<IdtyId> CheckMembershipOpAllowed<IdtyId> for () {
     }
 }
 
-pub trait OnEvent<IdtyId> {
-    fn on_event(event: &crate::Event<IdtyId>);
+/// A trait defining behavior for handling new memberships and membership renewals.
+pub trait OnNewMembership<IdtyId> {
+    /// Called when a new membership is created.
+    fn on_created(idty_index: &IdtyId);
+    /// Called when a membership is renewed.
+    fn on_renewed(idty_index: &IdtyId);
 }
 
-// impl<IdtyId> OnEvent<IdtyId> for () {
-//     fn on_event(_: &crate::Event<IdtyId>) {}
-// }
+/// A trait defining operations for handling the removal of memberships.
+pub trait OnRemoveMembership<IdtyId> {
+    /// Called when a membership is removed.
+    fn on_removed(idty_index: &IdtyId) -> Weight;
+}
 
+/// A trait defining an operation to retrieve the count of members.
 pub trait MembersCount {
+    /// The count of members.
     fn members_count() -> u32;
 }
diff --git a/resources/metadata.scale b/resources/metadata.scale
index 04cbfdcbc3db8e91ae5459cbd96c5ef56cd23c50..09d2d0c332f4be6fb1e2059bd328b2aadc812988 100644
Binary files a/resources/metadata.scale and b/resources/metadata.scale differ
diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml
index 4dae708319da060ab31d88f70a9f7ff399b6a4e8..aafe5a6b14de465e42a911f8c36b4ef844a6c9ed 100644
--- a/runtime/common/Cargo.toml
+++ b/runtime/common/Cargo.toml
@@ -25,6 +25,7 @@ runtime-benchmarks = [
 	"pallet-collective/runtime-benchmarks",
 	"pallet-distance/runtime-benchmarks",
 	"pallet-duniter-account/runtime-benchmarks",
+	"pallet-duniter-wot/runtime-benchmarks",
 	"pallet-grandpa/runtime-benchmarks",
 	"pallet-identity/runtime-benchmarks",
 	"pallet-im-online/runtime-benchmarks",
@@ -61,6 +62,7 @@ std = [
 	"pallet-collective/std",
 	"pallet-distance/std",
 	"pallet-duniter-account/std",
+	"pallet-duniter-wot/std",
 	"pallet-grandpa/std",
 	"pallet-identity/std",
 	"pallet-im-online/std",
@@ -103,6 +105,7 @@ try-runtime = [
 	"pallet-collective/try-runtime",
 	"pallet-distance/try-runtime",
 	"pallet-duniter-account/try-runtime",
+	"pallet-duniter-wot/try-runtime",
 	"pallet-grandpa/try-runtime",
 	"pallet-identity/try-runtime",
 	"pallet-im-online/try-runtime",
@@ -141,6 +144,7 @@ pallet-certification = { workspace = true }
 pallet-collective = { workspace = true }
 pallet-distance = { workspace = true }
 pallet-duniter-account = { workspace = true }
+pallet-duniter-wot = { workspace = true }
 pallet-grandpa = { workspace = true }
 pallet-identity = { workspace = true }
 pallet-im-online = { workspace = true }
diff --git a/runtime/common/src/handlers.rs b/runtime/common/src/handlers.rs
index 35d8b8712d44c0897f47ff36e58dbb02178436f2..c12f6d3d5759e12bf465168263a0bb16a5c47973 100644
--- a/runtime/common/src/handlers.rs
+++ b/runtime/common/src/handlers.rs
@@ -20,7 +20,8 @@ use frame_support::pallet_prelude::Weight;
 use frame_support::traits::UnfilteredDispatchable;
 use pallet_smith_members::SmithRemovalReason;
 
-// new session handler
+/// OnNewSession handler for the runtime calling all the implementation
+/// of OnNewSession
 pub struct OnNewSessionHandler<Runtime>(core::marker::PhantomData<Runtime>);
 impl<Runtime> pallet_authority_members::traits::OnNewSession for OnNewSessionHandler<Runtime>
 where
@@ -32,51 +33,106 @@ where
     }
 }
 
-// membership event runtime handler
-pub struct OnMembershipEventHandler<Inner, Runtime>(core::marker::PhantomData<(Inner, Runtime)>);
+/// Runtime handler for OnNewIdty, calling all implementations of
+/// OnNewIdty and implementing logic at the runtime level.
+pub struct OnNewIdtyHandler<Runtime>(core::marker::PhantomData<Runtime>);
+impl<Runtime: pallet_duniter_wot::Config + pallet_quota::Config>
+    pallet_identity::traits::OnNewIdty<Runtime> for OnNewIdtyHandler<Runtime>
+{
+    fn on_created(idty_index: &IdtyIndex, creator: &IdtyIndex) {
+        pallet_duniter_wot::Pallet::<Runtime>::on_created(idty_index, creator);
+        pallet_quota::Pallet::<Runtime>::on_created(idty_index, creator);
+    }
+}
+
+/// Runtime handler for OnRemoveIdty, calling all implementations of
+/// OnRemoveIdty and implementing logic at the runtime level.
+pub struct OnRemoveIdtyHandler<Runtime>(core::marker::PhantomData<Runtime>);
+impl<Runtime: pallet_duniter_wot::Config + pallet_quota::Config>
+    pallet_identity::traits::OnRemoveIdty<Runtime> for OnRemoveIdtyHandler<Runtime>
+{
+    fn on_removed(idty_index: &IdtyIndex) -> Weight {
+        let mut weight = pallet_duniter_wot::Pallet::<Runtime>::on_removed(idty_index);
+        weight += pallet_quota::Pallet::<Runtime>::on_removed(idty_index);
+        weight
+    }
+
+    fn on_revoked(idty_index: &IdtyIndex) -> Weight {
+        let mut weight = pallet_duniter_wot::Pallet::<Runtime>::on_revoked(idty_index);
+        weight += pallet_quota::Pallet::<Runtime>::on_revoked(idty_index);
+        weight
+    }
+}
+
+/// Runtime handler for OnNewMembership, calling all implementations of
+/// OnNewMembership and implementing logic at the runtime level.
+pub struct OnNewMembershipHandler<Runtime>(core::marker::PhantomData<Runtime>);
 impl<
-        Inner: sp_membership::traits::OnEvent<IdtyIndex>,
         Runtime: frame_system::Config<AccountId = AccountId>
             + pallet_identity::Config<IdtyData = IdtyData, IdtyIndex = IdtyIndex>
-            + pallet_membership::Config
-            + pallet_smith_members::Config<IdtyIndex = IdtyIndex>
+            + pallet_duniter_wot::Config
             + pallet_universal_dividend::Config,
-    > sp_membership::traits::OnEvent<IdtyIndex> for OnMembershipEventHandler<Inner, Runtime>
+    > sp_membership::traits::OnNewMembership<IdtyIndex> for OnNewMembershipHandler<Runtime>
 {
-    fn on_event(membership_event: &sp_membership::Event<IdtyIndex>) {
-        (match membership_event {
-            // when membership is removed, call on_removed_member handler which auto claims UD
-            sp_membership::Event::MembershipRemoved(idty_index) => {
-                if let Some(idty_value) = pallet_identity::Identities::<Runtime>::get(idty_index) {
-                    if let Some(first_ud_index) = idty_value.data.first_eligible_ud.into() {
-                        pallet_universal_dividend::Pallet::<Runtime>::on_removed_member(
-                            first_ud_index,
-                            &idty_value.owner_key,
-                        );
-                    }
-                }
-                pallet_smith_members::Pallet::<Runtime>::on_removed_wot_member(*idty_index);
-            }
-            // when main membership is acquired, it starts getting right to UD
-            sp_membership::Event::MembershipAdded(idty_index) => {
-                pallet_identity::Identities::<Runtime>::mutate_exists(idty_index, |idty_val_opt| {
-                    if let Some(ref mut idty_val) = idty_val_opt {
-                        idty_val.data = IdtyData {
-                            first_eligible_ud:
-                                pallet_universal_dividend::Pallet::<Runtime>::init_first_eligible_ud(
-                                ),
-                        };
-                    }
-                });
+    fn on_created(idty_index: &IdtyIndex) {
+        // duniter-wot related actions
+        pallet_duniter_wot::Pallet::<Runtime>::on_created(idty_index);
+
+        // When main membership is acquired, it starts getting right to UD.
+        pallet_identity::Identities::<Runtime>::mutate_exists(idty_index, |idty_val_opt| {
+            if let Some(ref mut idty_val) = idty_val_opt {
+                idty_val.data = IdtyData {
+                    first_eligible_ud:
+                        pallet_universal_dividend::Pallet::<Runtime>::init_first_eligible_ud(),
+                };
             }
-            // in other case, ther is nothing to do
-            sp_membership::Event::MembershipRenewed(_) => (),
         });
-        Inner::on_event(membership_event)
+    }
+
+    fn on_renewed(_idty_index: &IdtyIndex) {}
+}
+
+/// Runtime handler for OnRemoveMembership, calling all implementations of
+/// OnRemoveMembership and implementing logic at the runtime level.
+/// As the weight accounting is not trivial in this handler, the weight is
+/// done at the handler level.
+pub struct OnRemoveMembershipHandler<Runtime>(core::marker::PhantomData<Runtime>);
+impl<
+        Runtime: frame_system::Config<AccountId = AccountId>
+            + pallet_identity::Config<IdtyData = IdtyData, IdtyIndex = IdtyIndex>
+            + pallet_smith_members::Config<IdtyIndex = IdtyIndex>
+            + pallet_duniter_wot::Config
+            + pallet_universal_dividend::Config,
+    > sp_membership::traits::OnRemoveMembership<IdtyIndex> for OnRemoveMembershipHandler<Runtime>
+{
+    fn on_removed(idty_index: &IdtyIndex) -> Weight {
+        // duniter-wot related actions
+        let mut weight = pallet_duniter_wot::Pallet::<Runtime>::on_removed(idty_index);
+
+        let mut add_db_reads_writes = |reads, writes| {
+            weight += crate::constants::DbWeight::get().reads_writes(reads, writes);
+        };
+
+        // When membership is removed, call on_removed_member handler which auto claims UD.
+        if let Some(idty_value) = pallet_identity::Identities::<Runtime>::get(idty_index) {
+            add_db_reads_writes(1, 0);
+            if let Some(first_ud_index) = idty_value.data.first_eligible_ud.into() {
+                add_db_reads_writes(1, 0);
+                weight += pallet_universal_dividend::Pallet::<Runtime>::on_removed_member(
+                    first_ud_index,
+                    &idty_value.owner_key,
+                );
+            }
+        }
+
+        // When membership is removed, also remove from smith member.
+        weight.saturating_add(
+            pallet_smith_members::Pallet::<Runtime>::on_removed_wot_member(*idty_index),
+        )
     }
 }
 
-// spend treasury handler
+/// Runtime handler for TreasurySpendFunds.
 pub struct TreasurySpendFunds<Runtime>(core::marker::PhantomData<Runtime>);
 impl<Runtime> pallet_treasury::SpendFunds<Runtime> for TreasurySpendFunds<Runtime>
 where
@@ -92,6 +148,7 @@ where
     }
 }
 
+/// Runtime handler for OnSmithDelete.
 pub struct OnSmithDeletedHandler<Runtime>(core::marker::PhantomData<Runtime>);
 impl<Runtime> pallet_smith_members::traits::OnSmithDelete<Runtime::MemberId>
     for OnSmithDeletedHandler<Runtime>
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index f2a89104cacf2dc037d4dac3105a015a212590e2..1c9d1e0c5a5f0cc72948bb7f1338c0f62cc8ae4b 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -481,7 +481,8 @@ type RuntimeFreezeReason = ();
             type IdtyNameValidator = IdtyNameValidatorImpl;
             type Signer = <Signature as sp_runtime::traits::Verify>::Signer;
 			type Signature = Signature;
-            type OnIdtyChange = (Wot, Quota);
+            type OnNewIdty = OnNewIdtyHandler<Runtime>;
+            type OnRemoveIdty = OnRemoveIdtyHandler<Runtime>;
             type RuntimeEvent = RuntimeEvent;
             type WeightInfo = common_runtime::weights::pallet_identity::WeightInfo<Runtime>;
         }
@@ -499,7 +500,8 @@ type RuntimeFreezeReason = ();
             type AccountIdOf = common_runtime::providers::IdentityAccountIdProvider<Self>;
             type MembershipPeriod = MembershipPeriod;
             type MembershipRenewalPeriod = MembershipRenewalPeriod;
-            type OnEvent = (OnMembershipEventHandler<Wot, Runtime>, Wot);
+            type OnNewMembership = OnNewMembershipHandler<Runtime>;
+            type OnRemoveMembership = OnRemoveMembershipHandler<Runtime>;
             type RuntimeEvent = RuntimeEvent;
             type WeightInfo = common_runtime::weights::pallet_membership::WeightInfo<Runtime>;
             #[cfg(feature = "runtime-benchmarks")]
diff --git a/runtime/common/src/weights/block_weights.rs b/runtime/common/src/weights/block_weights.rs
index 29fa7807773b280e44652cfc3a1b39ae6754df07..bf39684d6e31b4983196c651192cf94e3a593197 100644
--- a/runtime/common/src/weights/block_weights.rs
+++ b/runtime/common/src/weights/block_weights.rs
@@ -1,6 +1,6 @@
 
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19 (Y/M/D)
+//! DATE: 2024-03-07 (Y/M/D)
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
 //! SHORT-NAME: `block`, LONG-NAME: `BlockExecution`, RUNTIME: `Äždev Local Testnet`
@@ -26,17 +26,17 @@ parameter_types! {
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 122_703, 144_609
-	///   Average:  126_074
-	///   Median:   125_020
-	///   Std-Dev:  3185.53
+	///   Min, Max: 121_957, 152_945
+	///   Average:  128_921
+	///   Median:   128_776
+	///   Std-Dev:  4882.38
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 136_640
-	///   95th: 131_630
-	///   75th: 126_432
+	///   99th: 145_642
+	///   95th: 137_477
+	///   75th: 130_552
 	pub const BlockExecutionWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(126_074), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(128_921), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/common/src/weights/extrinsic_weights.rs b/runtime/common/src/weights/extrinsic_weights.rs
index 60563cb84d828692419632bf0455b0e725f647b3..4672708f08372b8587117f3db68801bb2c58178c 100644
--- a/runtime/common/src/weights/extrinsic_weights.rs
+++ b/runtime/common/src/weights/extrinsic_weights.rs
@@ -1,6 +1,6 @@
 
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19 (Y/M/D)
+//! DATE: 2024-03-07 (Y/M/D)
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
 //! SHORT-NAME: `extrinsic`, LONG-NAME: `ExtrinsicBase`, RUNTIME: `Äždev Local Testnet`
@@ -26,17 +26,17 @@ parameter_types! {
 	/// Calculated by multiplying the *Average* with `1.0` and adding `0`.
 	///
 	/// Stats nanoseconds:
-	///   Min, Max: 71_493, 72_978
-	///   Average:  71_720
-	///   Median:   71_644
-	///   Std-Dev:  282.37
+	///   Min, Max: 70_750, 72_752
+	///   Average:  71_018
+	///   Median:   70_935
+	///   Std-Dev:  325.2
 	///
 	/// Percentiles nanoseconds:
-	///   99th: 72_927
-	///   95th: 72_617
-	///   75th: 71_705
+	///   99th: 72_619
+	///   95th: 71_691
+	///   75th: 71_005
 	pub const ExtrinsicBaseWeight: Weight =
-		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(71_720), 0);
+		Weight::from_parts(WEIGHT_REF_TIME_PER_NANOS.saturating_mul(71_018), 0);
 }
 
 #[cfg(test)]
diff --git a/runtime/common/src/weights/frame_benchmarking_baseline.rs b/runtime/common/src/weights/frame_benchmarking_baseline.rs
index 40c633e563f1fc284b0d9d6814c016e20a15d464..59df27c4b7c50fa00ac8078f4ba175718b5c7f4f 100644
--- a/runtime/common/src/weights/frame_benchmarking_baseline.rs
+++ b/runtime/common/src/weights/frame_benchmarking_baseline.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `frame_benchmarking::baseline`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -52,8 +52,8 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 129_000 picoseconds.
-		Weight::from_parts(165_026, 0)
+		// Minimum execution time: 126_000 picoseconds.
+		Weight::from_parts(176_231, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 1000000]`.
@@ -61,8 +61,8 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 123_000 picoseconds.
-		Weight::from_parts(175_339, 0)
+		// Minimum execution time: 126_000 picoseconds.
+		Weight::from_parts(184_871, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 1000000]`.
@@ -70,8 +70,8 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 128_000 picoseconds.
-		Weight::from_parts(181_447, 0)
+		// Minimum execution time: 124_000 picoseconds.
+		Weight::from_parts(177_273, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 1000000]`.
@@ -79,16 +79,16 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 129_000 picoseconds.
-		Weight::from_parts(163_854, 0)
+		// Minimum execution time: 127_000 picoseconds.
+		Weight::from_parts(178_738, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	fn hashing() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 21_962_675_000 picoseconds.
-		Weight::from_parts(22_009_426_000, 0)
+		// Minimum execution time: 20_014_001_000 picoseconds.
+		Weight::from_parts(20_040_496_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `i` is `[0, 100]`.
@@ -96,10 +96,10 @@ impl<T: frame_system::Config> frame_benchmarking::baseline::WeightInfo for Weigh
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 138_000 picoseconds.
-		Weight::from_parts(44_587_816, 0)
+		// Minimum execution time: 129_000 picoseconds.
+		Weight::from_parts(27_377_743, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 24_017
-			.saturating_add(Weight::from_parts(30_402_549, 0).saturating_mul(i.into()))
+			// Standard Error: 11_322
+			.saturating_add(Weight::from_parts(30_585_807, 0).saturating_mul(i.into()))
 	}
 }
diff --git a/runtime/common/src/weights/frame_system.rs b/runtime/common/src/weights/frame_system.rs
index e667cd61314330993a5541d248fcc1c4bf5ca505..81ef84b463a6fb0ef53d797064daef063b95e2b7 100644
--- a/runtime/common/src/weights/frame_system.rs
+++ b/runtime/common/src/weights/frame_system.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `frame_system`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -52,8 +52,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_522_000 picoseconds.
-		Weight::from_parts(2_193_461, 0)
+		// Minimum execution time: 1_564_000 picoseconds.
+		Weight::from_parts(1_197_322, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 0
 			.saturating_add(Weight::from_parts(254, 0).saturating_mul(b.into()))
@@ -63,8 +63,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_830_000 picoseconds.
-		Weight::from_parts(4_092_000, 0)
+		// Minimum execution time: 4_288_000 picoseconds.
+		Weight::from_parts(4_380_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			// Standard Error: 0
 			.saturating_add(Weight::from_parts(1_014, 0).saturating_mul(b.into()))
@@ -77,8 +77,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `1485`
-		// Minimum execution time: 2_444_000 picoseconds.
-		Weight::from_parts(2_982_000, 0)
+		// Minimum execution time: 2_558_000 picoseconds.
+		Weight::from_parts(2_908_000, 0)
 			.saturating_add(Weight::from_parts(0, 1485))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -91,8 +91,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `1485`
-		// Minimum execution time: 77_578_239_000 picoseconds.
-		Weight::from_parts(78_021_495_000, 0)
+		// Minimum execution time: 77_935_212_000 picoseconds.
+		Weight::from_parts(78_378_594_000, 0)
 			.saturating_add(Weight::from_parts(0, 1485))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -104,11 +104,11 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_572_000 picoseconds.
-		Weight::from_parts(1_669_000, 0)
+		// Minimum execution time: 1_506_000 picoseconds.
+		Weight::from_parts(1_584_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 775
-			.saturating_add(Weight::from_parts(651_362, 0).saturating_mul(i.into()))
+			// Standard Error: 494
+			.saturating_add(Weight::from_parts(632_843, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
@@ -118,11 +118,11 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_508_000 picoseconds.
-		Weight::from_parts(1_686_000, 0)
+		// Minimum execution time: 1_623_000 picoseconds.
+		Weight::from_parts(1_662_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 638
-			.saturating_add(Weight::from_parts(478_339, 0).saturating_mul(i.into()))
+			// Standard Error: 609
+			.saturating_add(Weight::from_parts(474_921, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
@@ -132,11 +132,11 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + p * (69 ±0)`
 		//  Estimated: `76 + p * (70 ±0)`
-		// Minimum execution time: 2_829_000 picoseconds.
-		Weight::from_parts(3_107_000, 0)
+		// Minimum execution time: 2_932_000 picoseconds.
+		Weight::from_parts(3_055_000, 0)
 			.saturating_add(Weight::from_parts(0, 76))
-			// Standard Error: 746
-			.saturating_add(Weight::from_parts(902_598, 0).saturating_mul(p.into()))
+			// Standard Error: 810
+			.saturating_add(Weight::from_parts(893_967, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into())))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into())))
 			.saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into()))
@@ -147,8 +147,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 8_607_000 picoseconds.
-		Weight::from_parts(10_052_000, 0)
+		// Minimum execution time: 9_251_000 picoseconds.
+		Weight::from_parts(10_361_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -162,8 +162,8 @@ impl<T: frame_system::Config> frame_system::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `22`
 		//  Estimated: `1518`
-		// Minimum execution time: 81_426_373_000 picoseconds.
-		Weight::from_parts(82_234_100_000, 0)
+		// Minimum execution time: 81_451_881_000 picoseconds.
+		Weight::from_parts(82_199_641_000, 0)
 			.saturating_add(Weight::from_parts(0, 1518))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_authority_members.rs b/runtime/common/src/weights/pallet_authority_members.rs
index 036ee55a644d421eba5537ff980f8f35d74ee914..8386e9f5f4dd8c7b0d740acdde56d1727af6f2d0 100644
--- a/runtime/common/src/weights/pallet_authority_members.rs
+++ b/runtime/common/src/weights/pallet_authority_members.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_authority_members`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -63,8 +63,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `750`
 		//  Estimated: `4215`
-		// Minimum execution time: 18_343_000 picoseconds.
-		Weight::from_parts(18_902_000, 0)
+		// Minimum execution time: 19_222_000 picoseconds.
+		Weight::from_parts(20_061_000, 0)
 			.saturating_add(Weight::from_parts(0, 4215))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -89,8 +89,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `1141`
 		//  Estimated: `4606`
-		// Minimum execution time: 24_653_000 picoseconds.
-		Weight::from_parts(25_426_000, 0)
+		// Minimum execution time: 25_552_000 picoseconds.
+		Weight::from_parts(26_021_000, 0)
 			.saturating_add(Weight::from_parts(0, 4606))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -111,8 +111,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `1511`
 		//  Estimated: `12401`
-		// Minimum execution time: 32_577_000 picoseconds.
-		Weight::from_parts(33_529_000, 0)
+		// Minimum execution time: 31_474_000 picoseconds.
+		Weight::from_parts(33_317_000, 0)
 			.saturating_add(Weight::from_parts(0, 12401))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -135,8 +135,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `716`
 		//  Estimated: `4181`
-		// Minimum execution time: 32_140_000 picoseconds.
-		Weight::from_parts(34_059_000, 0)
+		// Minimum execution time: 32_214_000 picoseconds.
+		Weight::from_parts(34_987_000, 0)
 			.saturating_add(Weight::from_parts(0, 4181))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(10))
@@ -147,8 +147,8 @@ impl<T: frame_system::Config> pallet_authority_members::WeightInfo for WeightInf
 		// Proof Size summary in bytes:
 		//  Measured:  `199`
 		//  Estimated: `1684`
-		// Minimum execution time: 6_775_000 picoseconds.
-		Weight::from_parts(7_217_000, 0)
+		// Minimum execution time: 7_167_000 picoseconds.
+		Weight::from_parts(7_685_000, 0)
 			.saturating_add(Weight::from_parts(0, 1684))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_balances.rs b/runtime/common/src/weights/pallet_balances.rs
index 914e4f7c35db4724b28f0a03d4c25f81006030eb..6aa514802cc1c484ceb45650f59a7f4e929d662f 100644
--- a/runtime/common/src/weights/pallet_balances.rs
+++ b/runtime/common/src/weights/pallet_balances.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_balances`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `63`
 		//  Estimated: `6126`
-		// Minimum execution time: 42_934_000 picoseconds.
-		Weight::from_parts(44_123_000, 0)
+		// Minimum execution time: 41_681_000 picoseconds.
+		Weight::from_parts(42_728_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -65,8 +65,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `3558`
-		// Minimum execution time: 28_795_000 picoseconds.
-		Weight::from_parts(29_930_000, 0)
+		// Minimum execution time: 27_691_000 picoseconds.
+		Weight::from_parts(28_632_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -77,8 +77,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `100`
 		//  Estimated: `3558`
-		// Minimum execution time: 9_776_000 picoseconds.
-		Weight::from_parts(10_049_000, 0)
+		// Minimum execution time: 9_354_000 picoseconds.
+		Weight::from_parts(9_977_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -89,8 +89,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `100`
 		//  Estimated: `3558`
-		// Minimum execution time: 13_915_000 picoseconds.
-		Weight::from_parts(14_329_000, 0)
+		// Minimum execution time: 14_024_000 picoseconds.
+		Weight::from_parts(14_706_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -101,8 +101,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `126`
 		//  Estimated: `8694`
-		// Minimum execution time: 44_286_000 picoseconds.
-		Weight::from_parts(45_384_000, 0)
+		// Minimum execution time: 44_648_000 picoseconds.
+		Weight::from_parts(45_886_000, 0)
 			.saturating_add(Weight::from_parts(0, 8694))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -113,8 +113,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `3558`
-		// Minimum execution time: 34_203_000 picoseconds.
-		Weight::from_parts(34_823_000, 0)
+		// Minimum execution time: 35_626_000 picoseconds.
+		Weight::from_parts(36_682_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -125,8 +125,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `100`
 		//  Estimated: `3558`
-		// Minimum execution time: 11_552_000 picoseconds.
-		Weight::from_parts(12_083_000, 0)
+		// Minimum execution time: 12_762_000 picoseconds.
+		Weight::from_parts(13_285_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -135,8 +135,8 @@ impl<T: frame_system::Config> pallet_balances::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_447_000 picoseconds.
-		Weight::from_parts(4_653_000, 0)
+		// Minimum execution time: 4_482_000 picoseconds.
+		Weight::from_parts(4_850_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/common/src/weights/pallet_certification.rs b/runtime/common/src/weights/pallet_certification.rs
index dffd67cdb66d181c89192222c125a5d848f98432..d38b68f613d0b7535eedc9b6fe2c2dae4bdc5ad7 100644
--- a/runtime/common/src/weights/pallet_certification.rs
+++ b/runtime/common/src/weights/pallet_certification.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_certification`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -63,8 +63,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `956`
 		//  Estimated: `6896`
-		// Minimum execution time: 30_204_000 picoseconds.
-		Weight::from_parts(31_317_000, 0)
+		// Minimum execution time: 29_984_000 picoseconds.
+		Weight::from_parts(31_191_000, 0)
 			.saturating_add(Weight::from_parts(0, 6896))
 			.saturating_add(T::DbWeight::get().reads(8))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -85,8 +85,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `980`
 		//  Estimated: `6920`
-		// Minimum execution time: 28_346_000 picoseconds.
-		Weight::from_parts(29_181_000, 0)
+		// Minimum execution time: 28_588_000 picoseconds.
+		Weight::from_parts(29_753_000, 0)
 			.saturating_add(Weight::from_parts(0, 6920))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -101,8 +101,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `444`
 		//  Estimated: `6384`
-		// Minimum execution time: 15_623_000 picoseconds.
-		Weight::from_parts(16_484_000, 0)
+		// Minimum execution time: 16_101_000 picoseconds.
+		Weight::from_parts(17_043_000, 0)
 			.saturating_add(Weight::from_parts(0, 6384))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -120,11 +120,11 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `546 + i * (35 ±0)`
 		//  Estimated: `4017 + i * (2511 ±0)`
-		// Minimum execution time: 22_810_000 picoseconds.
-		Weight::from_parts(23_305_000, 0)
+		// Minimum execution time: 23_179_000 picoseconds.
+		Weight::from_parts(24_678_000, 0)
 			.saturating_add(Weight::from_parts(0, 4017))
-			// Standard Error: 22_347
-			.saturating_add(Weight::from_parts(8_282_158, 0).saturating_mul(i.into()))
+			// Standard Error: 23_289
+			.saturating_add(Weight::from_parts(8_457_573, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -137,8 +137,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `139`
 		//  Estimated: `3604`
-		// Minimum execution time: 2_480_000 picoseconds.
-		Weight::from_parts(2_752_000, 0)
+		// Minimum execution time: 2_504_000 picoseconds.
+		Weight::from_parts(2_735_000, 0)
 			.saturating_add(Weight::from_parts(0, 3604))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -148,8 +148,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `237`
 		//  Estimated: `3702`
-		// Minimum execution time: 3_452_000 picoseconds.
-		Weight::from_parts(3_742_000, 0)
+		// Minimum execution time: 3_538_000 picoseconds.
+		Weight::from_parts(3_793_000, 0)
 			.saturating_add(Weight::from_parts(0, 3702))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -166,8 +166,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `660`
 		//  Estimated: `6600`
-		// Minimum execution time: 19_068_000 picoseconds.
-		Weight::from_parts(19_557_000, 0)
+		// Minimum execution time: 19_451_000 picoseconds.
+		Weight::from_parts(20_049_000, 0)
 			.saturating_add(Weight::from_parts(0, 6600))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_collective.rs b/runtime/common/src/weights/pallet_collective.rs
index 54b9c6e9e521b677ec191daa47b172e6d98e9f92..87b88b605517607ab72ac7421c6176bece431b32 100644
--- a/runtime/common/src/weights/pallet_collective.rs
+++ b/runtime/common/src/weights/pallet_collective.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_collective`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -62,13 +62,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0 + m * (672 ±0) + p * (3191 ±0)`
 		//  Estimated: `10019 + m * (416 ±4) + p * (4183 ±23)`
-		// Minimum execution time: 10_903_000 picoseconds.
-		Weight::from_parts(11_196_000, 0)
+		// Minimum execution time: 10_940_000 picoseconds.
+		Weight::from_parts(11_480_000, 0)
 			.saturating_add(Weight::from_parts(0, 10019))
-			// Standard Error: 9_739
-			.saturating_add(Weight::from_parts(743_557, 0).saturating_mul(m.into()))
-			// Standard Error: 48_146
-			.saturating_add(Weight::from_parts(6_151_370, 0).saturating_mul(p.into()))
+			// Standard Error: 8_608
+			.saturating_add(Weight::from_parts(659_510, 0).saturating_mul(m.into()))
+			// Standard Error: 42_556
+			.saturating_add(Weight::from_parts(5_773_542, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into())))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -84,13 +84,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `32 + m * (32 ±0)`
 		//  Estimated: `1518 + m * (32 ±0)`
-		// Minimum execution time: 9_217_000 picoseconds.
-		Weight::from_parts(8_859_983, 0)
+		// Minimum execution time: 9_508_000 picoseconds.
+		Weight::from_parts(8_829_625, 0)
 			.saturating_add(Weight::from_parts(0, 1518))
-			// Standard Error: 31
-			.saturating_add(Weight::from_parts(1_330, 0).saturating_mul(b.into()))
-			// Standard Error: 328
-			.saturating_add(Weight::from_parts(12_118, 0).saturating_mul(m.into()))
+			// Standard Error: 32
+			.saturating_add(Weight::from_parts(1_455, 0).saturating_mul(b.into()))
+			// Standard Error: 332
+			.saturating_add(Weight::from_parts(13_226, 0).saturating_mul(m.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
 	}
@@ -104,13 +104,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `32 + m * (32 ±0)`
 		//  Estimated: `3498 + m * (32 ±0)`
-		// Minimum execution time: 11_113_000 picoseconds.
-		Weight::from_parts(11_063_160, 0)
+		// Minimum execution time: 11_035_000 picoseconds.
+		Weight::from_parts(10_954_712, 0)
 			.saturating_add(Weight::from_parts(0, 3498))
-			// Standard Error: 41
-			.saturating_add(Weight::from_parts(1_159, 0).saturating_mul(b.into()))
-			// Standard Error: 423
-			.saturating_add(Weight::from_parts(18_429, 0).saturating_mul(m.into()))
+			// Standard Error: 40
+			.saturating_add(Weight::from_parts(1_357, 0).saturating_mul(b.into()))
+			// Standard Error: 420
+			.saturating_add(Weight::from_parts(21_206, 0).saturating_mul(m.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
 	}
@@ -131,15 +131,15 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `24 + m * (32 ±0) + p * (55 ±0)`
 		//  Estimated: `3461 + m * (32 ±0) + p * (54 ±0)`
-		// Minimum execution time: 15_927_000 picoseconds.
-		Weight::from_parts(15_788_803, 0)
+		// Minimum execution time: 15_937_000 picoseconds.
+		Weight::from_parts(15_424_210, 0)
 			.saturating_add(Weight::from_parts(0, 3461))
-			// Standard Error: 62
-			.saturating_add(Weight::from_parts(1_902, 0).saturating_mul(b.into()))
-			// Standard Error: 649
-			.saturating_add(Weight::from_parts(14_567, 0).saturating_mul(m.into()))
-			// Standard Error: 3_247
-			.saturating_add(Weight::from_parts(235_807, 0).saturating_mul(p.into()))
+			// Standard Error: 61
+			.saturating_add(Weight::from_parts(2_225, 0).saturating_mul(b.into()))
+			// Standard Error: 643
+			.saturating_add(Weight::from_parts(16_668, 0).saturating_mul(m.into()))
+			// Standard Error: 3_212
+			.saturating_add(Weight::from_parts(267_223, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(4))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into()))
@@ -154,11 +154,11 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `573 + m * (64 ±0)`
 		//  Estimated: `4037 + m * (64 ±0)`
-		// Minimum execution time: 14_159_000 picoseconds.
-		Weight::from_parts(15_004_259, 0)
+		// Minimum execution time: 14_524_000 picoseconds.
+		Weight::from_parts(15_543_160, 0)
 			.saturating_add(Weight::from_parts(0, 4037))
-			// Standard Error: 612
-			.saturating_add(Weight::from_parts(35_107, 0).saturating_mul(m.into()))
+			// Standard Error: 683
+			.saturating_add(Weight::from_parts(34_924, 0).saturating_mul(m.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
@@ -177,13 +177,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `117 + m * (64 ±0) + p * (55 ±0)`
 		//  Estimated: `3591 + m * (64 ±0) + p * (55 ±0)`
-		// Minimum execution time: 18_259_000 picoseconds.
-		Weight::from_parts(16_754_337, 0)
+		// Minimum execution time: 18_368_000 picoseconds.
+		Weight::from_parts(16_519_080, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
-			// Standard Error: 562
-			.saturating_add(Weight::from_parts(32_795, 0).saturating_mul(m.into()))
-			// Standard Error: 2_778
-			.saturating_add(Weight::from_parts(215_256, 0).saturating_mul(p.into()))
+			// Standard Error: 703
+			.saturating_add(Weight::from_parts(36_105, 0).saturating_mul(m.into()))
+			// Standard Error: 3_471
+			.saturating_add(Weight::from_parts(252_066, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
@@ -204,15 +204,15 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `62 + b * (1 ±0) + m * (64 ±0) + p * (78 ±0)`
 		//  Estimated: `3619 + b * (1 ±0) + m * (63 ±0) + p * (74 ±0)`
-		// Minimum execution time: 26_443_000 picoseconds.
-		Weight::from_parts(22_390_571, 0)
+		// Minimum execution time: 26_622_000 picoseconds.
+		Weight::from_parts(24_805_925, 0)
 			.saturating_add(Weight::from_parts(0, 3619))
-			// Standard Error: 198
-			.saturating_add(Weight::from_parts(3_009, 0).saturating_mul(b.into()))
-			// Standard Error: 2_100
-			.saturating_add(Weight::from_parts(30_746, 0).saturating_mul(m.into()))
-			// Standard Error: 10_359
-			.saturating_add(Weight::from_parts(357_555, 0).saturating_mul(p.into()))
+			// Standard Error: 84
+			.saturating_add(Weight::from_parts(2_040, 0).saturating_mul(b.into()))
+			// Standard Error: 892
+			.saturating_add(Weight::from_parts(21_970, 0).saturating_mul(m.into()))
+			// Standard Error: 4_401
+			.saturating_add(Weight::from_parts(341_319, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(b.into()))
@@ -235,13 +235,13 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `137 + m * (64 ±0) + p * (55 ±0)`
 		//  Estimated: `3611 + m * (64 ±0) + p * (55 ±0)`
-		// Minimum execution time: 20_291_000 picoseconds.
-		Weight::from_parts(18_290_307, 0)
+		// Minimum execution time: 20_468_000 picoseconds.
+		Weight::from_parts(18_459_368, 0)
 			.saturating_add(Weight::from_parts(0, 3611))
-			// Standard Error: 551
-			.saturating_add(Weight::from_parts(37_710, 0).saturating_mul(m.into()))
-			// Standard Error: 2_721
-			.saturating_add(Weight::from_parts(233_594, 0).saturating_mul(p.into()))
+			// Standard Error: 669
+			.saturating_add(Weight::from_parts(38_818, 0).saturating_mul(m.into()))
+			// Standard Error: 3_307
+			.saturating_add(Weight::from_parts(260_504, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 64).saturating_mul(m.into()))
@@ -264,15 +264,15 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `82 + b * (1 ±0) + m * (64 ±0) + p * (78 ±0)`
 		//  Estimated: `3639 + b * (1 ±0) + m * (63 ±0) + p * (74 ±0)`
-		// Minimum execution time: 27_650_000 picoseconds.
-		Weight::from_parts(26_117_506, 0)
+		// Minimum execution time: 27_774_000 picoseconds.
+		Weight::from_parts(27_396_502, 0)
 			.saturating_add(Weight::from_parts(0, 3639))
-			// Standard Error: 97
-			.saturating_add(Weight::from_parts(1_989, 0).saturating_mul(b.into()))
-			// Standard Error: 1_031
-			.saturating_add(Weight::from_parts(21_114, 0).saturating_mul(m.into()))
-			// Standard Error: 5_087
-			.saturating_add(Weight::from_parts(322_572, 0).saturating_mul(p.into()))
+			// Standard Error: 90
+			.saturating_add(Weight::from_parts(1_613, 0).saturating_mul(b.into()))
+			// Standard Error: 957
+			.saturating_add(Weight::from_parts(16_088, 0).saturating_mul(m.into()))
+			// Standard Error: 4_722
+			.saturating_add(Weight::from_parts(338_874, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(b.into()))
@@ -291,10 +291,10 @@ impl<T: frame_system::Config> pallet_collective::WeightInfo for WeightInfo<T> {
 		//  Measured:  `189 + p * (32 ±0)`
 		//  Estimated: `1674 + p * (32 ±0)`
 		// Minimum execution time: 8_964_000 picoseconds.
-		Weight::from_parts(9_866_274, 0)
+		Weight::from_parts(9_924_932, 0)
 			.saturating_add(Weight::from_parts(0, 1674))
-			// Standard Error: 1_839
-			.saturating_add(Weight::from_parts(165_497, 0).saturating_mul(p.into()))
+			// Standard Error: 1_864
+			.saturating_add(Weight::from_parts(188_098, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 32).saturating_mul(p.into()))
diff --git a/runtime/common/src/weights/pallet_distance.rs b/runtime/common/src/weights/pallet_distance.rs
index 4637ced5487008e66e459a7f16c9eb7513ecdd8c..fb79b7cbd273946d1457843db6c06faa823af07a 100644
--- a/runtime/common/src/weights/pallet_distance.rs
+++ b/runtime/common/src/weights/pallet_distance.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_distance`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -29,7 +29,7 @@
 // --chain=dev
 // --steps=50
 // --repeat=20
-// --pallet=pallet_distance
+// --pallet=*
 // --extrinsic=*
 // --wasm-execution=compiled
 // --heap-pages=4096
@@ -69,8 +69,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1119`
 		//  Estimated: `4584`
-		// Minimum execution time: 42_189_000 picoseconds.
-		Weight::from_parts(43_730_000, 0)
+		// Minimum execution time: 39_352_000 picoseconds.
+		Weight::from_parts(41_526_000, 0)
 			.saturating_add(Weight::from_parts(0, 4584))
 			.saturating_add(T::DbWeight::get().reads(9))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -97,8 +97,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1148`
 		//  Estimated: `7088`
-		// Minimum execution time: 44_518_000 picoseconds.
-		Weight::from_parts(45_839_000, 0)
+		// Minimum execution time: 42_952_000 picoseconds.
+		Weight::from_parts(44_492_000, 0)
 			.saturating_add(Weight::from_parts(0, 7088))
 			.saturating_add(T::DbWeight::get().reads(10))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -120,11 +120,11 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `402 + i * (10 ±0)`
 		//  Estimated: `1887 + i * (10 ±0)`
-		// Minimum execution time: 12_657_000 picoseconds.
-		Weight::from_parts(13_883_896, 0)
+		// Minimum execution time: 12_115_000 picoseconds.
+		Weight::from_parts(14_548_951, 0)
 			.saturating_add(Weight::from_parts(0, 1887))
-			// Standard Error: 454
-			.saturating_add(Weight::from_parts(105_327, 0).saturating_mul(i.into()))
+			// Standard Error: 133
+			.saturating_add(Weight::from_parts(100_163, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
 			.saturating_add(Weight::from_parts(0, 10).saturating_mul(i.into()))
@@ -138,11 +138,11 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `139 + i * (10 ±0)`
 		//  Estimated: `1624 + i * (10 ±0)`
-		// Minimum execution time: 5_495_000 picoseconds.
-		Weight::from_parts(7_434_546, 0)
+		// Minimum execution time: 5_344_000 picoseconds.
+		Weight::from_parts(6_909_844, 0)
 			.saturating_add(Weight::from_parts(0, 1624))
-			// Standard Error: 245
-			.saturating_add(Weight::from_parts(101_180, 0).saturating_mul(i.into()))
+			// Standard Error: 364
+			.saturating_add(Weight::from_parts(101_524, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(Weight::from_parts(0, 10).saturating_mul(i.into()))
@@ -159,8 +159,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `609`
 		//  Estimated: `6549`
-		// Minimum execution time: 26_542_000 picoseconds.
-		Weight::from_parts(27_508_000, 0)
+		// Minimum execution time: 24_728_000 picoseconds.
+		Weight::from_parts(25_348_000, 0)
 			.saturating_add(Weight::from_parts(0, 6549))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -169,8 +169,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 139_000 picoseconds.
-		Weight::from_parts(176_000, 0)
+		// Minimum execution time: 136_000 picoseconds.
+		Weight::from_parts(181_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `System::ParentHash` (r:1 w:0)
@@ -195,8 +195,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `973`
 		//  Estimated: `6913`
-		// Minimum execution time: 41_828_000 picoseconds.
-		Weight::from_parts(43_616_000, 0)
+		// Minimum execution time: 43_974_000 picoseconds.
+		Weight::from_parts(45_186_000, 0)
 			.saturating_add(Weight::from_parts(0, 6913))
 			.saturating_add(T::DbWeight::get().reads(9))
 			.saturating_add(T::DbWeight::get().writes(7))
@@ -215,8 +215,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `364`
 		//  Estimated: `3829`
-		// Minimum execution time: 21_914_000 picoseconds.
-		Weight::from_parts(22_609_000, 0)
+		// Minimum execution time: 21_585_000 picoseconds.
+		Weight::from_parts(22_585_000, 0)
 			.saturating_add(Weight::from_parts(0, 3829))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -231,8 +231,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `109`
 		//  Estimated: `1594`
-		// Minimum execution time: 2_666_000 picoseconds.
-		Weight::from_parts(2_865_000, 0)
+		// Minimum execution time: 2_465_000 picoseconds.
+		Weight::from_parts(2_649_000, 0)
 			.saturating_add(Weight::from_parts(0, 1594))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -243,8 +243,8 @@ impl<T: frame_system::Config> pallet_distance::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `133`
 		//  Estimated: `1618`
-		// Minimum execution time: 2_473_000 picoseconds.
-		Weight::from_parts(2_729_000, 0)
+		// Minimum execution time: 2_486_000 picoseconds.
+		Weight::from_parts(2_653_000, 0)
 			.saturating_add(Weight::from_parts(0, 1618))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_duniter_account.rs b/runtime/common/src/weights/pallet_duniter_account.rs
index d42d70c522e02ac5d80b23123bac7ce19e230f0b..2ba12eeb7f799c2db4d06ea8c471ee1ed6fe5bd7 100644
--- a/runtime/common/src/weights/pallet_duniter_account.rs
+++ b/runtime/common/src/weights/pallet_duniter_account.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_duniter_account`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_duniter_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `3558`
-		// Minimum execution time: 3_148_000 picoseconds.
-		Weight::from_parts(3_337_000, 0)
+		// Minimum execution time: 3_293_000 picoseconds.
+		Weight::from_parts(3_598_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_identity.rs b/runtime/common/src/weights/pallet_identity.rs
index 0c345bffd682fdcdc43b4a100901dbcf1b6e95f0..695d1501851bf0e3a86ce6183ae57a9589fa83ba 100644
--- a/runtime/common/src/weights/pallet_identity.rs
+++ b/runtime/common/src/weights/pallet_identity.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_identity`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -73,8 +73,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1022`
 		//  Estimated: `6962`
-		// Minimum execution time: 58_840_000 picoseconds.
-		Weight::from_parts(60_990_000, 0)
+		// Minimum execution time: 59_347_000 picoseconds.
+		Weight::from_parts(61_712_000, 0)
 			.saturating_add(Weight::from_parts(0, 6962))
 			.saturating_add(T::DbWeight::get().reads(13))
 			.saturating_add(T::DbWeight::get().writes(12))
@@ -91,8 +91,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `698`
 		//  Estimated: `6638`
-		// Minimum execution time: 26_487_000 picoseconds.
-		Weight::from_parts(27_976_000, 0)
+		// Minimum execution time: 26_807_000 picoseconds.
+		Weight::from_parts(28_043_000, 0)
 			.saturating_add(Weight::from_parts(0, 6638))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(4))
@@ -107,11 +107,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	fn change_owner_key() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `723`
-		//  Estimated: `6663`
-		// Minimum execution time: 75_613_000 picoseconds.
-		Weight::from_parts(78_595_000, 0)
-			.saturating_add(Weight::from_parts(0, 6663))
+		//  Measured:  `727`
+		//  Estimated: `6667`
+		// Minimum execution time: 75_151_000 picoseconds.
+		Weight::from_parts(77_856_000, 0)
+			.saturating_add(Weight::from_parts(0, 6667))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
@@ -129,8 +129,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `664`
 		//  Estimated: `6604`
-		// Minimum execution time: 64_212_000 picoseconds.
-		Weight::from_parts(65_561_000, 0)
+		// Minimum execution time: 64_694_000 picoseconds.
+		Weight::from_parts(67_425_000, 0)
 			.saturating_add(Weight::from_parts(0, 6604))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
@@ -142,11 +142,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_575_000 picoseconds.
-		Weight::from_parts(3_800_000, 0)
+		// Minimum execution time: 6_469_000 picoseconds.
+		Weight::from_parts(6_750_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 2_731
-			.saturating_add(Weight::from_parts(1_232_005, 0).saturating_mul(i.into()))
+			// Standard Error: 1_349
+			.saturating_add(Weight::from_parts(1_213_368, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
@@ -156,8 +156,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `104`
 		//  Estimated: `3558`
-		// Minimum execution time: 6_056_000 picoseconds.
-		Weight::from_parts(6_534_000, 0)
+		// Minimum execution time: 6_216_000 picoseconds.
+		Weight::from_parts(6_778_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -172,8 +172,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `403`
 		//  Estimated: `3868`
-		// Minimum execution time: 52_131_000 picoseconds.
-		Weight::from_parts(53_597_000, 0)
+		// Minimum execution time: 50_710_000 picoseconds.
+		Weight::from_parts(52_162_000, 0)
 			.saturating_add(Weight::from_parts(0, 3868))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -182,8 +182,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 133_000 picoseconds.
-		Weight::from_parts(160_000, 0)
+		// Minimum execution time: 143_000 picoseconds.
+		Weight::from_parts(177_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Identity::Identities` (r:1 w:0)
@@ -192,8 +192,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `302`
 		//  Estimated: `3767`
-		// Minimum execution time: 3_647_000 picoseconds.
-		Weight::from_parts(3_826_000, 0)
+		// Minimum execution time: 3_491_000 picoseconds.
+		Weight::from_parts(3_819_000, 0)
 			.saturating_add(Weight::from_parts(0, 3767))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -231,8 +231,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1555`
 		//  Estimated: `9970`
-		// Minimum execution time: 85_114_000 picoseconds.
-		Weight::from_parts(87_552_000, 0)
+		// Minimum execution time: 79_770_000 picoseconds.
+		Weight::from_parts(83_924_000, 0)
 			.saturating_add(Weight::from_parts(0, 9970))
 			.saturating_add(T::DbWeight::get().reads(16))
 			.saturating_add(T::DbWeight::get().writes(20))
@@ -243,8 +243,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `302`
 		//  Estimated: `3767`
-		// Minimum execution time: 3_615_000 picoseconds.
-		Weight::from_parts(3_858_000, 0)
+		// Minimum execution time: 3_520_000 picoseconds.
+		Weight::from_parts(3_792_000, 0)
 			.saturating_add(Weight::from_parts(0, 3767))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -272,6 +272,12 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	/// Storage: `Session::NextKeys` (r:1 w:1)
 	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:4 w:4)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Parameters::ParametersStorage` (r:1 w:0)
+	/// Proof: `Parameters::ParametersStorage` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	/// Storage: `Identity::IdentityIndexOf` (r:0 w:1)
 	/// Proof: `Identity::IdentityIndexOf` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
@@ -280,13 +286,73 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn do_remove_identity() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1546`
-		//  Estimated: `9961`
-		// Minimum execution time: 84_736_000 picoseconds.
-		Weight::from_parts(87_557_000, 0)
-			.saturating_add(Weight::from_parts(0, 9961))
-			.saturating_add(T::DbWeight::get().reads(15))
-			.saturating_add(T::DbWeight::get().writes(21))
+		//  Measured:  `1990`
+		//  Estimated: `12880`
+		// Minimum execution time: 109_731_000 picoseconds.
+		Weight::from_parts(115_002_000, 0)
+			.saturating_add(Weight::from_parts(0, 12880))
+			.saturating_add(T::DbWeight::get().reads(21))
+			.saturating_add(T::DbWeight::get().writes(26))
+	}
+	/// Storage: `Membership::Membership` (r:1 w:1)
+	/// Proof: `Membership::Membership` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Membership::CounterForMembership` (r:1 w:1)
+	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
+	/// Storage: `Membership::MembershipsExpireOn` (r:1 w:1)
+	/// Proof: `Membership::MembershipsExpireOn` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
+	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
+	/// Storage: `SmithMembers::Smiths` (r:3 w:3)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Certification::CertsByReceiver` (r:1 w:1)
+	/// Proof: `Certification::CertsByReceiver` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Certification::StorageIdtyCertMeta` (r:4 w:4)
+	/// Proof: `Certification::StorageIdtyCertMeta` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Parameters::ParametersStorage` (r:1 w:0)
+	/// Proof: `Parameters::ParametersStorage` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Quota::IdtyQuota` (r:0 w:1)
+	/// Proof: `Quota::IdtyQuota` (`max_values`: None, `max_size`: Some(24), added: 2499, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn do_remove_identity_handler() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1999`
+		//  Estimated: `12889`
+		// Minimum execution time: 110_950_000 picoseconds.
+		Weight::from_parts(116_583_000, 0)
+			.saturating_add(Weight::from_parts(0, 12889))
+			.saturating_add(T::DbWeight::get().reads(22))
+			.saturating_add(T::DbWeight::get().writes(25))
+	}
+	/// Storage: `Identity::Identities` (r:1 w:1)
+	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn membership_removed() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `407`
+		//  Estimated: `6347`
+		// Minimum execution time: 13_875_000 picoseconds.
+		Weight::from_parts(14_622_000, 0)
+			.saturating_add(Weight::from_parts(0, 6347))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
 	}
 	/// Storage: `Identity::IdentityChangeSchedule` (r:1 w:0)
 	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
@@ -294,8 +360,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157`
 		//  Estimated: `3622`
-		// Minimum execution time: 2_703_000 picoseconds.
-		Weight::from_parts(2_940_000, 0)
+		// Minimum execution time: 2_783_000 picoseconds.
+		Weight::from_parts(2_943_000, 0)
 			.saturating_add(Weight::from_parts(0, 3622))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -307,8 +373,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `327`
 		//  Estimated: `3792`
-		// Minimum execution time: 6_174_000 picoseconds.
-		Weight::from_parts(6_412_000, 0)
+		// Minimum execution time: 6_225_000 picoseconds.
+		Weight::from_parts(6_490_000, 0)
 			.saturating_add(Weight::from_parts(0, 3792))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -333,8 +399,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `851`
 		//  Estimated: `4316`
-		// Minimum execution time: 32_152_000 picoseconds.
-		Weight::from_parts(33_452_000, 0)
+		// Minimum execution time: 30_421_000 picoseconds.
+		Weight::from_parts(32_153_000, 0)
 			.saturating_add(Weight::from_parts(0, 4316))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(7))
diff --git a/runtime/common/src/weights/pallet_im_online.rs b/runtime/common/src/weights/pallet_im_online.rs
index 9133f1791f7e89c55c2d6fe14d2d3961c5421220..29e1ebaca56e40244aef83fcdb956da8dfb17154 100644
--- a/runtime/common/src/weights/pallet_im_online.rs
+++ b/runtime/common/src/weights/pallet_im_online.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_im_online`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -64,11 +64,11 @@ impl<T: frame_system::Config> pallet_im_online::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `603 + k * (32 ±0)`
 		//  Estimated: `33487 + k * (1761 ±0)`
-		// Minimum execution time: 52_006_000 picoseconds.
-		Weight::from_parts(68_024_509, 0)
+		// Minimum execution time: 51_809_000 picoseconds.
+		Weight::from_parts(65_303_831, 0)
 			.saturating_add(Weight::from_parts(0, 33487))
-			// Standard Error: 902
-			.saturating_add(Weight::from_parts(37_809, 0).saturating_mul(k.into()))
+			// Standard Error: 581
+			.saturating_add(Weight::from_parts(37_332, 0).saturating_mul(k.into()))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(1))
 			.saturating_add(Weight::from_parts(0, 1761).saturating_mul(k.into()))
diff --git a/runtime/common/src/weights/pallet_membership.rs b/runtime/common/src/weights/pallet_membership.rs
index 25af52d5dc6e578647efa5d2127d8dc8b37a48fc..e4474c6251cebaa0d71c793c7bf6db72d88c4a0c 100644
--- a/runtime/common/src/weights/pallet_membership.rs
+++ b/runtime/common/src/weights/pallet_membership.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_membership`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -51,8 +51,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 132_000 picoseconds.
-		Weight::from_parts(164_000, 0)
+		// Minimum execution time: 119_000 picoseconds.
+		Weight::from_parts(173_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Membership::MembershipsExpireOn` (r:2 w:2)
@@ -63,6 +63,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 	/// Proof: `Membership::CounterForMembership` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`)
 	/// Storage: `Identity::Identities` (r:3 w:3)
 	/// Proof: `Identity::Identities` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
+	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `UniversalDividend::CurrentUdIndex` (r:1 w:0)
 	/// Proof: `UniversalDividend::CurrentUdIndex` (`max_values`: Some(1), `max_size`: Some(2), added: 497, mode: `MaxEncodedLen`)
 	/// Storage: `SmithMembers::Smiths` (r:3 w:3)
@@ -79,8 +81,6 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `System::Account` (r:3 w:3)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
-	/// Storage: `Identity::IdentityChangeSchedule` (r:2 w:2)
-	/// Proof: `Identity::IdentityChangeSchedule` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// Storage: `Session::KeyOwner` (r:0 w:12)
 	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	/// The range of component `i` is `[0, 3]`.
@@ -88,11 +88,11 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `138 + i * (804 ±0)`
 		//  Estimated: `9744 + i * (2687 ±0)`
-		// Minimum execution time: 4_240_000 picoseconds.
-		Weight::from_parts(10_575_563, 0)
+		// Minimum execution time: 4_137_000 picoseconds.
+		Weight::from_parts(9_897_784, 0)
 			.saturating_add(Weight::from_parts(0, 9744))
-			// Standard Error: 426_375
-			.saturating_add(Weight::from_parts(64_303_590, 0).saturating_mul(i.into()))
+			// Standard Error: 391_303
+			.saturating_add(Weight::from_parts(61_134_697, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().reads((10_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_multisig.rs b/runtime/common/src/weights/pallet_multisig.rs
index f8eb1cbbe1d680e4abe4f7d66161147608b14a9c..9437a8a1df3132bbdf618f8288fbf3ecff158da8 100644
--- a/runtime/common/src/weights/pallet_multisig.rs
+++ b/runtime/common/src/weights/pallet_multisig.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_multisig`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -52,11 +52,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_872_000 picoseconds.
-		Weight::from_parts(5_256_895, 0)
+		// Minimum execution time: 4_923_000 picoseconds.
+		Weight::from_parts(5_274_030, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1
-			.saturating_add(Weight::from_parts(322, 0).saturating_mul(z.into()))
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(340, 0).saturating_mul(z.into()))
 	}
 	/// Storage: `Multisig::Multisigs` (r:1 w:1)
 	/// Proof: `Multisig::Multisigs` (`max_values`: None, `max_size`: Some(457), added: 2932, mode: `MaxEncodedLen`)
@@ -66,13 +66,13 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `125 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 22_402_000 picoseconds.
-		Weight::from_parts(23_351_386, 0)
+		// Minimum execution time: 22_115_000 picoseconds.
+		Weight::from_parts(22_471_427, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_144
-			.saturating_add(Weight::from_parts(41_210, 0).saturating_mul(s.into()))
+			// Standard Error: 5_006
+			.saturating_add(Weight::from_parts(129_162, 0).saturating_mul(s.into()))
 			// Standard Error: 4
-			.saturating_add(Weight::from_parts(1_030, 0).saturating_mul(z.into()))
+			.saturating_add(Weight::from_parts(1_064, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -84,13 +84,13 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `240`
 		//  Estimated: `3922`
-		// Minimum execution time: 12_914_000 picoseconds.
-		Weight::from_parts(12_745_993, 0)
+		// Minimum execution time: 13_050_000 picoseconds.
+		Weight::from_parts(12_643_850, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 3_858
-			.saturating_add(Weight::from_parts(109_623, 0).saturating_mul(s.into()))
+			// Standard Error: 3_420
+			.saturating_add(Weight::from_parts(122_334, 0).saturating_mul(s.into()))
 			// Standard Error: 2
-			.saturating_add(Weight::from_parts(1_059, 0).saturating_mul(z.into()))
+			.saturating_add(Weight::from_parts(1_061, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -104,13 +104,13 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `259 + s * (37 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 26_086_000 picoseconds.
-		Weight::from_parts(24_990_635, 0)
+		// Minimum execution time: 25_906_000 picoseconds.
+		Weight::from_parts(25_410_716, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_794
-			.saturating_add(Weight::from_parts(191_962, 0).saturating_mul(s.into()))
+			// Standard Error: 5_104
+			.saturating_add(Weight::from_parts(166_187, 0).saturating_mul(s.into()))
 			// Standard Error: 4
-			.saturating_add(Weight::from_parts(1_081, 0).saturating_mul(z.into()))
+			.saturating_add(Weight::from_parts(1_071, 0).saturating_mul(z.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -121,11 +121,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `130 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 20_684_000 picoseconds.
-		Weight::from_parts(21_636_145, 0)
+		// Minimum execution time: 20_709_000 picoseconds.
+		Weight::from_parts(21_800_486, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_557
-			.saturating_add(Weight::from_parts(154_984, 0).saturating_mul(s.into()))
+			// Standard Error: 5_531
+			.saturating_add(Weight::from_parts(113_178, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -136,11 +136,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `240`
 		//  Estimated: `3922`
-		// Minimum execution time: 11_188_000 picoseconds.
-		Weight::from_parts(11_861_643, 0)
+		// Minimum execution time: 11_067_000 picoseconds.
+		Weight::from_parts(11_782_446, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 3_486
-			.saturating_add(Weight::from_parts(131_154, 0).saturating_mul(s.into()))
+			// Standard Error: 3_413
+			.saturating_add(Weight::from_parts(136_281, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -151,11 +151,11 @@ impl<T: frame_system::Config> pallet_multisig::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `328 + s * (5 ±0)`
 		//  Estimated: `3922`
-		// Minimum execution time: 21_535_000 picoseconds.
-		Weight::from_parts(22_494_710, 0)
+		// Minimum execution time: 21_534_000 picoseconds.
+		Weight::from_parts(22_623_667, 0)
 			.saturating_add(Weight::from_parts(0, 3922))
-			// Standard Error: 5_127
-			.saturating_add(Weight::from_parts(160_152, 0).saturating_mul(s.into()))
+			// Standard Error: 5_386
+			.saturating_add(Weight::from_parts(151_486, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/common/src/weights/pallet_oneshot_account.rs b/runtime/common/src/weights/pallet_oneshot_account.rs
index bf99044b043e981f5ab4bbe1289b370e6929bc44..6d349ee2af4480e6f88ebf2451ddc72fe13b499f 100644
--- a/runtime/common/src/weights/pallet_oneshot_account.rs
+++ b/runtime/common/src/weights/pallet_oneshot_account.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_oneshot_account`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `42`
 		//  Estimated: `3507`
-		// Minimum execution time: 15_068_000 picoseconds.
-		Weight::from_parts(15_604_000, 0)
+		// Minimum execution time: 15_125_000 picoseconds.
+		Weight::from_parts(15_698_000, 0)
 			.saturating_add(Weight::from_parts(0, 3507))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -69,8 +69,8 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `241`
 		//  Estimated: `3706`
-		// Minimum execution time: 20_459_000 picoseconds.
-		Weight::from_parts(21_397_000, 0)
+		// Minimum execution time: 21_134_000 picoseconds.
+		Weight::from_parts(22_156_000, 0)
 			.saturating_add(Weight::from_parts(0, 3706))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -85,8 +85,8 @@ impl<T: frame_system::Config> pallet_oneshot_account::WeightInfo for WeightInfo<
 		// Proof Size summary in bytes:
 		//  Measured:  `301`
 		//  Estimated: `6126`
-		// Minimum execution time: 29_060_000 picoseconds.
-		Weight::from_parts(29_942_000, 0)
+		// Minimum execution time: 31_092_000 picoseconds.
+		Weight::from_parts(31_841_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_preimage.rs b/runtime/common/src/weights/pallet_preimage.rs
index 368c5aebcfd8e3e9d007456604b6be41bc9918de..b46329fd6b5a5fe7fc5255788ae4bb99638b6599 100644
--- a/runtime/common/src/weights/pallet_preimage.rs
+++ b/runtime/common/src/weights/pallet_preimage.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_preimage`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -58,11 +58,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `42`
 		//  Estimated: `3548`
-		// Minimum execution time: 10_875_000 picoseconds.
-		Weight::from_parts(11_040_000, 0)
+		// Minimum execution time: 10_613_000 picoseconds.
+		Weight::from_parts(10_789_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_281, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_277, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -77,11 +77,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 12_722_000 picoseconds.
-		Weight::from_parts(13_179_000, 0)
+		// Minimum execution time: 12_469_000 picoseconds.
+		Weight::from_parts(13_036_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_281, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_279, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -96,11 +96,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 10_865_000 picoseconds.
-		Weight::from_parts(11_376_000, 0)
+		// Minimum execution time: 11_537_000 picoseconds.
+		Weight::from_parts(11_691_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			// Standard Error: 1
-			.saturating_add(Weight::from_parts(1_281, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(1_276, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -114,8 +114,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `172`
 		//  Estimated: `3548`
-		// Minimum execution time: 22_826_000 picoseconds.
-		Weight::from_parts(24_167_000, 0)
+		// Minimum execution time: 22_106_000 picoseconds.
+		Weight::from_parts(23_688_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -130,8 +130,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `144`
 		//  Estimated: `3548`
-		// Minimum execution time: 22_979_000 picoseconds.
-		Weight::from_parts(24_649_000, 0)
+		// Minimum execution time: 21_655_000 picoseconds.
+		Weight::from_parts(22_784_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -144,8 +144,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `172`
 		//  Estimated: `3548`
-		// Minimum execution time: 19_948_000 picoseconds.
-		Weight::from_parts(21_730_000, 0)
+		// Minimum execution time: 19_520_000 picoseconds.
+		Weight::from_parts(22_107_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -158,8 +158,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `144`
 		//  Estimated: `3548`
-		// Minimum execution time: 13_759_000 picoseconds.
-		Weight::from_parts(15_002_000, 0)
+		// Minimum execution time: 12_957_000 picoseconds.
+		Weight::from_parts(14_583_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -172,8 +172,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `42`
 		//  Estimated: `3548`
-		// Minimum execution time: 8_869_000 picoseconds.
-		Weight::from_parts(9_523_000, 0)
+		// Minimum execution time: 8_518_000 picoseconds.
+		Weight::from_parts(9_498_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -186,8 +186,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 6_665_000 picoseconds.
-		Weight::from_parts(7_216_000, 0)
+		// Minimum execution time: 6_798_000 picoseconds.
+		Weight::from_parts(7_494_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -202,8 +202,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `144`
 		//  Estimated: `3548`
-		// Minimum execution time: 20_516_000 picoseconds.
-		Weight::from_parts(22_761_000, 0)
+		// Minimum execution time: 20_094_000 picoseconds.
+		Weight::from_parts(21_542_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -216,8 +216,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 6_720_000 picoseconds.
-		Weight::from_parts(7_358_000, 0)
+		// Minimum execution time: 6_639_000 picoseconds.
+		Weight::from_parts(7_268_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -230,8 +230,8 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `106`
 		//  Estimated: `3548`
-		// Minimum execution time: 6_863_000 picoseconds.
-		Weight::from_parts(7_651_000, 0)
+		// Minimum execution time: 7_003_000 picoseconds.
+		Weight::from_parts(8_332_000, 0)
 			.saturating_add(Weight::from_parts(0, 3548))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -247,11 +247,11 @@ impl<T: frame_system::Config> pallet_preimage::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0 + n * (179 ±0)`
 		//  Estimated: `990 + n * (2568 ±0)`
-		// Minimum execution time: 16_087_000 picoseconds.
-		Weight::from_parts(16_582_000, 0)
+		// Minimum execution time: 16_232_000 picoseconds.
+		Weight::from_parts(16_454_000, 0)
 			.saturating_add(Weight::from_parts(0, 990))
-			// Standard Error: 15_609
-			.saturating_add(Weight::from_parts(13_198_729, 0).saturating_mul(n.into()))
+			// Standard Error: 20_312
+			.saturating_add(Weight::from_parts(13_357_022, 0).saturating_mul(n.into()))
 			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(n.into())))
 			.saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(n.into())))
 			.saturating_add(Weight::from_parts(0, 2568).saturating_mul(n.into()))
diff --git a/runtime/common/src/weights/pallet_provide_randomness.rs b/runtime/common/src/weights/pallet_provide_randomness.rs
index 745600e64150997adfd4d9c264fc53323737bbd7..175200a7ccb9e2dc90c085da687da6c8643ec193 100644
--- a/runtime/common/src/weights/pallet_provide_randomness.rs
+++ b/runtime/common/src/weights/pallet_provide_randomness.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_provide_randomness`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -65,8 +65,8 @@ impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `298`
 		//  Estimated: `3763`
-		// Minimum execution time: 30_358_000 picoseconds.
-		Weight::from_parts(32_035_000, 0)
+		// Minimum execution time: 30_972_000 picoseconds.
+		Weight::from_parts(32_618_000, 0)
 			.saturating_add(Weight::from_parts(0, 3763))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(5))
@@ -86,11 +86,11 @@ impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `341 + i * (59 ±0)`
 		//  Estimated: `1827 + i * (2535 ±0)`
-		// Minimum execution time: 14_085_000 picoseconds.
-		Weight::from_parts(12_278_706, 0)
+		// Minimum execution time: 14_392_000 picoseconds.
+		Weight::from_parts(12_954_509, 0)
 			.saturating_add(Weight::from_parts(0, 1827))
-			// Standard Error: 10_268
-			.saturating_add(Weight::from_parts(4_828_702, 0).saturating_mul(i.into()))
+			// Standard Error: 17_758
+			.saturating_add(Weight::from_parts(4_883_742, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -118,11 +118,11 @@ impl<T: frame_system::Config> pallet_provide_randomness::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `351 + i * (59 ±0)`
 		//  Estimated: `3817 + i * (2535 ±0)`
-		// Minimum execution time: 16_069_000 picoseconds.
-		Weight::from_parts(13_920_678, 0)
+		// Minimum execution time: 16_163_000 picoseconds.
+		Weight::from_parts(14_320_825, 0)
 			.saturating_add(Weight::from_parts(0, 3817))
-			// Standard Error: 8_026
-			.saturating_add(Weight::from_parts(5_190_447, 0).saturating_mul(i.into()))
+			// Standard Error: 8_123
+			.saturating_add(Weight::from_parts(5_205_695, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
 			.saturating_add(T::DbWeight::get().writes(3))
diff --git a/runtime/common/src/weights/pallet_proxy.rs b/runtime/common/src/weights/pallet_proxy.rs
index bdf435522cb186ae0e2ed100f5cb6cc35fbd639b..802a81dbe9b00a023954393b28a2c786c48ebe85 100644
--- a/runtime/common/src/weights/pallet_proxy.rs
+++ b/runtime/common/src/weights/pallet_proxy.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -54,11 +54,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157 + p * (37 ±0)`
 		//  Estimated: `4698`
-		// Minimum execution time: 11_081_000 picoseconds.
-		Weight::from_parts(11_929_696, 0)
+		// Minimum execution time: 10_830_000 picoseconds.
+		Weight::from_parts(11_861_543, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_361
-			.saturating_add(Weight::from_parts(19_967, 0).saturating_mul(p.into()))
+			// Standard Error: 1_430
+			.saturating_add(Weight::from_parts(25_728, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -73,13 +73,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `399 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 25_749_000 picoseconds.
-		Weight::from_parts(26_481_625, 0)
+		// Minimum execution time: 26_183_000 picoseconds.
+		Weight::from_parts(26_654_251, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 2_096
-			.saturating_add(Weight::from_parts(131_740, 0).saturating_mul(a.into()))
-			// Standard Error: 2_166
-			.saturating_add(Weight::from_parts(27_669, 0).saturating_mul(p.into()))
+			// Standard Error: 2_264
+			.saturating_add(Weight::from_parts(133_279, 0).saturating_mul(a.into()))
+			// Standard Error: 2_339
+			.saturating_add(Weight::from_parts(32_639, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -93,13 +93,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `322 + a * (68 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 17_262_000 picoseconds.
-		Weight::from_parts(17_942_723, 0)
+		// Minimum execution time: 17_319_000 picoseconds.
+		Weight::from_parts(18_199_328, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_758
-			.saturating_add(Weight::from_parts(128_507, 0).saturating_mul(a.into()))
-			// Standard Error: 1_816
-			.saturating_add(Weight::from_parts(9_134, 0).saturating_mul(p.into()))
+			// Standard Error: 1_540
+			.saturating_add(Weight::from_parts(124_783, 0).saturating_mul(a.into()))
+			// Standard Error: 1_591
+			.saturating_add(Weight::from_parts(5_169, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -113,13 +113,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `322 + a * (68 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 17_043_000 picoseconds.
-		Weight::from_parts(17_935_020, 0)
+		// Minimum execution time: 17_018_000 picoseconds.
+		Weight::from_parts(17_924_399, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_540
-			.saturating_add(Weight::from_parts(128_933, 0).saturating_mul(a.into()))
-			// Standard Error: 1_591
-			.saturating_add(Weight::from_parts(2_130, 0).saturating_mul(p.into()))
+			// Standard Error: 1_475
+			.saturating_add(Weight::from_parts(127_569, 0).saturating_mul(a.into()))
+			// Standard Error: 1_524
+			.saturating_add(Weight::from_parts(7_684, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -135,13 +135,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `331 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5690`
-		// Minimum execution time: 23_427_000 picoseconds.
-		Weight::from_parts(23_813_158, 0)
+		// Minimum execution time: 23_704_000 picoseconds.
+		Weight::from_parts(23_803_880, 0)
 			.saturating_add(Weight::from_parts(0, 5690))
-			// Standard Error: 1_630
-			.saturating_add(Weight::from_parts(124_242, 0).saturating_mul(a.into()))
-			// Standard Error: 1_684
-			.saturating_add(Weight::from_parts(27_782, 0).saturating_mul(p.into()))
+			// Standard Error: 1_524
+			.saturating_add(Weight::from_parts(121_149, 0).saturating_mul(a.into()))
+			// Standard Error: 1_574
+			.saturating_add(Weight::from_parts(33_993, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -152,11 +152,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157 + p * (37 ±0)`
 		//  Estimated: `4698`
-		// Minimum execution time: 16_368_000 picoseconds.
-		Weight::from_parts(17_473_136, 0)
+		// Minimum execution time: 16_382_000 picoseconds.
+		Weight::from_parts(17_276_720, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_951
-			.saturating_add(Weight::from_parts(36_089, 0).saturating_mul(p.into()))
+			// Standard Error: 1_808
+			.saturating_add(Weight::from_parts(41_816, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -167,11 +167,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157 + p * (37 ±0)`
 		//  Estimated: `4698`
-		// Minimum execution time: 17_053_000 picoseconds.
-		Weight::from_parts(18_236_884, 0)
+		// Minimum execution time: 16_683_000 picoseconds.
+		Weight::from_parts(17_736_447, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 2_244
-			.saturating_add(Weight::from_parts(12_073, 0).saturating_mul(p.into()))
+			// Standard Error: 1_974
+			.saturating_add(Weight::from_parts(38_263, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -182,11 +182,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `157 + p * (37 ±0)`
 		//  Estimated: `4698`
-		// Minimum execution time: 16_005_000 picoseconds.
-		Weight::from_parts(17_231_387, 0)
+		// Minimum execution time: 16_325_000 picoseconds.
+		Weight::from_parts(17_471_080, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_549
-			.saturating_add(Weight::from_parts(16_038, 0).saturating_mul(p.into()))
+			// Standard Error: 1_939
+			.saturating_add(Weight::from_parts(14_724, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -197,8 +197,8 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `177`
 		//  Estimated: `4698`
-		// Minimum execution time: 17_520_000 picoseconds.
-		Weight::from_parts(19_221_830, 0)
+		// Minimum execution time: 17_706_000 picoseconds.
+		Weight::from_parts(18_970_369, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -210,11 +210,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `194 + p * (37 ±0)`
 		//  Estimated: `4698`
-		// Minimum execution time: 16_322_000 picoseconds.
-		Weight::from_parts(17_746_122, 0)
+		// Minimum execution time: 16_290_000 picoseconds.
+		Weight::from_parts(17_835_952, 0)
 			.saturating_add(Weight::from_parts(0, 4698))
-			// Standard Error: 1_619
-			.saturating_add(Weight::from_parts(16_581, 0).saturating_mul(p.into()))
+			// Standard Error: 1_933
+			.saturating_add(Weight::from_parts(25_316, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/common/src/weights/pallet_quota.rs b/runtime/common/src/weights/pallet_quota.rs
index 49d61431fd2370563fa1bdc08c46d15df81a9746..7a1cc40e26ed25f10ee0e8470af0a8c8d496caa9 100644
--- a/runtime/common/src/weights/pallet_quota.rs
+++ b/runtime/common/src/weights/pallet_quota.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_quota`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `11288`
 		//  Estimated: `12751`
-		// Minimum execution time: 7_369_000 picoseconds.
-		Weight::from_parts(7_578_000, 0)
+		// Minimum execution time: 7_338_000 picoseconds.
+		Weight::from_parts(7_649_000, 0)
 			.saturating_add(Weight::from_parts(0, 12751))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -65,8 +65,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `139`
 		//  Estimated: `3489`
-		// Minimum execution time: 4_456_000 picoseconds.
-		Weight::from_parts(4_698_000, 0)
+		// Minimum execution time: 4_552_000 picoseconds.
+		Weight::from_parts(4_917_000, 0)
 			.saturating_add(Weight::from_parts(0, 3489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -79,8 +79,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `202`
 		//  Estimated: `6126`
-		// Minimum execution time: 21_527_000 picoseconds.
-		Weight::from_parts(22_247_000, 0)
+		// Minimum execution time: 23_029_000 picoseconds.
+		Weight::from_parts(23_837_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -93,8 +93,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `202`
 		//  Estimated: `6126`
-		// Minimum execution time: 21_246_000 picoseconds.
-		Weight::from_parts(21_948_000, 0)
+		// Minimum execution time: 22_943_000 picoseconds.
+		Weight::from_parts(23_837_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -105,8 +105,8 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `43`
 		//  Estimated: `12751`
-		// Minimum execution time: 1_784_000 picoseconds.
-		Weight::from_parts(1_869_000, 0)
+		// Minimum execution time: 1_944_000 picoseconds.
+		Weight::from_parts(2_099_000, 0)
 			.saturating_add(Weight::from_parts(0, 12751))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -122,11 +122,11 @@ impl<T: frame_system::Config> pallet_quota::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `227 + i * (44 ±0)`
 		//  Estimated: `12751`
-		// Minimum execution time: 24_268_000 picoseconds.
-		Weight::from_parts(37_335_245, 0)
+		// Minimum execution time: 26_506_000 picoseconds.
+		Weight::from_parts(38_904_844, 0)
 			.saturating_add(Weight::from_parts(0, 12751))
-			// Standard Error: 1_626
-			.saturating_add(Weight::from_parts(1_197_308, 0).saturating_mul(i.into()))
+			// Standard Error: 1_948
+			.saturating_add(Weight::from_parts(1_214_823, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
diff --git a/runtime/common/src/weights/pallet_scheduler.rs b/runtime/common/src/weights/pallet_scheduler.rs
index 1ccf6765f3913aa2a0c9d37b06d1334de36c7506..cdf2fb675b431c8c9fe775aeb659d884ed7ebfbd 100644
--- a/runtime/common/src/weights/pallet_scheduler.rs
+++ b/runtime/common/src/weights/pallet_scheduler.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_scheduler`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `30`
 		//  Estimated: `1489`
-		// Minimum execution time: 2_173_000 picoseconds.
-		Weight::from_parts(2_329_000, 0)
+		// Minimum execution time: 2_167_000 picoseconds.
+		Weight::from_parts(2_327_000, 0)
 			.saturating_add(Weight::from_parts(0, 1489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -66,11 +66,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 2_668_000 picoseconds.
-		Weight::from_parts(5_277_782, 0)
+		// Minimum execution time: 2_574_000 picoseconds.
+		Weight::from_parts(5_074_977, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_511
-			.saturating_add(Weight::from_parts(293_289, 0).saturating_mul(s.into()))
+			// Standard Error: 1_424
+			.saturating_add(Weight::from_parts(306_785, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -78,8 +78,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_108_000 picoseconds.
-		Weight::from_parts(2_338_000, 0)
+		// Minimum execution time: 2_209_000 picoseconds.
+		Weight::from_parts(2_317_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Preimage::PreimageFor` (r:1 w:1)
@@ -93,11 +93,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `179 + s * (1 ±0)`
 		//  Estimated: `3644 + s * (1 ±0)`
-		// Minimum execution time: 13_480_000 picoseconds.
-		Weight::from_parts(14_024_000, 0)
+		// Minimum execution time: 13_751_000 picoseconds.
+		Weight::from_parts(14_079_000, 0)
 			.saturating_add(Weight::from_parts(0, 3644))
 			// Standard Error: 3
-			.saturating_add(Weight::from_parts(918, 0).saturating_mul(s.into()))
+			.saturating_add(Weight::from_parts(931, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(s.into()))
@@ -108,8 +108,8 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_313_000 picoseconds.
-		Weight::from_parts(3_648_000, 0)
+		// Minimum execution time: 3_376_000 picoseconds.
+		Weight::from_parts(3_599_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -117,24 +117,24 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_167_000 picoseconds.
-		Weight::from_parts(2_317_000, 0)
+		// Minimum execution time: 2_083_000 picoseconds.
+		Weight::from_parts(2_314_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	fn execute_dispatch_signed() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_521_000 picoseconds.
-		Weight::from_parts(1_630_000, 0)
+		// Minimum execution time: 1_564_000 picoseconds.
+		Weight::from_parts(1_729_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	fn execute_dispatch_unsigned() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_583_000 picoseconds.
-		Weight::from_parts(1_724_000, 0)
+		// Minimum execution time: 1_543_000 picoseconds.
+		Weight::from_parts(1_671_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: `Scheduler::Agenda` (r:1 w:1)
@@ -144,11 +144,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 7_255_000 picoseconds.
-		Weight::from_parts(9_939_843, 0)
+		// Minimum execution time: 7_122_000 picoseconds.
+		Weight::from_parts(9_881_386, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_445
-			.saturating_add(Weight::from_parts(303_485, 0).saturating_mul(s.into()))
+			// Standard Error: 1_476
+			.saturating_add(Weight::from_parts(314_604, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -161,11 +161,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `77 + s * (177 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 10_530_000 picoseconds.
-		Weight::from_parts(11_030_735, 0)
+		// Minimum execution time: 10_688_000 picoseconds.
+		Weight::from_parts(10_946_224, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_340
-			.saturating_add(Weight::from_parts(473_845, 0).saturating_mul(s.into()))
+			// Standard Error: 1_243
+			.saturating_add(Weight::from_parts(509_493, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -178,11 +178,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `254 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 10_268_000 picoseconds.
-		Weight::from_parts(13_894_187, 0)
+		// Minimum execution time: 9_934_000 picoseconds.
+		Weight::from_parts(13_660_920, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 2_781
-			.saturating_add(Weight::from_parts(332_219, 0).saturating_mul(s.into()))
+			// Standard Error: 2_918
+			.saturating_add(Weight::from_parts(353_892, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -195,11 +195,11 @@ impl<T: frame_system::Config> pallet_scheduler::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `280 + s * (185 ±0)`
 		//  Estimated: `13928`
-		// Minimum execution time: 12_650_000 picoseconds.
-		Weight::from_parts(14_127_810, 0)
+		// Minimum execution time: 12_239_000 picoseconds.
+		Weight::from_parts(13_848_458, 0)
 			.saturating_add(Weight::from_parts(0, 13928))
-			// Standard Error: 1_803
-			.saturating_add(Weight::from_parts(486_133, 0).saturating_mul(s.into()))
+			// Standard Error: 1_491
+			.saturating_add(Weight::from_parts(522_089, 0).saturating_mul(s.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
diff --git a/runtime/common/src/weights/pallet_session.rs b/runtime/common/src/weights/pallet_session.rs
index c3c4d907a22c65c0179d667ca1d3967f98262d73..def90ff9081a474e1046fec2f43d69afe0eb5e9d 100644
--- a/runtime/common/src/weights/pallet_session.rs
+++ b/runtime/common/src/weights/pallet_session.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_session`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -55,8 +55,8 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `723`
 		//  Estimated: `11613`
-		// Minimum execution time: 22_510_000 picoseconds.
-		Weight::from_parts(23_554_000, 0)
+		// Minimum execution time: 23_286_000 picoseconds.
+		Weight::from_parts(24_542_000, 0)
 			.saturating_add(Weight::from_parts(0, 11613))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(5))
@@ -69,8 +69,8 @@ impl<T: frame_system::Config> pallet_session::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `412`
 		//  Estimated: `3877`
-		// Minimum execution time: 13_408_000 picoseconds.
-		Weight::from_parts(14_376_000, 0)
+		// Minimum execution time: 13_663_000 picoseconds.
+		Weight::from_parts(14_425_000, 0)
 			.saturating_add(Weight::from_parts(0, 3877))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(5))
diff --git a/runtime/common/src/weights/pallet_smith_members.rs b/runtime/common/src/weights/pallet_smith_members.rs
index f50a4a45e1b77157f3a46e960c7de11e1f19301f..359604e5bdf3ce53d268604ca7f197e2c69f5724 100644
--- a/runtime/common/src/weights/pallet_smith_members.rs
+++ b/runtime/common/src/weights/pallet_smith_members.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_smith_members`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -63,8 +63,8 @@ impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `765`
 		//  Estimated: `6705`
-		// Minimum execution time: 24_686_000 picoseconds.
-		Weight::from_parts(25_681_000, 0)
+		// Minimum execution time: 26_184_000 picoseconds.
+		Weight::from_parts(27_223_000, 0)
 			.saturating_add(Weight::from_parts(0, 6705))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -77,8 +77,8 @@ impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `496`
 		//  Estimated: `3961`
-		// Minimum execution time: 12_957_000 picoseconds.
-		Weight::from_parts(13_677_000, 0)
+		// Minimum execution time: 13_989_000 picoseconds.
+		Weight::from_parts(14_790_000, 0)
 			.saturating_add(Weight::from_parts(0, 3961))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -97,10 +97,47 @@ impl<T: frame_system::Config> pallet_smith_members::WeightInfo for WeightInfo<T>
 		// Proof Size summary in bytes:
 		//  Measured:  `626`
 		//  Estimated: `6566`
-		// Minimum execution time: 23_890_000 picoseconds.
-		Weight::from_parts(24_849_000, 0)
+		// Minimum execution time: 25_006_000 picoseconds.
+		Weight::from_parts(25_628_000, 0)
 			.saturating_add(Weight::from_parts(0, 6566))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
 	}
+	/// Storage: `SmithMembers::Smiths` (r:3 w:3)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::Members` (r:1 w:1)
+	/// Proof: `AuthorityMembers::Members` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OnlineAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OnlineAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::OutgoingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::OutgoingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `AuthorityMembers::IncomingAuthorities` (r:1 w:1)
+	/// Proof: `AuthorityMembers::IncomingAuthorities` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
+	/// Storage: `Session::NextKeys` (r:1 w:1)
+	/// Proof: `Session::NextKeys` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
+	/// Storage: `Session::KeyOwner` (r:0 w:4)
+	/// Proof: `Session::KeyOwner` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn on_removed_wot_member() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `911`
+		//  Estimated: `9326`
+		// Minimum execution time: 49_816_000 picoseconds.
+		Weight::from_parts(52_006_000, 0)
+			.saturating_add(Weight::from_parts(0, 9326))
+			.saturating_add(T::DbWeight::get().reads(9))
+			.saturating_add(T::DbWeight::get().writes(13))
+	}
+	/// Storage: `SmithMembers::Smiths` (r:1 w:0)
+	/// Proof: `SmithMembers::Smiths` (`max_values`: None, `max_size`: None, mode: `Measured`)
+	fn on_removed_wot_member_empty() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `187`
+		//  Estimated: `3652`
+		// Minimum execution time: 2_929_000 picoseconds.
+		Weight::from_parts(3_255_000, 0)
+			.saturating_add(Weight::from_parts(0, 3652))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
 }
diff --git a/runtime/common/src/weights/pallet_sudo.rs b/runtime/common/src/weights/pallet_sudo.rs
index 95fc9c86ff1acd1648c9dbf26ffe2aa6acf10be1..d5107e40b3c57fc0a0d80d35b056bb82747278a3 100644
--- a/runtime/common/src/weights/pallet_sudo.rs
+++ b/runtime/common/src/weights/pallet_sudo.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_sudo`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -53,8 +53,8 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 6_461_000 picoseconds.
-		Weight::from_parts(7_108_000, 0)
+		// Minimum execution time: 6_637_000 picoseconds.
+		Weight::from_parts(7_003_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -65,8 +65,8 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 6_827_000 picoseconds.
-		Weight::from_parts(7_375_000, 0)
+		// Minimum execution time: 6_929_000 picoseconds.
+		Weight::from_parts(7_432_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -76,8 +76,8 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 6_890_000 picoseconds.
-		Weight::from_parts(7_357_000, 0)
+		// Minimum execution time: 7_061_000 picoseconds.
+		Weight::from_parts(7_318_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
@@ -87,8 +87,8 @@ impl<T: frame_system::Config> pallet_sudo::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `165`
 		//  Estimated: `1517`
-		// Minimum execution time: 5_849_000 picoseconds.
-		Weight::from_parts(6_262_000, 0)
+		// Minimum execution time: 5_844_000 picoseconds.
+		Weight::from_parts(6_087_000, 0)
 			.saturating_add(Weight::from_parts(0, 1517))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_timestamp.rs b/runtime/common/src/weights/pallet_timestamp.rs
index a94b4e9f86b7b109de59845c3bc32e6dd2c55c88..ea87e2dae484dc36d5db1fe4c1345bdd5ba212e1 100644
--- a/runtime/common/src/weights/pallet_timestamp.rs
+++ b/runtime/common/src/weights/pallet_timestamp.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_timestamp`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -59,8 +59,8 @@ impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `379`
 		//  Estimated: `1864`
-		// Minimum execution time: 10_393_000 picoseconds.
-		Weight::from_parts(11_196_000, 0)
+		// Minimum execution time: 10_593_000 picoseconds.
+		Weight::from_parts(11_054_000, 0)
 			.saturating_add(Weight::from_parts(0, 1864))
 			.saturating_add(T::DbWeight::get().reads(4))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -69,8 +69,8 @@ impl<T: frame_system::Config> pallet_timestamp::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `57`
 		//  Estimated: `0`
-		// Minimum execution time: 2_466_000 picoseconds.
-		Weight::from_parts(2_652_000, 0)
+		// Minimum execution time: 2_439_000 picoseconds.
+		Weight::from_parts(2_627_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/common/src/weights/pallet_treasury.rs b/runtime/common/src/weights/pallet_treasury.rs
index c38688371d562bc145e68cae5a59737ec939ae9c..250326f85ada7a4061bd39c5a905375707907d2e 100644
--- a/runtime/common/src/weights/pallet_treasury.rs
+++ b/runtime/common/src/weights/pallet_treasury.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_treasury`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -63,8 +63,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `67`
 		//  Estimated: `1489`
-		// Minimum execution time: 17_078_000 picoseconds.
-		Weight::from_parts(17_835_000, 0)
+		// Minimum execution time: 16_041_000 picoseconds.
+		Weight::from_parts(16_625_000, 0)
 			.saturating_add(Weight::from_parts(0, 1489))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -77,8 +77,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `272`
 		//  Estimated: `6126`
-		// Minimum execution time: 26_672_000 picoseconds.
-		Weight::from_parts(27_897_000, 0)
+		// Minimum execution time: 26_246_000 picoseconds.
+		Weight::from_parts(26_659_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -92,11 +92,11 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `433 + p * (8 ±0)`
 		//  Estimated: `3557`
-		// Minimum execution time: 6_065_000 picoseconds.
-		Weight::from_parts(9_183_700, 0)
+		// Minimum execution time: 5_814_000 picoseconds.
+		Weight::from_parts(9_146_952, 0)
 			.saturating_add(Weight::from_parts(0, 3557))
-			// Standard Error: 1_084
-			.saturating_add(Weight::from_parts(48_740, 0).saturating_mul(p.into()))
+			// Standard Error: 1_170
+			.saturating_add(Weight::from_parts(49_557, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -106,8 +106,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `90`
 		//  Estimated: `1887`
-		// Minimum execution time: 4_171_000 picoseconds.
-		Weight::from_parts(4_412_000, 0)
+		// Minimum execution time: 4_272_000 picoseconds.
+		Weight::from_parts(4_509_000, 0)
 			.saturating_add(Weight::from_parts(0, 1887))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -125,11 +125,11 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0 + p * (195 ±0)`
 		//  Estimated: `3558 + p * (5136 ±0)`
-		// Minimum execution time: 11_958_000 picoseconds.
-		Weight::from_parts(23_832_827, 0)
+		// Minimum execution time: 12_537_000 picoseconds.
+		Weight::from_parts(22_233_569, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
-			// Standard Error: 11_737
-			.saturating_add(Weight::from_parts(23_218_584, 0).saturating_mul(p.into()))
+			// Standard Error: 20_410
+			.saturating_add(Weight::from_parts(23_394_974, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().reads((3_u64).saturating_mul(p.into())))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -152,8 +152,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `179`
 		//  Estimated: `6126`
-		// Minimum execution time: 39_059_000 picoseconds.
-		Weight::from_parts(40_054_000, 0)
+		// Minimum execution time: 38_199_000 picoseconds.
+		Weight::from_parts(39_274_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -164,8 +164,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `116`
 		//  Estimated: `3526`
-		// Minimum execution time: 8_625_000 picoseconds.
-		Weight::from_parts(9_088_000, 0)
+		// Minimum execution time: 8_133_000 picoseconds.
+		Weight::from_parts(8_557_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -176,8 +176,8 @@ impl<T: frame_system::Config> pallet_treasury::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `116`
 		//  Estimated: `3526`
-		// Minimum execution time: 7_696_000 picoseconds.
-		Weight::from_parts(8_376_000, 0)
+		// Minimum execution time: 7_477_000 picoseconds.
+		Weight::from_parts(7_793_000, 0)
 			.saturating_add(Weight::from_parts(0, 3526))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
diff --git a/runtime/common/src/weights/pallet_universal_dividend.rs b/runtime/common/src/weights/pallet_universal_dividend.rs
index cac0afac79e7823e3b721ccfb030e32a61e92717..6440bc8669eda0f1bea5e5696fe309dcbd8116e1 100644
--- a/runtime/common/src/weights/pallet_universal_dividend.rs
+++ b/runtime/common/src/weights/pallet_universal_dividend.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_universal_dividend`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -58,15 +58,13 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 	/// Storage: `System::Account` (r:1 w:1)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	/// The range of component `i` is `[1, 160]`.
-	fn claim_uds(i: u32, ) -> Weight {
+	fn claim_uds(_i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `643`
 		//  Estimated: `4108`
-		// Minimum execution time: 24_827_000 picoseconds.
-		Weight::from_parts(26_310_545, 0)
+		// Minimum execution time: 25_314_000 picoseconds.
+		Weight::from_parts(26_970_849, 0)
 			.saturating_add(Weight::from_parts(0, 4108))
-			// Standard Error: 371
-			.saturating_add(Weight::from_parts(786, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -78,8 +76,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `156`
 		//  Estimated: `6126`
-		// Minimum execution time: 45_175_000 picoseconds.
-		Weight::from_parts(46_481_000, 0)
+		// Minimum execution time: 44_537_000 picoseconds.
+		Weight::from_parts(47_866_000, 0)
 			.saturating_add(Weight::from_parts(0, 6126))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
@@ -92,8 +90,8 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 		// Proof Size summary in bytes:
 		//  Measured:  `93`
 		//  Estimated: `3558`
-		// Minimum execution time: 30_117_000 picoseconds.
-		Weight::from_parts(31_273_000, 0)
+		// Minimum execution time: 31_594_000 picoseconds.
+		Weight::from_parts(32_461_000, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -105,15 +103,13 @@ impl<T: frame_system::Config> pallet_universal_dividend::WeightInfo for WeightIn
 	/// Storage: `System::Account` (r:1 w:1)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(93), added: 2568, mode: `MaxEncodedLen`)
 	/// The range of component `i` is `[1, 160]`.
-	fn on_removed_member(i: u32, ) -> Weight {
+	fn on_removed_member(_i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `181`
 		//  Estimated: `3558`
-		// Minimum execution time: 12_813_000 picoseconds.
-		Weight::from_parts(13_818_202, 0)
+		// Minimum execution time: 13_249_000 picoseconds.
+		Weight::from_parts(14_430_362, 0)
 			.saturating_add(Weight::from_parts(0, 3558))
-			// Standard Error: 276
-			.saturating_add(Weight::from_parts(1_446, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
diff --git a/runtime/common/src/weights/pallet_upgrade_origin.rs b/runtime/common/src/weights/pallet_upgrade_origin.rs
index 6dd00866f3078245c089337986bf472b7a069cb7..d2924afbaba496e8f5016f68ad6a248839657eaa 100644
--- a/runtime/common/src/weights/pallet_upgrade_origin.rs
+++ b/runtime/common/src/weights/pallet_upgrade_origin.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_upgrade_origin`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -51,8 +51,8 @@ impl<T: frame_system::Config> pallet_upgrade_origin::WeightInfo for WeightInfo<T
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_554_000 picoseconds.
-		Weight::from_parts(4_953_000, 0)
+		// Minimum execution time: 4_650_000 picoseconds.
+		Weight::from_parts(5_023_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 }
diff --git a/runtime/common/src/weights/pallet_utility.rs b/runtime/common/src/weights/pallet_utility.rs
index 65e025de1b90e0fdaab2782d20dfae4ea62e23e9..f043ba5e8aeaa3c39e4c62c1f4ee2e464902935f 100644
--- a/runtime/common/src/weights/pallet_utility.rs
+++ b/runtime/common/src/weights/pallet_utility.rs
@@ -17,7 +17,7 @@
 //! Autogenerated weights for `pallet_utility`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2024-03-07, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024
@@ -52,18 +52,18 @@ impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_598_000 picoseconds.
-		Weight::from_parts(7_494_210, 0)
+		// Minimum execution time: 3_612_000 picoseconds.
+		Weight::from_parts(14_108_660, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_612
-			.saturating_add(Weight::from_parts(2_036_560, 0).saturating_mul(c.into()))
+			// Standard Error: 1_227
+			.saturating_add(Weight::from_parts(2_029_200, 0).saturating_mul(c.into()))
 	}
 	fn as_derivative() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_993_000 picoseconds.
-		Weight::from_parts(3_265_000, 0)
+		// Minimum execution time: 2_900_000 picoseconds.
+		Weight::from_parts(3_182_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `c` is `[0, 1000]`.
@@ -71,18 +71,18 @@ impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_311_000 picoseconds.
-		Weight::from_parts(7_075_524, 0)
+		// Minimum execution time: 3_575_000 picoseconds.
+		Weight::from_parts(7_407_760, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_608
-			.saturating_add(Weight::from_parts(2_174_913, 0).saturating_mul(c.into()))
+			// Standard Error: 1_691
+			.saturating_add(Weight::from_parts(2_201_382, 0).saturating_mul(c.into()))
 	}
 	fn dispatch_as() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 4_497_000 picoseconds.
-		Weight::from_parts(5_029_000, 0)
+		// Minimum execution time: 4_675_000 picoseconds.
+		Weight::from_parts(4_980_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// The range of component `c` is `[0, 1000]`.
@@ -90,10 +90,10 @@ impl<T: frame_system::Config> pallet_utility::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_398_000 picoseconds.
-		Weight::from_parts(8_440_623, 0)
+		// Minimum execution time: 3_527_000 picoseconds.
+		Weight::from_parts(7_345_393, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 1_412
-			.saturating_add(Weight::from_parts(2_025_813, 0).saturating_mul(c.into()))
+			// Standard Error: 859
+			.saturating_add(Weight::from_parts(2_044_855, 0).saturating_mul(c.into()))
 	}
 }
diff --git a/runtime/common/src/weights/paritydb_weights.rs b/runtime/common/src/weights/paritydb_weights.rs
index bf8c921e88c37b0fc362f4b28f5da7796d10050b..f6a5484f2153b6cbbd065954c3c75706d5db9465 100644
--- a/runtime/common/src/weights/paritydb_weights.rs
+++ b/runtime/common/src/weights/paritydb_weights.rs
@@ -1,6 +1,6 @@
 
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2024-02-19 (Y/M/D)
+//! DATE: 2024-03-07 (Y/M/D)
 //! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
 //!
 //! DATABASE: `ParityDb`, RUNTIME: `Äždev Local Testnet`
@@ -33,31 +33,31 @@ pub mod constants {
 			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
 			///
 			/// Stats nanoseconds:
-			///   Min, Max: 975, 1_465_943
-			///   Average:  12_984
-			///   Median:   1_732
-			///   Std-Dev:  127436.8
+			///   Min, Max: 950, 1_381_817
+			///   Average:  12_278
+			///   Median:   1_541
+			///   Std-Dev:  120586.22
 			///
 			/// Percentiles nanoseconds:
-			///   99th: 12_135
-			///   95th: 2_617
-			///   75th: 2_003
-			read: 25_968 * constants::WEIGHT_REF_TIME_PER_NANOS,
+			///   99th: 13_355
+			///   95th: 2_279
+			///   75th: 1_722
+			read: 24_556 * constants::WEIGHT_REF_TIME_PER_NANOS,
 
 			/// Time to write one storage item.
 			/// Calculated by multiplying the *Average* of all values with `2.0` and adding `0`.
 			///
 			/// Stats nanoseconds:
-			///   Min, Max: 3_884, 7_144_773
-			///   Average:  63_754
-			///   Median:   9_280
-			///   Std-Dev:  621052.03
+			///   Min, Max: 3_867, 6_844_962
+			///   Average:  62_096
+			///   Median:   9_057
+			///   Std-Dev:  597208.3
 			///
 			/// Percentiles nanoseconds:
-			///   99th: 17_522
-			///   95th: 13_369
-			///   75th: 11_143
-			write: 127_508 * constants::WEIGHT_REF_TIME_PER_NANOS,
+			///   99th: 28_062
+			///   95th: 16_544
+			///   75th: 11_426
+			write: 124_192 * constants::WEIGHT_REF_TIME_PER_NANOS,
 		};
 	}