diff --git a/biopet-aggregate/copy-src.sh b/biopet-aggregate/copy-src.sh
new file mode 100755
index 0000000000000000000000000000000000000000..fdfefa48461afe7f1f8e1b4aad226ab818caee25
--- /dev/null
+++ b/biopet-aggregate/copy-src.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+DIR=`readlink -f \`dirname $0\``
+
+cp -r $DIR/../*/*/src/* $DIR/src
+
diff --git a/biopet-aggregate/pom.xml b/biopet-aggregate/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4b89651970b5b9c05bf599a6b14d44b161793663
--- /dev/null
+++ b/biopet-aggregate/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>BiopetRoot</artifactId>
+        <groupId>nl.lumc.sasc</groupId>
+        <version>0.5.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>BiopetAggregate</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <version>6.8</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <version>1.9.5</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.scalatest</groupId>
+            <artifactId>scalatest_2.10</artifactId>
+            <version>2.2.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>nl.lumc.sasc</groupId>
+            <artifactId>BiopetProtectedPackage</artifactId>
+            <version>0.5.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>18.0</version>
+        </dependency>
+
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/biopet-aggregate/rm-src.sh b/biopet-aggregate/rm-src.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f0a2e2b9307150913a9705bd237f226dc157157e
--- /dev/null
+++ b/biopet-aggregate/rm-src.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+DIR=`readlink -f \`dirname $0\``
+
+rm -r $DIR/src/main $DIR/src/test
+
diff --git a/biopet-aggregate/src/.gitignore b/biopet-aggregate/src/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..59e4d6049a3756e3d0c5414611e042fcc5c1bce6
--- /dev/null
+++ b/biopet-aggregate/src/.gitignore
@@ -0,0 +1,2 @@
+main
+test
diff --git a/pom.xml b/pom.xml
index 143a9095a763bbdcc323dc6e4299e534e5f0bc33..964da3f4aaf87824c6b9fade63d5bc607fe0e0aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,5 +17,6 @@
         <module>public</module>
         <module>protected</module>
         <module>external-example</module>
+        <!--<module>biopet-aggregate</module>-->
     </modules>
 </project>
diff --git a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala
index 6b99ca1706a0280a88b881e74e11a644e5ef1ab2..750cbee21adea6c059d939aad518ca9aed0eb06e 100644
--- a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala
+++ b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala
@@ -153,11 +153,11 @@ class GatkVariantcalling(val root: Configurable) extends QScript with BiopetQScr
           scriptOutput.rawVcfFile = m2v.output
 
           val vcfFilter = new VcfFilter(this) {
-            override def defaults = ConfigUtils.mergeMaps(Map("min_sample_depth" -> 8,
+            override def defaults = Map("min_sample_depth" -> 8,
               "min_alternate_depth" -> 2,
               "min_samples_pass" -> 1,
               "filter_ref_calls" -> true
-            ), super.defaults)
+            )
           }
           vcfFilter.inputVcf = m2v.output
           vcfFilter.outputVcf = swapExt(outputDir, m2v.output, ".vcf", ".filter.vcf.gz")
diff --git a/protected/biopet-gatk-pipelines/src/test/scala/nl/lumc/sasc/biopet/pipelines/gatk/ShivaTest.scala b/protected/biopet-gatk-pipelines/src/test/scala/nl/lumc/sasc/biopet/pipelines/gatk/ShivaTest.scala
index 66f0bfcc564503567782bcc1e35b0cc0899e6212..f1b326b7017b129eaf6edf0d44014af4f9507b7b 100644
--- a/protected/biopet-gatk-pipelines/src/test/scala/nl/lumc/sasc/biopet/pipelines/gatk/ShivaTest.scala
+++ b/protected/biopet-gatk-pipelines/src/test/scala/nl/lumc/sasc/biopet/pipelines/gatk/ShivaTest.scala
@@ -39,31 +39,27 @@ class ShivaTest extends TestNGSuite with Matchers {
     val bool = Array(true, false)
 
     for (
-      s1 <- bool; s2 <- bool; s3 <- bool; multi <- bool; single <- bool;
-      library <- bool; dbsnp <- bool; covariates <- bool; realign <- bool; baseRecalibration <- bool
-    ) yield Array("", s1, s2, s3, multi, single, library, dbsnp, covariates, realign, baseRecalibration)
+      s1 <- bool; s2 <- bool; multi <- bool;
+      dbsnp <- bool; realign <- bool; baseRecalibration <- bool
+    ) yield Array("", s1, s2, multi, dbsnp, realign, baseRecalibration)
   }
 
   @Test(dataProvider = "shivaOptions")
-  def testShiva(f: String, sample1: Boolean, sample2: Boolean, sample3: Boolean,
-                multi: Boolean, single: Boolean, library: Boolean, dbsnp: Boolean,
-                covariates: Boolean, realign: Boolean, baseRecalibration: Boolean): Unit = {
+  def testShiva(f: String, sample1: Boolean, sample2: Boolean,
+                multi: Boolean, dbsnp: Boolean,
+                realign: Boolean, baseRecalibration: Boolean): Unit = {
     val map = {
       var m: Map[String, Any] = ShivaTest.config
       if (sample1) m = ConfigUtils.mergeMaps(ShivaTest.sample1, m)
       if (sample2) m = ConfigUtils.mergeMaps(ShivaTest.sample2, m)
-      if (sample3) m = ConfigUtils.mergeMaps(ShivaTest.sample3, m)
       if (dbsnp) m = ConfigUtils.mergeMaps(Map("dbsnp" -> "test"), m)
       ConfigUtils.mergeMaps(Map("multisample_variantcalling" -> multi,
-        "single_sample_variantcalling" -> single,
-        "library_variantcalling" -> library,
-        "use_analyze_covariates" -> covariates,
         "use_indel_realigner" -> realign,
         "use_base_recalibration" -> baseRecalibration), m)
 
     }
 
-    if (!sample1 && !sample2 && !sample3) { // When no samples
+    if (!sample1 && !sample2) { // When no samples
       intercept[IllegalArgumentException] {
         initPipeline(map).script()
       }
@@ -71,20 +67,18 @@ class ShivaTest extends TestNGSuite with Matchers {
       val pipeline = initPipeline(map)
       pipeline.script()
 
-      val numberLibs = (if (sample1) 1 else 0) + (if (sample2) 1 else 0) + (if (sample3) 2 else 0)
-      val numberSamples = (if (sample1) 1 else 0) + (if (sample2) 1 else 0) + (if (sample3) 1 else 0)
+      val numberLibs = (if (sample1) 1 else 0) + (if (sample2) 2 else 0)
+      val numberSamples = (if (sample1) 1 else 0) + (if (sample2) 1 else 0)
 
-      pipeline.functions.count(_.isInstanceOf[MarkDuplicates]) shouldBe (numberLibs + (if (sample3) 1 else 0))
+      pipeline.functions.count(_.isInstanceOf[MarkDuplicates]) shouldBe (numberLibs + (if (sample2) 1 else 0))
 
       // Gatk preprocess
-      pipeline.functions.count(_.isInstanceOf[IndelRealigner]) shouldBe (numberLibs + (if (sample3) 1 else 0)) * (if (realign) 1 else 0)
-      pipeline.functions.count(_.isInstanceOf[RealignerTargetCreator]) shouldBe (numberLibs + (if (sample3) 1 else 0)) * (if (realign) 1 else 0)
-      pipeline.functions.count(_.isInstanceOf[BaseRecalibrator]) shouldBe (if (dbsnp && baseRecalibration) numberLibs else 0) * (if (covariates) 2 else 1)
-      pipeline.functions.count(_.isInstanceOf[AnalyzeCovariates]) shouldBe (if (dbsnp && covariates && baseRecalibration) numberLibs else 0)
+      pipeline.functions.count(_.isInstanceOf[IndelRealigner]) shouldBe (numberLibs * (if (realign) 1 else 0) + (if (sample2 && realign) 1 else 0))
+      pipeline.functions.count(_.isInstanceOf[RealignerTargetCreator]) shouldBe (numberLibs * (if (realign) 1 else 0) + (if (sample2 && realign) 1 else 0))
+      pipeline.functions.count(_.isInstanceOf[BaseRecalibrator]) shouldBe (if (dbsnp && baseRecalibration) numberLibs else 0)
       pipeline.functions.count(_.isInstanceOf[PrintReads]) shouldBe (if (dbsnp && baseRecalibration) numberLibs else 0)
 
-      pipeline.functions.count(_.isInstanceOf[VcfStats]) shouldBe (if (multi) 2 else 0) +
-        (if (single) numberSamples * 2 else 0) + (if (library) numberLibs * 2 else 0)
+      pipeline.functions.count(_.isInstanceOf[VcfStats]) shouldBe (if (multi) 2 else 0)
     }
   }
 }
@@ -115,7 +109,6 @@ object ShivaTest {
     "dir" -> "test",
     "vep_script" -> "test",
     "output_dir" -> outputDir,
-    "reference" -> (outputDir + File.separator + "ref.fa"),
     "reference_fasta" -> (outputDir + File.separator + "ref.fa"),
     "gatk_jar" -> "test",
     "samtools" -> Map("exe" -> "test"),
@@ -147,23 +140,14 @@ object ShivaTest {
     )))
 
   val sample2 = Map(
-    "samples" -> Map("sample2" -> Map("libraries" -> Map(
+    "samples" -> Map("sample3" -> Map("libraries" -> Map(
       "lib1" -> Map(
         "R1" -> inputTouch("2_1_R1.fq"),
         "R2" -> inputTouch("2_1_R2.fq")
-      )
-    )
-    )))
-
-  val sample3 = Map(
-    "samples" -> Map("sample3" -> Map("libraries" -> Map(
-      "lib1" -> Map(
-        "R1" -> inputTouch("3_1_R1.fq"),
-        "R2" -> inputTouch("3_1_R2.fq")
       ),
       "lib2" -> Map(
-        "R1" -> inputTouch("3_2_R1.fq"),
-        "R2" -> inputTouch("3_2_R2.fq")
+        "R1" -> inputTouch("2_2_R1.fq"),
+        "R2" -> inputTouch("2_2_R2.fq")
       )
     )
     )))
diff --git a/protected/biopet-gatk-pipelines/src/test/scala/nl/lumc/sasc/biopet/pipelines/gatk/ShivaVariantcallingTest.scala b/protected/biopet-gatk-pipelines/src/test/scala/nl/lumc/sasc/biopet/pipelines/gatk/ShivaVariantcallingTest.scala
index 8e8a1eddf9e5d6b5aab36c4c6fea7d35ea2da82e..1740b33ac108a4c20205973a2410aabbeb4dbd83 100644
--- a/protected/biopet-gatk-pipelines/src/test/scala/nl/lumc/sasc/biopet/pipelines/gatk/ShivaVariantcallingTest.scala
+++ b/protected/biopet-gatk-pipelines/src/test/scala/nl/lumc/sasc/biopet/pipelines/gatk/ShivaVariantcallingTest.scala
@@ -131,7 +131,6 @@ object ShivaVariantcallingTest {
     "cache" -> true,
     "dir" -> "test",
     "vep_script" -> "test",
-    "reference" -> (outputDir + File.separator + "ref.fa"),
     "reference_fasta" -> (outputDir + File.separator + "ref.fa"),
     "gatk_jar" -> "test",
     "samtools" -> Map("exe" -> "test"),
diff --git a/public/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/BastyTrait.scala b/public/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/BastyTrait.scala
index ab6692982d698ef8d4ea41593f07b55b01671db8..d9085369f0316b6a0474fe02cd15ef07c683713a 100644
--- a/public/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/BastyTrait.scala
+++ b/public/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/BastyTrait.scala
@@ -35,10 +35,10 @@ trait BastyTrait extends MultiSampleQScript {
 
   def variantcallers = List("freebayes")
 
-  override def defaults = ConfigUtils.mergeMaps(Map(
+  override def defaults = Map(
     "ploidy" -> 1,
     "variantcallers" -> variantcallers
-  ), super.defaults)
+  )
 
   lazy val shiva: ShivaTrait = new Shiva(qscript)
 
diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/CommandLineResources.scala b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/CommandLineResources.scala
index 300cd4cdb0d240f19c709ac53e35b180e8675504..0fdc946e31808db3b41eb7e81bd5377c3ec563f3 100644
--- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/CommandLineResources.scala
+++ b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/CommandLineResources.scala
@@ -85,9 +85,11 @@ trait CommandLineResources extends CommandLineFunction with Configurable {
     this.freeze()
   }
 
+  var threadsCorrection = 0
+
   protected def combineResources(commands: List[CommandLineResources]): Unit = {
     commands.foreach(_.setResources())
-    nCoresRequest = Some(commands.map(_.threads).sum)
+    nCoresRequest = Some(commands.map(_.threads).sum + threadsCorrection)
 
     _coreMemory = commands.map(cmd => cmd.coreMemeory * (cmd.threads.toDouble / threads.toDouble)).sum
     memoryLimit = Some(_coreMemory * threads)
diff --git a/public/biopet-extentsions/pom.xml b/public/biopet-extensions/pom.xml
similarity index 100%
rename from public/biopet-extentsions/pom.xml
rename to public/biopet-extensions/pom.xml
diff --git a/public/biopet-extentsions/src/main/resources/nl/lumc/sasc/biopet/extensions/breakdancer/breakdancer2vcf.py b/public/biopet-extensions/src/main/resources/nl/lumc/sasc/biopet/extensions/breakdancer/breakdancer2vcf.py
similarity index 100%
rename from public/biopet-extentsions/src/main/resources/nl/lumc/sasc/biopet/extensions/breakdancer/breakdancer2vcf.py
rename to public/biopet-extensions/src/main/resources/nl/lumc/sasc/biopet/extensions/breakdancer/breakdancer2vcf.py
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Bgzip.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Bgzip.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Bgzip.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Bgzip.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Bowtie.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Bowtie.scala
similarity index 98%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Bowtie.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Bowtie.scala
index 5a574b729fb7fa4c7b27c674845f069fd01cb4ca..fc2f95e4e33f54dca689568bb48cb8489ed3e65d 100644
--- a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Bowtie.scala
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Bowtie.scala
@@ -47,7 +47,7 @@ class Bowtie(val root: Configurable) extends BiopetCommandLineFunction with Refe
   override def defaultCoreMemory = 4.0
   override def defaultThreads = 8
 
-  var sam: Boolean = config("sam", default = true)
+  var sam: Boolean = config("sam", default = false)
   var sam_RG: Option[String] = config("sam-RG")
   var seedlen: Option[Int] = config("seedlen")
   var seedmms: Option[Int] = config("seedmms")
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cat.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cat.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cat.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cat.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cufflinks.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cufflinks.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cufflinks.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cufflinks.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cuffquant.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cuffquant.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cuffquant.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cuffquant.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cutadapt.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cutadapt.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cutadapt.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Cutadapt.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Fastqc.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Fastqc.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Fastqc.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Fastqc.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Freebayes.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Freebayes.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Freebayes.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Freebayes.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Gsnap.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Gsnap.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Gsnap.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Gsnap.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Gzip.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Gzip.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Gzip.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Gzip.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/HtseqCount.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/HtseqCount.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/HtseqCount.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/HtseqCount.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Ln.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Ln.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Ln.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Ln.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Pbzip2.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Pbzip2.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Pbzip2.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Pbzip2.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Raxml.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Raxml.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Raxml.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Raxml.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/RunGubbins.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/RunGubbins.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/RunGubbins.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/RunGubbins.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Sha1sum.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Sha1sum.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Sha1sum.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Sha1sum.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Sickle.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Sickle.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Sickle.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Sickle.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Stampy.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Stampy.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Stampy.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Stampy.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Star.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Star.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Star.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Star.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Tabix.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Tabix.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Tabix.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Tabix.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Tophat.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Tophat.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Tophat.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Tophat.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/VariantEffectPredictor.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/VariantEffectPredictor.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/VariantEffectPredictor.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/VariantEffectPredictor.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/WigToBigWig.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/WigToBigWig.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/WigToBigWig.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/WigToBigWig.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Zcat.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Zcat.scala
similarity index 97%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Zcat.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Zcat.scala
index 5c7ebd0ca6382584bc45b455527e50bdede1a673..be5eb6700c6c1610c33c0e1f0fa132089db81bfc 100644
--- a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/Zcat.scala
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Zcat.scala
@@ -36,7 +36,7 @@ class Zcat(val root: Configurable) extends BiopetCommandLineFunction {
 
   /** Returns command to execute */
   def cmdLine = required(executable) +
