diff --git a/cutadapt.wdl b/cutadapt.wdl
index 8b073442c02a449871f7dc6a320a8eabdf82d8d4..0df1ced44f253b904586c7a89b7dc61436181551 100644
--- a/cutadapt.wdl
+++ b/cutadapt.wdl
@@ -61,10 +61,12 @@ task Cutadapt {
         String? reportPath
     }
 
+    String read2outputArg = if (defined(read2output)) then "mkdir -p $(dirname " + read2output + ")" else ""
+
     command {
         set -e -o pipefail
         ~{"mkdir -p $(dirname " + read1output + ")"}
-        ~{"mkdir -p $(dirname " + read2output + ")"}
+        ~{read2outputArg}
         ~{"mkdir -p $(dirname " + reportPath + ")"}
         ~{preCommand}
         cutadapt \
diff --git a/fastqc.wdl b/fastqc.wdl
index 6d924cf550a84640fcf3e8f9e1b555d2cf239dd7..f1d23885f210e73b2452be62b499ca6ab553ed85 100644
--- a/fastqc.wdl
+++ b/fastqc.wdl
@@ -21,10 +21,10 @@ task Fastqc {
     }
 
     # Chops of the .gz extension if present.
-    String name = sub(seqFile, "\\.gz$","")
+    String name = sub(seqFile, "\.gz$","")
     # This regex chops of the extension and replaces it with _fastqc for the reportdir.
     # Just as fastqc does it.
-    String reportDir = outdirPath + "/" + sub(basename(name), "\\.[^\\.]*$", "_fastqc")
+    String reportDir = outdirPath + "/" + sub(basename(name), "\.[^\.]*$", "_fastqc")
 
     command {
         set -e -o pipefail
diff --git a/manta.wdl b/manta.wdl
index e2c59eb425722347de5608297adc43af3cb61185..a5b024c55f8f864ea97774a82081c4e35e089df6 100644
--- a/manta.wdl
+++ b/manta.wdl
@@ -1,6 +1,6 @@
 version 1.0
 
-task Somatic {
+task ConfigureSomatic {
     input {
         File tumorBam
         File tumorIndex
@@ -14,9 +14,6 @@ task Somatic {
         Boolean exome = false
         String? preCommand
         String? installDir
-
-        Int cores = 1
-        Int memory = 4
     }
 
     String toolCommand = if defined(installDir)
@@ -33,7 +30,22 @@ task Somatic {
         ~{"--callRegions " + callRegions} \
         --runDir ~{runDir} \
         ~{true="--exome" false="" exome}
+    }
+
+    output {
+        String runDirectory = runDir
+    }
+}
 
+task RunSomatic {
+    input {
+        String runDir
+        Int cores = 1
+        Int memory = 4
+        Boolean paired = true
+    }
+
+    command {
         ~{runDir}/runWorkflow.py \
         -m local \
         -j ~{cores} \
@@ -46,10 +58,10 @@ task Somatic {
             "/results/variants/candidateSmallIndels.vcf.gz.tbi"
         File candidateSV = runDir + "/results/variants/candidateSV.vcf.gz"
         File candidateSVindex = runDir + "/results/variants/candidateSV.vcf.gz.tbi"
-        File tumorSV = if defined(normalBam)
+        File tumorSV = if paired
             then runDir + "/results/variants/somaticSV.vcf.gz"
             else runDir + "/results/variants/tumorSV.vcf.gz"
-        File tumorSVindex = if defined(normalBam)
+        File tumorSVindex = if paired
             then runDir + "/results/variants/somaticSV.vcf.gz.tbi"
             else runDir + "/results/variants/tumorSV.vcf.gz.tbi"
         File? diploidSV = "/results/variants/diploidSV.vcf.gz"
diff --git a/picard.wdl b/picard.wdl
index 4132754149ebcab5e777f2e9d90c4266cc38db4e..9dc3709d163dc0e822b0d8fd737c4a653d58ee09 100644
--- a/picard.wdl
+++ b/picard.wdl
@@ -61,8 +61,8 @@ task CollectMultipleMetrics {
         File gcBiasDetail = basename + ".gc_bias.detail_metrics"
         File gcBiasPdf = basename + ".gc_bias.pdf"
         File gcBiasSummary = basename + ".gc_bias.summary_metrics"
-        File insertSizeHistogramPdf = basename + ".insert_size_histogram.pdf"
-        File insertSize = basename + ".insert_size_metrics"
+        File? insertSizeHistogramPdf = basename + ".insert_size_histogram.pdf"
+        File? insertSize = basename + ".insert_size_metrics"
         File preAdapterDetail = basename + ".pre_adapter_detail_metrics"
         File preAdapterSummary = basename + ".pre_adapter_summary_metrics"
         File qualityByCycle = basename + ".quality_by_cycle_metrics"
@@ -110,7 +110,7 @@ task CollectRnaSeqMetrics {
     }
 
     output {
-        File chart = basename + ".RNA_Metrics.pdf"
+        File? chart = basename + ".RNA_Metrics.pdf"
         File metrics = basename + ".RNA_Metrics"
     }
 
@@ -386,6 +386,7 @@ task SortVcf {
 
         Array[File]+ vcfFiles
         String outputVcf
+        File? sequenceDict
 
         Int memory = 4
         Float memoryMultiplier = 3.0
@@ -401,7 +402,8 @@ task SortVcf {
         ~{toolCommand} \
         SortVcf \
         I=~{sep=" I=" vcfFiles} \
-        O=outputVcf
+        ~{"SEQUENCE_DICTIONARY=" + sequenceDict} \
+        O=~{outputVcf}
     }
 
     output {
diff --git a/strelka.wdl b/strelka.wdl
index cc3682fffeb6bfe8c9fa5241ff04d9670cb118cc..959fabf8f5a4783986c9e9b56a4b20dd7963e4e4 100644
--- a/strelka.wdl
+++ b/strelka.wdl
@@ -1,6 +1,6 @@
 version 1.0
 
-task Germline {
+task ConfigureGermline {
     input {
         String? preCommand
         String? installDir
@@ -13,9 +13,6 @@ task Germline {
         File? callRegionsIndex
         Boolean exome = false
         Boolean rna = false
-
-        Int cores = 1
-        Int memory = 4
     }
 
     String toolCommand = if defined(installDir)
@@ -32,26 +29,14 @@ task Germline {
         ~{"--callRegions " + callRegions} \
         ~{true="--exome" false="" exome} \
         ~{true="--rna" false="" rna}
-
-        ~{runDir}/runWorkflow.py \
-        -m local \
-        -j ~{cores} \
-        -g ~{memory}
     }
 
     output {
-        File variants = runDir + "/results/variants/variants.vcf.gz"
-        File variantsIndex = runDir + "/results/variants/variants.vcf.gz.tbi"
-    }
-
-    runtime {
-        cpu: cores
-        memory: memory
+        String runDirectory = runDir
     }
 }
 
-
-task Somatic {
+task ConfigureSomatic {
     input {
         String? preCommand
         String? installDir
@@ -67,9 +52,6 @@ task Somatic {
         File? indelCandidates
         File? indelCandidatesIndex
         Boolean exome = false
-
-        Int cores = 1
-        Int memory = 4
     }
 
     String toolCommand = if defined(installDir)
@@ -87,7 +69,22 @@ task Somatic {
         ~{"--callRegions " + callRegions} \
         ~{"--indelCandidates " + indelCandidates} \
         ~{true="--exome" false="" exome} \
+    }
+
+    output {
+        String runDirectory = runDir
+    }
+}
 
+task Run {
+    input {
+        String runDir
+        Int cores = 1
+        Int memory = 4
+        Boolean somatic = true
+    }
+
+    command {
         ~{runDir}/runWorkflow.py \
         -m local \
         -j ~{cores} \
@@ -95,10 +92,14 @@ task Somatic {
     }
 
     output {
-        File indelsVcf = runDir + "/results/variants/somatic.indels.vcf.gz"
-        File indelsIndex = runDir + "/results/variants/somatic.indels.vcf.gz.tbi"
-        File snvVcf = runDir + "/results/variants/somatic.snvs.vcf.gz"
-        File snvIndex = runDir + "/results/variants/somatic.snvs.vcf.gz.tbi"
+        File? indelsVcf = runDir + "/results/variants/somatic.indels.vcf.gz"
+        File? indelsIndex = runDir + "/results/variants/somatic.indels.vcf.gz.tbi"
+        File variants = if somatic
+            then runDir + "/results/variants/somatic.snvs.vcf.gz"
+            else runDir + "/results/variants/variants.vcf.gz"
+        File variantsIndex = if somatic
+            then runDir + "/results/variants/somatic.snvs.vcf.gz.tbi"
+            else runDir + "/results/variants/variants.vcf.gz.tbi"
     }
 
     runtime {
diff --git a/vardict.wdl b/vardict.wdl
index a421fd785abb9f5786cb0c9781f294c5525c60fd..c79a768ffc1fc0a72c9c8506e20338a952a91d4d 100644
--- a/vardict.wdl
+++ b/vardict.wdl
@@ -22,21 +22,25 @@ task VarDict {
         Int geneColumn = 4
 
         String? preCommand
+        Int memory = 8
+        Float memoryMultiplier = 2.0
     }
 
     String toolCommand = if defined(installDir)
         then installDir + "/VarDict"
         else if useJavaVersion
-            then "vardict-java" #probably needs memory stuff
+            then "vardict-java"
             else "vardict"
 
     command {
         set -e -o pipefail
+        export JAVA_OPTS="-Xmx~{memory}G"
         ~{preCommand}
         ~{toolCommand} \
         -G ~{refFasta} \
         -N ~{tumorSampleName} \
         -b "~{tumorBam}~{"|" + normalBam}" \
+        ~{true="" false="-z" defined(normalBam)} \
         -c ~{chromosomeColumn} \
         -S ~{startColumn} \
         -E ~{endColumn} \
@@ -53,4 +57,8 @@ task VarDict {
     output {
         File vcfFile = outputVcf
     }
+
+    runtime {
+        memory: ceil(memory * memoryMultiplier)
+    }
 }