diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala
index 81f81f26aafed8ba2126217acec768232077084d..231d8240b05382746e19624ab5170c81f3344dc2 100644
--- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala
+++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala
@@ -13,12 +13,11 @@ trait MultiSampleQScript extends BiopetQScript {
     def getLibrary(key: String) = libraries(key)
   }
 
-  var samplesConfig: Map[String, Any] = Map()
+  var samplesConfig: Map[String, Any] = config("samples")
   var samplesOutput: Map[String, SampleOutput] = Map()
   def globalSampleDir: String = outputDir + "samples/"
 
   final def runSamplesJobs() {
-    samplesConfig = config("samples")
     if (samplesConfig == null) samplesConfig = Map()
     if (Config.global.contains("samples")) for ((key, value) <- samplesConfig) {
       var sample = Configurable.any2map(value)
@@ -32,7 +31,11 @@ trait MultiSampleQScript extends BiopetQScript {
 
   def runSingleSampleJobs(sampleConfig: Map[String, Any]): SampleOutput
   def runSingleSampleJobs(sample: String): SampleOutput = {
-    return runSingleSampleJobs(Configurable.any2map(samplesConfig(sample)))
+    var map = Configurable.any2map(samplesConfig(sample))
+    if (map.contains("ID") && map("ID") != sample)
+      throw new IllegalStateException("ID in config not the same as the key")
+    else map += ("ID" -> sample)
+    return runSingleSampleJobs(map)
   }
 
   final def runLibraryJobs(sampleConfig: Map[String, Any]): Map[String, LibraryOutput] = {
diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala
index c5bb656d039e5bb2b9b19792d03f7a7d2cfaa75c..fda10eb8723ad20f2bc9af75dbf9444e12da32f5 100644
--- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala
+++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala
@@ -18,7 +18,7 @@ class GatkPipeline(val root: Configurable) extends QScript with MultiSampleQScri
   def this() = this(null)
 
   @Argument(doc = "Only Sample", shortName = "sample", required = false)
-  val onlySample: String = ""
+  val onlySample: List[String] = Nil
 
   @Argument(doc = "Skip Genotyping step", shortName = "skipgenotyping", required = false)
   var skipGenotyping: Boolean = false
@@ -115,7 +115,7 @@ class GatkPipeline(val root: Configurable) extends QScript with MultiSampleQScri
           recalibration.biopetScript
         }
       }
-    } else runSingleSampleJobs(onlySample)
+    } else for (sample <- onlySample) runSingleSampleJobs(sample)
   }
 
   // Called for each sample