diff --git a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm
index 08cc3ce1f1f91537152ee18d67deee2070591e8e..cd9cb447c65067079ed9dda9d1c49230f585f0a2 100644
Binary files a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm and b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm differ
diff --git a/substrate/node/runtime/src/lib.rs b/substrate/node/runtime/src/lib.rs
index 3f242dcc5b19c7b6e1a09dcaf301ff982ab990ad..179012db39369ad41662afbb4dc50a39b97587ed 100644
--- a/substrate/node/runtime/src/lib.rs
+++ b/substrate/node/runtime/src/lib.rs
@@ -61,7 +61,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
 	impl_name: create_runtime_str!("substrate-node"),
 	authoring_version: 10,
 	spec_version: 29,
-	impl_version: 31,
+	impl_version: 32,
 	apis: RUNTIME_API_VERSIONS,
 };
 
diff --git a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm
index 04e37427c282db10ab2b84d569db83158e115cb5..4783451b5dfc0f7b0229c1b1472162d8e2f37e18 100644
Binary files a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm and b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm differ
diff --git a/substrate/srml/support/src/runtime.rs b/substrate/srml/support/src/runtime.rs
index 001bc6048a8d5ab84164e9be0f5402c88d188c2e..9b19c63cd39c0ba5edf12eb8ba43fc2a931249f8 100644
--- a/substrate/srml/support/src/runtime.rs
+++ b/substrate/srml/support/src/runtime.rs
@@ -387,25 +387,22 @@ macro_rules! __create_decl_macro {
 		macro_rules! $macro_name {
 			(
 				$runtime:ident;
-				System: $module:ident::{
-					$ingore:ident $d( <$ignor:ident> )* $d(, $modules:ident $d( <$modules_generic:ident> )* )*
-				}
-				$d(, $rest_name:ident : $rest_module:ident::{
-					$d( $rest_modules:ident $d( <$rest_modules_generic:ident> )* ),*
-				})*
+				$d( $name:ident : $module:ident::{
+					$d( $modules:ident $d( <$modules_generic:ident> )* ),*
+				}),*
 			) => {
-				$d crate::$macro_name!(
+				$d crate::$macro_name!(@inner
 					$runtime;
-					$module;
+					;
 					;
 					$d(
-						$rest_name: $rest_module::{
-							$d( $rest_modules $d( <$rest_modules_generic> )* ),*
+						$name: $module::{
+							$d( $modules $d( <$modules_generic> )* ),*
 						}
 					),*;
 				);
 			};
-			(
+			(@inner
 				$runtime:ident;
 				; // there can not be multiple `System`s
 				$d( $parsed_modules:ident $d( <$parsed_generic:ident> )* ),*;
@@ -416,7 +413,7 @@ macro_rules! __create_decl_macro {
 					$d( $rest_modules:ident $d( <$rest_modules_generic:ident> )* ),*
 				})*;
 			) => {
-				$d crate::$macro_name!(
+				$d crate::$macro_name!(@inner
 					$runtime;
 					$module;
 					$d( $parsed_modules $d( <$parsed_generic> )* ),*;
@@ -424,31 +421,10 @@ macro_rules! __create_decl_macro {
 						$rest_name: $rest_module::{
 							$d( $rest_modules $d( <$rest_modules_generic> )* ),*
 						}
-					)*;
-				);
-			};
-			(
-				$runtime:ident;
-				$name:ident: $module:ident::{
-					$ingore:ident $d( <$ignor:ident> )* $d(, $modules:ident $d( <$modules_generic:ident> )* )*
-				}
-				$d(, $rest_name:ident : $rest_module:ident::{
-					$d( $rest_modules:ident $d( <$rest_modules_generic:ident> )* ),*
-				})*
-			) => {
-				$d crate::$macro_name!(
-					$runtime;
-					;
-					;
-					$name: $module::{ $d( $modules $d( <$modules_generic> )* ),* }
-					$d(
-						, $rest_name: $rest_module::{
-							$d( $rest_modules $d( <$rest_modules_generic> )* ),*
-						}
-					)*;
+					),*;
 				);
 			};
-			(
+			(@inner
 				$runtime:ident;
 				$d( $system:ident )*;
 				$d( $parsed_modules:ident $d( <$parsed_generic:ident> )* ),*;
@@ -459,7 +435,7 @@ macro_rules! __create_decl_macro {
 					$d( $rest_modules:ident $d( <$rest_modules_generic:ident> )* ),*
 				})*;
 			) => {
-				$d crate::$macro_name!(
+				$d crate::$macro_name!(@inner
 					$runtime;
 					$d( $system )*;
 					$d(
@@ -472,7 +448,7 @@ macro_rules! __create_decl_macro {
 					),*;
 				);
 			};
-			(
+			(@inner
 				$runtime:ident;
 				$d( $system:ident )*;
 				$d( $parsed_modules:ident $d( <$parsed_generic:ident> )* ),*;
@@ -483,7 +459,7 @@ macro_rules! __create_decl_macro {
 					$d( $rest_modules:ident $d( <$rest_modules_generic:ident> )* ),*
 				})*;
 			) => {
-				$d crate::$macro_name!(
+				$d crate::$macro_name!(@inner
 					$runtime;
 					$d( $system )*;
 					$d( $parsed_modules $d( <$parsed_generic> )* ),*;
@@ -495,7 +471,7 @@ macro_rules! __create_decl_macro {
 					)*;
 				);
 			};
-			(
+			(@inner
 				$runtime:ident;
 				$d( $system:ident )*;
 				$d( $parsed_modules:ident $d( <$parsed_generic:ident> )* ),*;
@@ -504,7 +480,7 @@ macro_rules! __create_decl_macro {
 					$d( $rest_modules:ident $d( <$rest_modules_generic:ident> )* ),*
 				})*;
 			) => {
-				$d crate::$macro_name!(
+				$d crate::$macro_name!(@inner
 					$runtime;
 					$d( $system )*;
 					$d( $parsed_modules $d( <$parsed_generic> )* ),*;
@@ -515,7 +491,7 @@ macro_rules! __create_decl_macro {
 					),*;
 				);
 			};
-			(
+			(@inner
 				$runtime:ident;
 				$d( $system:ident )+;
 				$d( $parsed_modules:ident $d( <$parsed_generic:ident> )* ),*;