diff --git a/xtask/src/gen_doc.rs b/xtask/src/gen_doc.rs
index 13ce53a7af00e5b99b34485133038c5c3a66dc96..06188243c8d06dce03da06aca15ef9dd94f6ea4e 100644
--- a/xtask/src/gen_doc.rs
+++ b/xtask/src/gen_doc.rs
@@ -255,47 +255,15 @@ pub(super) fn gen_doc() -> Result<()> {
 
     println!("Metadata successfully loaded!");
 
-    let mut runtime = if let frame_metadata::RuntimeMetadata::V14(ref metadata_v14) = metadata.1 {
-        get_from_metadata_v14(metadata_v14.clone())?
-    } else {
-        bail!("unsuported metadata version")
-    };
-
-    // Compute the weights from the weight files.
-    // Require the `pallet_xxx.rs` weights,
-    // the `paritydb_weights.rs` and the `extrinsic_weights.rs`
-    let max_weight = if let frame_metadata::RuntimeMetadata::V14(metadata_v14) = metadata.1 {
-        let block_weights = metadata_v14
-            .pallets
-            .iter()
-            .find(|pallet| pallet.name == "System")
-            .expect("Can't find System pallet metadata")
-            .constants
-            .iter()
-            .find(|constant| constant.name == "BlockWeights")
-            .expect("Can't find BlockWeights");
-
-        let block_weights = scale_value::scale::decode_as_type(
-            &mut &*block_weights.value,
-            block_weights.ty.id,
-            &metadata_v14.types,
-        )
-        .expect("Can't decode max_weight")
-        .value;
-
-        let max_weight: u128 =
-        if let scale_value::ValueDef::Composite(scale_value::Composite::Named(i)) = block_weights
-            && let scale_value::ValueDef::Composite(scale_value::Composite::Named(j)) = &i.iter().find(|name| name.0 == "max_block").unwrap().1.value
-            && let scale_value::ValueDef::Primitive(scale_value::Primitive::U128(k)) = &j.iter().find(|name| name.0 == "ref_time").unwrap().1.value
-        {
-            *k
+    let (mut runtime, max_weight) =
+        if let frame_metadata::RuntimeMetadata::V14(ref metadata_v14) = metadata.1 {
+            (
+                get_from_metadata_v14(metadata_v14.clone())?,
+                get_max_weight_from_metadata_v14(metadata_v14.clone())?,
+            )
         } else {
-            0u128
+            bail!("unsuported metadata version")
         };
-        max_weight
-    } else {
-        0u128
-    };
 
     let mut weights = get_weights(max_weight);
     // AdHoc names convertion
@@ -360,6 +328,40 @@ pub(super) fn gen_doc() -> Result<()> {
     Ok(())
 }
 
+fn get_max_weight_from_metadata_v14(
+    metadata_v14: frame_metadata::v14::RuntimeMetadataV14,
+) -> Result<u128> {
+    // Compute the weights from the weight files.
+    // Require the `pallet_xxx.rs` weights,
+    // the `paritydb_weights.rs` and the `extrinsic_weights.rs`
+    let block_weights = metadata_v14
+        .pallets
+        .iter()
+        .find(|pallet| pallet.name == "System")
+        .expect("Can't find System pallet metadata")
+        .constants
+        .iter()
+        .find(|constant| constant.name == "BlockWeights")
+        .expect("Can't find BlockWeights");
+
+    let block_weights = scale_value::scale::decode_as_type(
+        &mut &*block_weights.value,
+        block_weights.ty.id,
+        &metadata_v14.types,
+    )
+    .expect("Can't decode max_weight")
+    .value;
+
+    if let scale_value::ValueDef::Composite(scale_value::Composite::Named(i)) = block_weights
+            && let scale_value::ValueDef::Composite(scale_value::Composite::Named(j)) = &i.iter().find(|name| name.0 == "max_block").unwrap().1.value
+            && let scale_value::ValueDef::Primitive(scale_value::Primitive::U128(k)) = &j.iter().find(|name| name.0 == "ref_time").unwrap().1.value
+        {
+            Ok(*k)
+        } else {
+            bail!("Invalid max_weight")
+        }
+}
+
 fn get_from_metadata_v14(
     metadata_v14: frame_metadata::v14::RuntimeMetadataV14,
 ) -> Result<RuntimePallets> {