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..4a73bc313da353e168832f3116c36ad8a54a0bcc 100644
--- a/picard.wdl
+++ b/picard.wdl
@@ -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)
+    }
 }