diff --git a/pallets/identity/src/types.rs b/pallets/identity/src/types.rs
index 60d92bbb676fb34301dcc1a9ba80a99eca2cbf9c..1de3c46560e150dd82e9bfe9982922c80683d234 100644
--- a/pallets/identity/src/types.rs
+++ b/pallets/identity/src/types.rs
@@ -16,7 +16,7 @@
 
 //! Various basic types for use in the identity pallet.
 
-use codec::{Decode, Encode};
+use codec::{Decode, DecodeWithMemTracking, Encode};
 use frame_support::pallet_prelude::*;
 use scale_info::{prelude::vec::Vec, TypeInfo};
 use serde::{Deserialize, Serialize};
@@ -45,7 +45,7 @@ pub enum IdtyEvent<T: crate::Config> {
 }
 
 /// Reasons for revocation.
-#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)]
+#[derive(Encode, Decode, DecodeWithMemTracking, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)]
 pub enum RevocationReason {
     /// Revoked by root (e.g., governance or migration).
     Root,
@@ -56,7 +56,7 @@ pub enum RevocationReason {
 }
 
 /// Reasons for removal.
-#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)]
+#[derive(Encode, Decode, Clone, DecodeWithMemTracking, PartialEq, Eq, RuntimeDebug, TypeInfo)]
 pub enum RemovalReason {
     /// Removed by root.
     Root,
@@ -72,6 +72,7 @@ pub enum RemovalReason {
 #[derive(
     Encode,
     Decode,
+    DecodeWithMemTracking,
     Default,
     Clone,
     PartialEq,
diff --git a/pallets/membership/src/lib.rs b/pallets/membership/src/lib.rs
index ffbd6b8798af9898a06d95cc8ec8bca2159e8ffd..402639c36bbe59f11aa8f40d0a73660b2f71f9f5 100644
--- a/pallets/membership/src/lib.rs
+++ b/pallets/membership/src/lib.rs
@@ -57,7 +57,7 @@ impl<IdtyId, AccountId> SetupBenchmark<IdtyId, AccountId> for () {
 }
 
 /// Represent reasons for the removal of membership.
-#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)]
+#[derive(Encode, Decode, Clone, DecodeWithMemTracking, PartialEq, Eq, RuntimeDebug, TypeInfo)]
 pub enum MembershipRemovalReason {
     /// Indicates membership was removed because it reached the end of its life.
     Expired,
diff --git a/pallets/oneshot-account/src/check_nonce.rs b/pallets/oneshot-account/src/check_nonce.rs
index 63968eddb7a09e457fd8223e8c52358bba070e23..8b7278afc0638ad4719ee178fdd63af5bc5fe2fc 100644
--- a/pallets/oneshot-account/src/check_nonce.rs
+++ b/pallets/oneshot-account/src/check_nonce.rs
@@ -16,7 +16,7 @@
 
 use crate::Config;
 
-use codec::{Decode, Encode};
+use codec::{Decode, DecodeWithMemTracking, Encode};
 use frame_support::{dispatch::DispatchInfo, pallet_prelude::Weight, traits::IsSubType};
 //use frame_system::Config;
 use scale_info::{
@@ -33,7 +33,7 @@ use sp_runtime::{
 };
 
 /// Wrapper around `frame_system::CheckNonce<T>`.
-#[derive(Encode, Decode, Clone, Eq, PartialEq, TypeInfo)]
+#[derive(Encode, Decode, DecodeWithMemTracking, Clone, Eq, PartialEq, TypeInfo)]
 #[scale_info(skip_type_params(Runtime))]
 pub struct CheckNonce<T: Config>(pub frame_system::CheckNonce<T>);
 
@@ -74,7 +74,7 @@ where
         info: &DispatchInfoOf<T::RuntimeCall>,
         len: usize,
         self_implicit: Self::Implicit,
-        inherited_implication: &impl Encode,
+        inherited_implication: &(impl Encode + sp_runtime::traits::Implication),
         source: TransactionSource,
     ) -> ValidateResult<Self::Val, T::RuntimeCall> {
         self.0.validate(
diff --git a/pallets/provide-randomness/src/types.rs b/pallets/provide-randomness/src/types.rs
index 4dfeda203152ff43330ecf9814644845ffe7d3de..50270f0b80e6828844f4ccec9316ed4eae75ead3 100644
--- a/pallets/provide-randomness/src/types.rs
+++ b/pallets/provide-randomness/src/types.rs
@@ -17,13 +17,15 @@
 //! Various basic types for use in pallet provide randomness
 
 use super::RequestId;
-use codec::{Decode, Encode};
+use codec::{Decode, DecodeWithMemTracking, Encode};
 use frame_support::pallet_prelude::*;
 use scale_info::TypeInfo;
 use sp_core::H256;
 
 /// The type of randomness source.
-#[derive(Clone, Copy, Decode, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo)]
+#[derive(
+    Clone, DecodeWithMemTracking, Copy, Decode, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo,
+)]
 pub enum RandomnessType {
     /// Randomness derived from the previous block.
     RandomnessFromPreviousBlock,
diff --git a/primitives/distance/src/lib.rs b/primitives/distance/src/lib.rs
index c447da1020bb48d8ba944c5a8af22ba9e98cdf11..823ba54bdd09cae754eea2a8350f5556c95adacd 100644
--- a/primitives/distance/src/lib.rs
+++ b/primitives/distance/src/lib.rs
@@ -19,7 +19,7 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 #![allow(clippy::type_complexity)]
 
-use codec::{Decode, Encode};
+use codec::{Decode, DecodeWithMemTracking, Encode};
 use frame_support::pallet_prelude::RuntimeDebug;
 use scale_info::TypeInfo;
 use sp_inherents::{InherentData, InherentIdentifier, IsFatalError};
@@ -30,7 +30,7 @@ use std::marker::PhantomData;
 pub const INHERENT_IDENTIFIER: InherentIdentifier = *b"distanc0";
 
 /// Represents the result of a distance computation.
-#[derive(Clone, Decode, Encode, PartialEq, RuntimeDebug, TypeInfo)]
+#[derive(Clone, DecodeWithMemTracking, Decode, Encode, PartialEq, RuntimeDebug, TypeInfo)]
 pub struct ComputationResult {
     pub distances: scale_info::prelude::vec::Vec<Perbill>,
 }