diff --git a/runtime/gdev/tests/common/golden_testing/iterative.rs b/runtime/gdev/tests/common/golden_testing/iterative.rs
index 6d88b883cd1fda7b24f13b2704725133ad5309a3..93b650c489f7bf5ebc9ef478f13aec0c8c02f81d 100644
--- a/runtime/gdev/tests/common/golden_testing/iterative.rs
+++ b/runtime/gdev/tests/common/golden_testing/iterative.rs
@@ -320,6 +320,20 @@ impl StorageIterativeChecker {
                     Key::_ManualKey("Multisig".to_string(), "Multisigs".to_string(), "[
 ]".to_string()),
                     Key::_ManualKey("AtomicSwap".to_string(), "PendingSwaps".to_string(), "[
+]".to_string()),
+                    Key::_ManualKey("Grandpa".to_string(), "SetIdSession".to_string(), "[
+	0 = 0
+]".to_string()),
+                    Key::_ManualKey("Cert".to_string(), "StorageIdtyCertMeta".to_string(), "[
+	1 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	2 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	3 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	4 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+]".to_string()),
+                    Key::_ManualKey("SmithCert".to_string(), "StorageIdtyCertMeta".to_string(), "[
+	1 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+	2 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+	3 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
 ]".to_string()),
                 ]
             },
diff --git a/runtime/gdev/tests/common/golden_testing/key.rs b/runtime/gdev/tests/common/golden_testing/key.rs
index 94606ed94e34c29a14ea9bc7bf3fedb7c58d5dca..f165f13499a82bec04b250a40e4deaeccba0a897 100644
--- a/runtime/gdev/tests/common/golden_testing/key.rs
+++ b/runtime/gdev/tests/common/golden_testing/key.rs
@@ -6,11 +6,11 @@ use common_runtime::entities::IdtyData;
 use common_runtime::{AccountId, BlockNumber, IdtyIndex};
 use frame_support::instances::{Instance1, Instance2};
 use frame_support::metadata::RuntimeMetadata;
-use frame_support::storage::{storage_prefix, PrefixIterator};
+use frame_support::storage::{storage_prefix, KeyPrefixIterator, PrefixIterator};
 use frame_support::traits::schedule::v3::TaskName;
 use frame_support::traits::{Currency, WrapperOpaque};
 use frame_support::{
-    Blake2_128Concat, Hashable, ReversibleStorageHasher, StorageHasher, Twox64Concat,
+    Blake2_128Concat, Hashable, Identity, ReversibleStorageHasher, StorageHasher, Twox64Concat,
 };
 use frame_system::AccountInfo;
 use gdev_runtime::opaque::SessionKeys;
@@ -18,9 +18,11 @@ use gdev_runtime::Runtime;
 use maplit::btreemap;
 use pallet_authority_members::MemberData;
 use pallet_balances::{AccountData, ReserveData};
+use pallet_certification::IdtyCertMeta;
 use pallet_collective::Votes;
 use pallet_identity::{IdtyName, IdtyValue};
-use pallet_im_online::{AuthIndex, BoundedOpaqueNetworkState, ValidatorId};
+use pallet_im_online::{AuthIndex, ValidatorId};
+use pallet_offences::Config;
 use pallet_preimage::RequestStatus;
 use pallet_scheduler::{ScheduledOf, TaskAddress};
 use pretty_assertions::assert_eq;
@@ -29,13 +31,13 @@ use sp_consensus_babe::{AuthorityId, BabeAuthorityWeight};
 use sp_consensus_vrf::schnorrkel;
 use sp_core::bounded::{BoundedVec, WeakBoundedVec};
 use sp_core::crypto::{AccountId32, KeyTypeId};
-use sp_core::ConstU32;
+use sp_core::{ConstU32, Get, TypedGet};
 use sp_finality_grandpa::SetId;
 use sp_io::TestExternalities;
 use sp_runtime::RuntimeString;
 use sp_std::map;
 use std::collections::{BTreeMap, HashMap};
-use std::fmt::{format, Debug};
+use std::fmt::{format, Debug, Formatter};
 use std::iter::Map;
 use std::ops::Add;
 use std::ptr::read;
@@ -52,6 +54,52 @@ type BalanceOf<T> = <<T as pallet_preimage::Config>::Currency as Currency<
 >>::Balance;
 /// Maximum size of preimage we can store is 4mb.
 const MAX_SIZE: u32 = 4 * 1024 * 1024;
+// #[derive(Debug)]
+// type Custom<P, M, A> = BoundedOpaqueNetworkState<P, M, A>;
+
+// impl Debug for BoundedOpaqueNetworkState<P, M, A> {
+//     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
+//         todo!()
+//     }
+// }
+
+#[doc = "Const getter for a basic type."]
+#[derive(frame_support::RuntimeDebug, PartialEq, Clone)]
+pub struct MyConstU32<const T: u32>;
+impl<const T: u32> Get<u32> for MyConstU32<T> {
+    fn get() -> u32 {
+        T
+    }
+}
+impl<const T: u32> Get<Option<u32>> for MyConstU32<T> {
+    fn get() -> Option<u32> {
+        Some(T)
+    }
+}
+impl<const T: u32> TypedGet for MyConstU32<T> {
+    type Type = u32;
+    fn get() -> u32 {
+        T
+    }
+}
+type Get32 = MyConstU32<100>;
+
+#[derive(Debug, codec::Encode, codec::Decode, PartialEq, Clone)]
+pub struct CustomBoundedOpaqueNetworkState<
+    PeerIdEncodingLimit,
+    MultiAddrEncodingLimit,
+    AddressesLimit,
+> where
+    PeerIdEncodingLimit: Get<u32>,
+    MultiAddrEncodingLimit: Get<u32>,
+    AddressesLimit: Get<u32>,
+{
+    /// PeerId of the local node in SCALE encoded.
+    pub peer_id: WeakBoundedVec<u8, PeerIdEncodingLimit>,
+    /// List of addresses the node knows it can be reached as.
+    pub external_addresses:
+        WeakBoundedVec<WeakBoundedVec<u8, MultiAddrEncodingLimit>, AddressesLimit>,
+}
 
 /// Structured Key name.
 /// Composed of two fields which are the same used by Substrate #[pallet::storage] macro as described