-    (if (inputAsStdin) "" else required(input)) +
+    (if (inputAsStdin) "" else repeat(input)) +
     (if (outputAsStsout) "" else " > " + required(output))
 }
 
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bcftools/Bcftools.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bcftools/Bcftools.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bcftools/Bcftools.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bcftools/Bcftools.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bcftools/BcftoolsCall.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bcftools/BcftoolsCall.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bcftools/BcftoolsCall.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bcftools/BcftoolsCall.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/Bedtools.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/Bedtools.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/Bedtools.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/Bedtools.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsCoverage.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsGroupby.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsGroupby.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsGroupby.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsGroupby.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bedtools/BedtoolsIntersect.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/Breakdancer.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/Breakdancer.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/Breakdancer.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/Breakdancer.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerCaller.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerCaller.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerCaller.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerCaller.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerConfig.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerConfig.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerConfig.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerConfig.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerVCF.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerVCF.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerVCF.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/breakdancer/BreakdancerVCF.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/Bwa.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/Bwa.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/Bwa.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/Bwa.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaAln.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaAln.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaAln.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaAln.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaMem.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaMem.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaMem.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaMem.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaSampe.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaSampe.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaSampe.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaSampe.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaSamse.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaSamse.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaSamse.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaSamse.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/clever/CleverCaller.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/clever/CleverCaller.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/clever/CleverCaller.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/clever/CleverCaller.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/Conifer.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/Conifer.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/Conifer.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/Conifer.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferAnalyze.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferAnalyze.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferAnalyze.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferAnalyze.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferCall.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferCall.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferCall.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferCall.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferExport.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferExport.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferExport.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferExport.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferRPKM.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferRPKM.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferRPKM.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/conifer/ConiferRPKM.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/delly/Delly.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/delly/Delly.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/delly/Delly.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/delly/Delly.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/delly/DellyCaller.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/delly/DellyCaller.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/delly/DellyCaller.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/delly/DellyCaller.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/CombineVariants.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/CombineVariants.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/CombineVariants.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/CombineVariants.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/Gatk.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/Gatk.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/Gatk.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/Gatk.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/igvtools/IGVTools.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/igvtools/IGVTools.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/igvtools/IGVTools.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/igvtools/IGVTools.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/igvtools/IGVToolsCount.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/igvtools/IGVToolsCount.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/igvtools/IGVToolsCount.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/igvtools/IGVToolsCount.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/kraken/Kraken.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/kraken/Kraken.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/kraken/Kraken.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/kraken/Kraken.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/kraken/KrakenReport.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/kraken/KrakenReport.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/kraken/KrakenReport.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/kraken/KrakenReport.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2CallPeak.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2CallPeak.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2CallPeak.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2CallPeak.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/AddOrReplaceReadGroups.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/AddOrReplaceReadGroups.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/AddOrReplaceReadGroups.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/AddOrReplaceReadGroups.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/BedToIntervalList.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/BedToIntervalList.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/BedToIntervalList.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/BedToIntervalList.scala
diff --git a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/BuildBamIndex.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/BuildBamIndex.scala
new file mode 100644
index 0000000000000000000000000000000000000000..392169043c9fa8e10852b4ff61694892c7531b3c
--- /dev/null
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/BuildBamIndex.scala
@@ -0,0 +1,24 @@
+package nl.lumc.sasc.biopet.extensions.picard
+
+import java.io.File
+
+import nl.lumc.sasc.biopet.utils.config.Configurable
+import org.broadinstitute.gatk.utils.commandline.{ Output, Input }
+
+/**
+ * Created by sajvanderzeeuw on 6-10-15.
+ */
+class BuildBamIndex(val root: Configurable) extends Picard {
+
+  javaMainClass = new picard.sam.BuildBamIndex().getClass.getName
+
+  @Input(doc = "The input SAM or BAM files to analyze.", required = true)
+  var input: File = _
+
+  @Output(doc = "The output file to bam file to", required = true)
+  var output: File = _
+
+  override def cmdLine = super.cmdLine +
+    required("INPUT=", input, spaceSeparated = false) +
+    required("OUTPUT=", output, spaceSeparated = false)
+}
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CalculateHsMetrics.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CalculateHsMetrics.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CalculateHsMetrics.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CalculateHsMetrics.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetrics.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetrics.scala
similarity index 93%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetrics.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetrics.scala
index ff19efe11676d2ca66adc172790080f9a9823783..b2fb2097efefb107ab4f00c3cadde5e9285a2568 100644
--- a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetrics.scala
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetrics.scala
@@ -17,12 +17,13 @@ package nl.lumc.sasc.biopet.extensions.picard
 
 import java.io.File
 
+import nl.lumc.sasc.biopet.core.Reference
 import nl.lumc.sasc.biopet.utils.config.Configurable
 import nl.lumc.sasc.biopet.core.summary.Summarizable
 import org.broadinstitute.gatk.utils.commandline.{ Argument, Input, Output }
 
 /** Extension for picard CollectAlignmentSummaryMetrics */
