diff --git a/Cargo.lock b/Cargo.lock
index da840617fd660609a1d57c45b6072a486abdad2c..29cf6363dd7ff79512765e58f517deb93b67e060 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -815,6 +815,7 @@ dependencies = [
  "anyhow",
  "clap",
  "env_logger",
+ "futures",
  "graphql_client",
  "hex",
  "logs",
diff --git a/Cargo.toml b/Cargo.toml
index 14f68a20c91b60f4644a2e47f2334284bfcea1b8..0e63b9e2aa58750f8268c981f4074c747e08d7f2 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,6 +11,7 @@ anyhow = "1.0"
 clap = { version = "3.0", features = ["derive"] }
 codec = { package = "parity-scale-codec", version = "3.1.5" }
 env_logger = "0.9.0"
+futures = "0.3.21"
 graphql_client = { version = "0.11.0", features = ["reqwest"] }
 hex = "0.4.3"
 logs = "0.5"
diff --git a/src/main.rs b/src/main.rs
index a177c96b4c0964f2ed10ffaf2a0c8fb75e70dc0a..dba81f986296fe6032ee5620762732b5332ed1d5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -4,6 +4,7 @@ mod indexer;
 use anyhow::{anyhow, Result};
 use clap::Parser;
 use codec::Encode;
+use futures::join;
 use sp_core::{
     crypto::{AccountId32, DeriveJunction, Pair as _, Ss58Codec},
     sr25519::Pair,
@@ -271,19 +272,19 @@ async fn main() -> Result<()> {
                 .fetch(&gdev_300::storage().system().parent_hash(), None)
                 .await?
                 .unwrap();
-            let current_block = client
-                .storage()
-                .fetch(&gdev_300::storage().system().number(), Some(parent_hash))
-                .await?
-                .unwrap();
-            let current_session = client
-                .storage()
-                .fetch(
-                    &gdev_300::storage().session().current_index(),
-                    Some(parent_hash),
-                )
-                .await?
-                .unwrap();
+            let addr_current_block = gdev_300::storage().system().number();
+            let addr_current_session = gdev_300::storage().session().current_index();
+            let (current_block, current_session) = join!(
+                client
+                    .storage()
+                    .fetch(&addr_current_block, Some(parent_hash)),
+                client
+                    .storage()
+                    .fetch(&addr_current_session, Some(parent_hash),)
+            );
+            let current_block = current_block?.unwrap();
+            let current_session = current_session?.unwrap();
+
             let end_block = current_block + blocks;
             let end_session = current_session + sessions;
 
@@ -592,20 +593,16 @@ async fn main() -> Result<()> {
 
 async fn gen_revoc_doc(api: &Client, pair: &Pair) -> Result<()> {
     let account_id: sp_core::crypto::AccountId32 = pair.public().into();
-    let idty_index = api
-        .storage()
-        .fetch(
-            &gdev_300::storage()
-                .identity()
-                .identity_index_of(&account_id),
-            None,
-        )
-        .await?;
-    let genesis_hash = api
-        .storage()
-        .fetch(&gdev_300::storage().system().block_hash(0), None)
-        .await?
-        .unwrap();
+    let addr_idty_index = gdev_300::storage()
+        .identity()
+        .identity_index_of(&account_id);
+    let addr_block_hash = gdev_300::storage().system().block_hash(0);
+    let (idty_index, genesis_hash) = join!(
+        api.storage().fetch(&addr_idty_index, None,),
+        api.storage().fetch(&addr_block_hash, None)
+    );
+    let idty_index = idty_index?.unwrap();
+    let genesis_hash = genesis_hash?.unwrap();
     let payload = (b"revo", genesis_hash, idty_index).encode();
     let signature = pair.sign(&payload);