@@ -143,13 +191,25 @@ pub enum Key {
     _ManualKey(String, String, String),
     SystemAccount,
     SystemBlockHash,
-    SystemExtrinsicData,
-    SystemEventTopics,
+    SystemExtrinsicData(BTreeMap<u32, Vec<u8>>),
+    SystemEventTopics(
+        BTreeMap<
+            <Runtime as frame_system::Config>::Hash,
+            Vec<(<Runtime as frame_system::Config>::BlockNumber, u32)>,
+        >,
+    ),
     AccountPendingRandomIdAssignments,
     AccountPendingNewAccounts,
     SchedulerAgenda,
-    SchedulerLookup,
-    BabeUnderConstruction,
+    SchedulerLookup(
+        BTreeMap<TaskName, TaskAddress<<Runtime as frame_system::Config>::BlockNumber>>,
+    ),
+    BabeUnderConstruction(
+        BTreeMap<
+            u32,
+            BoundedVec<schnorrkel::Randomness, ConstU32<UNDER_CONSTRUCTION_SEGMENT_LENGTH>>,
+        >,
+    ),
     BalancesAccount,
     BalancesLocks,
     BalancesReserves,
@@ -162,11 +222,23 @@ pub enum Key {
     OffencesConcurrentReportsIndex,
     SessionNextKeys,
     SessionKeyOwner,
-    GrandpaSetIdSession,
-    ImOnlineReceivedHeartbeats,
-    ImOnlineAuthoredBlocks,
-    PreimageStatusFor,
-    PreimagePreimageFor,
+    GrandpaSetIdSession(BTreeMap<SetId, SessionIndex>),
+    ImOnlineReceivedHeartbeats(
+        BTreeMap<(SessionIndex, AuthIndex), CustomBoundedOpaqueNetworkState<Get32, Get32, Get32>>,
+    ),
+    ImOnlineAuthoredBlocks(BTreeMap<(SessionIndex, ValidatorId<Runtime>), u32>),
+    PreimageStatusFor(
+        BTreeMap<
+            <Runtime as frame_system::Config>::Hash,
+            RequestStatus<<Runtime as frame_system::Config>::AccountId, BalanceOf<Runtime>>,
+        >,
+    ),
+    PreimagePreimageFor(
+        BTreeMap<
+            (<Runtime as frame_system::Config>::Hash, u32),
+            BoundedVec<u8, ConstU32<MAX_SIZE>>,
+        >,
+    ),
     TechnicalCommitteeProposalOf,
     TechnicalCommitteeVoting,
     IdentityIdentityIndexOf,
@@ -175,14 +247,24 @@ pub enum Key {
     MembershipMembershipsExpireOn,
     MembershipPendingMembership,
     MembershipPendingMembershipsExpireOn,
-    CertStorageIdtyCertMeta,
+    CertStorageIdtyCertMeta(
+        BTreeMap<
+            <Runtime as pallet_certification::Config<Instance1>>::IdtyIndex,
+            IdtyCertMeta<<Runtime as frame_system::Config>::BlockNumber>,
+        >,
+    ),
     CertCertsByReceiver,
     CertStorageCertsRemovableOn,
     SmithMembershipMembership,
     SmithMembershipMembershipsExpireOn,
     SmithMembershipPendingMembership,
     SmithMembershipPendingMembershipsExpireOn,
-    SmithCertStorageIdtyCertMeta,
+    SmithCertStorageIdtyCertMeta(
+        BTreeMap<
+            <Runtime as pallet_certification::Config<Instance2>>::IdtyIndex,
+            IdtyCertMeta<<Runtime as frame_system::Config>::BlockNumber>,
+        >,
+    ),
     SmithCertCertsByReceiver,
     SmithCertStorageCertsRemovableOn,
     AtomicSwapPendingSwaps,
@@ -266,13 +348,13 @@ impl Key {
             }
             Key::SystemAccount => eq(k, (), v_str, kv, ekv),
             Key::SystemBlockHash => eq(k, (), v_str, kv, ekv),
-            Key::SystemExtrinsicData => eq(k, (), v_str, kv, ekv),
-            Key::SystemEventTopics => eq(k, (), v_str, kv, ekv),
+            Key::SystemExtrinsicData(v) => eq(k, v, v_str, kv, ekv),
+            Key::SystemEventTopics(v) => eq(k, v, v_str, kv, ekv),
             Key::AccountPendingRandomIdAssignments => eq(k, (), v_str, kv, ekv),
             Key::AccountPendingNewAccounts => eq(k, (), v_str, kv, ekv),
             Key::SchedulerAgenda => eq(k, (), v_str, kv, ekv),
-            Key::SchedulerLookup => eq(k, (), v_str, kv, ekv),
-            Key::BabeUnderConstruction => eq(k, (), v_str, kv, ekv),
+            Key::SchedulerLookup(v) => eq(k, v, v_str, kv, ekv),
+            Key::BabeUnderConstruction(v) => eq(k, (), v_str, kv, ekv),
             Key::BalancesAccount => eq(k, (), v_str, kv, ekv),
             Key::BalancesLocks => eq(k, (), v_str, kv, ekv),
             Key::BalancesReserves => eq(k, (), v_str, kv, ekv),
@@ -285,11 +367,11 @@ impl Key {
             Key::OffencesConcurrentReportsIndex => eq(k, (), v_str, kv, ekv),
             Key::SessionNextKeys => eq(k, (), v_str, kv, ekv),
             Key::SessionKeyOwner => eq(k, (), v_str, kv, ekv),
-            Key::GrandpaSetIdSession => eq(k, (), v_str, kv, ekv),
-            Key::ImOnlineReceivedHeartbeats => eq(k, (), v_str, kv, ekv),
-            Key::ImOnlineAuthoredBlocks => eq(k, (), v_str, kv, ekv),
-            Key::PreimageStatusFor => eq(k, (), v_str, kv, ekv),
-            Key::PreimagePreimageFor => eq(k, (), v_str, kv, ekv),
+            Key::GrandpaSetIdSession(v) => eq(k, v, v_str, kv, ekv),
+            Key::ImOnlineReceivedHeartbeats(v) => eq(k, v, v_str, kv, ekv),
+            Key::ImOnlineAuthoredBlocks(v) => eq(k, v, v_str, kv, ekv),
+            Key::PreimageStatusFor(v) => eq(k, v, v_str, kv, ekv),
+            Key::PreimagePreimageFor(v) => eq(k, v, v_str, kv, ekv),
             Key::TechnicalCommitteeProposalOf => eq(k, (), v_str, kv, ekv),
             Key::TechnicalCommitteeVoting => eq(k, (), v_str, kv, ekv),
             Key::IdentityIdentityIndexOf => eq(k, (), v_str, kv, ekv),
@@ -298,14 +380,14 @@ impl Key {
             Key::MembershipMembershipsExpireOn => eq(k, (), v_str, kv, ekv),
             Key::MembershipPendingMembership => eq(k, (), v_str, kv, ekv),
             Key::MembershipPendingMembershipsExpireOn => eq(k, (), v_str, kv, ekv),
-            Key::CertStorageIdtyCertMeta => eq(k, (), v_str, kv, ekv),
+            Key::CertStorageIdtyCertMeta(v) => eq(k, v, v_str, kv, ekv),
             Key::CertCertsByReceiver => eq(k, (), v_str, kv, ekv),
             Key::CertStorageCertsRemovableOn => eq(k, (), v_str, kv, ekv),
             Key::SmithMembershipMembership => eq(k, (), v_str, kv, ekv),
             Key::SmithMembershipMembershipsExpireOn => eq(k, (), v_str, kv, ekv),
             Key::SmithMembershipPendingMembership => eq(k, (), v_str, kv, ekv),
             Key::SmithMembershipPendingMembershipsExpireOn => eq(k, (), v_str, kv, ekv),
-            Key::SmithCertStorageIdtyCertMeta => eq(k, (), v_str, kv, ekv),
+            Key::SmithCertStorageIdtyCertMeta(v) => eq(k, v, v_str, kv, ekv),
             Key::SmithCertCertsByReceiver => eq(k, (), v_str, kv, ekv),
             Key::SmithCertStorageCertsRemovableOn => eq(k, (), v_str, kv, ekv),
             Key::AtomicSwapPendingSwaps => eq(k, (), v_str, kv, ekv),
@@ -371,15 +453,15 @@ impl Key {
             Key::ImOnlineKeys(_) => KeyName::new("ImOnline", "Keys"),
             Key::SystemAccount => KeyName::new("System", "Account"),
             Key::SystemBlockHash => KeyName::new("System", "BlockHash"),
-            Key::SystemExtrinsicData => KeyName::new("System", "ExtrinsicData"),
-            Key::SystemEventTopics => KeyName::new("System", "EventTopics"),
+            Key::SystemExtrinsicData(_) => KeyName::new("System", "ExtrinsicData"),
+            Key::SystemEventTopics(_) => KeyName::new("System", "EventTopics"),
             Key::AccountPendingRandomIdAssignments => {
                 KeyName::new("Account", "PendingRandomIdAssignments")
             }
             Key::AccountPendingNewAccounts => KeyName::new("Account", "PendingNewAccounts"),
             Key::SchedulerAgenda => KeyName::new("Scheduler", "Agenda"),
-            Key::SchedulerLookup => KeyName::new("Scheduler", "Lookup"),
-            Key::BabeUnderConstruction => KeyName::new("Babe", "UnderConstruction"),
+            Key::SchedulerLookup(_) => KeyName::new("Scheduler", "Lookup"),
+            Key::BabeUnderConstruction(_) => KeyName::new("Babe", "UnderConstruction"),
             Key::BalancesAccount => KeyName::new("Balances", "Account"),
             Key::BalancesLocks => KeyName::new("Balances", "Locks"),
             Key::BalancesReserves => KeyName::new("Balances", "Reserves"),
@@ -398,11 +480,11 @@ impl Key {
             }
             Key::SessionNextKeys => KeyName::new("Session", "NextKeys"),
             Key::SessionKeyOwner => KeyName::new("Session", "KeyOwner"),
-            Key::GrandpaSetIdSession => KeyName::new("Grandpa", "SetIdSession"),
-            Key::ImOnlineReceivedHeartbeats => KeyName::new("ImOnline", "ReceivedHeartbeats"),
-            Key::ImOnlineAuthoredBlocks => KeyName::new("ImOnline", "AuthoredBlocks"),
-            Key::PreimageStatusFor => KeyName::new("Preimage", "StatusFor"),
-            Key::PreimagePreimageFor => KeyName::new("Preimage", "PreimageFor"),
+            Key::GrandpaSetIdSession(_) => KeyName::new("Grandpa", "SetIdSession"),
+            Key::ImOnlineReceivedHeartbeats(_) => KeyName::new("ImOnline", "ReceivedHeartbeats"),
+            Key::ImOnlineAuthoredBlocks(_) => KeyName::new("ImOnline", "AuthoredBlocks"),
+            Key::PreimageStatusFor(_) => KeyName::new("Preimage", "StatusFor"),
+            Key::PreimagePreimageFor(_) => KeyName::new("Preimage", "PreimageFor"),
             Key::TechnicalCommitteeProposalOf => KeyName::new("TechnicalCommittee", "ProposalOf"),
             Key::TechnicalCommitteeVoting => KeyName::new("TechnicalCommittee", "Voting"),
             Key::IdentityIdentityIndexOf => KeyName::new("Identity", "IdentityIndexOf"),
@@ -413,7 +495,7 @@ impl Key {
             Key::MembershipPendingMembershipsExpireOn => {
                 KeyName::new("Membership", "PendingMembershipsExpireOn")
             }
-            Key::CertStorageIdtyCertMeta => KeyName::new("Cert", "StorageIdtyCertMeta"),
+            Key::CertStorageIdtyCertMeta(_) => KeyName::new("Cert", "StorageIdtyCertMeta"),
             Key::CertCertsByReceiver => KeyName::new("Cert", "CertsByReceiver"),
             Key::CertStorageCertsRemovableOn => KeyName::new("Cert", "StorageCertsRemovableOn"),
             Key::SmithMembershipMembership => KeyName::new("SmithMembership", "Membership"),
@@ -426,7 +508,9 @@ impl Key {
             Key::SmithMembershipPendingMembershipsExpireOn => {
                 KeyName::new("SmithMembership", "PendingMembershipsExpireOn")
             }
-            Key::SmithCertStorageIdtyCertMeta => KeyName::new("SmithCert", "StorageIdtyCertMeta"),
+            Key::SmithCertStorageIdtyCertMeta(_) => {
+                KeyName::new("SmithCert", "StorageIdtyCertMeta")
+            }
             Key::SmithCertCertsByReceiver => KeyName::new("SmithCertCert", "sByReceiver"),
             Key::SmithCertStorageCertsRemovableOn => {
                 KeyName::new("SmithCert", "StorageCertsRemovableOn")
@@ -477,8 +561,12 @@ impl Key {
             Key::ImOnlineKeys(v) => format!("{:?}", v),
             Key::SystemAccount => String::from("TODO: implement in to_map_key_value_closure"),
             Key::SystemBlockHash => String::from("TODO: implement in to_map_key_value_closure"),
-            Key::SystemExtrinsicData => String::from("TODO: implement in to_map_key_value_closure"),
-            Key::SystemEventTopics => String::from("TODO: implement in to_map_key_value_closure"),
+            Key::SystemExtrinsicData(_) => {
+                String::from("TODO: implement in to_map_key_value_closure")
+            }
+            Key::SystemEventTopics(_) => {
+                String::from("TODO: implement in to_map_key_value_closure")
+            }
             Key::AccountPendingRandomIdAssignments => {
                 String::from("TODO: implement in to_map_key_value_closure")
             }
@@ -486,8 +574,8 @@ impl Key {
                 String::from("TODO: implement in to_map_key_value_closure")
             }
             Key::SchedulerAgenda => String::from("TODO: implement in to_map_key_value_closure"),
-            Key::SchedulerLookup => String::from("TODO: implement in to_map_key_value_closure"),
-            Key::BabeUnderConstruction => {
+            Key::SchedulerLookup(_) => String::from("TODO: implement in to_map_key_value_closure"),
+            Key::BabeUnderConstruction(_) => {
                 String::from("TODO: implement in to_map_key_value_closure")
             }
             Key::BalancesAccount => String::from("TODO: implement in to_map_key_value_closure"),
@@ -514,15 +602,21 @@ impl Key {
             }
             Key::SessionNextKeys => String::from("TODO: implement in to_map_key_value_closure"),
             Key::SessionKeyOwner => String::from("TODO: implement in to_map_key_value_closure"),
-            Key::GrandpaSetIdSession => String::from("TODO: implement in to_map_key_value_closure"),
-            Key::ImOnlineReceivedHeartbeats => {
+            Key::GrandpaSetIdSession(_) => {
+                String::from("TODO: implement in to_map_key_value_closure")
+            }
+            Key::ImOnlineReceivedHeartbeats(_) => {
+                String::from("TODO: implement in to_map_key_value_closure")
+            }
+            Key::ImOnlineAuthoredBlocks(_) => {
                 String::from("TODO: implement in to_map_key_value_closure")
             }
-            Key::ImOnlineAuthoredBlocks => {
+            Key::PreimageStatusFor(_) => {
+                String::from("TODO: implement in to_map_key_value_closure")
+            }
+            Key::PreimagePreimageFor(_) => {
                 String::from("TODO: implement in to_map_key_value_closure")
             }
-            Key::PreimageStatusFor => String::from("TODO: implement in to_map_key_value_closure"),
-            Key::PreimagePreimageFor => String::from("TODO: implement in to_map_key_value_closure"),
             Key::TechnicalCommitteeProposalOf => {
                 String::from("TODO: implement in to_map_key_value_closure")
             }
@@ -547,7 +641,7 @@ impl Key {
             Key::MembershipPendingMembershipsExpireOn => {
                 String::from("TODO: implement in to_map_key_value_closure")
             }
-            Key::CertStorageIdtyCertMeta => {
+            Key::CertStorageIdtyCertMeta(_) => {
                 String::from("TODO: implement in to_map_key_value_closure")
             }
             Key::CertCertsByReceiver => String::from("TODO: implement in to_map_key_value_closure"),
@@ -566,7 +660,7 @@ impl Key {
             Key::SmithMembershipPendingMembershipsExpireOn => {
                 String::from("TODO: implement in to_map_key_value_closure")
             }
-            Key::SmithCertStorageIdtyCertMeta => {
+            Key::SmithCertStorageIdtyCertMeta(_) => {
                 String::from("TODO: implement in to_map_key_value_closure")
             }
             Key::SmithCertCertsByReceiver => {
@@ -639,28 +733,42 @@ impl Key {
             Key::SystemBlockHash => {
                 Some(|| to_kv(frame_system::BlockHash::<Runtime>::iter().collect()))
             }
-            // TODO: private field
-            // Key::SystemExtrinsicData => Some(|| to_kv(frame_system::ExtrinsicData::<Runtime>::iter().collect())),
-            // Key::SystemEventTopics => Some(|| to_kv(frame_system::EventTopics::<Runtime>::iter().collect())),
-            Key::SystemExtrinsicData => None,
-            Key::SystemEventTopics => None,
+            Key::SystemExtrinsicData(_) => Some(move || {
+                read_map::<u32, Vec<u8>, Twox64Concat>(KeyName::new("System", "ExtrinsicData"))
+            }),
+            Key::SystemEventTopics(_) => Some(move || {
+                read_map::<
+                    <Runtime as frame_system::Config>::Hash,
+                    Vec<(<Runtime as frame_system::Config>::BlockNumber, u32)>,
+                    Blake2_128Concat,
+                >(KeyName::new("System", "EventTopics"))
+            }),
             Key::AccountPendingRandomIdAssignments => Some(|| {
                 to_kv(
                     pallet_duniter_account::PendingRandomIdAssignments::<Runtime>::iter().collect(),
                 )
             }),
-            // TODO: no failing test?
             Key::AccountPendingNewAccounts => Some(|| {
                 to_kv(pallet_duniter_account::PendingNewAccounts::<Runtime>::iter().collect())
             }),
             Key::SchedulerAgenda => {
                 Some(|| to_kv(pallet_scheduler::Agenda::<Runtime>::iter().collect()))
             }
-            // TODO: private field
-            // Key::SchedulerLookup => Some(|| to_kv(pallet_scheduler::Lookup::<Runtime>::iter().collect())),
+            Key::SchedulerLookup(_) => Some(|| {
+                read_map::<
+                    TaskName,
+                    TaskAddress<<Runtime as frame_system::Config>::BlockNumber>,
+                    Twox64Concat,
+                >(KeyName::new("Scheduler", "Lookup"))
+            }),
             // Key::BabeUnderConstruction => Some(|| to_kv(pallet_babe::UnderConstruction::<Runtime>::iter().collect())),
-            Key::SchedulerLookup => None,
-            Key::BabeUnderConstruction => None,
+            Key::BabeUnderConstruction(_) => Some(|| {
+                read_map::<
+                    u32,
+                    BoundedVec<schnorrkel::Randomness, ConstU32<UNDER_CONSTRUCTION_SEGMENT_LENGTH>>,
+                    Twox64Concat,
+                >(KeyName::new("Babe", "UnderConstruction"))
+            }),
             Key::BalancesAccount => {
                 Some(|| to_kv(pallet_balances::Account::<Runtime>::iter().collect()))
             }
@@ -688,26 +796,53 @@ impl Key {
             Key::OffencesReports => {
                 Some(|| to_kv(pallet_offences::Reports::<Runtime>::iter().collect()))
             }
-            Key::OffencesConcurrentReportsIndex => Some(|| to_kv(pallet_offences::ConcurrentReportsIndex::<Runtime>::iter()
-                .map(to_simple_map)
-                .collect())),
+            Key::OffencesConcurrentReportsIndex => Some(|| {
+                to_kv(
+                    pallet_offences::ConcurrentReportsIndex::<Runtime>::iter()
+                        .map(to_simple_map)
+                        .collect(),
+                )
+            }),
             Key::SessionNextKeys => {
                 Some(|| to_kv(pallet_session::NextKeys::<Runtime>::iter().collect()))
             }
             Key::SessionKeyOwner => {
                 Some(|| to_kv(pallet_session::KeyOwner::<Runtime>::iter().collect()))
             }
-            // TODO: private field
-            Key::GrandpaSetIdSession => None,
-            Key::ImOnlineReceivedHeartbeats => None,
-            Key::ImOnlineAuthoredBlocks => None,
-            Key::PreimageStatusFor => None,
-            Key::PreimagePreimageFor => None,
-            // Key::GrandpaSetIdSession => Some(|| to_kv(pallet_grandpa::SetIdSession::<Runtime>::iter().collect())),
-            // Key::ImOnlineReceivedHeartbeats => Some(|| to_kv(pallet_im_online::ReceivedHeartbeats::<Runtime>::iter().collect())),
-            // Key::ImOnlineAuthoredBlocks => Some(|| to_kv(pallet_im_online::AuthoredBlocks::<Runtime>::iter().collect())),
-            // Key::PreimageStatusFor => Some(|| to_kv(pallet_preimage::StatusFor::<Runtime>::iter().collect())),
-            // Key::PreimagePreimageFor => Some(|| to_kv(pallet_preimage::PreimageFor::<Runtime>::iter().collect())),
+            Key::GrandpaSetIdSession(_) => Some(|| {
+                read_map::<SetId, SessionIndex, Twox64Concat>(KeyName::new(
+                    "Grandpa",
+                    "SetIdSession",
+                ))
+            }),
+            Key::ImOnlineReceivedHeartbeats(_) => Some(|| {
+                read_double_map::<
+                    SessionIndex,
+                    AuthIndex,
+                    CustomBoundedOpaqueNetworkState<Get32, Get32, Get32>,
+                    Twox64Concat,
+                    Twox64Concat,
+                >(KeyName::new("ImOnline", "ReceivedHeartbeats"))
+            }),
+            Key::ImOnlineAuthoredBlocks(_) => Some(|| {
+                read_double_map::<SessionIndex, ValidatorId<Runtime>, u32, Twox64Concat, Twox64Concat>(
+                    KeyName::new("ImOnline", "AuthoredBlocks"),
+                )
+            }),
+            Key::PreimageStatusFor(_) => Some(|| {
+                read_map::<
+                    <Runtime as frame_system::Config>::Hash,
+                    RequestStatus<<Runtime as frame_system::Config>::AccountId, BalanceOf<Runtime>>,
+                    Identity,
+                >(KeyName::new("Preimage", "StatusFor"))
+            }),
+            Key::PreimagePreimageFor(_) => Some(|| {
+                read_map::<
+                    (<Runtime as frame_system::Config>::Hash, u32),
+                    BoundedVec<u8, ConstU32<MAX_SIZE>>,
+                    Identity,
+                >(KeyName::new("Preimage", "PreimageFor"))
+            }),
             Key::TechnicalCommitteeProposalOf => Some(|| {
                 to_kv(pallet_collective::ProposalOf::<Runtime, Instance2>::iter().collect())
             }),
@@ -737,9 +872,13 @@ impl Key {
                         .collect(),
                 )
             }),
-            // TODO: private field
-            // Key::CertStorageIdtyCertMeta => Some(|| to_kv(pallet_certification::IdtyCertMeta::<Runtime, Instance1>::iter().collect())),
-            Key::CertStorageIdtyCertMeta => None,
+            Key::CertStorageIdtyCertMeta(_) => Some(|| {
+                read_map::<
+                    <Runtime as pallet_certification::Config<Instance1>>::IdtyIndex,
+                    IdtyCertMeta<<Runtime as frame_system::Config>::BlockNumber>,
+                    Twox64Concat,
+                >(KeyName::new("Cert", "StorageIdtyCertMeta"))
+            }),
             Key::CertCertsByReceiver => Some(|| {
                 to_kv(pallet_certification::CertsByReceiver::<Runtime, Instance1>::iter().collect())
             }),
@@ -766,9 +905,13 @@ impl Key {
                         .collect(),
                 )
             }),
-            // TODO: compile
-            // Key::SmithCertStorageIdtyCertMeta => Some(|| to_kv(pallet_certification::IdtyCertMeta<<Runtime as frame_system:Config>::BlockNumber>::iter().collect())),
-            Key::SmithCertStorageIdtyCertMeta => None,
+            Key::SmithCertStorageIdtyCertMeta(_) => Some(|| {
+                read_map::<
+                    <Runtime as pallet_certification::Config<Instance2>>::IdtyIndex,
+                    IdtyCertMeta<<Runtime as frame_system::Config>::BlockNumber>,
+                    Twox64Concat,
+                >(KeyName::new("SmithCert", "StorageIdtyCertMeta"))
+            }),
             Key::SmithCertCertsByReceiver => Some(|| {
                 to_kv(pallet_certification::CertsByReceiver::<Runtime, Instance2>::iter().collect())
             }),
@@ -778,10 +921,20 @@ impl Key {
                         .collect(),
                 )
             }),
-            Key::AtomicSwapPendingSwaps => Some(|| to_kv(pallet_atomic_swap::PendingSwaps::<Runtime>::iter()
-                .map(to_simple_map).collect())),
-            Key::MultisigMultisigs => Some(|| to_kv(pallet_multisig::Multisigs::<Runtime>::iter()
-                .map(to_simple_map).collect())),
+            Key::AtomicSwapPendingSwaps => Some(|| {
+                to_kv(
+                    pallet_atomic_swap::PendingSwaps::<Runtime>::iter()
+                        .map(to_simple_map)
+                        .collect(),
+                )
+            }),
+            Key::MultisigMultisigs => Some(|| {
+                to_kv(
+                    pallet_multisig::Multisigs::<Runtime>::iter()
+                        .map(to_simple_map)
+                        .collect(),
+                )
+            }),
             Key::MultisigMultisigs => None,
             Key::ProvideRandomnessRequestsReadyAtEpoch => Some(|| {
                 to_kv(pallet_provide_randomness::RequestsReadyAtEpoch::<Runtime>::iter().collect())
@@ -796,70 +949,6 @@ impl Key {
             Key::TreasuryProposals => {
                 Some(|| to_kv(pallet_treasury::Proposals::<Runtime>::iter().collect()))
             }
-            // Key::SystemAccount(_) => read_map::<
-            //     AccountId,
-            //     AccountInfo<
-            //         <Runtime as frame_system::Config>::Index,
-            //         <Runtime as frame_system::Config>::AccountData,
-            //     >,
-            //     Blake2_128Concat,
-            // >(self.name().clone()),
-            // Key::SystemBlockHash(_) => read_map::<
-            //     <Runtime as frame_system::Config>::BlockNumber,
-            //     <Runtime as frame_system::Config>::Hash,
-            //     Twox64Concat,
-            // >(self.name().clone()),
-            // Key::SystemExtrinsicData(_) => {
-            //     read_map::<u32, Vec<u8>, Twox64Concat>(self.name().clone())
-            // }
-            // Key::SystemEventTopics(_) => None,
-            // Key::AccountPendingRandomIdAssignments(_) => None,
-            // Key::AccountPendingNewAccounts(_) => None,
-            // Key::SchedulerAgenda(_) => None,
-            // Key::SchedulerLookup(_) => None,
-            // Key::BabeUnderConstruction(_) => None,
-            // Key::BalancesAccount(_) => None,
-            // Key::BalancesLocks(_) => None,
-            // Key::BalancesReserves(_) => None,
-            // Key::OneshotAccountOneshotAccounts(_) => None,
-            // Key::AuthorityMembersAccountIdOf(_) => None,
-            // Key::AuthorityMembersMembers(_) => None,
-            // Key::AuthorityMembersMembersExpireOn(_) => None,
-            // Key::AuthorityMembersMustRotateKeysBefore(_) => None,
-            // Key::OffencesReports(_) => None,
-            // Key::OffencesConcurrentReportsIndex(_) => None,
-            // Key::SessionNextKeys(_) => None,
-            // Key::SessionKeyOwner(_) => None,
-            // Key::GrandpaSetIdSession(_) => None,
-            // Key::ImOnlineReceivedHeartbeats(_) => None,
-            // Key::ImOnlineAuthoredBlocks(_) => None,
-            // Key::PreimageStatusFor(_) => None,
-            // Key::PreimagePreimageFor(_) => None,
-            // Key::TechnicalCommitteeProposalOf(_) => None,
-            // Key::TechnicalCommitteeVoting(_) => None,
-            // Key::IdentityIdentityIndexOf(_) => None,
-            // Key::IdentityIdentitiesRemovableOn(_) => None,
-            // Key::MembershipMembership(_) => None,
-            // Key::MembershipMembershipsExpireOn(_) => None,
-            // Key::MembershipPendingMembership(_) => None,
-            // Key::MembershipPendingMembershipsExpireOn(_) => None,
-            // Key::CertStorageIdtyCertMeta(_) => None,
-            // Key::CertCertsByReceiver(_) => None,
-            // Key::CertStorageCertsRemovableOn(_) => None,
-            // Key::SmithMembershipMembership(_) => None,
-            // Key::SmithMembershipMembershipsExpireOn(_) => None,
-            // Key::SmithMembershipPendingMembership(_) => None,
-            // Key::SmithMembershipPendingMembershipsExpireOn(_) => None,
-            // Key::SmithCertStorageIdtyCertMeta(_) => None,
-            // Key::SmithCertCertsByReceiver(_) => None,
-            // Key::SmithCertStorageCertsRemovableOn(_) => None,
-            // Key::AtomicSwapPendingSwaps(_) => None,
-            // Key::MultisigMultisigs(_) => None,
-            // Key::ProvideRandomnessRequestsReadyAtEpoch(_) => None,
-            // Key::ProvideRandomnessRequestsIds(_) => None,
-            // Key::ProxyProxies(_) => None,
-            // Key::ProxyAnnouncements(_) => None,
-            // Key::TreasuryProposals(_) => None,
         };
         if let Some(c) = closure {
             return Some(Box::new(c));
@@ -902,13 +991,13 @@ impl Key {
             Key::_ManualKey(_, _, _) => None,
             Key::SystemAccount => None,
             Key::SystemBlockHash => None,
-            Key::SystemExtrinsicData => None,
-            Key::SystemEventTopics => None,
+            Key::SystemExtrinsicData(v) => to_checkable_map(v.clone()),
+            Key::SystemEventTopics(v) => to_checkable_map(v.clone()),
             Key::AccountPendingRandomIdAssignments => None,
             Key::AccountPendingNewAccounts => None,
             Key::SchedulerAgenda => None,
-            Key::SchedulerLookup => None,
-            Key::BabeUnderConstruction => None,
+            Key::SchedulerLookup(v) => to_checkable_map(v.clone()),
+            Key::BabeUnderConstruction(v) => to_checkable_map(v.clone()),
             Key::BalancesAccount => None,
             Key::BalancesLocks => None,
             Key::BalancesReserves => None,
@@ -921,11 +1010,11 @@ impl Key {
             Key::OffencesConcurrentReportsIndex => None,
             Key::SessionNextKeys => None,
             Key::SessionKeyOwner => None,
-            Key::GrandpaSetIdSession => None,
-            Key::ImOnlineReceivedHeartbeats => None,
-            Key::ImOnlineAuthoredBlocks => None,
-            Key::PreimageStatusFor => None,
-            Key::PreimagePreimageFor => None,
+            Key::GrandpaSetIdSession(v) => to_checkable_map(v.clone()),
+            Key::ImOnlineReceivedHeartbeats(v) => to_checkable_map(v.clone()),
+            Key::ImOnlineAuthoredBlocks(v) => to_checkable_map(v.clone()),
+            Key::PreimageStatusFor(v) => to_checkable_map(v.clone()),
+            Key::PreimagePreimageFor(v) => to_checkable_map(v.clone()),
             Key::TechnicalCommitteeProposalOf => None,
             Key::TechnicalCommitteeVoting => None,
             Key::IdentityIdentityIndexOf => None,
@@ -934,14 +1023,14 @@ impl Key {
             Key::MembershipMembershipsExpireOn => None,
             Key::MembershipPendingMembership => None,
             Key::MembershipPendingMembershipsExpireOn => None,
-            Key::CertStorageIdtyCertMeta => None,
+            Key::CertStorageIdtyCertMeta(v) => to_checkable_map(v.clone()),
             Key::CertCertsByReceiver => None,
             Key::CertStorageCertsRemovableOn => None,
             Key::SmithMembershipMembership => None,
             Key::SmithMembershipMembershipsExpireOn => None,
             Key::SmithMembershipPendingMembership => None,
             Key::SmithMembershipPendingMembershipsExpireOn => None,
-            Key::SmithCertStorageIdtyCertMeta => None,
+            Key::SmithCertStorageIdtyCertMeta(v) => to_checkable_map(v.clone()),
             Key::SmithCertCertsByReceiver => None,
             Key::SmithCertStorageCertsRemovableOn => None,
             Key::AtomicSwapPendingSwaps => None,
@@ -1006,13 +1095,13 @@ impl TryFrom<String> for Key {
             "Identity.Identities" => Ok(Key::IdentityIdentities(map!())),
             "System.Account" => Ok(Key::SystemAccount),
             "System.BlockHash" => Ok(Key::SystemBlockHash),
-            "System.ExtrinsicData" => Ok(Key::SystemExtrinsicData),
-            "System.EventTopics" => Ok(Key::SystemEventTopics),
+            "System.ExtrinsicData" => Ok(Key::SystemExtrinsicData(map!())),
+            "System.EventTopics" => Ok(Key::SystemEventTopics(map!())),
             "AccountPending.RandomIdAssignments" => Ok(Key::AccountPendingRandomIdAssignments),
             "AccountPending.NewAccounts" => Ok(Key::AccountPendingNewAccounts),
             "Scheduler.Agenda" => Ok(Key::SchedulerAgenda),
-            "Scheduler.Lookup" => Ok(Key::SchedulerLookup),
-            "Babe.UnderConstruction" => Ok(Key::BabeUnderConstruction),
+            "Scheduler.Lookup" => Ok(Key::SchedulerLookup(map!())),
+            "Babe.UnderConstruction" => Ok(Key::BabeUnderConstruction(map!())),
             "Balances.Account" => Ok(Key::BalancesAccount),
             "Balances.Locks" => Ok(Key::BalancesLocks),
             "Balances.Reserves" => Ok(Key::BalancesReserves),
@@ -1027,11 +1116,11 @@ impl TryFrom<String> for Key {
             "Offences.ConcurrentReportsIndex" => Ok(Key::OffencesConcurrentReportsIndex),
             "Session.NextKeys" => Ok(Key::SessionNextKeys),
             "Session.KeyOwner" => Ok(Key::SessionKeyOwner),
-            "Grandpa.SetIdSession" => Ok(Key::GrandpaSetIdSession),
-            "ImOnline.ReceivedHeartbeats" => Ok(Key::ImOnlineReceivedHeartbeats),
-            "ImOnline.AuthoredBlocks" => Ok(Key::ImOnlineAuthoredBlocks),
-            "Preimage.StatusFor" => Ok(Key::PreimageStatusFor),
-            "Preimage.PreimageFor" => Ok(Key::PreimagePreimageFor),
+            "Grandpa.SetIdSession" => Ok(Key::GrandpaSetIdSession(map!())),
+            "ImOnline.ReceivedHeartbeats" => Ok(Key::ImOnlineReceivedHeartbeats(map!())),
+            "ImOnline.AuthoredBlocks" => Ok(Key::ImOnlineAuthoredBlocks(map!())),
+            "Preimage.StatusFor" => Ok(Key::PreimageStatusFor(map!())),
+            "Preimage.PreimageFor" => Ok(Key::PreimagePreimageFor(map!())),
             "TechnicalCommittee.ProposalOf" => Ok(Key::TechnicalCommitteeProposalOf),
             "TechnicalCommittee.Voting" => Ok(Key::TechnicalCommitteeVoting),
             "Identity.IdentityIndexOf" => Ok(Key::IdentityIdentityIndexOf),
@@ -1042,7 +1131,7 @@ impl TryFrom<String> for Key {
             "Membership.PendingMembershipsExpireOn" => {
                 Ok(Key::MembershipPendingMembershipsExpireOn)
             }
-            "Cert.StorageIdtyCertMeta" => Ok(Key::CertStorageIdtyCertMeta),
+            "Cert.StorageIdtyCertMeta" => Ok(Key::CertStorageIdtyCertMeta(map!())),
             "Cert.CertsByReceiver" => Ok(Key::CertCertsByReceiver),
             "Cert.StorageCertsRemovableOn" => Ok(Key::CertStorageCertsRemovableOn),
             "SmithMembership.Membership" => Ok(Key::SmithMembershipMembership),
@@ -1051,7 +1140,7 @@ impl TryFrom<String> for Key {
             "SmithMembership.PendingMembershipsExpireOn" => {
                 Ok(Key::SmithMembershipPendingMembershipsExpireOn)
             }
-            "SmithCert.StorageIdtyCertMeta" => Ok(Key::SmithCertStorageIdtyCertMeta),
+            "SmithCert.StorageIdtyCertMeta" => Ok(Key::SmithCertStorageIdtyCertMeta(map!())),
             "SmithCertCert.sByReceiver" => Ok(Key::SmithCertCertsByReceiver),
             "SmithCert.StorageCertsRemovableOn" => Ok(Key::SmithCertStorageCertsRemovableOn),
             "AtomicSwap.PendingSwaps" => Ok(Key::AtomicSwapPendingSwaps),
@@ -1073,8 +1162,8 @@ fn eq<T>(
     key_name: KeyName,
     value: T,
     value_str: &str,
-    expected_key_values: Option<Box<dyn Fn() -> BTreeMap<Box<String>, Box<dyn Debug>>>>,
     map_key_values: Option<Box<dyn Fn() -> BTreeMap<Box<String>, Box<dyn Debug>>>>,
+    expected_key_values: Option<Box<dyn Fn() -> BTreeMap<Box<String>, Box<dyn Debug>>>>,
 ) -> Box<Checker<T>> {
     Checker::equals(
         key_name.pallet.as_str(),
@@ -1086,37 +1175,92 @@ fn eq<T>(
     )
 }
 
-fn read_map<K, V, H>(
-    key_name: KeyName,
-) -> Option<Box<dyn Fn() -> BTreeMap<Box<String>, Box<dyn Debug>>>>
+fn read_map<K, V, H>(key_name: KeyName) -> BTreeMap<Box<String>, Box<dyn Debug>>
 where
     K: FullCodec + Debug + 'static,
     V: FullCodec + Debug + 'static,
     H: StorageHasher + ReversibleStorageHasher,
 {
-    Some(Box::new(move || {
-        let prefix: Vec<u8> = frame_support::storage::storage_prefix(
-            key_name.pallet.as_bytes(),
-            key_name.storage.as_bytes(),
-        )
-        .into();
-        let iterator: PrefixIterator<(Result<K, codec::Error>, Result<V, codec::Error>), ()> =
-            PrefixIterator::new(
-                prefix.clone(),
-                prefix,
-                |raw_key_without_prefix, mut raw_value| {
-                    let mut key_material = H::reverse(raw_key_without_prefix);
-                    let k: Result<K, codec::Error> = codec::Decode::decode(&mut key_material);
-                    let v: Result<V, codec::Error> = codec::Decode::decode(&mut raw_value);
-                    Ok((k, v))
-                },
-            );
-        let mut kvs: BTreeMap<Box<String>, Box<dyn Debug>> = btreemap![];
-        for (k, v) in iterator {
-            kvs.insert(Box::new(format!("{:?}", k.unwrap())), Box::new(v.unwrap()));
-        }
-        kvs
-    }))
+    let prefix: Vec<u8> = frame_support::storage::storage_prefix(
+        key_name.pallet.as_bytes(),
+        key_name.storage.as_bytes(),
+    )
+    .into();
+    let iterator: PrefixIterator<(Result<K, codec::Error>, Result<V, codec::Error>), ()> =
+        PrefixIterator::new(
+            prefix.clone(),
+            prefix,
+            |raw_key_without_prefix, mut raw_value| {
+                let mut key_material = H::reverse(raw_key_without_prefix);
+                let k: Result<K, codec::Error> = codec::Decode::decode(&mut key_material);
+                let v: Result<V, codec::Error> = codec::Decode::decode(&mut raw_value);
+                Ok((k, v))
+            },
+        );
+    let mut kvs: BTreeMap<Box<String>, Box<dyn Debug>> = btreemap![];
+    for (k, v) in iterator {
+        kvs.insert(Box::new(format!("{:?}", k.unwrap())), Box::new(v.unwrap()));
+    }
+    kvs
+}
+
+fn read_double_map<K1, K2, V, H1, H2>(key_name: KeyName) -> BTreeMap<Box<String>, Box<dyn Debug>>
+where
+    K1: FullCodec + Debug + 'static,
+    K2: FullCodec + Debug + 'static,
+    V: FullCodec + Debug + 'static,
+    H1: StorageHasher + ReversibleStorageHasher,
+    H2: StorageHasher + ReversibleStorageHasher,
+{
+    let prefix: Vec<u8> = frame_support::storage::storage_prefix(
+        key_name.pallet.as_bytes(),
+        key_name.storage.as_bytes(),
+    )
+    .into();
+    let iterator: PrefixIterator<(K1, K2, V)> = PrefixIterator::new(
+        prefix.clone(),
+        prefix,
+        |raw_key_without_prefix, mut raw_value| {
+            let mut k1_k2_material = H1::reverse(raw_key_without_prefix);
+            let k1 = K1::decode(&mut k1_k2_material).unwrap();
+            let mut k2_material = H2::reverse(k1_k2_material);
+            let k2 = K2::decode(&mut k2_material).unwrap();
+            let v = V::decode(&mut raw_value).unwrap();
+            Ok((k1, k2, v))
+        },
+    );
+    // let iteratorK: KeyPrefixIterator<(K1, K2)> =
+    //     KeyPrefixIterator::new(
+    //         prefix.clone(),
+    //         prefix,
+    //         |raw_key_without_prefix| {
+    //             let mut k1_k2_material = H1::reverse(raw_key_without_prefix);
+    //             let k1 = K1::decode(&mut k1_k2_material)?;
+    //             let mut k2_material = H2::reverse(k1_k2_material);
+    //             let k2 = K2::decode(&mut k2_material)?;
+    //             Ok((k1, k2))
+    //         },
+    //     );
+    let mut kvs: BTreeMap<Box<String>, Box<dyn Debug>> = btreemap![];
+    for (k1, k2, v) in iterator {
+        kvs.insert(Box::new(format!("{:?} => {:?}", k1, k2)), Box::new(v));
+    }
+    // for (k1, k2, v) in iteratorK {
+    //     let iterator: PrefixIterator<(K1, K2)> =
+    //         KeyPrefixIterator::new(
+    //             prefix.clone(),
+    //             prefix,
+    //             |raw_key_without_prefix| {
+    //                 let mut k1_k2_material = H1::reverse(raw_key_without_prefix);
+    //                 let k1 = K1::decode(&mut k1_k2_material)?;
+    //                 let mut k2_material = H2::reverse(k1_k2_material);
+    //                 let k2 = K2::decode(&mut k2_material)?;
+    //                 Ok((k1, k2))
+    //             },
+    //         );
+    //     kvs.insert(Box::new(format!("{:?} => {:?}", k1.unwrap(), k2.unwrap())), Box::new(v.unwrap()));
+    // }
+    kvs
 }
 
 fn get_prefix(t: &Box<dyn StorageCheck>) -> [u8; 32] {
diff --git a/runtime/gdev/tests/integration_tests.rs b/runtime/gdev/tests/integration_tests.rs
index 122a20296c2ae6b2a49667add82591e8d7a97f1b..5be251ce9b44a29512092dbb438618e1810378b1 100644
--- a/runtime/gdev/tests/integration_tests.rs
+++ b/runtime/gdev/tests/integration_tests.rs
@@ -16,37 +16,16 @@
 
 extern crate core;
 
-use codec::Compact;
 use frame_support::traits::{Get, PalletInfo, StorageInfo, StorageInfoTrait};
-use frame_support::{assert_noop, assert_ok, storage};
+use frame_support::{assert_noop, assert_ok};
 use frame_support::{StorageHasher, Twox128};
-use maplit::btreemap;
-use sp_api::{AsTrieBackend, StateBackend};
-use sp_consensus_babe::{AuthorityId, BabeAuthorityWeight};
-use sp_core::bounded::WeakBoundedVec;
-use sp_core::crypto::Ss58Codec;
-use sp_core::sr25519;
-use sp_core::Pair;
 use sp_keyring::AccountKeyring;
-use sp_runtime::traits::BlockNumberProvider;
-use sp_runtime::MultiSigner::Sr25519;
-use sp_runtime::{MultiAddress, RuntimeString};
-use sp_storage::well_known_keys;
-use std::str::FromStr;
-use storage::storage_prefix;
-use well_known_keys::{CODE, EXTRINSIC_INDEX};
+use sp_runtime::MultiAddress;
 
 use common::*;
-use gdev_runtime::opaque::SessionKeys;
 use gdev_runtime::*;
-use pallet_duniter_test_parameters::ParametersStorage;
-use pallet_identity::{IdtyStatus, IdtyValue};
-use pallet_universal_dividend::FirstEligibleUd;
 
-use crate::common::golden_testing::assert::compare_with_storage;
-use crate::common::golden_testing::checker::{Checker, StorageCheck};
 use crate::common::golden_testing::iterative::StorageIterativeChecker;
-use crate::common::golden_testing::key::Key;
 
 mod common;