diff --git a/substrate/core/executor/src/lib.rs b/substrate/core/executor/src/lib.rs
index 67b81f52100f22fdce67eb78d0329f137501f936..474730a6e3feae408960d0b0b9b00b08bd8d8bbc 100644
--- a/substrate/core/executor/src/lib.rs
+++ b/substrate/core/executor/src/lib.rs
@@ -32,6 +32,7 @@
 
 extern crate parity_codec as codec;
 extern crate sr_io as runtime_io;
+#[cfg_attr(test, macro_use)]
 extern crate substrate_primitives as primitives;
 extern crate substrate_serializer as serializer;
 extern crate substrate_state_machine as state_machine;
diff --git a/substrate/core/executor/src/wasm_executor.rs b/substrate/core/executor/src/wasm_executor.rs
index be0711df25214817b0a999e3ba9e1898219d8cb2..eddcc2db8d45bbf5cb4187e4f994172f290f5c1b 100644
--- a/substrate/core/executor/src/wasm_executor.rs
+++ b/substrate/core/executor/src/wasm_executor.rs
@@ -558,13 +558,6 @@ mod tests {
 	use codec::Encode;
 	use state_machine::TestExternalities;
 
-	// TODO: move into own crate.
-	macro_rules! map {
-		($( $name:expr => $value:expr ),*) => (
-			vec![ $( ( $name, $value ) ),* ].into_iter().collect()
-		)
-	}
-
 	#[test]
 	fn returning_should_work() {
 		let mut ext = TestExternalities::default();
diff --git a/substrate/core/state-machine/src/lib.rs b/substrate/core/state-machine/src/lib.rs
index f5fa6e8b3720492ac896f1da7444683c49cc1076..dec577ba418878d4ccb01497a3bbe2e94befe6ce 100644
--- a/substrate/core/state-machine/src/lib.rs
+++ b/substrate/core/state-machine/src/lib.rs
@@ -32,7 +32,7 @@ extern crate substrate_trie;
 
 extern crate parking_lot;
 extern crate heapsize;
-extern crate substrate_primitives as primitives;
+#[cfg_attr(test, macro_use)] extern crate substrate_primitives as primitives;
 extern crate parity_codec as codec;
 extern crate substrate_trie as trie;
 
@@ -522,12 +522,6 @@ mod tests {
 
 	impl Error for u8 {}
 
-	macro_rules! map {
-		($( $name:expr => $value:expr ),*) => (
-			vec![ $( ( $name, $value ) ),* ].into_iter().collect()
-		)
-	}
-
 	#[test]
 	fn execute_works() {
 		assert_eq!(execute(
diff --git a/substrate/core/test-runtime/src/genesismap.rs b/substrate/core/test-runtime/src/genesismap.rs
index 607ca38a2fe9148e84427442bc19e3e362481390..2e904e18d9ec41079b02d17b70a5ce7dc53f689d 100644
--- a/substrate/core/test-runtime/src/genesismap.rs
+++ b/substrate/core/test-runtime/src/genesismap.rs
@@ -68,12 +68,6 @@ impl GenesisConfig {
 	}
 }
 
-macro_rules! map {
-	($( $name:expr => $value:expr ),*) => (
-		vec![ $( ( $name, $value ) ),* ].into_iter().collect()
-	)
-}
-
 pub fn additional_storage_with_genesis(genesis_block: &::Block) -> HashMap<Vec<u8>, Vec<u8>> {
 	map![
 		twox_128(&b"latest"[..]).to_vec() => genesis_block.hash().0.to_vec()
diff --git a/substrate/core/test-runtime/src/lib.rs b/substrate/core/test-runtime/src/lib.rs
index 1404e6fbc8f2e9670b766916ec27a9ea8935788f..9d9d75ca211f59054514b8240ff1a196826ee487 100644
--- a/substrate/core/test-runtime/src/lib.rs
+++ b/substrate/core/test-runtime/src/lib.rs
@@ -43,7 +43,7 @@ extern crate sr_version as runtime_version;
 extern crate hex_literal;
 #[cfg(test)]
 extern crate substrate_keyring as keyring;
-#[cfg_attr(test, macro_use)]
+#[cfg_attr(any(feature = "std", test), macro_use)]
 extern crate substrate_primitives as primitives;
 
 #[cfg(feature = "std")] pub mod genesismap;
diff --git a/substrate/node/executor/src/lib.rs b/substrate/node/executor/src/lib.rs
index 96eb1a863fef067d6a6dbad70daf0baf25d3cd86..f10dd52b949be9e9a748ac3f20a5d7f02b4351dd 100644
--- a/substrate/node/executor/src/lib.rs
+++ b/substrate/node/executor/src/lib.rs
@@ -19,7 +19,7 @@
 
 extern crate node_runtime;
 #[macro_use] extern crate substrate_executor;
-extern crate substrate_primitives as primitives;
+#[cfg_attr(test, macro_use)] extern crate substrate_primitives as primitives;
 
 #[cfg(test)] extern crate substrate_keyring as keyring;
 #[cfg(test)] extern crate sr_primitives as runtime_primitives;
@@ -69,13 +69,6 @@ mod tests {
 	const COMPACT_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm");
 	const GENESIS_HASH: [u8; 32] = [69u8; 32];
 
-	// TODO: move into own crate.
-	macro_rules! map {
-		($( $name:expr => $value:expr ),*) => (
-			vec![ $( ( $name, $value ) ),* ].into_iter().collect()
-		)
-	}
-
 	fn alice() -> AccountId {
 		AccountId::from(Keyring::Alice.to_raw_public())
 	}