diff --git a/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/broad/UnifiedGenotyper.scala b/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/broad/UnifiedGenotyper.scala
index 70d988f4b057572bc1c110ad597c232d6093a2cc..295113d1e8e7ea5b27b885bd2763d210afdb7fd8 100644
--- a/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/broad/UnifiedGenotyper.scala
+++ b/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/broad/UnifiedGenotyper.scala
@@ -5,9 +5,17 @@
  */
 package nl.lumc.sasc.biopet.extensions.gatk.broad
 
+import java.io.File
+
 import nl.lumc.sasc.biopet.utils.config.Configurable
+import org.broadinstitute.gatk.utils.commandline.Output
 
 class UnifiedGenotyper(val root: Configurable) extends org.broadinstitute.gatk.queue.extensions.gatk.UnifiedGenotyper with GatkGeneral {
+
+  @Output(required = false)
+  protected var vcfIndex: File = _
+
+
   if (config.contains("scattercount")) scatterCount = config("scattercount")
   if (config.contains("dbsnp")) this.dbsnp = config("dbsnp")
   sample_ploidy = config("ploidy")
@@ -36,3 +44,14 @@ class UnifiedGenotyper(val root: Configurable) extends org.broadinstitute.gatk.q
     memoryLimit = Option(nct.getOrElse(1) * memoryLimit.getOrElse(2.0))
   }
 }
+
+object UnifiedGenotyper {
+  def apply(root: Configurable, inputFiles: List[File], outputFile: File): UnifiedGenotyper = {
+    val ug = new UnifiedGenotyper(root)
+    ug.input_file = inputFiles
+    ug.out = outputFile
+    if (ug.out.getName.endsWith(".vcf.gz")) ug.vcfIndex = new File(ug.out.getAbsolutePath + ".tbi")
+    ug
+  }
+
+}
\ No newline at end of file
diff --git a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/variantcallers/UnifiedGenotyper.scala b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/variantcallers/UnifiedGenotyper.scala
index 81bdbb5baf9574a9338910ed5e9594d64c4642b4..b71273b284c153ed628565d23c8ca0dffd7bd010 100644
--- a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/variantcallers/UnifiedGenotyper.scala
+++ b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/variantcallers/UnifiedGenotyper.scala
@@ -2,6 +2,7 @@ package nl.lumc.sasc.biopet.pipelines.gatk.variantcallers
 
 import nl.lumc.sasc.biopet.pipelines.shiva.variantcallers.Variantcaller
 import nl.lumc.sasc.biopet.utils.config.Configurable
+import nl.lumc.sasc.biopet.extensions.gatk.broad
 
 /** Default mode for UnifiedGenotyper */
 class UnifiedGenotyper(val root: Configurable) extends Variantcaller {
@@ -9,9 +10,7 @@ class UnifiedGenotyper(val root: Configurable) extends Variantcaller {
   protected def defaultPrio = 20
 
   def biopetScript() {
-    val ug = new nl.lumc.sasc.biopet.extensions.gatk.broad.UnifiedGenotyper(this)
-    ug.input_file = inputBams.values.toList
-    ug.out = outputFile
+    val ug = broad.UnifiedGenotyper(this, inputBams.values.toList, outputFile)
     add(ug)
   }
 }
diff --git a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/variantcallers/UnifiedGenotyperAllele.scala b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/variantcallers/UnifiedGenotyperAllele.scala
index 1729010df451a149116aac7a87a754d433bb3b3a..61bb63ae3f897cc29bd37fc4c8af53f874faad28 100644
--- a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/variantcallers/UnifiedGenotyperAllele.scala
+++ b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/variantcallers/UnifiedGenotyperAllele.scala
@@ -2,6 +2,7 @@ package nl.lumc.sasc.biopet.pipelines.gatk.variantcallers
 
 import nl.lumc.sasc.biopet.pipelines.shiva.variantcallers.Variantcaller
 import nl.lumc.sasc.biopet.utils.config.Configurable
+import nl.lumc.sasc.biopet.extensions.gatk.broad
 
 /** Allele mode for GenotyperAllele */
 class UnifiedGenotyperAllele(val root: Configurable) extends Variantcaller {
@@ -9,9 +10,7 @@ class UnifiedGenotyperAllele(val root: Configurable) extends Variantcaller {
   protected def defaultPrio = 9
 
   def biopetScript() {
-    val ug = new nl.lumc.sasc.biopet.extensions.gatk.broad.UnifiedGenotyper(this)
-    ug.input_file = inputBams.values.toList
-    ug.out = outputFile
+    val ug = broad.UnifiedGenotyper(this, inputBams.values.toList, outputFile)
     ug.alleles = config("input_alleles")
     ug.genotyping_mode = org.broadinstitute.gatk.tools.walkers.genotyper.GenotypingOutputMode.GENOTYPE_GIVEN_ALLELES
     add(ug)
diff --git a/public/biopet-tools-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/tools/MpileupToVcf.scala b/public/biopet-tools-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/tools/MpileupToVcf.scala
index b6f90cc6261b3677340c51c5d1197a50d901181e..6e7f6c86d0c834b193525aa4261cd4a023217412 100644
--- a/public/biopet-tools-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/tools/MpileupToVcf.scala
+++ b/public/biopet-tools-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/tools/MpileupToVcf.scala
@@ -38,6 +38,9 @@ class MpileupToVcf(val root: Configurable) extends ToolCommandFunction with Refe
   @Output(doc = "Output tag library", shortName = "output", required = true)
   var output: File = _
 
+  @Output
+  private var outputIndex: File = _
+
   var minDP: Option[Int] = config("min_dp")
   var minAP: Option[Int] = config("min_ap")
   var homoFraction: Option[Double] = config("homoFraction")
@@ -50,6 +53,7 @@ class MpileupToVcf(val root: Configurable) extends ToolCommandFunction with Refe
   override def beforeGraph() {
     super.beforeGraph()
     if (reference == null) reference = referenceFasta().getAbsolutePath
+    if (output.getName.endsWith(".vcf.gz")) outputIndex = new File(output.getAbsolutePath + ".tbi")
     val samtoolsMpileup = new SamtoolsMpileup(this)
   }
 
diff --git a/public/biopet-tools-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/tools/VcfFilter.scala b/public/biopet-tools-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/tools/VcfFilter.scala
index 0c2639c7b1bc0e79cae7486a1775f1039d350a15..df131db588a2709d238213968c18aaa86ffb3962 100644
--- a/public/biopet-tools-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/tools/VcfFilter.scala
+++ b/public/biopet-tools-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/tools/VcfFilter.scala
@@ -30,6 +30,9 @@ class VcfFilter(val root: Configurable) extends ToolCommandFunction {
   @Output(doc = "Output vcf", shortName = "o", required = false)
   var outputVcf: File = _
 
+  @Output
+  var outputVcfIndex: File = _
+
   var minSampleDepth: Option[Int] = config("min_sample_depth")
   var minTotalDepth: Option[Int] = config("min_total_depth")
   var minAlternateDepth: Option[Int] = config("min_alternate_depth")
@@ -38,6 +41,11 @@ class VcfFilter(val root: Configurable) extends ToolCommandFunction {
 
   override def defaultCoreMemory = 3.0
 
+  override def beforeGraph(): Unit = {
+    super.beforeGraph()
+    if (outputVcf.getName.endsWith("vcf.gz")) outputVcfIndex = new File(outputVcf.getAbsolutePath + ".tbi")
+  }
+
   override def cmdLine = super.cmdLine +
     required("-I", inputVcf) +
     required("-o", outputVcf) +