diff --git a/substrate/build.sh b/substrate/build.sh
index 9a2aaac4630932536638f9145f9e37b43bdf1ac7..dd47753730759e5593947729f470b5481c3679f1 100755
--- a/substrate/build.sh
+++ b/substrate/build.sh
@@ -10,3 +10,4 @@ cd demo/runtime/wasm && ./build.sh && cd ../../..
 cd substrate/executor/wasm && ./build.sh && cd ../../..
 cd substrate/test-runtime/wasm && ./build.sh && cd ../../..
 cd polkadot/runtime/wasm && ./build.sh && cd ../../..
+cd polkadot/parachain/test-chains && ./build.sh && cd ../../..
diff --git a/substrate/polkadot/parachain/test-chains/basic_add/Cargo.toml b/substrate/polkadot/parachain/test-chains/basic_add/Cargo.toml
index afc9e9f13103d8948fedd0531dbac56d1bcfa3c1..dd0fc4050d925fc6e0293c307bded727861a4b80 100644
--- a/substrate/polkadot/parachain/test-chains/basic_add/Cargo.toml
+++ b/substrate/polkadot/parachain/test-chains/basic_add/Cargo.toml
@@ -9,7 +9,7 @@ crate-type = ["cdylib"]
 
 [dependencies]
 polkadot-parachain = { path = "../../", default-features = false }
-wee_alloc = "0.2.0"
+wee_alloc = "0.4.0"
 tiny-keccak = "1.4"
 pwasm-libc = "0.2"
 
diff --git a/substrate/polkadot/parachain/test-chains/basic_add/src/lib.rs b/substrate/polkadot/parachain/test-chains/basic_add/src/lib.rs
index 3f877b16d1bcb9ae8a7d23c2e0d7c16e1c441439..be21a8dec8caa1aab4f054adfde8b6ff73174778 100644
--- a/substrate/polkadot/parachain/test-chains/basic_add/src/lib.rs
+++ b/substrate/polkadot/parachain/test-chains/basic_add/src/lib.rs
@@ -17,7 +17,7 @@
 //! Basic parachain that adds a number as part of its state.
 
 #![cfg_attr(not(feature = "std"), no_std)]
-#![cfg_attr(not(feature = "std"), feature(alloc, core_intrinsics, global_allocator, lang_items))]
+#![cfg_attr(not(feature = "std"), feature(alloc, core_intrinsics, global_allocator, lang_items, panic_implementation))]
 
 #[cfg(not(feature = "std"))]
 extern crate alloc;
diff --git a/substrate/polkadot/parachain/test-chains/basic_add/src/wasm.rs b/substrate/polkadot/parachain/test-chains/basic_add/src/wasm.rs
index fa1bf64f43cea23e3259eccc9bd72121bc205b75..3af2dd39a9722c58df3a3f5c060bbb3e693febe4 100644
--- a/substrate/polkadot/parachain/test-chains/basic_add/src/wasm.rs
+++ b/substrate/polkadot/parachain/test-chains/basic_add/src/wasm.rs
@@ -16,19 +16,23 @@
 
 //! Defines WASM module logic.
 
+use core::intrinsics;
+
 use parachain::{self, ValidationResult};
 use parachain::codec::Slicable;
 use super::{HeadData, BlockData};
 
-#[lang = "panic_fmt"]
+#[panic_implementation]
+#[no_mangle]
+pub fn rust_begin_panic(_info: &::core::panic::PanicInfo) -> ! {
+	unsafe {
+		intrinsics::abort()
+	}
+}
+
+#[lang = "oom"]
 #[no_mangle]
-pub extern fn panic_fmt(
-	_args: ::core::fmt::Arguments,
-	_file: &'static str,
-	_line: u32,
-	_col: u32,
-) -> ! {
-	use core::intrinsics;
+pub fn oom() -> ! {
 	unsafe {
 		intrinsics::abort();
 	}
diff --git a/substrate/polkadot/parachain/test-chains/build.sh b/substrate/polkadot/parachain/test-chains/build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..2b876634e88c7c1e1437c5ee21b8d6a6fdeb1730
--- /dev/null
+++ b/substrate/polkadot/parachain/test-chains/build.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+rm -rf ./target
+for i in */
+do
+  i=${i%/}
+  cd $i
+
+  RUSTFLAGS="-C link-arg=--import-memory" cargo +nightly build --target=wasm32-unknown-unknown --release --no-default-features
+  wasm-gc target/wasm32-unknown-unknown/release/$i.wasm ../../tests/res/$i.wasm
+  cd ..
+done
diff --git a/substrate/polkadot/parachain/test-chains/build_test_chains.sh b/substrate/polkadot/parachain/test-chains/build_test_chains.sh
deleted file mode 100755
index 6523e46f14e7e5410cc6d9586def9169007c791a..0000000000000000000000000000000000000000
--- a/substrate/polkadot/parachain/test-chains/build_test_chains.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-set -e
-
-rm -rf ./target
-for i in */
-do
-  i=${i%/}
-  cd $i
-
-  # TODO: stop using exact nightly when wee-alloc works on normal nightly.
-  RUSTFLAGS="-C link-arg=--import-memory" cargo +nightly-2018-03-07 build --target=wasm32-unknown-unknown --release --no-default-features
-  wasm-gc target/wasm32-unknown-unknown/release/$i.wasm ../../tests/res/$i.wasm
-  cd ..
-done
diff --git a/substrate/polkadot/parachain/tests/res/basic_add.wasm b/substrate/polkadot/parachain/tests/res/basic_add.wasm
index 83f52db817f81cf088221070e7db06d3a9ea8765..709c111d278c720417615f10e3f7dd08538ed76f 100755
Binary files a/substrate/polkadot/parachain/tests/res/basic_add.wasm and b/substrate/polkadot/parachain/tests/res/basic_add.wasm differ
diff --git a/substrate/publish-wasm.sh b/substrate/publish-wasm.sh
index 7ac79a99bf54827fa412d3f6ea5cb77cf73548c7..2a42504eef6b9f4ad292125fb36580926ebe6586 100755
--- a/substrate/publish-wasm.sh
+++ b/substrate/publish-wasm.sh
@@ -4,7 +4,7 @@ set -e
 
 REPO="github.com/paritytech/polkadot-wasm-bin.git"
 REPO_AUTH="${GH_TOKEN}:@${REPO}"
-SRCS=( "polkadot/runtime/wasm" "substrate/executor/wasm" "demo/runtime/wasm" "substrate/test-runtime/wasm" )
+SRCS=( "polkadot/runtime/wasm" "substrate/executor/wasm" "demo/runtime/wasm" "substrate/test-runtime/wasm" "polkadot/parachain/test-chains" )
 DST=".wasm-binaries"
 TARGET="wasm32-unknown-unknown"
 UTCDATE=`date -u "+%Y%m%d.%H%M%S.0"`