diff --git a/libcorpus2/boilerplate.cpp.in b/libcorpus2/boilerplate.cpp.in
new file mode 100644
index 0000000000000000000000000000000000000000..0be12ef4d7d20044d5f9bd141c099125ca5b083f
--- /dev/null
+++ b/libcorpus2/boilerplate.cpp.in
@@ -0,0 +1,5 @@
+#include <libcorpus/$LN.h>
+
+namespace Corpus2 {
+
+} /* end ns Corpus2 */
diff --git a/libcorpus2/boilerplate.h.in b/libcorpus2/boilerplate.h.in
new file mode 100644
index 0000000000000000000000000000000000000000..e981553ec583d9fdd458695c9512064e2330e1b9
--- /dev/null
+++ b/libcorpus2/boilerplate.h.in
@@ -0,0 +1,8 @@
+#ifndef LIBSORPUS2_$UN_H
+#define LIBCORPUS2_$UN_H
+
+namespace Corpus2 {
+
+} /* end ns Corpus2 */
+
+#endif // LIBCORPUS2_$UN_H
diff --git a/libcorpus2/mk.sh b/libcorpus2/mk.sh
new file mode 100755
index 0000000000000000000000000000000000000000..406481fd1d18ec6d6de4a290926104e46d4863a6
--- /dev/null
+++ b/libcorpus2/mk.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+cp boilerplate.h.in $1.h
+U=`echo $1 | tr '[:lower:]' '[:upper:]' | sed -s 's%/%_%g'`
+sed -i -s "s#\$UN#$U#" $1.h
+cp boilerplate.cpp.in $1.cpp
+sed -i -s "s#\$LN#$1#" $1.cpp