diff --git a/xtask/src/gen_doc.rs b/xtask/src/gen_doc.rs
index 7dc7631b0fa4eb76bb0ccaca9e428a0faf458fcb..13ce53a7af00e5b99b34485133038c5c3a66dc96 100644
--- a/xtask/src/gen_doc.rs
+++ b/xtask/src/gen_doc.rs
@@ -264,47 +264,34 @@ pub(super) fn gen_doc() -> Result<()> {
     // Compute the weights from the weight files.
     // Require the `pallet_xxx.rs` weights,
     // the `paritydb_weights.rs` and the `extrinsic_weights.rs`
-    // TODO SIMPLIFY IF POSSIBLE!!!
     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")
-            .unwrap()
+            .expect("Can't find System pallet metadata")
             .constants
             .iter()
             .find(|constant| constant.name == "BlockWeights")
-            .unwrap();
+            .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,
         )
-        .unwrap()
+        .expect("Can't decode max_weight")
         .value;
 
         let max_weight: u128 =
-            if let scale_value::ValueDef::Composite(scale_value::Composite::Named(i)) =
-                block_weights
-            {
-                if let scale_value::ValueDef::Composite(scale_value::Composite::Named(j)) =
-                    &i.iter().find(|name| name.0 == "max_block").unwrap().1.value
-                {
-                    if let scale_value::ValueDef::Primitive(scale_value::Primitive::U128(k)) =
-                        &j.iter().find(|name| name.0 == "ref_time").unwrap().1.value
-                    {
-                        *k
-                    } else {
-                        0u128
-                    }
-                } else {
-                    0u128
-                }
-            } else {
-                0u128
-            };
-
+        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
+        } else {
+            0u128
+        };
         max_weight
     } else {
         0u128
diff --git a/xtask/src/main.rs b/xtask/src/main.rs
index 331bab7a9edb1333687885206eb2fd0d5ce34371..c6b201b9d06d1b0af24dc9771305d9b51cb6d56f 100644
--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -14,6 +14,8 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
+#![feature(let_chains)]
+
 mod gen_doc;
 mod release_runtime;