diff --git a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/qiime/MergeOtuMaps.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/qiime/MergeOtuMaps.scala
new file mode 100644
index 0000000000000000000000000000000000000000..8938d264d7b4aa666ee0d5b0128f0c7d33c4df46
--- /dev/null
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/qiime/MergeOtuMaps.scala
@@ -0,0 +1,39 @@
+package nl.lumc.sasc.biopet.extensions.qiime
+
+import java.io.File
+
+import nl.lumc.sasc.biopet.core.{BiopetCommandLineFunction, Version}
+import nl.lumc.sasc.biopet.utils.config.Configurable
+import org.broadinstitute.gatk.utils.commandline.{Input, Output}
+
+/**
+ * Created by pjvan_thof on 12/10/15.
+ */
+class MergeOtuMaps(val root: Configurable) extends BiopetCommandLineFunction with Version {
+  executable = config("exe", default = "merge_otu_maps.py")
+
+  def versionCommand = executable + " --version"
+  def versionRegex = """Version: (.*)""".r
+
+  @Input(required = true)
+  var input: List[File] = Nil
+
+  @Output(required = true)
+  var outputFile: File = _
+
+  var failures_fp: Option[File] = None
+
+  override def beforeGraph(): Unit = {
+    super.beforeGraph()
+    require(input.nonEmpty)
+    require(outputFile != null)
+  }
+
+  def cmdLine = executable +
+    (input match {
+      case l: List[_] if l.nonEmpty => required("-i", l.mkString(","))
+      case _                        => ""
+    }) +
+    required("-o", outputFile) +
+    optional("--failures_fp", failures_fp)
+}
\ No newline at end of file