-class CollectAlignmentSummaryMetrics(val root: Configurable) extends Picard with Summarizable {
+class CollectAlignmentSummaryMetrics(val root: Configurable) extends Picard with Summarizable with Reference {
   javaMainClass = new picard.analysis.CollectAlignmentSummaryMetrics().getClass.getName
 
   @Input(doc = "The input SAM or BAM files to analyze.  Must be coordinate sorted.", required = true)
@@ -41,7 +42,7 @@ class CollectAlignmentSummaryMetrics(val root: Configurable) extends Picard with
   var output: File = _
 
   @Argument(doc = "Reference file", required = false)
-  var reference: File = config("reference")
+  var reference: File = _
 
   @Argument(doc = "ASSUME_SORTED", required = false)
   var assumeSorted: Boolean = config("assumeSorted", default = true)
@@ -52,6 +53,11 @@ class CollectAlignmentSummaryMetrics(val root: Configurable) extends Picard with
   @Argument(doc = "STOP_AFTER", required = false)
   var stopAfter: Option[Long] = config("stopAfter")
 
+  override def beforeGraph(): Unit = {
+    super.beforeGraph()
+    if (reference == null) reference = referenceFasta()
+  }
+
   /** Returns command to execute */
   override def cmdLine = super.cmdLine +
     required("INPUT=", input, spaceSeparated = false) +
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectGcBiasMetrics.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectGcBiasMetrics.scala
similarity index 98%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectGcBiasMetrics.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectGcBiasMetrics.scala
index ada8007283b76122005cc5d4e6a0a39c161ea1aa..0479bbb754d62a13e4e7d99bf6ac949b8cd69aec 100644
--- a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectGcBiasMetrics.scala
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectGcBiasMetrics.scala
@@ -53,6 +53,8 @@ class CollectGcBiasMetrics(val root: Configurable) extends Picard with Summariza
   @Argument(doc = "IS_BISULFITE_SEQUENCED", required = false)
   var isBisulfiteSequinced: Option[Boolean] = config("isbisulfitesequinced")
 
+  override def defaultCoreMemory = 8.0
+
   override def beforeGraph() {
     super.beforeGraph()
     if (outputChart == null) outputChart = new File(output + ".pdf")
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetrics.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetrics.scala
similarity index 95%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetrics.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetrics.scala
index 3c4693b5ead3929b9b1bf7eac95b69c3bed0c83c..88d2eab6091ef4dafa02b46395ac1c78188ee3c2 100644
--- a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetrics.scala
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetrics.scala
@@ -17,6 +17,7 @@ package nl.lumc.sasc.biopet.extensions.picard
 
 import java.io.File
 
+import nl.lumc.sasc.biopet.core.Reference
 import nl.lumc.sasc.biopet.utils.config.Configurable
 import nl.lumc.sasc.biopet.core.summary.Summarizable
 import org.broadinstitute.gatk.utils.commandline.{ Argument, Input, Output }
@@ -24,7 +25,7 @@ import org.broadinstitute.gatk.utils.commandline.{ Argument, Input, Output }
 import scala.collection.immutable.Nil
 
 /** Extension for picard CollectInsertSizeMetrics */
-class CollectInsertSizeMetrics(val root: Configurable) extends Picard with Summarizable {
+class CollectInsertSizeMetrics(val root: Configurable) extends Picard with Summarizable with Reference {
   javaMainClass = new picard.analysis.CollectInsertSizeMetrics().getClass.getName
 
   @Input(doc = "The input SAM or BAM files to analyze.  Must be coordinate sorted.", required = true)
@@ -37,7 +38,7 @@ class CollectInsertSizeMetrics(val root: Configurable) extends Picard with Summa
   protected var outputHistogram: File = null
 
   @Argument(doc = "Reference file", required = false)
-  var reference: File = config("reference")
+  var reference: File = _
 
   @Argument(doc = "DEVIATIONS", required = false)
   var deviations: Option[Double] = config("deviations")
@@ -59,6 +60,7 @@ class CollectInsertSizeMetrics(val root: Configurable) extends Picard with Summa
 
   override def beforeGraph() {
     outputHistogram = new File(output + ".pdf")
+    if (reference == null) reference = referenceFasta()
   }
 
   /** Returns command to execute */
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectMultipleMetrics.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectMultipleMetrics.scala
similarity index 99%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectMultipleMetrics.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectMultipleMetrics.scala
index 5ddaa72341c6a35b6cc9070c6d50cc48e80b7551..fed464a7391ad3f618e3755c2b8addc3cfb608b1 100644
--- a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectMultipleMetrics.scala
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectMultipleMetrics.scala
@@ -33,7 +33,7 @@ class CollectMultipleMetrics(val root: Configurable) extends Picard with Summari
 
   javaMainClass = new picard.analysis.CollectMultipleMetrics().getClass.getName
 
-  override def defaultCoreMemory = 6.0
+  override def defaultCoreMemory = 8.0
 
   @Input(doc = "The input SAM or BAM files to analyze", required = true)
   var input: File = null
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectRnaSeqMetrics.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectRnaSeqMetrics.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectRnaSeqMetrics.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectRnaSeqMetrics.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectTargetedPcrMetrics.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectTargetedPcrMetrics.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectTargetedPcrMetrics.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectTargetedPcrMetrics.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectWgsMetrics.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectWgsMetrics.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectWgsMetrics.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/CollectWgsMetrics.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/GatherBamFiles.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/GatherBamFiles.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/GatherBamFiles.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/GatherBamFiles.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MergeSamFiles.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MergeSamFiles.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MergeSamFiles.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MergeSamFiles.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/ReorderSam.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/ReorderSam.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/ReorderSam.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/ReorderSam.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SamToFastq.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SamToFastq.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SamToFastq.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SamToFastq.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SortSam.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SortSam.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SortSam.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SortSam.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/Sambamba.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/Sambamba.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/Sambamba.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/Sambamba.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaFlagstat.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaFlagstat.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaFlagstat.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaFlagstat.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaIndex.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaIndex.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaIndex.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaIndex.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaMarkdup.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaMarkdup.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaMarkdup.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaMarkdup.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaMerge.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaMerge.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaMerge.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaMerge.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaView.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaView.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaView.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/sambamba/SambambaView.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/Samtools.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/Samtools.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/Samtools.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/Samtools.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsFlagstat.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsFlagstat.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsFlagstat.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsFlagstat.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsMpileup.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsMpileup.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsMpileup.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsMpileup.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsSort.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsSort.scala
similarity index 91%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsSort.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsSort.scala
index 4d1c7450e5ac3fbf7c670305c49b6b188d11c6bc..5df2a3a7b47f5771dcdbd033ef2c273ba70ed89f 100644
--- a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsSort.scala
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsSort.scala
@@ -2,9 +2,8 @@ package nl.lumc.sasc.biopet.extensions.samtools
 
 import java.io.File
 
-import com.google.common.io.Files
 import nl.lumc.sasc.biopet.utils.config.Configurable
-import org.broadinstitute.gatk.utils.commandline.{ Output, Input }
+import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
 
 /**
  * Created by pjvanthof on 22/09/15.
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsView.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsView.scala
similarity index 96%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsView.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsView.scala
index fca6e84ccd15bfd6af4c72723269e13afda7f13c..09e8bff4212602d0689ea4f43eeee947b29c870e 100644
--- a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsView.scala
+++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsView.scala
@@ -28,7 +28,7 @@ class SamtoolsView(val root: Configurable) extends Samtools {
   @Output(doc = "output File")
   var output: File = null
 
-  var quality: Option[Int] = config("quality")
+  var q: Option[Int] = config("q")
   var b: Boolean = config("b", default = false)
   var h: Boolean = config("h", default = false)
   var f: List[String] = config("f", default = List.empty[String])
@@ -36,7 +36,7 @@ class SamtoolsView(val root: Configurable) extends Samtools {
 
   def cmdBase = required(executable) +
     required("view") +
-    optional("-q", quality) +
+    optional("-q", q) +
     repeat("-f", f) +
     repeat("-F", F) +
     conditional(b, "-b") +
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/Seqtk.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/Seqtk.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/Seqtk.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/Seqtk.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/SeqtkSeq.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/SeqtkSeq.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/SeqtkSeq.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/SeqtkSeq.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Mpileup2cns.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Mpileup2cns.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Mpileup2cns.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Mpileup2cns.scala
diff --git a/public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Varscan.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Varscan.scala
similarity index 100%
rename from public/biopet-extentsions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Varscan.scala
rename to public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/varscan/Varscan.scala
diff --git a/public/biopet-extentsions/src/test/resources/log4j.properties b/public/biopet-extensions/src/test/resources/log4j.properties
similarity index 100%
rename from public/biopet-extentsions/src/test/resources/log4j.properties
rename to public/biopet-extensions/src/test/resources/log4j.properties
diff --git a/public/biopet-extentsions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.alignmentMetrics b/public/biopet-extensions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.alignmentMetrics
similarity index 100%
rename from public/biopet-extentsions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.alignmentMetrics
rename to public/biopet-extensions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.alignmentMetrics
diff --git a/public/biopet-extentsions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.dedup.metrics b/public/biopet-extensions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.dedup.metrics
similarity index 100%
rename from public/biopet-extentsions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.dedup.metrics
rename to public/biopet-extensions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.dedup.metrics
diff --git a/public/biopet-extentsions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.insertsizemetrics b/public/biopet-extensions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.insertsizemetrics
similarity index 100%
rename from public/biopet-extentsions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.insertsizemetrics
rename to public/biopet-extensions/src/test/resources/nl/lumc/sasc/biopet/extensions/picard/picard.insertsizemetrics
diff --git a/public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/GsnapTest.scala b/public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/GsnapTest.scala
similarity index 77%
rename from public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/GsnapTest.scala
rename to public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/GsnapTest.scala
index 7a5a541899981f9a3a6bf25396ea23d64afd60d3..8dceeb52502cf5b150bc3fa4e41ccdb9cb6aebae 100644
--- a/public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/GsnapTest.scala
+++ b/public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/GsnapTest.scala
@@ -25,17 +25,10 @@ import scala.sys.process.{ Process, ProcessLogger }
 
 class GsnapTest extends TestNGSuite with Matchers {
 
-  private def setConfig(key: String, value: String): Map[String, Any] = {
-    val oldMap: Map[String, Any] = Config.global.map
-    Config.global.map += (key -> value)
-    oldMap
-  }
-
-  private def restoreConfig(oldMap: Map[String, Any]): Unit = Config.global.map = oldMap
-
   @BeforeClass def checkExecutable() = {
-    val oldMap = setConfig("db", "mock")
-    val wrapper = new Gsnap(null)
+    val wrapper = new Gsnap(null) {
+      override def globalConfig = new Config(Map("db" -> "mock"))
+    }
     val proc = Process(wrapper.versionCommand)
     val exitCode =
       try {
@@ -47,13 +40,12 @@ class GsnapTest extends TestNGSuite with Matchers {
       }
     if (exitCode != 0)
       throw new SkipException("Skipping GSNAP test because the executable can not be found")
-    restoreConfig(oldMap)
   }
 
   @Test(description = "GSNAP version number capture from executable")
   def testVersion() = {
-    val oldMap = setConfig("db", "mock")
-    new Gsnap(null).getVersion should not be "N/A"
-    restoreConfig(oldMap)
+    new Gsnap(null) {
+      override def globalConfig = new Config(Map("db" -> "mock"))
+    }.getVersion should not be "N/A"
   }
 }
diff --git a/public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/HtseqCountTest.scala b/public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/HtseqCountTest.scala
similarity index 100%
rename from public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/HtseqCountTest.scala
rename to public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/HtseqCountTest.scala
diff --git a/public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/LnTest.scala b/public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/LnTest.scala
similarity index 100%
rename from public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/LnTest.scala
rename to public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/LnTest.scala
diff --git a/public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetricsTest.scala b/public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetricsTest.scala
similarity index 100%
rename from public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetricsTest.scala
rename to public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/CollectAlignmentSummaryMetricsTest.scala
diff --git a/public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetricsTest.scala b/public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetricsTest.scala
similarity index 100%
rename from public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetricsTest.scala
rename to public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/CollectInsertSizeMetricsTest.scala
diff --git a/public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicatesTest.scala b/public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicatesTest.scala
similarity index 100%
rename from public/biopet-extentsions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicatesTest.scala
rename to public/biopet-extensions/src/test/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicatesTest.scala
diff --git a/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/config/Config.scala b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/config/Config.scala
index 1d536084f976312300c091744a99a01a4ae4c3e3..4c69bf57c8be5332aeb3f1cc3d1f78b2ae204007 100644
--- a/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/config/Config.scala
+++ b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/config/Config.scala
@@ -21,11 +21,11 @@ import nl.lumc.sasc.biopet.utils.ConfigUtils._
 
 /**
  * This class can store nested config values
- * @param map Map with value for new config
+ * @param _map Map with value for new config
  * @constructor Load config with existing map
  */
-class Config(var map: Map[String, Any],
-             protected[config] var defaults: Map[String, Any] = Map()) extends Logging {
+class Config(protected var _map: Map[String, Any],
+             protected var _defaults: Map[String, Any] = Map()) extends Logging {
   logger.debug("Init phase of config")
 
   /** Default constructor */
@@ -34,6 +34,9 @@ class Config(var map: Map[String, Any],
     loadDefaultConfig()
   }
 
+  def map = _map
+  def defaults = _defaults
+
   /**
    * Loading a environmental variable as location of config files to merge into the config
    * @param valueName Name of value
@@ -65,13 +68,13 @@ class Config(var map: Map[String, Any],
   def loadConfigFile(configFile: File, default: Boolean = false) {
     val configMap = fileToConfigMap(configFile)
     if (default) {
-      if (defaults.isEmpty) defaults = configMap
-      else defaults = mergeMaps(configMap, defaults)
-      logger.debug("New defaults: " + defaults)
+      if (_defaults.isEmpty) _defaults = configMap
+      else _defaults = mergeMaps(configMap, _defaults)
+      logger.debug("New defaults: " + _defaults)
     } else {
-      if (map.isEmpty) map = configMap
-      else map = mergeMaps(configMap, map)
-      logger.debug("New config: " + map)
+      if (_map.isEmpty) _map = configMap
+      else _map = mergeMaps(configMap, _map)
+      logger.debug("New config: " + _map)
     }
   }
 
@@ -84,11 +87,12 @@ class Config(var map: Map[String, Any],
    */
   def addValue(key: String, value: Any, path: List[String] = Nil, default: Boolean = false): Unit = {
     val valueMap = path.foldRight(Map(key -> value))((a, b) => Map(a -> b))
-    if (default) defaults = mergeMaps(valueMap, defaults)
-    else map = mergeMaps(valueMap, map)
+    if (default) _defaults = mergeMaps(valueMap, _defaults)
+    else _map = mergeMaps(valueMap, _map)
   }
 
   protected[config] var notFoundCache: List[ConfigValueIndex] = List()
+  protected[config] var fixedCache: Map[ConfigValueIndex, ConfigValue] = Map()
   protected[config] var foundCache: Map[ConfigValueIndex, ConfigValue] = Map()
   protected[config] var defaultCache: Map[ConfigValueIndex, ConfigValue] = Map()
   protected[config] def clearCache(): Unit = {
@@ -103,24 +107,39 @@ class Config(var map: Map[String, Any],
    * @param s key
    * @return True if exist
    */
-  def contains(s: String): Boolean = map.contains(s)
+  def contains(s: String): Boolean = _map.contains(s)
+
+  /**
+   * Checks if value exist in config
+   * @param requestedIndex Index to value
+   * @return True if exist
+   */
+  def contains(requestedIndex: ConfigValueIndex): Boolean = contains(requestedIndex, Map())
 
   /**
    * Checks if value exist in config
    * @param requestedIndex Index to value
+   * @param fixedValues Fixed values
    * @return True if exist
    */
-  def contains(requestedIndex: ConfigValueIndex): Boolean =
+  def contains(requestedIndex: ConfigValueIndex, fixedValues: Map[String, Any]): Boolean =
     if (notFoundCache.contains(requestedIndex)) false
+    else if (fixedCache.contains(requestedIndex)) true
     else if (foundCache.contains(requestedIndex)) true
     else {
-      val value = Config.getValueFromMap(map, requestedIndex)
-      if (value.isDefined && value.get.value != None) {
-        foundCache += (requestedIndex -> value.get)
+      val fixedValue = Config.getValueFromMap(fixedValues, requestedIndex)
+      if (fixedValue.isDefined) {
+        fixedCache += (requestedIndex -> fixedValue.get)
         true
       } else {
-        notFoundCache +:= requestedIndex
-        false
+        val value = Config.getValueFromMap(_map, requestedIndex)
+        if (value.isDefined && value.get.value != None) {
+          foundCache += (requestedIndex -> value.get)
+          true
+        } else {
+          notFoundCache +:= requestedIndex
+          false
+        }
       }
     }
 
@@ -132,9 +151,12 @@ class Config(var map: Map[String, Any],
    * @param freeVar Default true, if set false value must exist in module
    * @return True if exist
    */
-  def contains(module: String, path: List[String], key: String, freeVar: Boolean = true): Boolean = {
+  def contains(module: String, path: List[String],
+               key: String,
+               freeVar: Boolean = true,
+               fixedValues: Map[String, Any] = Map()): Boolean = {
     val requestedIndex = ConfigValueIndex(module, path, key, freeVar)
-    contains(requestedIndex)
+    contains(requestedIndex, fixedValues)
   }
 
   /**
@@ -146,10 +168,23 @@ class Config(var map: Map[String, Any],
    * @param freeVar Default true, if set false value must exist in module
    * @return Config value
    */
-  protected[config] def apply(module: String, path: List[String], key: String, default: Any = null, freeVar: Boolean = true): ConfigValue = {
+  protected[config] def apply(module: String,
+                              path: List[String],
+                              key: String,
+                              default: Any = null,
+                              freeVar: Boolean = true,
+                              fixedValues: Map[String, Any] = Map()): ConfigValue = {
     val requestedIndex = ConfigValueIndex(module, path, key, freeVar)
-    if (contains(requestedIndex)) foundCache(requestedIndex)
-    else if (default != null) {
+    if (contains(requestedIndex, fixedValues)) {
+      val fixedValue = fixedCache.get(requestedIndex)
+      if (fixedValue.isDefined) {
+        val userValue = Config.getValueFromMap(_map, requestedIndex)
+        if (userValue.isDefined)
+          logger.warn(s"Ignoring user-supplied value ${requestedIndex.key} at path ${requestedIndex.path} because it is a fixed value.")
+      }
+
+      fixedValue.getOrElse(foundCache(requestedIndex))
+    } else if (default != null) {
       defaultCache += (requestedIndex -> ConfigValue(requestedIndex, null, default, freeVar))
       defaultCache(requestedIndex)
     } else ConfigValue(requestedIndex, null, null, freeVar)
@@ -179,9 +214,11 @@ class Config(var map: Map[String, Any],
 
     // Positions where values are found
     val found = convertIndexValuesToMap(foundCache.filter(!_._2.default).toList.map(x => (x._2.foundIndex, x._2.value)))
+    val fixed = convertIndexValuesToMap(fixedCache.filter(!_._2.default).toList.map(x => (x._2.foundIndex, x._2.value)))
 
     // Positions where to start searching
     val effectiveFound = convertIndexValuesToMap(foundCache.filter(!_._2.default).toList.map(x => (x._2.requestIndex, x._2.value)), Some(false))
+    val effectiveFixed = convertIndexValuesToMap(fixedCache.filter(!_._2.default).toList.map(x => (x._2.requestIndex, x._2.value)), Some(false))
     val effectiveDefaultFound = convertIndexValuesToMap(defaultCache.filter(_._2.default).toList.map(x => (x._2.requestIndex, x._2.value)), Some(false))
     val notFound = convertIndexValuesToMap(notFoundCache.map((_, None)), Some(false))
 
@@ -189,16 +226,19 @@ class Config(var map: Map[String, Any],
     val fullEffective = ConfigUtils.mergeMaps(effectiveFound, effectiveDefaultFound)
     val fullEffectiveWithNotFound = ConfigUtils.mergeMaps(fullEffective, notFound)
 
-    writeMapToJsonFile(this.map, "input")
+    writeMapToJsonFile(_map, "input")
+    writeMapToJsonFile(_defaults, "defaults")
     writeMapToJsonFile(found, "found")
+    writeMapToJsonFile(fixed, "fixed")
     writeMapToJsonFile(effectiveFound, "effective.found")
+    writeMapToJsonFile(effectiveFixed, "effective.fixed")
     writeMapToJsonFile(effectiveDefaultFound, "effective.defaults")
     writeMapToJsonFile(notFound, "not.found")
     writeMapToJsonFile(fullEffective, "effective.full")
     writeMapToJsonFile(fullEffectiveWithNotFound, "effective.full.notfound")
   }
 
-  override def toString: String = map.toString()
+  override def toString: String = _map.toString()
 }
 
 object Config extends Logging {
@@ -210,7 +250,7 @@ object Config extends Logging {
    * @param config2 Low prio map
    * @return Merged config
    */
-  def mergeConfigs(config1: Config, config2: Config): Config = new Config(mergeMaps(config1.map, config2.map))
+  def mergeConfigs(config1: Config, config2: Config): Config = new Config(mergeMaps(config1._map, config2._map))
 
   /**
    * Search for value in index position in a map
diff --git a/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/config/Configurable.scala b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/config/Configurable.scala
index 476c4c4435290a9229bc926695cb9153d996d75a..68fe36e303e6a49e96a7628a741fc120392a5d19 100644
--- a/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/config/Configurable.scala
+++ b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/config/Configurable.scala
@@ -15,6 +15,7 @@
  */
 package nl.lumc.sasc.biopet.utils.config
 
+import nl.lumc.sasc.biopet.utils.ConfigUtils
 import nl.lumc.sasc.biopet.utils.ConfigUtils.ImplicitConversions
 
 trait Configurable extends ImplicitConversions {
@@ -35,9 +36,28 @@ trait Configurable extends ImplicitConversions {
   def configFullPath: List[String] = configPath ::: configName :: Nil
 
   /** Map to store defaults for config */
-  def defaults: Map[String, Any] = {
-    if (root != null) root.defaults
-    else globalConfig.defaults
+  def defaults: Map[String, Any] = Map()
+
+  /** This method merge defaults from the root to it's own */
+  protected[config] def internalDefaults: Map[String, Any] = {
+    (root != null, defaults.isEmpty) match {
+      case (true, true)   => root.internalDefaults
+      case (true, false)  => ConfigUtils.mergeMaps(defaults, root.internalDefaults)
+      case (false, true)  => globalConfig.defaults
+      case (false, false) => ConfigUtils.mergeMaps(defaults, globalConfig.defaults)
+    }
+  }
+
+  /** All values found in this map will be skipped from the user config */
+  def fixedValues: Map[String, Any] = Map()
+
+  /** This method merge fixedValues from the root to it's own */
+  protected def internalFixedValues: Map[String, Any] = {
+    (root != null, fixedValues.isEmpty) match {
+      case (true, true)  => root.internalFixedValues
+      case (true, false) => ConfigUtils.mergeMaps(fixedValues, root.internalFixedValues)
+      case _             => fixedValues
+    }
   }
 
   val config = new ConfigFunctions
@@ -90,11 +110,11 @@ trait Configurable extends ImplicitConversions {
       val m = if (submodule != null) submodule else configName
       val p = if (path == null) getConfigPath(s, l, submodule) ::: subPath else path
       val d = {
-        val value = Config.getValueFromMap(defaults, ConfigValueIndex(m, p, key, freeVar))
+        val value = Config.getValueFromMap(internalDefaults, ConfigValueIndex(m, p, key, freeVar))
         if (value.isDefined) value.get.value else default
       }
-      if (d == null) globalConfig(m, p, key, freeVar = freeVar)
-      else globalConfig(m, p, key, d, freeVar)
+      if (d == null) globalConfig(m, p, key, freeVar = freeVar, fixedValues = internalFixedValues)
+      else globalConfig(m, p, key, d, freeVar, fixedValues = internalFixedValues)
     }
 
     /**
@@ -117,7 +137,7 @@ trait Configurable extends ImplicitConversions {
       val m = if (submodule != null) submodule else configName
       val p = if (path == null) getConfigPath(s, l, submodule) ::: subPath else path
 
-      globalConfig.contains(m, p, key, freeVar) || Config.getValueFromMap(defaults, ConfigValueIndex(m, p, key, freeVar)).isDefined
+      globalConfig.contains(m, p, key, freeVar, internalFixedValues) || Config.getValueFromMap(internalDefaults, ConfigValueIndex(m, p, key, freeVar)).isDefined
     }
   }
 }
diff --git a/public/biopet-utils/src/test/scala/nl/lumc/sasc/biopet/utils/config/ConfigurableTest.scala b/public/biopet-utils/src/test/scala/nl/lumc/sasc/biopet/utils/config/ConfigurableTest.scala
index 8853a1183870f304c3529c43c569365c33437a27..37e851cf1572848a648bcb45ff5b7a51edeb0a68 100644
--- a/public/biopet-utils/src/test/scala/nl/lumc/sasc/biopet/utils/config/ConfigurableTest.scala
+++ b/public/biopet-utils/src/test/scala/nl/lumc/sasc/biopet/utils/config/ConfigurableTest.scala
@@ -25,10 +25,36 @@ import org.testng.annotations.Test
  * Created by pjvan_thof on 1/8/15.
  */
 class ConfigurableTest extends TestNGSuite with Matchers {
+
+  abstract class Cfg extends Configurable {
+    def get(key: String,
+            default: String = null,
+            submodule: String = null,
+            freeVar: Boolean = true,
+            sample: String = null,
+            library: String = null) = {
+      config(key, default, submodule, freeVar = freeVar, sample = sample, library = library)
+    }
+  }
+
+  class ClassA(val root: Configurable) extends Cfg
+
+  class ClassB(val root: Configurable) extends Cfg {
+    lazy val classA = new ClassA(this)
+    // Why this needs to be lazy?
+  }
+
+  class ClassC(val root: Configurable) extends Cfg {
+    def this() = this(null)
+    lazy val classB = new ClassB(this)
+    // Why this needs to be lazy?
+  }
+
   @Test def testConfigurable(): Unit = {
     val classC = new ClassC {
       override def configName = "classc"
       override val globalConfig = new Config(ConfigurableTest.map)
+      override val fixedValues = Map("fixed" -> "fixed")
     }
 
     classC.configPath shouldBe Nil
@@ -51,46 +77,33 @@ class ConfigurableTest extends TestNGSuite with Matchers {
     classC.get("bla", sample = "sample1", library = "library1").asString shouldBe "bla"
     classC.get("test", sample = "sample1", library = "library1").asString shouldBe "test"
     classC.get("test", sample = "sample1").asString shouldBe "test"
-  }
-}
 
-abstract class Cfg extends Configurable {
-  def get(key: String,
-          default: String = null,
-          submodule: String = null,
-          freeVar: Boolean = true,
-          sample: String = null,
-          library: String = null) = {
-    config(key, default, submodule, freeVar = freeVar, sample = sample, library = library)
+    // Fixed values
+    classC.get("fixed").asString shouldBe "fixed"
+    classC.classB.get("fixed").asString shouldBe "fixed"
+    classC.classB.classA.get("fixed").asString shouldBe "fixed"
   }
 }
 
-class ClassA(val root: Configurable) extends Cfg
-
-class ClassB(val root: Configurable) extends Cfg {
-  lazy val classA = new ClassA(this)
-  // Why this needs to be lazy?
-}
-
-class ClassC(val root: Configurable) extends Cfg {
-  def this() = this(null)
-  lazy val classB = new ClassB(this)
-  // Why this needs to be lazy?
-}
-
 object ConfigurableTest {
   val map = Map(
+    "fixed" -> "nonfixed",
     "classa" -> Map(
-      "k1" -> "a1"
+      "k1" -> "a1",
+      "fixed" -> "nonfixed"
     ), "classb" -> Map(
-      "k1" -> "b1"
+      "k1" -> "b1",
+      "fixed" -> "nonfixed"
     ), "classc" -> Map(
-      "k1" -> "c1"
+      "k1" -> "c1",
+      "fixed" -> "nonfixed"
     ), "samples" -> Map(
       "sample1" -> Map(
+        "fixed" -> "nonfixed",
         "test" -> "test",
         "libraries" -> Map(
           "library1" -> Map(
+            "fixed" -> "nonfixed",
             "bla" -> "bla"
           )
         )
diff --git a/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala b/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala
index f8b4dc6db0ff771d046ffe320a24a7c0d294b832..de37b352ecf8a9091ee67d1b455e85087156f642 100644
--- a/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala
+++ b/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala
@@ -18,11 +18,12 @@ package nl.lumc.sasc.biopet.pipelines.carp
 import java.io.File
 
 import nl.lumc.sasc.biopet.core._
+import nl.lumc.sasc.biopet.extensions.samtools.SamtoolsView
 import nl.lumc.sasc.biopet.utils.config._
 import nl.lumc.sasc.biopet.core.summary.SummaryQScript
 import nl.lumc.sasc.biopet.extensions.Ln
 import nl.lumc.sasc.biopet.extensions.macs2.Macs2CallPeak
-import nl.lumc.sasc.biopet.extensions.picard.MergeSamFiles
+import nl.lumc.sasc.biopet.extensions.picard.{ BuildBamIndex, MergeSamFiles }
 import nl.lumc.sasc.biopet.pipelines.bammetrics.BamMetrics
 import nl.lumc.sasc.biopet.pipelines.bamtobigwig.Bam2Wig
 import nl.lumc.sasc.biopet.pipelines.mapping.Mapping
@@ -38,12 +39,20 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript with
   qscript =>
   def this() = this(null)
 
-  override def defaults = ConfigUtils.mergeMaps(Map(
+  override def defaults = Map(
     "mapping" -> Map(
-      "skip_markduplicates" -> true,
+      "skip_markduplicates" -> false,
       "aligner" -> "bwa-mem"
+    ),
+    "samtoolsview" -> Map("q" -> 10)
+  )
+
+  override def fixedValues = Map(
+    "samtoolsview" -> Map(
+      "h" -> true,
+      "b" -> true
     )
-  ), super.defaults)
+  )
 
   def summaryFile = new File(outputDir, "Carp.summary.json")
 
@@ -93,6 +102,7 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript with
     }
 
     val bamFile = createFile(".bam")
+    val bamFileFilter = createFile(".filter.bam")
     val controls: List[String] = config("control", default = Nil)
 
     def addJobs(): Unit = {
@@ -114,10 +124,29 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript with
       val bamMetrics = BamMetrics(qscript, bamFile, new File(sampleDir, "metrics"), sampleId = Some(sampleId))
       addAll(bamMetrics.functions)
       addSummaryQScript(bamMetrics)
+
+      val bamMetricsFilter = BamMetrics(qscript, bamFileFilter, new File(sampleDir, "metrics-filter"), sampleId = Some(sampleId))
+      addAll(bamMetricsFilter.functions)
+      bamMetricsFilter.summaryName = "bammetrics-filter"
+      addSummaryQScript(bamMetricsFilter)
+
       addAll(Bam2Wig(qscript, bamFile).functions)
+      addAll(Bam2Wig(qscript, bamFileFilter).functions)
+
+      val samtoolsView = new SamtoolsView(qscript)
+      samtoolsView.input = bamFile
+      samtoolsView.output = bamFileFilter
+      samtoolsView.b = true
+      samtoolsView.h = true
+      add(samtoolsView)
+
+      val buildBamIndex = new BuildBamIndex(qscript)
+      buildBamIndex.input = bamFileFilter
+      buildBamIndex.output = swapExt(bamFileFilter.getParent, bamFileFilter, ".bam", ".bai")
+      add(buildBamIndex)
 
       val macs2 = new Macs2CallPeak(qscript)
-      macs2.treatment = bamFile
+      macs2.treatment = bamFileFilter
       macs2.name = Some(sampleId)
       macs2.outputdir = sampleDir + File.separator + "macs2" + File.separator + sampleId + File.separator
       add(macs2)
@@ -155,8 +184,8 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript with
         if (!samples.contains(controlId))
           throw new IllegalStateException("For sample: " + sampleId + " this control: " + controlId + " does not exist")
         val macs2 = new Macs2CallPeak(this)
-        macs2.treatment = sample.bamFile
-        macs2.control = samples(controlId).bamFile
+        macs2.treatment = sample.bamFileFilter
+        macs2.control = samples(controlId).bamFileFilter
         macs2.name = Some(sampleId + "_VS_" + controlId)
         macs2.outputdir = sample.sampleDir + File.separator + "macs2" + File.separator + macs2.name.get + File.separator
         add(macs2)
diff --git a/public/carp/src/test/scala/nl/lumc/sasc/biopet/pipelines/carp/CarpTest.scala b/public/carp/src/test/scala/nl/lumc/sasc/biopet/pipelines/carp/CarpTest.scala
index 1f5efdc2fb950dfca40e7a870bba7da984db0c41..da5d79939fd3729fb8838ab26bbe1a2d2d2bfb00 100644
--- a/public/carp/src/test/scala/nl/lumc/sasc/biopet/pipelines/carp/CarpTest.scala
+++ b/public/carp/src/test/scala/nl/lumc/sasc/biopet/pipelines/carp/CarpTest.scala
@@ -116,7 +116,6 @@ object CarpTest {
   copyFile("ref.fa.fai")
 
   val executables = Map(
-    "reference" -> (outputDir + File.separator + "ref.fa"),
     "reference_fasta" -> (outputDir + File.separator + "ref.fa"),
     "fastqc" -> Map("exe" -> "test"),
     "seqtk" -> Map("exe" -> "test"),
diff --git a/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Fastqc.scala b/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Fastqc.scala
index 6c444bed885b3b4219728bf38423156b3d545064..8de84c5081db4b9801222c6853e2b185a54741e6 100644
--- a/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Fastqc.scala
+++ b/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Fastqc.scala
@@ -201,7 +201,8 @@ class Fastqc(root: Configurable) extends nl.lumc.sasc.biopet.extensions.Fastqc(r
 
   def summaryStats: Map[String, Any] = Map(
     "per_base_sequence_quality" -> perBaseSequenceQuality,
-    "per_base_sequence_content" -> perBaseSequenceContent)
+    "per_base_sequence_content" -> perBaseSequenceContent,
+    "adapters" -> foundAdapters.map(x => x.name -> x.seq).toMap)
 }
 
 object Fastqc {
diff --git a/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala b/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala
index aeab29b7d697093726674b263f916faf77bccd7d..e53c55cc53bd4cddab07de2d1fe7a1f5bc25feb9 100644
--- a/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala
+++ b/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala
@@ -153,29 +153,31 @@ class Flexiprep(val root: Configurable) extends QScript with SummaryQScript with
   else None
 
   /** Adds all chunkable jobs of flexiprep */
-  def runTrimClip(R1_in: File, outDir: File, chunk: String): (File, Option[File], List[File]) =
+  def runTrimClip(R1_in: File, outDir: File, chunk: String): (File, Option[File]) =
     runTrimClip(R1_in, None, outDir, chunk)
 
   /** Adds all chunkable jobs of flexiprep */
-  def runTrimClip(R1_in: File, outDir: File): (File, Option[File], List[File]) =
+  def runTrimClip(R1_in: File, outDir: File): (File, Option[File]) =
     runTrimClip(R1_in, None, outDir, "")
 
   /** Adds all chunkable jobs of flexiprep */
-  def runTrimClip(R1_in: File, R2_in: Option[File], outDir: File): (File, Option[File], List[File]) =
+  def runTrimClip(R1_in: File, R2_in: Option[File], outDir: File): (File, Option[File]) =
     runTrimClip(R1_in, R2_in, outDir, "")
 
   /** Adds all chunkable jobs of flexiprep */
-  def runTrimClip(R1_in: File, R2_in: Option[File], outDir: File, chunkarg: String): (File, Option[File], List[File]) = {
+  def runTrimClip(R1_in: File,
+                  R2_in: Option[File],
+                  outDir: File,
+                  chunkarg: String): (File, Option[File]) = {
     val chunk = if (chunkarg.isEmpty || chunkarg.endsWith("_")) chunkarg else chunkarg + "_"
 
     var R1 = R1_in
     var R2 = R2_in
-    def deps: List[File] = Nil
 
     val qcCmdR1 = new QcCommand(this, fastqc_R1)
     qcCmdR1.input = R1_in
     qcCmdR1.read = "R1"
-    qcCmdR1.output = if (paired) new File(fastqR1Qc.getAbsolutePath.stripSuffix(".gz"))
+    qcCmdR1.output = if (paired) new File(outDir, fastqR1Qc.getName.stripSuffix(".gz"))
     else fastqR1Qc
     qcCmdR1.deps :+= fastqc_R1.output
     qcCmdR1.isIntermediate = paired || !keepQcFastqFiles
@@ -184,7 +186,7 @@ class Flexiprep(val root: Configurable) extends QScript with SummaryQScript with
     if (paired) {
       val qcCmdR2 = new QcCommand(this, fastqc_R2)
       qcCmdR2.input = R2_in.get
-      qcCmdR2.output = new File(fastqR2Qc.get.getAbsolutePath.stripSuffix(".gz"))
+      qcCmdR2.output = new File(outDir, fastqR2Qc.get.getName.stripSuffix(".gz"))
       qcCmdR2.read = "R2"
       addSummarizable(qcCmdR2, "qc_command_R2")
 
@@ -195,8 +197,8 @@ class Flexiprep(val root: Configurable) extends QScript with SummaryQScript with
       fqSync.refFastq = R1_in
       fqSync.inputFastq1 = qcCmdR1.output
       fqSync.inputFastq2 = qcCmdR2.output
-      fqSync.outputFastq1 = fastqR1Qc
-      fqSync.outputFastq2 = fastqR2Qc.get
+      fqSync.outputFastq1 = new File(outDir, fastqR1Qc.getName)
+      fqSync.outputFastq2 = new File(outDir, fastqR2Qc.get.getName)
       fqSync.outputStats = new File(outDir, s"${sampleId.getOrElse("x")}-${libId.getOrElse("x")}.sync.stats")
 
       val pipe = new BiopetFifoPipe(this, fqSync :: Nil) {
@@ -242,7 +244,7 @@ class Flexiprep(val root: Configurable) extends QScript with SummaryQScript with
 
     outputFiles += (chunk + "output_R1" -> R1)
     if (paired) outputFiles += (chunk + "output_R2" -> R2.get)
-    (R1, R2, deps)
+    (R1, R2)
   }
 
   /** Adds last non chunkable jobs */
@@ -250,24 +252,28 @@ class Flexiprep(val root: Configurable) extends QScript with SummaryQScript with
     if (fastq_R1.length != fastq_R2.length && paired)
       throw new IllegalStateException("R1 and R2 file number is not the same")
 
-    if (!skipTrim || !skipClip) {
-      if (fastq_R1.length > 1) {
-        add(Zcat(this, fastq_R1, fastqR1Qc) | new Gzip(this) > fastqR1Qc)
-        if (paired) add(Zcat(this, fastq_R2, fastqR2Qc.get) | new Gzip(this) > fastqR2Qc.get)
+    if (fastq_R1.length > 1) {
+      val zcat = new Zcat(this)
+      zcat.input = fastq_R1
+      add(zcat | new Gzip(this) > fastqR1Qc)
+      if (paired) {
+        val zcat = new Zcat(this)
+        zcat.input = fastq_R2
+        add(zcat | new Gzip(this) > fastqR2Qc.get)
       }
+    }
 
-      outputFiles += ("output_R1_gzip" -> fastqR1Qc)
-      if (paired) outputFiles += ("output_R2_gzip" -> fastqR2Qc.get)
+    outputFiles += ("output_R1_gzip" -> fastqR1Qc)
+    if (paired) outputFiles += ("output_R2_gzip" -> fastqR2Qc.get)
 
-      fastqc_R1_after = Fastqc(this, fastqR1Qc, new File(outputDir, R1_name + ".qc.fastqc/"))
-      add(fastqc_R1_after)
-      addSummarizable(fastqc_R1_after, "fastqc_R1_qc")
+    fastqc_R1_after = Fastqc(this, fastqR1Qc, new File(outputDir, R1_name + ".qc.fastqc/"))
+    add(fastqc_R1_after)
+    addSummarizable(fastqc_R1_after, "fastqc_R1_qc")
 
-      if (paired) {
-        fastqc_R2_after = Fastqc(this, fastqR2Qc.get, new File(outputDir, R2_name + ".qc.fastqc/"))
-        add(fastqc_R2_after)
-        addSummarizable(fastqc_R2_after, "fastqc_R2_qc")
-      }
+    if (paired) {
+      fastqc_R2_after = Fastqc(this, fastqR2Qc.get, new File(outputDir, R2_name + ".qc.fastqc/"))
+      add(fastqc_R2_after)
+      addSummarizable(fastqc_R2_after, "fastqc_R2_qc")
     }
 
     addSummaryJobs()
diff --git a/public/flexiprep/src/test/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepTest.scala b/public/flexiprep/src/test/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepTest.scala
index f7f9dc2ab2d916e22c0a6858663f1a43773f7f22..cce952717b29e94556d3535cab4c5830d33a1cfe 100644
--- a/public/flexiprep/src/test/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepTest.scala
+++ b/public/flexiprep/src/test/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepTest.scala
@@ -73,11 +73,7 @@ class FlexiprepTest extends TestNGSuite with Matchers {
     flexiprep.libId = Some("1")
     flexiprep.script()
 
-    flexiprep.functions.count(_.isInstanceOf[Fastqc]) shouldBe (
-      if (paired && (skipClip && skipTrim)) 2
-      else if (!paired && (skipClip && skipTrim)) 1
-      else if (paired && !(skipClip && skipTrim)) 4
-      else if (!paired && !(skipClip && skipTrim)) 2)
+    flexiprep.functions.count(_.isInstanceOf[Fastqc]) shouldBe (if (paired) 4 else 2)
     flexiprep.functions.count(_.isInstanceOf[SeqStat]) shouldBe (if (paired) 4 else 2)
   }
 
diff --git a/public/gentrap/src/main/scala/nl/lumc/sasc/biopet/pipelines/gentrap/Gentrap.scala b/public/gentrap/src/main/scala/nl/lumc/sasc/biopet/pipelines/gentrap/Gentrap.scala
index d033594c6e42663427108baf12038b7eed6fb3f6..724470df1091228bbdaf928b49ae7024f2bb70bd 100644
--- a/public/gentrap/src/main/scala/nl/lumc/sasc/biopet/pipelines/gentrap/Gentrap.scala
+++ b/public/gentrap/src/main/scala/nl/lumc/sasc/biopet/pipelines/gentrap/Gentrap.scala
@@ -100,24 +100,23 @@ class Gentrap(val root: Configurable) extends QScript
     })
 
   /** Default pipeline config */
-  override def defaults = ConfigUtils.mergeMaps(
-    Map(
-      "gsnap" -> Map(
-        "novelsplicing" -> 1,
-        "batch" -> 4,
-        "format" -> "sam"
-      ),
-      "cutadapt" -> Map("minimum_length" -> 20),
-      // avoid conflicts when merging since the MarkDuplicate tags often cause merges to fail
-      "picard" -> Map(
-        "programrecordid" -> "null"
-      ),
-      // disable markduplicates since it may not play well with all aligners (this can still be overriden via config)
-      "mapping" -> Map(
-        "skip_markduplicates" -> true,
-        "skip_metrics" -> true
-      )
-    ), super.defaults)
+  override def defaults = Map(
+    "gsnap" -> Map(
+      "novelsplicing" -> 1,
+      "batch" -> 4,
+      "format" -> "sam"
+    ),
+    "cutadapt" -> Map("minimum_length" -> 20),
+    // avoid conflicts when merging since the MarkDuplicate tags often cause merges to fail
+    "picard" -> Map(
+      "programrecordid" -> "null"
+    ),
+    // disable markduplicates since it may not play well with all aligners (this can still be overriden via config)
+    "mapping" -> Map(
+      "skip_markduplicates" -> true,
+      "skip_metrics" -> true
+    )
+  )
 
   /** Adds output merge jobs for the given expression mode */
   // TODO: can we combine the enum with the file extension (to reduce duplication and potential errors)
diff --git a/public/gentrap/src/test/scala/nl/lumc/sasc/biopet/pipelines/gentrap/GentrapTest.scala b/public/gentrap/src/test/scala/nl/lumc/sasc/biopet/pipelines/gentrap/GentrapTest.scala
index 2b2ddaf259e8fa5ad382ef1aca1337826ecf0ad8..34a43484056b82d9948a11c16f7c2276be7bd6e8 100644
--- a/public/gentrap/src/test/scala/nl/lumc/sasc/biopet/pipelines/gentrap/GentrapTest.scala
+++ b/public/gentrap/src/test/scala/nl/lumc/sasc/biopet/pipelines/gentrap/GentrapTest.scala
@@ -28,7 +28,7 @@ import org.scalatest.Matchers
 import org.scalatest.testng.TestNGSuite
 import org.testng.annotations.{ AfterClass, DataProvider, Test }
 
-class GentrapTest extends TestNGSuite with Matchers {
+abstract class GentrapTestAbstract(val expressionMeasure: String) extends TestNGSuite with Matchers {
 
   def initPipeline(map: Map[String, Any]): Gentrap = {
     new Gentrap() {
@@ -70,7 +70,7 @@ class GentrapTest extends TestNGSuite with Matchers {
       .toMap
     )
 
-  private lazy val validExpressionMeasures = Set(
+  val validExpressionMeasures = Set(
     "fragments_per_gene", "fragments_per_exon", "bases_per_gene", "bases_per_exon",
     "cufflinks_strict", "cufflinks_guided", "cufflinks_blind")
 
@@ -96,7 +96,7 @@ class GentrapTest extends TestNGSuite with Matchers {
 
     for {
       sampleConfig <- sampleConfigs.toArray
-      expressionMeasure <- expressionMeasures
+      //expressionMeasure <- expressionMeasures
       strandProtocol <- strandProtocols
     } yield Array(sampleConfig, List(expressionMeasure), strandProtocol)
   }
@@ -118,8 +118,6 @@ class GentrapTest extends TestNGSuite with Matchers {
     val functions = gentrap.functions.groupBy(_.getClass)
     val numSamples = sampleConfig("samples").size
 
-    functions(classOf[Gsnap]).size should be >= 1
-
     if (expMeasures.contains("fragments_per_gene")) {
       gentrap.functions
         .collect { case x: HtseqCount => x.output.toString.endsWith(".fragments_per_gene") }.size shouldBe numSamples
@@ -177,6 +175,14 @@ class GentrapTest extends TestNGSuite with Matchers {
   }
 }
 
+class GentrapFragmentsPerGeneTest extends GentrapTestAbstract("fragments_per_gene")
+class GentrapFragmentsPerExonTest extends GentrapTestAbstract("fragments_per_exon")
+class GentrapBasesPerGeneTest extends GentrapTestAbstract("bases_per_gene")
+class GentrapBasesPerExonTest extends GentrapTestAbstract("bases_per_exon")
+class GentrapCufflinksStrictTest extends GentrapTestAbstract("cufflinks_strict")
+class GentrapCufflinksGuidedTest extends GentrapTestAbstract("cufflinks_guided")
+class GentrapCufflinksBlindTest extends GentrapTestAbstract("cufflinks_blind")
+
 object GentrapTest {
   val outputDir = Files.createTempDir()
   new File(outputDir, "input").mkdirs()
@@ -198,7 +204,6 @@ object GentrapTest {
   copyFile("ref.fa.fai")
 
   val executables = Map(
-    "reference" -> (outputDir + File.separator + "ref.fa"),
     "reference_fasta" -> (outputDir + File.separator + "ref.fa"),
     "refFlat" -> "test",
     "annotation_gtf" -> "test",
diff --git a/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala b/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala
index d0a78797c8b14ddbfbad3b1b6de7947280032cfc..eb52e5ab931c516333c4582f3373787d9922408e 100644
--- a/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala
+++ b/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala
@@ -98,13 +98,12 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
   /** location of summary file */
   def summaryFile = new File(outputDir, sampleId.getOrElse("x") + "-" + libId.getOrElse("x") + ".summary.json")
 
-  override def defaults = ConfigUtils.mergeMaps(
-    Map(
-      "gsnap" -> Map(
-        "batch" -> 4,
-        "format" -> "sam"
-      )
-    ), super.defaults)
+  override def defaults = Map("gsnap" -> Map("batch" -> 4))
+
+  override def fixedValues = Map(
+    "gsnap" -> Map("format" -> "sam"),
+    "bowtie" -> Map("sam" -> true)
+  )
 
   /** File to add to the summary */
   def summaryFiles: Map[String, File] = Map("output_bamfile" -> finalBamFile, "input_R1" -> input_R1,
@@ -118,7 +117,7 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
     "skip_markduplicates" -> skipMarkduplicates,
     "aligner" -> aligner,
     "chunking" -> chunking,
-    "numberChunks" -> numberChunks.getOrElse(1)
+    "numberChunks" -> (if (chunking) numberChunks.getOrElse(1) else None)
   ) ++ (if (root == null) Map("reference" -> referenceSummary) else Map())
 
   override def reportClass = {
@@ -143,8 +142,8 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
 
     paired = input_R2.isDefined
 
-    if (readgroupId == null) readgroupId = sampleId.get + "-" + libId.get
-    else if (readgroupId == null) readgroupId = config("readgroup_id")
+    if (readgroupId == null)
+      readgroupId = config("readgroup_id", default = sampleId.get + "-" + libId.get)
 
     if (outputName == null) outputName = readgroupId
 
@@ -206,13 +205,11 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
     for ((chunkDir, fastqfile) <- chunks) {
       var R1 = fastqfile._1
       var R2 = fastqfile._2
-      var deps: List[File] = Nil
       if (!skipFlexiprep) {
         val flexiout = flexiprep.runTrimClip(R1, R2, new File(chunkDir, "flexiprep"), chunkDir)
         logger.debug(chunkDir + " - " + flexiout)
         R1 = flexiout._1
         if (paired) R2 = flexiout._2
-        deps = flexiout._3
         fastq_R1_output :+= R1
         R2.foreach(R2 => fastq_R2_output :+= R2)
       }
@@ -220,15 +217,15 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
       val outputBam = new File(chunkDir, outputName + ".bam")
       bamFiles :+= outputBam
       aligner match {
-        case "bwa-mem"    => addBwaMem(R1, R2, outputBam, deps)
-        case "bwa-aln"    => addBwaAln(R1, R2, outputBam, deps)
-        case "bowtie"     => addBowtie(R1, R2, outputBam, deps)
-        case "gsnap"      => addGsnap(R1, R2, outputBam, deps)
+        case "bwa-mem"    => addBwaMem(R1, R2, outputBam)
+        case "bwa-aln"    => addBwaAln(R1, R2, outputBam)
+        case "bowtie"     => addBowtie(R1, R2, outputBam)
+        case "gsnap"      => addGsnap(R1, R2, outputBam)
         // TODO: make TopHat here accept multiple input files
-        case "tophat"     => addTophat(R1, R2, outputBam, deps)
-        case "stampy"     => addStampy(R1, R2, outputBam, deps)
-        case "star"       => addStar(R1, R2, outputBam, deps)
-        case "star-2pass" => addStar2pass(R1, R2, outputBam, deps)
+        case "tophat"     => addTophat(R1, R2, outputBam)
+        case "stampy"     => addStampy(R1, R2, outputBam)
+        case "star"       => addStar(R1, R2, outputBam)
+        case "star-2pass" => addStar2pass(R1, R2, outputBam)
         case _            => throw new IllegalStateException("Option aligner: '" + aligner + "' is not valid")
       }
       if (chunking && numberChunks.getOrElse(1) > 1 && config("chunk_metrics", default = false))
@@ -278,10 +275,9 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
   }
 
   /** Add bwa aln jobs */
-  def addBwaAln(R1: File, R2: Option[File], output: File, deps: List[File]): File = {
+  def addBwaAln(R1: File, R2: Option[File], output: File): File = {
     val bwaAlnR1 = new BwaAln(this)
     bwaAlnR1.fastq = R1
-    bwaAlnR1.deps = deps
     bwaAlnR1.output = swapExt(output.getParent, output, ".bam", ".R1.sai")
     bwaAlnR1.isIntermediate = true
     add(bwaAlnR1)
@@ -289,7 +285,6 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
     val samFile: File = if (paired) {
       val bwaAlnR2 = new BwaAln(this)
       bwaAlnR2.fastq = R2.get
-      bwaAlnR2.deps = deps
       bwaAlnR2.output = swapExt(output.getParent, output, ".bam", ".R2.sai")
       bwaAlnR2.isIntermediate = true
       add(bwaAlnR2)
@@ -324,41 +319,47 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
   }
 
   /** Adds bwa mem jobs */
-  def addBwaMem(R1: File, R2: Option[File], output: File, deps: List[File]): File = {
+  def addBwaMem(R1: File, R2: Option[File], output: File): File = {
     val bwaCommand = new BwaMem(this)
     bwaCommand.R1 = R1
     if (paired) bwaCommand.R2 = R2.get
-    bwaCommand.deps = deps
     bwaCommand.R = Some(getReadGroupBwa)
     val sortSam = new SortSam(this)
     sortSam.output = output
-    add(bwaCommand | sortSam, chunking || !skipMarkduplicates)
+    val pipe = bwaCommand | sortSam
+    pipe.isIntermediate = chunking || !skipMarkduplicates
+    pipe.threadsCorrection = -1
+    add(pipe)
     output
   }
 
-  def addGsnap(R1: File, R2: Option[File], output: File, deps: List[File]): File = {
+  def addGsnap(R1: File, R2: Option[File], output: File): File = {
+    val zcatR1 = extractIfNeeded(R1, output.getParentFile)
+    val zcatR2 = if (paired) Some(extractIfNeeded(R2.get, output.getParentFile)) else None
     val gsnapCommand = new Gsnap(this)
-    gsnapCommand.input = if (paired) List(R1, R2.get) else List(R1)
-    gsnapCommand.deps = deps
-    gsnapCommand.output = swapExt(output.getParent, output, ".bam", ".sam")
-    gsnapCommand.isIntermediate = true
-    add(gsnapCommand)
+    gsnapCommand.input = if (paired) List(zcatR1._2, zcatR2.get._2) else List(zcatR1._2)
+    gsnapCommand.output = swapExt(output.getParentFile, output, ".bam", ".sam")
 
     val reorderSam = new ReorderSam(this)
     reorderSam.input = gsnapCommand.output
-    reorderSam.output = swapExt(output.getParent, output, ".sorted.bam", ".reordered.bam")
-    add(reorderSam)
-
-    addAddOrReplaceReadGroups(reorderSam.output, output)
+    reorderSam.output = swapExt(output.getParentFile, output, ".sorted.bam", ".reordered.bam")
+
+    val ar = addAddOrReplaceReadGroups(reorderSam.output, output)
+    val pipe = new BiopetFifoPipe(this, (zcatR1._1 :: (if (paired) zcatR2.get._1 else None) ::
+      Some(gsnapCommand) :: Some(ar._1) :: Some(reorderSam) :: Nil).flatten)
+    pipe.threadsCorrection = -1
+    zcatR1._1.foreach(x => pipe.threadsCorrection -= 1)
+    zcatR2.foreach(_._1.foreach(x => pipe.threadsCorrection -= 1))
+    add(pipe)
+    ar._2
   }
 
-  def addTophat(R1: File, R2: Option[File], output: File, deps: List[File]): File = {
+  def addTophat(R1: File, R2: Option[File], output: File): File = {
     // TODO: merge mapped and unmapped BAM ~ also dealing with validation errors in the unmapped BAM
     val tophat = new Tophat(this)
     tophat.R1 = tophat.R1 :+ R1
     if (paired) tophat.R2 = tophat.R2 :+ R2.get
     tophat.output_dir = new File(outputDir, "tophat_out")
-    tophat.deps = deps
     // always output BAM
     tophat.no_convert_bam = false
     // and always keep input ordering
@@ -392,10 +393,12 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
     reorderSam.output = swapExt(output.getParent, output, ".merge.bam", ".reordered.bam")
     add(reorderSam)
 
-    addAddOrReplaceReadGroups(reorderSam.output, output)
+    val ar = addAddOrReplaceReadGroups(reorderSam.output, output)
+    add(ar._1)
+    ar._2
   }
   /** Adds stampy jobs */
-  def addStampy(R1: File, R2: Option[File], output: File, deps: List[File]): File = {
+  def addStampy(R1: File, R2: Option[File], output: File): File = {
 
     var RG: String = "ID:" + readgroupId + ","
     RG += "SM:" + sampleId.get + ","
@@ -410,10 +413,9 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
     val stampyCmd = new Stampy(this)
     stampyCmd.R1 = R1
     if (paired) stampyCmd.R2 = R2.get
-    stampyCmd.deps = deps
     stampyCmd.readgroup = RG
     stampyCmd.sanger = true
-    stampyCmd.output = this.swapExt(output.getParent, output, ".bam", ".sam")
+    stampyCmd.output = this.swapExt(output.getParentFile, output, ".bam", ".sam")
     stampyCmd.isIntermediate = true
     add(stampyCmd)
     val sortSam = SortSam(this, stampyCmd.output, output)
@@ -423,33 +425,54 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
   }
 
   /** Adds bowtie jobs */
-  def addBowtie(R1: File, R2: Option[File], output: File, deps: List[File]): File = {
+  def addBowtie(R1: File, R2: Option[File], output: File): File = {
+    val zcatR1 = extractIfNeeded(R1, output.getParentFile)
+    val zcatR2 = if (paired) Some(extractIfNeeded(R2.get, output.getParentFile)) else None
+    zcatR1._1.foreach(add(_))
+    zcatR2.foreach(_._1.foreach(add(_)))
     val bowtie = new Bowtie(this)
-    bowtie.R1 = R1
-    if (paired) bowtie.R2 = R2
-    bowtie.deps = deps
-    bowtie.output = this.swapExt(output.getParent, output, ".bam", ".sam")
+    bowtie.R1 = zcatR1._2
+    if (paired) bowtie.R2 = Some(zcatR2.get._2)
+    bowtie.output = this.swapExt(output.getParentFile, output, ".bam", ".sam")
     bowtie.isIntermediate = true
-    add(bowtie)
-    addAddOrReplaceReadGroups(bowtie.output, output)
+    val ar = addAddOrReplaceReadGroups(bowtie.output, output)
+    val pipe = new BiopetFifoPipe(this, (Some(bowtie) :: Some(ar._1) :: Nil).flatten)
+    pipe.threadsCorrection = -1
+    add(pipe)
+    ar._2
   }
 
   /** Adds Star jobs */
-  def addStar(R1: File, R2: Option[File], output: File, deps: List[File]): File = {
-    val starCommand = Star(this, R1, R2, outputDir, isIntermediate = true, deps = deps)
-    add(starCommand)
-    addAddOrReplaceReadGroups(starCommand.outputSam, output)
+  def addStar(R1: File, R2: Option[File], output: File): File = {
+    val zcatR1 = extractIfNeeded(R1, output.getParentFile)
+    val zcatR2 = if (paired) Some(extractIfNeeded(R2.get, output.getParentFile)) else None
+    val starCommand = Star(this, zcatR1._2, zcatR2.map(_._2), outputDir, isIntermediate = true)
+    val ar = addAddOrReplaceReadGroups(starCommand.outputSam, output)
+    val pipe = new BiopetFifoPipe(this, (zcatR1._1 :: (if (paired) zcatR2.get._1 else None) ::
+      Some(starCommand) :: Some(ar._1) :: Nil).flatten)
+    pipe.threadsCorrection = -1
+    zcatR1._1.foreach(x => pipe.threadsCorrection -= 1)
+    zcatR2.foreach(_._1.foreach(x => pipe.threadsCorrection -= 1))
+    add(pipe)
+    ar._2
   }
 
   /** Adds Start 2 pass jobs */
-  def addStar2pass(R1: File, R2: Option[File], output: File, deps: List[File]): File = {
-    val starCommand = Star._2pass(this, R1, R2, outputDir, isIntermediate = true, deps = deps)
+  def addStar2pass(R1: File, R2: Option[File], output: File): File = {
+    val zcatR1 = extractIfNeeded(R1, output.getParentFile)
+    val zcatR2 = if (paired) Some(extractIfNeeded(R2.get, output.getParentFile)) else None
+    zcatR1._1.foreach(add(_))
+    zcatR2.foreach(_._1.foreach(add(_)))
+
+    val starCommand = Star._2pass(this, zcatR1._2, zcatR2.map(_._2), outputDir, isIntermediate = true)
     addAll(starCommand._2)
-    addAddOrReplaceReadGroups(starCommand._1, output)
+    val ar = addAddOrReplaceReadGroups(starCommand._1, output)
+    add(ar._1)
+    ar._2
   }
 
   /** Adds AddOrReplaceReadGroups */
-  def addAddOrReplaceReadGroups(input: File, output: File): File = {
+  def addAddOrReplaceReadGroups(input: File, output: File): (AddOrReplaceReadGroups, File) = {
     val addOrReplaceReadGroups = AddOrReplaceReadGroups(this, input, output)
     addOrReplaceReadGroups.createIndex = true
 
@@ -461,9 +484,8 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
     if (readgroupSequencingCenter.isDefined) addOrReplaceReadGroups.RGCN = readgroupSequencingCenter.get
     if (readgroupDescription.isDefined) addOrReplaceReadGroups.RGDS = readgroupDescription.get
     if (!skipMarkduplicates) addOrReplaceReadGroups.isIntermediate = true
-    add(addOrReplaceReadGroups)
 
-    addOrReplaceReadGroups.output
+    (addOrReplaceReadGroups, addOrReplaceReadGroups.output)
   }
 
   /** Returns readgroup for bwa */
@@ -488,22 +510,18 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
    * @param runDir directory to extract when needed
    * @return returns extracted file
    */
-  def extractIfNeeded(file: File, runDir: File): File = {
-    if (file == null) file
-    else if (file.getName.endsWith(".gz") || file.getName.endsWith(".gzip")) {
+  def extractIfNeeded(file: File, runDir: File): (Option[BiopetCommandLineFunction], File) = {
+    require(file != null)
+    if (file.getName.endsWith(".gz") || file.getName.endsWith(".gzip")) {
       var newFile: File = swapExt(runDir, file, ".gz", "")
       if (file.getName.endsWith(".gzip")) newFile = swapExt(runDir, file, ".gzip", "")
       val zcatCommand = Zcat(this, file, newFile)
-      zcatCommand.isIntermediate = true
-      add(zcatCommand)
-      newFile
+      (Some(zcatCommand), newFile)
     } else if (file.getName.endsWith(".bz2")) {
       val newFile = swapExt(runDir, file, ".bz2", "")
       val pbzip2 = Pbzip2(this, file, newFile)
-      pbzip2.isIntermediate = true
-      add(pbzip2)
-      newFile
-    } else file
+      (Some(pbzip2), newFile)
+    } else (None, file)
   }
 
 }
diff --git a/public/mapping/src/test/scala/nl/lumc/sasc/biopet/pipelines/mapping/MappingTest.scala b/public/mapping/src/test/scala/nl/lumc/sasc/biopet/pipelines/mapping/MappingTest.scala
index 710ff17cb665d8bf41c4b1bb41eb7dceb9c81060..377c771cee17b62922381cd09d9c4ebd0aa15aec 100644
--- a/public/mapping/src/test/scala/nl/lumc/sasc/biopet/pipelines/mapping/MappingTest.scala
+++ b/public/mapping/src/test/scala/nl/lumc/sasc/biopet/pipelines/mapping/MappingTest.scala
@@ -18,13 +18,9 @@ package nl.lumc.sasc.biopet.pipelines.mapping
 import java.io.{ File, FileOutputStream }
 
 import com.google.common.io.Files
-import nl.lumc.sasc.biopet.utils.config.Config
-import nl.lumc.sasc.biopet.extensions._
-import nl.lumc.sasc.biopet.extensions.bwa.{ BwaAln, BwaMem, BwaSampe, BwaSamse }
-import nl.lumc.sasc.biopet.extensions.picard.{ AddOrReplaceReadGroups, MarkDuplicates, MergeSamFiles, SortSam }
 import nl.lumc.sasc.biopet.pipelines.flexiprep.Fastqc
-import nl.lumc.sasc.biopet.extensions.tools.{ FastqSync, SeqStat }
 import nl.lumc.sasc.biopet.utils.ConfigUtils
+import nl.lumc.sasc.biopet.utils.config.Config
 import org.apache.commons.io.FileUtils
 import org.broadinstitute.gatk.queue.QSettings
 import org.scalatest.Matchers
@@ -36,7 +32,7 @@ import org.testng.annotations.{ AfterClass, DataProvider, Test }
  *
  * Created by pjvan_thof on 2/12/15.
  */
-class MappingTest extends TestNGSuite with Matchers {
+abstract class AbstractTestMapping(val aligner: String) extends TestNGSuite with Matchers {
   def initPipeline(map: Map[String, Any]): Mapping = {
     new Mapping {
       override def configName = "mapping"
@@ -48,15 +44,13 @@ class MappingTest extends TestNGSuite with Matchers {
 
   @DataProvider(name = "mappingOptions")
   def mappingOptions = {
-    val aligners = Array("bwa-mem", "bwa-aln", "star", "star-2pass", "bowtie", "stampy", "gsnap", "tophat")
     val paired = Array(true, false)
-    val chunks = Array(1, 5, 10, 100)
+    val chunks = Array(1, 5)
     val skipMarkDuplicates = Array(true, false)
     val skipFlexipreps = Array(true, false)
     val zipped = Array(true, false)
 
     for (
-      aligner <- aligners;
       pair <- paired;
       chunk <- chunks;
       skipMarkDuplicate <- skipMarkDuplicates;
@@ -91,28 +85,6 @@ class MappingTest extends TestNGSuite with Matchers {
 
     //Flexiprep
     mapping.functions.count(_.isInstanceOf[Fastqc]) shouldBe (if (skipFlexiprep) 0 else if (paired) 4 else 2)
-
-    //aligners
-    mapping.functions.count(_.isInstanceOf[BwaAln]) shouldBe ((if (aligner == "bwa-aln") if (paired) 2 else 1 else 0) * chunks)
-    mapping.functions.count(_.isInstanceOf[BwaSampe]) shouldBe ((if (aligner == "bwa-aln") if (paired) 1 else 0 else 0) * chunks)
-    mapping.functions.count(_.isInstanceOf[BwaSamse]) shouldBe ((if (aligner == "bwa-aln") if (paired) 0 else 1 else 0) * chunks)
-    mapping.functions.count(_.isInstanceOf[Star]) shouldBe ((if (aligner == "star") 1 else if (aligner == "star-2pass") 3 else 0) * chunks)
-    mapping.functions.count(_.isInstanceOf[Bowtie]) shouldBe ((if (aligner == "bowtie") 1 else 0) * chunks)
-    mapping.functions.count(_.isInstanceOf[Stampy]) shouldBe ((if (aligner == "stampy") 1 else 0) * chunks)
-
-    // Sort sam or replace readgroup
-    val sort = aligner match {
-      case "bwa-mem" | "bwa-aln" | "stampy" => "sortsam"
-      case "star" | "star-2pass" | "bowtie" | "gsnap" | "tophat" => "replacereadgroups"
-      case _ => throw new IllegalArgumentException("aligner: " + aligner + " does not exist")
-    }
-
-    if (aligner != "tophat") { // FIXME
-      //mapping.functions.count(_.isInstanceOf[SortSam]) shouldBe ((if (sort == "sortsam") 1 else 0) * chunks)
-      mapping.functions.count(_.isInstanceOf[AddOrReplaceReadGroups]) shouldBe ((if (sort == "replacereadgroups") 1 else 0) * chunks)
-      mapping.functions.count(_.isInstanceOf[MergeSamFiles]) shouldBe (if (skipMarkDuplicate && chunks > 1) 1 else 0)
-      mapping.functions.count(_.isInstanceOf[MarkDuplicates]) shouldBe (if (skipMarkDuplicate) 0 else 1)
-    }
   }
 
   // remove temporary run directory all tests in the class have been run
@@ -121,7 +93,17 @@ class MappingTest extends TestNGSuite with Matchers {
   }
 }
 
+class MappingBwaMemTest extends AbstractTestMapping("bwa-mem")
+class MappingBwaAlnTest extends AbstractTestMapping("bwa-aln")
+class MappingStarTest extends AbstractTestMapping("star")
+class MappingStar2PassTest extends AbstractTestMapping("star-2pass")
+class MappingBowtieTest extends AbstractTestMapping("bowtie")
+class MappingStampyTest extends AbstractTestMapping("stampy")
+class MappingGsnapTest extends AbstractTestMapping("gsnap")
+class MappingTophatTest extends AbstractTestMapping("tophat")
+
 object MappingTest {
+
   val outputDir = Files.createTempDir()
   new File(outputDir, "input").mkdirs()
 
diff --git a/public/pom.xml b/public/pom.xml
index cf2ea52f0c710db8abf2ce1c1202a7dd12d80dd0..0f2785691ad8dab0d8111a6204894b8801e4eeac 100644
--- a/public/pom.xml
+++ b/public/pom.xml
@@ -44,13 +44,14 @@
         <module>biopet-utils</module>
         <module>biopet-tools</module>
         <module>biopet-tools-extensions</module>
-        <module>biopet-extentsions</module>
+        <module>biopet-extensions</module>
         <module>biopet-tools-package</module>
     </modules>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <scoverage.plugin.version>1.0.4</scoverage.plugin.version>
+        <scoverage.plugin.version>1.1.1</scoverage.plugin.version>
+        <scalaVersion>2.10.4</scalaVersion>
     </properties>
     
     <build>
@@ -79,6 +80,7 @@
                 <version>2.18.1</version>
                 <configuration>
                     <forkCount>1C</forkCount>
+                    <argLine>-Xmx300m</argLine>
                     <workingDirectory>${project.build.directory}</workingDirectory>
                 </configuration>
             </plugin>
@@ -243,10 +245,12 @@
               <artifactId>scoverage-maven-plugin</artifactId>
               <version>${scoverage.plugin.version}</version>
               <configuration>
-                  <scalaVersion>2.10.2</scalaVersion>
+                  <scalaVersion>${scalaVersion}</scalaVersion>
+                  <aggregate>true</aggregate>
+                  <highlighting>true</highlighting>
                   <!-- other parameters -->
               </configuration>
-            </plugin>
+          </plugin>
       </plugins>
     </build>
     <reporting>
@@ -255,6 +259,17 @@
                 <groupId>org.scoverage</groupId>
                 <artifactId>scoverage-maven-plugin</artifactId>
                 <version>${scoverage.plugin.version}</version>
+                <configuration>
+                    <aggregate>true</aggregate> <!-- for aggregated report -->
+                    <highlighting>true</highlighting>
+                </configuration>
+                <reportSets>
+                    <reportSet>
+                        <reports>
+                            <report>report</report> <!-- select only one report from: report, integration-report and report-only reporters -->
+                        </reports>
+                    </reportSet>
+                </reportSets>
             </plugin>
         </plugins>
     </reporting>
diff --git a/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala b/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala
index 2ee8c3b1930aff553234f6f3860d7c13e0818783..c8b81c0c4d31d6424db74390390c758096478838 100644
--- a/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala
+++ b/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala
@@ -36,21 +36,22 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript {
   var transcriptome: Option[File] = config("transcriptome")
   var tagsLibrary: Option[File] = config("tags_library")
 
-  override def defaults = ConfigUtils.mergeMaps(Map("bowtie" -> Map(
-    "m" -> 1,
-    "k" -> 1,
-    "best" -> true,
-    "strata" -> true,
-    "seedmms" -> 1
-  ), "mapping" -> Map(
-    "aligner" -> "bowtie",
-    "skip_flexiprep" -> true,
-    "skip_markduplicates" -> true
-  ), "flexiprep" -> Map(
-    "skip_clip" -> true,
-    "skip_trim" -> true
-  ), "strandSensitive" -> true
-  ), super.defaults)
+  override def defaults = Map(
+    "bowtie" -> Map(
+      "m" -> 1,
+      "k" -> 1,
+      "best" -> true,
+      "strata" -> true,
+      "seedmms" -> 1
+    ), "mapping" -> Map(
+      "aligner" -> "bowtie",
+      "skip_flexiprep" -> true,
+      "skip_markduplicates" -> true
+    ), "flexiprep" -> Map(
+      "skip_clip" -> true,
+      "skip_trim" -> true
+    ), "strandSensitive" -> true
+  )
 
   def summaryFile: File = new File(outputDir, "Sage.summary.json")
 
diff --git a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTrait.scala b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTrait.scala
index f9cbddd1d75560c3c5e5c538a1ac0080dacd620a..26302af07fb2abac8007faaf9dbc55e16fca23e1 100644
--- a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTrait.scala
+++ b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTrait.scala
@@ -199,11 +199,11 @@ trait ShivaVariantcallingTrait extends SummaryQScript with SampleLibraryTag with
 
         val vcfFilter = new VcfFilter(qscript) {
           override def configName = "vcffilter"
-          override def defaults = ConfigUtils.mergeMaps(Map("min_sample_depth" -> 8,
+          override def defaults = Map("min_sample_depth" -> 8,
             "min_alternate_depth" -> 2,
             "min_samples_pass" -> 1,
             "filter_ref_calls" -> true
-          ), super.defaults)
+          )
         }
         vcfFilter.inputVcf = m2v.output
         vcfFilter.outputVcf = new File(outputDir, bamFile.getName.stripSuffix(".bam") + ".raw.filter.vcf.gz")
diff --git a/public/shiva/src/test/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaTest.scala b/public/shiva/src/test/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaTest.scala
index 53286ecde3d44e4e6ad91fe142a5740b4909ceca..31777668d11df48a3ad99a663d60aad6e7666966 100644
--- a/public/shiva/src/test/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaTest.scala
+++ b/public/shiva/src/test/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaTest.scala
@@ -109,7 +109,6 @@ object ShivaTest {
     "cache" -> true,
     "dir" -> "test",
     "vep_script" -> "test",
-    "reference" -> (outputDir + File.separator + "ref.fa"),
     "reference_fasta" -> (outputDir + File.separator + "ref.fa"),
     "gatk_jar" -> "test",
     "samtools" -> Map("exe" -> "test"),
diff --git a/public/shiva/src/test/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTest.scala b/public/shiva/src/test/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTest.scala
index caeea0326d46e4b7673dae4a3d07f27c3cbd5f4e..dae0b974329950501369990e3a53bae077f8f071 100644
--- a/public/shiva/src/test/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTest.scala
+++ b/public/shiva/src/test/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaVariantcallingTest.scala
@@ -112,7 +112,6 @@ object ShivaVariantcallingTest {
     "cache" -> true,
     "dir" -> "test",
     "vep_script" -> "test",
-    "reference" -> (outputDir + File.separator + "ref.fa"),
     "reference_fasta" -> (outputDir + File.separator + "ref.fa"),
     "gatk_jar" -> "test",
     "samtools" -> Map("exe" -> "test"),
diff --git a/public/toucan/src/main/scala/nl/lumc/sasc/biopet/pipelines/toucan/Toucan.scala b/public/toucan/src/main/scala/nl/lumc/sasc/biopet/pipelines/toucan/Toucan.scala
index 7c3cc327858be60bb3d299e550c0f4244b656560..6ee0776713a5391296719ac6edc83819777fcf31 100644
--- a/public/toucan/src/main/scala/nl/lumc/sasc/biopet/pipelines/toucan/Toucan.scala
+++ b/public/toucan/src/main/scala/nl/lumc/sasc/biopet/pipelines/toucan/Toucan.scala
@@ -38,9 +38,9 @@ class Toucan(val root: Configurable) extends QScript with BiopetQScript with Sum
     inputFiles :+= new InputFile(inputVCF)
   }
 
-  override def defaults = ConfigUtils.mergeMaps(Map(
+  override def defaults = Map(
     "varianteffectpredictor" -> Map("everything" -> true)
-  ), super.defaults)
+  )
 
   //defaults ++= Map("varianteffectpredictor" -> Map("everything" -> true))
 
diff --git a/public/yamsvp/src/main/scala/nl/lumc/sasc/biopet/extensions/pindel/Pindel.scala b/public/yamsvp/src_old/main/scala/nl/lumc/sasc/biopet/extensions/pindel/Pindel.scala
similarity index 100%
rename from public/yamsvp/src/main/scala/nl/lumc/sasc/biopet/extensions/pindel/Pindel.scala
rename to public/yamsvp/src_old/main/scala/nl/lumc/sasc/biopet/extensions/pindel/Pindel.scala
diff --git a/public/yamsvp/src/main/scala/nl/lumc/sasc/biopet/extensions/pindel/PindelCaller.scala b/public/yamsvp/src_old/main/scala/nl/lumc/sasc/biopet/extensions/pindel/PindelCaller.scala
similarity index 100%
rename from public/yamsvp/src/main/scala/nl/lumc/sasc/biopet/extensions/pindel/PindelCaller.scala
rename to public/yamsvp/src_old/main/scala/nl/lumc/sasc/biopet/extensions/pindel/PindelCaller.scala
diff --git a/public/yamsvp/src/main/scala/nl/lumc/sasc/biopet/extensions/pindel/PindelConfig.scala b/public/yamsvp/src_old/main/scala/nl/lumc/sasc/biopet/extensions/pindel/PindelConfig.scala
similarity index 100%
rename from public/yamsvp/src/main/scala/nl/lumc/sasc/biopet/extensions/pindel/PindelConfig.scala
rename to public/yamsvp/src_old/main/scala/nl/lumc/sasc/biopet/extensions/pindel/PindelConfig.scala
diff --git a/public/yamsvp/src/main/scala/nl/lumc/sasc/biopet/pipelines/yamsvp/Yamsvp.scala b/public/yamsvp/src_old/main/scala/nl/lumc/sasc/biopet/pipelines/yamsvp/Yamsvp.scala
similarity index 100%
rename from public/yamsvp/src/main/scala/nl/lumc/sasc/biopet/pipelines/yamsvp/Yamsvp.scala
rename to public/yamsvp/src_old/main/scala/nl/lumc/sasc/biopet/pipelines/yamsvp/Yamsvp.scala
diff --git a/public/yamsvp/src/test/resources/log4j.properties b/public/yamsvp/src_old/test/resources/log4j.properties
similarity index 100%
rename from public/yamsvp/src/test/resources/log4j.properties
rename to public/yamsvp/src_old/test/resources/log4j.properties