diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..785661119a9f3d1ca173a9c92a64a52bbf930328
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,30 @@
+name: Continuous integration
+
+on: 
+  pull_request:
+    paths_ignore:
+      - "docs/**"
+
+defaults:
+  run:
+    # This is needed for miniconda, see:
+    # https://github.com/marketplace/actions/setup-miniconda#important
+    shell: bash -l {0}  
+
+jobs:
+  lint:
+    runs-on: ubuntu-latest
+    name: Womtool validate and submodule up to date.
+    steps:
+      - uses: actions/checkout@v2.3.4
+        with:
+          submodules: recursive
+      - name: install miniconda
+        uses: conda-incubator/setup-miniconda@v2.0.1
+        with:
+          channels: conda-forge,bioconda,defaults
+        # Conda-incubator uses 'test' environment by default.
+      - name: install requirements
+        run: conda install -n test cromwell miniwdl wdl-aid
+      - name: run linting
+        run: bash scripts/biowdl_lint.sh
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 3cf0681f99cb49f3646f41e962b16517ff417741..0000000000000000000000000000000000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-# We use conda to install cromwell.
-
-language: python
-
-python:
-  - 3.6
-
-before_install:
-  # Install conda
-  - export MINICONDA=${HOME}/miniconda
-  - export PATH=${MINICONDA}/bin:${PATH}
-  - wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
-  - bash miniconda.sh -b -f -p ${MINICONDA}
-  - conda config --set always_yes yes
-  - conda config --add channels defaults
-  - conda config --add channels bioconda
-  - conda config --add channels conda-forge
-
-install:
-  - conda install --file requirements-test.txt
-
-script:
-  - bash scripts/biowdl_lint.sh
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a6cc9bff45a1ea1e439f9c5f84e239cdc1c211c4..b3dbc7f6a1e23f3317820d112a95e6c2348e4da6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,16 +7,48 @@ Newest changes should be on top.
 This document is user facing. Please word the changes in such a way
 that users understand how the changes affect the new version.
 -->
+version 5.0.1
+---------------------------
++ add runtime memory to number of tasks.
 
-version 5.0.0-dev
+version 5.0.0
 ---------------------------
++ Update CPAT to version 3.0.4.
+  + Changed the `outFilePath` input to `outputPrefix`.
++ Survivor: Change integer to string literal in boolean parameters.
++ Samtools: Add mkdir line to `Fastq` task.
++ Add new parameters from CCS version 6.0.0 and add two new outputs:
+  `ccs_report.txt` & `zmw_metrics.json.gz`.
++ Change CutAdapt memory to `5G`.
++ Increase multiqc base time from 5 to 10.
++ Update biowdl-input-converter to version 0.3.
++ Update minimap2 to version 2.20.
++ Update lima to version 2.2.0.
++ Update ccs to version 6.0.0.
++ Update bam2fastx to version 1.3.1.
++ Add memory values to GffCompare, GffRead and CPAT.
++ GffCompare: Make the `referenceAnnotation` input optional.
++ Stringtie: Add the `minimumCoverage` input.
++ UMI-tools: Update default dockerImage to use umitools v1.1.1 with correct
+             samtools version (1.10).
++ UMI-tools: Re-introduce samtools indexing.
++ UMI-tools: Update default dockerImage to use umitools v1.1.1.
++ UMI-tools dedup: Add tempdir.
++ Bcftools view: Add options for filtering (include, exclude, excludeUncalled).
++ Duphold: Add `duphold.wdl`.
++ Add new wdl file prepareShiny.wdl for creating input files for shiny app.
++ mergePacBio: Rename `mergedReport` to `outputPathMergedReport`.
++ Lima: Fix copy commands.
++ Fixed the `size` call in the default for gffread's timeMinutes, to retrieve
+  GBs instead of bytes.
++ Update stringtie to version 1.3.6.
 + Update Lima to version 2.0.0.
 + Update IsoSeq3 to version 3.4.0.
 + Update samtools to version 1.11.
 + Update Picard to version 2.23.8.
 + Update NanoPlot to version 1.32.1.
 + Update MultiQC to version 1.9.
-+ Update StringTie to version 2.1.4.
++ ~Update StringTie to version 2.1.4.~
 + Complete `parameter_meta` for tasks missing the outputs.
 + DeepVariant: Add an optional input for the gvcf index.
 + Samtools: `Sort` task now has `threads` in runtime instead of `1`.
diff --git a/CPAT.wdl b/CPAT.wdl
index afb6785392f7b71aa57f32ada4f31db3e4efc138..e6cef3ea454cbbaec611ee8a45b8fecd7bbe34a8 100644
--- a/CPAT.wdl
+++ b/CPAT.wdl
@@ -23,7 +23,7 @@ version 1.0
 task CPAT {
     input {
         File gene
-        String outFilePath
+        String outputPrefix
         File hex
         File logitModel
 
@@ -34,8 +34,9 @@ task CPAT {
         Array[String]? startCodons
         Array[String]? stopCodons
 
+        String memory = "4G"
         Int timeMinutes = 10 + ceil(size(gene, "G") * 30)
-        String dockerImage = "biocontainers/cpat:v1.2.4_cv1"
+        String dockerImage = "quay.io/biocontainers/cpat:3.0.4--py39hcbe4a3b_0"
     }
 
     # Some WDL magic in the command section to properly output the start and
@@ -44,10 +45,10 @@ task CPAT {
     # to non-optionals.
     command {
         set -e
-        mkdir -p "$(dirname ~{outFilePath})"
+        mkdir -p "$(dirname ~{outputPrefix})"
         cpat.py \
         --gene ~{gene} \
-        --outfile ~{outFilePath} \
+        --outfile ~{outputPrefix} \
         --hex ~{hex} \
         --logitModel ~{logitModel} \
         ~{"--ref " + referenceGenome} \
@@ -56,29 +57,32 @@ task CPAT {
     }
 
     output {
-        File outFile = outFilePath
+        File orfSeqs = "~{outputPrefix}.ORF_seqs.fa"
+        File orfProb = "~{outputPrefix}.ORF_prob.tsv"
+        File orfProbBest = "~{outputPrefix}.ORF_prob.best.tsv"
+        File noOrf = "~{outputPrefix}.no_ORF.txt"
+        File rScript = "~{outputPrefix}.r"
     }
 
     runtime {
-        docker: dockerImage
+        memory: memory
         time_minutes: timeMinutes
+        docker: dockerImage
     }
 
     parameter_meta {
         # inputs
         gene: {description: "Equivalent to CPAT's `--gene` option.", category: "required"}
-        outFilePath: {description: "Equivalent to CPAT's `--outfile` option.", category: "required"}
+        outputPrefix: {description: "Equivalent to CPAT's `--outfile` option.", category: "required"}
         hex: {description: "Equivalent to CPAT's `--hex` option.", category: "required"}
         logitModel: {description: "Equivalent to CPAT's `--logitModel` option.", category: "required"}
         referenceGenome: {description: "Equivalent to CPAT's `--ref` option.", category: "advanced"}
         referenceGenomeIndex: {description: "The index of the reference. Should be added as input if CPAT should not index the reference genome.", category: "advanced"}
         startCodons: {description: "Equivalent to CPAT's `--start` option.", category: "advanced"}
         stopCodons: {description: "Equivalent to CPAT's `--stop` option.", category: "advanced"}
+        memory: {description: "The amount of memory available to the job.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
-
-        # outputs
-        outFile: {description: "CPAT logistic regression model."}
     }
 }
 
diff --git a/VERSION b/VERSION
index 0062ac971805f7b700058db4bb0f5c5b771dda76..09b254e90c61ed28bb68a54752cf04f6a736a7d3 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5.0.0
+6.0.0
diff --git a/bam2fastx.wdl b/bam2fastx.wdl
index 2ae22a57acfdd005cd048255e67e85b5c3d294ce..0bdccca8db6abfcc9ae3b99c721796a7f0b1af4f 100644
--- a/bam2fastx.wdl
+++ b/bam2fastx.wdl
@@ -32,7 +32,7 @@ task Bam2Fasta {
 
         String memory = "2G"
         Int timeMinutes = 15
-        String dockerImage = "quay.io/biocontainers/bam2fastx:1.3.0--he1c1bb9_8"
+        String dockerImage = "quay.io/biocontainers/bam2fastx:1.3.1--hf05d43a_1"
     }
 
     command {
@@ -100,7 +100,7 @@ task Bam2Fastq {
 
         String memory = "2G"
         Int timeMinutes = 15
-        String dockerImage = "quay.io/biocontainers/bam2fastx:1.3.0--he1c1bb9_8"
+        String dockerImage = "quay.io/biocontainers/bam2fastx:1.3.1--hf05d43a_1"
     }
 
     command {
diff --git a/bcftools.wdl b/bcftools.wdl
index 0738d1569d66f128bd3c87509f9094e4507a0d7a..02a02563f622766f2481ecfd27c6668c6f0b27d1 100644
--- a/bcftools.wdl
+++ b/bcftools.wdl
@@ -291,8 +291,10 @@ task View {
         File inputFile
         String outputPath = "output.vcf"
         Boolean excludeUncalled = false
+
         String? exclude
         String? include
+
         String memory = "256M"
         Int timeMinutes = 1 + ceil(size(inputFile, "G"))
         String dockerImage = "quay.io/biocontainers/bcftools:1.10.2--h4f4756c_2"
diff --git a/biowdl.wdl b/biowdl.wdl
index 06b1d75696989151b61360883b94fba7c4114528..dead830383705ee298c2bb018142915bca494b03 100644
--- a/biowdl.wdl
+++ b/biowdl.wdl
@@ -34,7 +34,7 @@ task InputConverter {
 
         String memory = "128M"
         Int timeMinutes = 1
-        String dockerImage = "quay.io/biocontainers/biowdl-input-converter:0.2.1--py_0"
+        String dockerImage = "quay.io/biocontainers/biowdl-input-converter:0.3.0--pyhdfd78af_0"
     }
 
     command <<<
diff --git a/ccs.wdl b/ccs.wdl
index 4446937b45271a4f90906e4caa6d0d6ffad7ad90..29f1a7f9468cdb72da35b168d4821d430536a319 100644
--- a/ccs.wdl
+++ b/ccs.wdl
@@ -24,12 +24,19 @@ task CCS {
     input {
         File subreadsFile
         String outputPrefix
+        String logLevel = "WARN"
         Int minPasses = 3
+        Int topPasses = 60
         Int minLength = 10
         Int maxLength = 50000
         Boolean byStrand = false
+        Boolean skipPolish = false
+        Boolean all = false
+        Boolean subreadFallback = false
+        Boolean allKinetics = false
+        Boolean hifiKinetics = false
+        Float minSnr = 2.5
         Float minReadQuality = 0.99
-        String logLevel = "WARN"
 
         File? subreadsIndexFile
         String? chunkString
@@ -37,7 +44,7 @@ task CCS {
         Int threads = 2
         String memory = "4G"
         Int timeMinutes = 1440
-        String dockerImage = "quay.io/biocontainers/pbccs:5.0.0--0"
+        String dockerImage = "quay.io/biocontainers/pbccs:6.0.0--h9ee0642_2"
     }
 
     command {
@@ -45,15 +52,24 @@ task CCS {
         mkdir -p "$(dirname ~{outputPrefix})"
         ccs \
         --min-passes ~{minPasses} \
+        --min-snr ~{minSnr} \
+        --top-passes ~{topPasses} \
         --min-length ~{minLength} \
         --max-length ~{maxLength} \
         ~{true="--by-strand" false="" byStrand} \
+        ~{true="--skip-polish" false="" skipPolish} \
+        ~{true="--all" false="" all} \
+        ~{true="--subread-fallback" false="" subreadFallback} \
+        ~{true="--all-kinetics" false="" allKinetics} \
+        ~{true="--hifi-kinetics" false="" hifiKinetics} \
         --min-rq ~{minReadQuality} \
         --log-level ~{logLevel} \
         --num-threads ~{threads} \
         ~{"--chunk " + chunkString} \
+        ~{"--report-file " + outputPrefix + ".ccs_report.txt"} \
         ~{"--report-json " + outputPrefix + ".ccs.report.json"} \
         ~{"--log-file " + outputPrefix + ".ccs.stderr.log"} \
+        ~{"--metrics-json " + outputPrefix + ".zmw_metrics.json.gz"} \
         ~{subreadsFile} \
         ~{outputPrefix + ".ccs.bam"}
     }
@@ -61,8 +77,10 @@ task CCS {
     output {
         File ccsBam = outputPrefix + ".ccs.bam"
         File ccsBamIndex = outputPrefix + ".ccs.bam.pbi"
-        File ccsReport = outputPrefix + ".ccs.report.json"
+        File ccsReport = outputPrefix + ".ccs_report.txt"
+        File ccsJsonReport = outputPrefix + ".ccs.report.json"
         File ccsStderr = outputPrefix + ".ccs.stderr.log"
+        File zmwMetrics = outputPrefix + ".zmw_metrics.json.gz"
     }
 
     runtime {
@@ -76,12 +94,19 @@ task CCS {
         # inputs
         subreadsFile: {description: "Subreads input file.", category: "required"}
         outputPrefix: {description: "Output directory path + output file prefix.", category: "required"}
+        logLevel: {description: "Set log level. Valid choices: (TRACE, DEBUG, INFO, WARN, FATAL).", category: "advanced"}
         minPasses: {description: "Minimum number of full-length subreads required to generate ccs for a ZMW.", category: "advanced"}
+        topPasses: {description: "Pick at maximum the top N passes for each ZMW.", category: "advanced"}
         minLength: {description: "Minimum draft length before polishing.", category: "advanced"}
         maxLength: {description: "Maximum draft length before polishing.", category: "advanced"}
         byStrand: {description: "Generate a consensus for each strand.", category: "advanced"}
+        skipPolish: {description: "Only output the initial draft template (faster, less accurate).", category: "advanced"}
+        all: {description: "Emit all ZMWs.", category: "advanced"}
+        subreadFallback: {description: "Emit a representative subread, instead of the draft consensus, if polishing failed.", category: "advanced"}
+        allKinetics: {description: "Calculate mean pulse widths (PW) and interpulse durations (IPD) for every ZMW.", category: "advanced"}
+        hifiKinetics: {description: "Calculate mean pulse widths (PW) and interpulse durations (IPD) for every HiFi read.", category: "advanced"}
+        minSnr: {description: "Minimum SNR of subreads to use for generating CCS.", category: "advanced"}
         minReadQuality: {description: "Minimum predicted accuracy in [0, 1].", category: "common"}
-        logLevel: {description: "Set log level. Valid choices: (TRACE, DEBUG, INFO, WARN, FATAL).", category: "advanced"}
         subreadsIndexFile: {description: "Index for the subreads input file, required when using chunkString.", category: "advanced"}
         chunkString: {descpription: "Chunk string (e.g. 1/4, 5/5) for CCS.", category: "advanced"}
         threads: {description: "The number of threads to be used.", category: "advanced"}
@@ -92,7 +117,9 @@ task CCS {
         # outputs
         ccsBam: {description: "Consensus reads output file."}
         ccsBamIndex: {description: "Index of consensus reads output file."}
-        ccsReport: {description: "Ccs results report file."}
+        ccsReport: {description: "Ccs report file."}
+        ccsJsonReport: {description: "Ccs results json report file."}
         ccsStderr: {description: "Ccs STDERR log file."}
+        zmwMetrics: {description: "ZMW metrics json file."}
     }
 }
diff --git a/common.wdl b/common.wdl
index 66bdb99cf645a36fc83192c999524c86998e26b3..d29ed5daf6f0e7355efe5bcd43265fc69bfe4aa5 100644
--- a/common.wdl
+++ b/common.wdl
@@ -24,6 +24,8 @@ task AppendToStringArray {
     input {
         Array[String] array
         String string
+        
+        String memory = "1G"
     }
 
     command {
@@ -36,7 +38,7 @@ task AppendToStringArray {
     }
 
     runtime {
-        memory: "1G"
+        memory: memory
     }
 }
 
@@ -45,9 +47,11 @@ task CheckFileMD5 {
     input {
         File file
         String md5
+
         # By default cromwell expects /bin/bash to be present in the container.
         # The 'bash' container does not fill this requirement. (It is in /usr/local/bin/bash)
         # Use a stable version of debian:stretch-slim for this. (Smaller than ubuntu)
+        String memory = "1G"
         String dockerImage = "debian@sha256:f05c05a218b7a4a5fe979045b1c8e2a9ec3524e5611ebfdd0ef5b8040f9008fa"
     }
 
@@ -60,6 +64,7 @@ task CheckFileMD5 {
 
     runtime {
         docker: dockerImage
+        memory: memory
     }
 }
 
@@ -69,6 +74,8 @@ task ConcatenateTextFiles {
         String combinedFilePath
         Boolean unzip = false
         Boolean zip = false
+
+        String memory = "1G"
     }
 
     # When input and output is both compressed decompression is not needed.
@@ -86,7 +93,7 @@ task ConcatenateTextFiles {
     }
 
     runtime {
-        memory: "1G"
+        memory: memory
     }
 }
 
@@ -97,6 +104,7 @@ task Copy {
         Boolean recursive = false
 
         # Version not that important as long as it is stable.
+        String memory = "1G"
         String dockerImage = "debian@sha256:f05c05a218b7a4a5fe979045b1c8e2a9ec3524e5611ebfdd0ef5b8040f9008fa"
     }
 
@@ -112,6 +120,7 @@ task Copy {
 
     runtime {
         docker: dockerImage
+        memory: memory
     }
 }
 
@@ -122,6 +131,8 @@ task CreateLink {
     input {
         String inputFile
         String outputPath
+
+        String memory = "1G"
     }
 
     command {
@@ -131,12 +142,17 @@ task CreateLink {
     output {
         File link = outputPath
     }
+
+    runtime {
+        memory: memory
+    }
 }
 
 task MapMd5 {
     input {
         Map[String,String] map
 
+        String memory = "1G"
         String dockerImage = "debian@sha256:f05c05a218b7a4a5fe979045b1c8e2a9ec3524e5611ebfdd0ef5b8040f9008fa"
     }
 
@@ -150,7 +166,7 @@ task MapMd5 {
     }
 
     runtime {
-        memory: "1G"
+        memory: memory
         docker: dockerImage
     }
 }
@@ -160,6 +176,7 @@ task StringArrayMd5 {
     input {
         Array[String] stringArray
 
+        String memory = "1G"
         String dockerImage = "debian@sha256:f05c05a218b7a4a5fe979045b1c8e2a9ec3524e5611ebfdd0ef5b8040f9008fa"
     }
 
@@ -173,7 +190,7 @@ task StringArrayMd5 {
     }
 
     runtime {
-        memory: "1G"
+        memory: memory
         docker: dockerImage
     }
 }
@@ -183,6 +200,7 @@ task TextToFile {
         String text
         String outputFile = "out.txt"
 
+        String memory = "1G"
         Int timeMinutes = 1
         String dockerImage = "debian@sha256:f05c05a218b7a4a5fe979045b1c8e2a9ec3524e5611ebfdd0ef5b8040f9008fa"
     }
@@ -196,7 +214,7 @@ task TextToFile {
     }
 
     runtime {
-        memory: "1G"
+        memory: memory
         time_minutes: timeMinutes
         docker: dockerImage
     }
@@ -221,7 +239,7 @@ task YamlToJson {
         String  memory = "128M"
         Int timeMinutes = 1
         # biowdl-input-converter has python and pyyaml.
-        String dockerImage = "quay.io/biocontainers/biowdl-input-converter:0.2.1--py_0"
+        String dockerImage = "quay.io/biocontainers/biowdl-input-converter:0.3.0--pyhdfd78af_0"
     }
 
     command {
diff --git a/cutadapt.wdl b/cutadapt.wdl
index b2dbdec0c58c9d9aa5fbd464b0efff3793211dc8..b49a95d46dc64be3abe018fc0157fa250eaeba08 100644
--- a/cutadapt.wdl
+++ b/cutadapt.wdl
@@ -83,7 +83,7 @@ task Cutadapt {
         Boolean? noZeroCap
 
         Int cores = 4
-        String memory = "~{300 + 100 * cores}M"
+        String memory = "5G"
         Int timeMinutes = 1 + ceil(size([read1, read2], "G")  * 12.0 / cores)
         String dockerImage = "quay.io/biocontainers/cutadapt:2.10--py37hf01694f_1"
     }
diff --git a/fastqc.wdl b/fastqc.wdl
index 973eeed94a8d7aeddb1697e8774e20d8f4ad13f4..3a07db4e498ec2f37b03013efe6cdb590912eaa5 100644
--- a/fastqc.wdl
+++ b/fastqc.wdl
@@ -143,6 +143,7 @@ task Fastqc {
 
 task GetConfiguration {
     input {
+        String memory = "2G" # Needs more than 1 to pull the docker image.
         Int timeMinutes = 1
         String dockerImage = "quay.io/biocontainers/fastqc:0.11.7--4"
     }
@@ -165,7 +166,7 @@ task GetConfiguration {
     }
 
     runtime {
-        memory: "2G" # Needs more than 1 to pull the docker image.
+        memory: memory 
         time_minute: timeMinutes
         docker: dockerImage
     }
@@ -173,6 +174,7 @@ task GetConfiguration {
     parameter_meta {
         # inputs
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
+        memory: {description: "The amount of memory available to the job.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
 
         # outputs
diff --git a/gffcompare.wdl b/gffcompare.wdl
index 50cab8a697a7196e995929d57d99497c1878182a..d06602bc5a733c702f59144cce4712ce1204c70b 100644
--- a/gffcompare.wdl
+++ b/gffcompare.wdl
@@ -23,7 +23,6 @@ version 1.0
 task GffCompare {
     input {
         Array[File] inputGtfFiles
-        File referenceAnnotation
         # gffcmp is the default used by the program as well. This needs to be
         # defined in order for the output values to be consistent and correct.
         String outPrefix = "gffcmp"
@@ -40,12 +39,14 @@ task GffCompare {
         Boolean debugMode = false
 
         File? inputGtfList
+        File? referenceAnnotation
         String? outputDir
         File? genomeSequences
         Int? maxDistanceFreeEndsTerminalExons
         Int? maxDistanceGroupingTranscriptStartSites
         String? namePrefix
 
+        String memory = "4G"
         Int timeMinutes = 1 + ceil(size(inputGtfFiles, "G") * 30)
         String dockerImage = "quay.io/biocontainers/gffcompare:0.10.6--h2d50403_0"
 
@@ -64,7 +65,7 @@ task GffCompare {
         set -e
         ~{"mkdir -p " + outputDir}
         gffcompare \
-        -r ~{referenceAnnotation} \
+        ~{"-r " + referenceAnnotation} \
         ~{"-o '" + totalPrefix + "'"} \
         ~{"-s " + genomeSequences} \
         ~{"-e " + maxDistanceFreeEndsTerminalExons} \
@@ -91,7 +92,7 @@ task GffCompare {
         else 0
     Int noInputFiles = length(inputGtfFiles)
     Boolean oneFile = (noFilesGtfList + noInputFiles) == 1
-    String annotatedName = if oneFile
+    String annotatedName = if oneFile && defined(referenceAnnotation)
         then "annotated"
         else "combined"
 
@@ -114,8 +115,9 @@ task GffCompare {
     }
 
     runtime {
-       time_minutes: timeMinutes
-       docker: dockerImage
+        memory: memory
+        time_minutes: timeMinutes
+        docker: dockerImage
     }
 
     parameter_meta {
@@ -140,6 +142,7 @@ task GffCompare {
         maxDistanceFreeEndsTerminalExons: {description: "Equivalent to gffcompare's `-e` option.", category: "advanced"}
         maxDistanceGroupingTranscriptStartSites: {description: "Equivalent to gffcompare's `-d` option.", category: "advanced"}
         namePrefix: {description: "Equivalent to gffcompare's `-p` option.", category: "advanced"}
+        memory: {description: "The amount of memory available to the job.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
 
diff --git a/gffread.wdl b/gffread.wdl
index 662309895a5f98af88016a4b42e028929b0a8536..a04540f531de2f4375de76a22bbf55708698857b 100644
--- a/gffread.wdl
+++ b/gffread.wdl
@@ -32,7 +32,8 @@ task GffRead {
         String? proteinFastaPath
         String? filteredGffPath
 
-        Int timeMinutes = 1 + ceil(size(inputGff) * 10)
+        String memory = "4G"
+        Int timeMinutes = 1 + ceil(size(inputGff, "G") * 10)
         String dockerImage = "quay.io/biocontainers/gffread:0.9.12--0"
     }
 
@@ -64,6 +65,7 @@ task GffRead {
     }
 
     runtime {
+        memory: memory
         time_minutes: timeMinutes
         docker: dockerImage
     }
@@ -78,6 +80,7 @@ task GffRead {
         CDSFastaPath: {description: "The location the CDS fasta should be written to.", category: "advanced"}
         proteinFastaPath: {description: "The location the protein fasta should be written to.", category: "advanced"}
         filteredGffPath: {description: "The location the filtered GFF should be written to.", category: "advanced"}
+        memory: {description: "The amount of memory available to the job.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
 
diff --git a/htseq.wdl b/htseq.wdl
index dfa3fcf2005c1dd266932abbd559a379c09217f4..76d3bb8369c624a3f8981f8afad0f73ae9f68d3e 100644
--- a/htseq.wdl
+++ b/htseq.wdl
@@ -34,7 +34,7 @@ task HTSeqCount {
 
         Int nprocesses = 1
         String memory = "8G"
-        Int timeMinutes = 10 + ceil(size(inputBams, "G") * 60)
+        Int timeMinutes = 1440 #10 + ceil(size(inputBams, "G") * 60) FIXME
         String dockerImage = "quay.io/biocontainers/htseq:0.12.4--py37hb3f55d8_0"
     }
 
diff --git a/lima.wdl b/lima.wdl
index 119db3f4112b31756dd6a127dbd5551151955fc9..6b87ad4f3120baa2e1e3f13d5f9f1d223419bb80 100644
--- a/lima.wdl
+++ b/lima.wdl
@@ -51,12 +51,12 @@ task Lima {
         Int threads = 2
         String memory = "2G"
         Int timeMinutes = 30
-        String dockerImage = "quay.io/biocontainers/lima:2.0.0--0"
+        String dockerImage = "quay.io/biocontainers/lima:2.2.0--h9ee0642_0"
     }
 
     Map[String, String] libraryDesignOptions = {"same": "--same", "different": "--different", "neighbors": "--neighbors"}
 
-    command {
+    command <<<
         set -e
         mkdir -p "$(dirname ~{outputPrefix})"
         lima \
@@ -83,26 +83,22 @@ task Lima {
         ~{true="--peek-guess" false="" peekGuess} \
         --log-level ~{logLevel} \
         --num-threads ~{threads} \
-        ~{"--log-file " + outputPrefix + ".stderr.log"} \
+        ~{"--log-file " + outputPrefix + ".lima.stderr.log"} \
         ~{inputBamFile} \
         ~{barcodeFile} \
         ~{outputPrefix + ".bam"}
 
-        # copy the files with the default filename to the folder specified in
-        # outputPrefix.
-        if [ "~{basename(outputPrefix)}.json" != "~{outputPrefix}.json" ]; then
-            cp "~{basename(outputPrefix)}.json" "~{outputPrefix}.json"
-            cp "~{basename(outputPrefix)}.lima.counts" "~{outputPrefix}.lima.counts"
-            cp "~{basename(outputPrefix)}.lima.report" "~{outputPrefix}.lima.report"
-            cp "~{basename(outputPrefix)}.lima.summary" "~{outputPrefix}.lima.summary"
-        fi
-    }
+        dirName="$(dirname ~{outputPrefix})"
+        find "$(cd ${dirName}; pwd)" -name "*.bam" > bamFiles.txt
+        find "$(cd ${dirName}; pwd)" -name "*.bam.pbi" > bamIndexes.txt
+        find "$(cd ${dirName}; pwd)" -name "*.consensusreadset.xml" > consensusreadset.txt
+    >>>
 
     output {
-        Array[File] limaBam = glob("*.bam")
-        Array[File] limaBamIndex = glob("*.bam.pbi")
-        Array[File] limaXml = glob("*.subreadset.xml")
-        File limaStderr = outputPrefix + ".stderr.log"
+        Array[File] limaBam = read_lines("bamFiles.txt")
+        Array[File] limaBamIndex = read_lines("bamIndexes.txt")
+        Array[File] limaXml = read_lines("consensusreadset.txt")
+        File limaStderr = outputPrefix + ".lima.stderr.log"
         File limaJson = outputPrefix + ".json"
         File limaCounts = outputPrefix + ".lima.counts"
         File limaReport = outputPrefix + ".lima.report"
diff --git a/minimap2.wdl b/minimap2.wdl
index d2e699052d89b9dc19ce6806ed1f68524593be78..50ff4db38525cc8e896c944e5bc8de64e52f8a0f 100644
--- a/minimap2.wdl
+++ b/minimap2.wdl
@@ -33,7 +33,7 @@ task Indexing {
         Int cores = 1
         String memory = "4G"
         Int timeMinutes = 10
-        String dockerImage = "quay.io/biocontainers/minimap2:2.17--hed695b0_3"
+        String dockerImage = "quay.io/biocontainers/minimap2:2.20--h5bf99c6_0"
     }
 
     command {
@@ -100,7 +100,7 @@ task Mapping {
         Int cores = 4
         String memory = "30G"
         Int timeMinutes = 1 + ceil(size(queryFile, "G") * 200 / cores)
-        String dockerImage = "quay.io/biocontainers/minimap2:2.17--hed695b0_3"
+        String dockerImage = "quay.io/biocontainers/minimap2:2.20--h5bf99c6_0"
     }
 
     command {
diff --git a/multiqc.wdl b/multiqc.wdl
index 2571463a1a9fa42bcd87db1b5edfb5a279060ea8..a166293799d75a24f8aa7f14d3ade49d5fcfdf07 100644
--- a/multiqc.wdl
+++ b/multiqc.wdl
@@ -57,7 +57,7 @@ task MultiQC {
         String? clConfig
 
         String? memory
-        Int timeMinutes = 2 + ceil(size(reports, "G") * 8)
+        Int timeMinutes = 10 + ceil(size(reports, "G") * 8)
         String dockerImage = "quay.io/biocontainers/multiqc:1.9--py_1"
     }
 
diff --git a/nanopack.wdl b/nanopack.wdl
index f86641b0613e207f7633cde189b8be0415515a38..e4c94a43b113f35c6ae82c228711bd8ce4592490 100644
--- a/nanopack.wdl
+++ b/nanopack.wdl
@@ -42,7 +42,7 @@ task NanoPlot {
         Int threads = 2
         String memory = "2G"
         Int timeMinutes = 15
-        String dockerImage = "quay.io/biocontainers/nanoplot:1.32.1--py_0"
+        String dockerImage = "quay.io/biocontainers/nanoplot:1.38.0--pyhdfd78af_0"
     }
 
     Map[String, String] fileTypeOptions = {"fastq": "--fastq ", "fasta": "--fasta ", "fastq_rich": "--fastq_rich ", "fastq_minimal": "--fastq_minimal ", "summary": "--summary ", "bam": "--bam ", "ubam": "--ubam ", "cram": "--cram ", "pickle": "--pickle ", "feather": "--feather "}
diff --git a/pacbio.wdl b/pacbio.wdl
index df0343d98a737132f82185a04bca133547137659..b21c69bc0b3db02ed0e1b3ea5fc46fb9bebe4ed4 100644
--- a/pacbio.wdl
+++ b/pacbio.wdl
@@ -23,18 +23,18 @@ version 1.0
 task mergePacBio {
     input {
         Array[File]+ reports
-        String mergedReport
+        String outputPathMergedReport
 
         String memory = "4G"
-        String dockerImage = "lumc/pacbio-merge:0.2"
+        String dockerImage = "quay.io/redmar_van_den_berg/pacbio-merge:0.2"
     }
 
     command {
         set -e
-        mkdir -p $(dirname ~{mergedReport})
+        mkdir -p $(dirname ~{outputPathMergedReport})
         pacbio_merge \
         --reports ~{sep=" " reports} \
-        --json-output ~{mergedReport}
+        --json-output ~{outputPathMergedReport}
     }
 
     runtime {
@@ -43,13 +43,13 @@ task mergePacBio {
     }
 
     output {
-        File outputMergedReport = mergedReport
+        File outputMergedReport = outputPathMergedReport
     }
 
     parameter_meta {
         # inputs
         reports: {description: "The PacBio report files to merge.", category: "required"}
-        mergedReport: {description: "The location the merged PacBio report file should be written to.", category: "common"}
+        outputPathMergedReport: {description: "The location the merged PacBio report file should be written to.", category: "common"}
         memory: {description: "The amount of memory this job will use.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
 
diff --git a/pbbam.wdl b/pbbam.wdl
index d893e64d33ce6867695b8f48a36e8acb4aa0adc2..ae64b87c0efb6f34472eaf3f3789e0129150f3ab 100644
--- a/pbbam.wdl
+++ b/pbbam.wdl
@@ -36,7 +36,6 @@ task Index {
     String bamIndexPath = outputPath + ".pbi"
 
     command {
-        bash -c '
         set -e
         # Make sure outputBamPath does not exist.
         if [ ! -f ~{outputPath} ]
@@ -45,7 +44,6 @@ task Index {
             ln ~{bamFile} ~{outputPath}
         fi
         pbindex ~{outputPath} ~{bamIndexPath}
-        '
     }
 
     output {
diff --git a/prepareShiny.wdl b/prepareShiny.wdl
new file mode 100644
index 0000000000000000000000000000000000000000..d669e2d1791fc8ea7462198c4493cfe5c3c342f5
--- /dev/null
+++ b/prepareShiny.wdl
@@ -0,0 +1,106 @@
+version 1.0
+
+# Copyright (c) 2017 Sequencing Analysis Support Core - Leiden University Medical Center
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+task CreateDesignMatrix {
+    input {
+        File countTable
+        String shinyDir = "."
+
+        String memory = "5G"
+        Int timeMinutes = 30
+        String dockerImage = "quay.io/biocontainers/predex:0.9.2--pyh3252c3a_0"
+    }
+
+    command {
+        set -e
+        mkdir -p ~{shinyDir}
+        predex design \
+        --input ~{countTable} \
+        --output ~{shinyDir}
+    }
+
+    output {
+        File dgeDesign = shinyDir + "/design_matrix.tsv"
+    }
+
+    runtime {
+        memory: memory
+        time_minutes: timeMinutes
+        docker: dockerImage
+    }
+
+    parameter_meta {
+        # inputs
+        countTable: {description: "The created count table from HTseq.", category: "required"}
+        shinyDir: {description: "The directory to write the output to.", category: "required"}
+        memory: {description: "The amount of memory this job will use.", category: "advanced"}
+        timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
+        dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
+        
+        # outputs
+        dgeDesign: {description: "Design matrix template to add sample information for DGE analysis."}
+    }
+}
+
+task CreateAnnotation {
+    input {
+        File referenceFasta
+        File referenceGtfFile
+        String shinyDir = "."
+
+        String memory = "5G"
+        Int timeMinutes = 30
+        String dockerImage = "quay.io/biocontainers/predex:0.9.2--pyh3252c3a_0"
+    }
+
+    command {
+        set -e
+        mkdir -p ~{shinyDir}
+        predex annotation \
+        --fasta ~{referenceFasta} \
+        --gtf ~{referenceGtfFile} \
+        --output ~{shinyDir}
+    }
+
+    output {        
+        File dgeAnnotation = shinyDir + "/annotation.tsv"
+    }
+
+    runtime {
+        memory: memory
+        time_minutes: timeMinutes
+        docker: dockerImage
+    }
+
+    parameter_meta {
+        # inputs
+        referenceFasta: {description: "The reference Fasta file.", category: "required"}
+        referenceGtfFile: {description: "The reference GTF file.", category: "required"}
+        shinyDir: {description: "The directory to write the output to.", category: "required"}
+        memory: {description: "The amount of memory this job will use.", category: "advanced"}
+        timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
+        dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
+
+        # outputs
+        dgeAnnotation: {description: "Annotation file for DGE analysis."}
+    }
+}
diff --git a/requirements-test.txt b/requirements-test.txt
deleted file mode 100644
index 0b01d193d495c1b118f95461d22fe08a0c595354..0000000000000000000000000000000000000000
--- a/requirements-test.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-# These are the programs used for testing these biowdl tasks.
-# These requirements can be installed with conda with the bioconda channel
-# activated.
-# For more information on how to set up conda with bioconda channel see:
-# http://bioconda.github.io/#install-conda
-# This file can be installed with "conda install --file requirements-test.txt".
-
-cromwell
-womtool
-miniwdl
-wdl-aid
diff --git a/samtools.wdl b/samtools.wdl
index 9042a0dfc42b0d3b8bb158ac9ee2fa902c633849..81b6c17da3d15a7db469dfee9422bd07e4766273 100644
--- a/samtools.wdl
+++ b/samtools.wdl
@@ -26,6 +26,7 @@ task BgzipAndIndex {
         String outputDir
         String type = "vcf"
 
+        String memory = "2G"
         Int timeMinutes = 1 + ceil(size(inputFile, "G"))
         String dockerImage = "quay.io/biocontainers/tabix:0.2.6--ha92aebf_0"
     }
@@ -45,6 +46,7 @@ task BgzipAndIndex {
     }
 
     runtime {
+        memory: memory
         time_minutes: timeMinutes
         docker: dockerImage
     }
@@ -54,6 +56,7 @@ task BgzipAndIndex {
         inputFile: {description: "The file to be compressed and indexed.", category: "required"}
         outputDir: {description: "The directory in which the output will be placed.", category: "required"}
         type: {description: "The type of file (eg. vcf or bed) to be compressed and indexed.", category: "common"}
+        memory: {description: "The amount of memory this job will use.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
 
@@ -122,6 +125,8 @@ task Fastq {
     }
 
     command {
+        set -e
+        mkdir -p "$(dirname ~{outputRead1})"
         samtools fastq \
         ~{true="-1" false="-s" defined(outputRead2)} ~{outputRead1} \
         ~{"-2 " + outputRead2} \
diff --git a/scripts b/scripts
index 85e2ec542b65be5f2a25c22db05c28700fbe6db5..84690a30eb0dde2bfdfaff9abf097b6f4c49dfd8 160000
--- a/scripts
+++ b/scripts
@@ -1 +1 @@
-Subproject commit 85e2ec542b65be5f2a25c22db05c28700fbe6db5
+Subproject commit 84690a30eb0dde2bfdfaff9abf097b6f4c49dfd8
diff --git a/somaticseq.wdl b/somaticseq.wdl
index 07103ef943180f5203650caee8fdf50da5d47275..63f8362ea1c9ad8025e6b30b38e115ed91239946 100644
--- a/somaticseq.wdl
+++ b/somaticseq.wdl
@@ -47,6 +47,7 @@ task ParallelPaired {
         File? strelkaSNV
         File? strelkaIndel
 
+        String memory = "2G"
         Int threads = 1
         Int timeMinutes = 60
         String dockerImage = "lethalfang/somaticseq:3.1.0"
@@ -91,6 +92,7 @@ task ParallelPaired {
 
     runtime {
         cpu: threads
+        memory: memory
         time_minutes: timeMinutes
         docker: dockerImage
     }
@@ -121,6 +123,7 @@ task ParallelPaired {
         strelkaSNV: {description: "An SNV VCF as produced by strelka.", category: "advanced"}
         strelkaIndel: {description: "An indel VCF as produced by somaticsniper.", category: "advanced"}
         threads: {description: "The number of threads to use.", category: "advanced"}
+        memory: {description: "The amount of memory this job will use.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
 
@@ -159,6 +162,7 @@ task ParallelPairedTrain {
         File? strelkaSNV
         File? strelkaIndel
 
+        String memory = "2G"
         Int threads = 1
         Int timeMinutes = 240
         String dockerImage = "lethalfang/somaticseq:3.1.0"
@@ -202,6 +206,7 @@ task ParallelPairedTrain {
 
     runtime {
         cpu: threads
+        memory: memory
         time_minutes: timeMinutes
         docker: dockerImage
     }
@@ -232,6 +237,7 @@ task ParallelPairedTrain {
         strelkaSNV: {description: "An SNV VCF as produced by strelka.", category: "advanced"}
         strelkaIndel: {description: "An indel VCF as produced by somaticsniper.", category: "advanced"}
         threads: {description: "The number of threads to use.", category: "advanced"}
+        memory: {description: "The amount of memory this job will use.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
 
@@ -264,6 +270,7 @@ task ParallelSingle {
         File? scalpelVCF
         File? strelkaVCF
 
+        String memory = "2G"
         Int threads = 1
         Int timeMinutes = 60
         String dockerImage = "lethalfang/somaticseq:3.1.0"
@@ -301,6 +308,7 @@ task ParallelSingle {
 
     runtime {
         cpu: threads
+        memory: memory
         time_minutes: timeMinutes
         docker: dockerImage
     }
@@ -323,6 +331,7 @@ task ParallelSingle {
         scalpelVCF: {description: "A VCF as produced by scalpel.", category: "advanced"}
         strelkaVCF: {description: "A VCF as produced by strelka.", category: "advanced"}
         threads: {description: "The number of threads to use.", category: "advanced"}
+        memory: {description: "The amount of memory this job will use.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
 
@@ -353,6 +362,7 @@ task ParallelSingleTrain {
         File? scalpelVCF
         File? strelkaVCF
 
+        String memory = "2G"
         Int threads = 1
         Int timeMinutes = 240
         String dockerImage = "lethalfang/somaticseq:3.1.0"
@@ -389,6 +399,7 @@ task ParallelSingleTrain {
 
     runtime {
         cpu: threads
+        memory: memory
         time_minutes: timeMinutes
         docker: dockerImage
     }
@@ -411,6 +422,7 @@ task ParallelSingleTrain {
         scalpelVCF: {description: "A VCF as produced by scalpel.", category: "advanced"}
         strelkaVCF: {description: "A VCF as produced by strelka.", category: "advanced"}
         threads: {description: "The number of threads to use.", category: "advanced"}
+        memory: {description: "The amount of memory this job will use.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
 
@@ -429,6 +441,7 @@ task ModifyStrelka {
         File strelkaVCF
         String outputVCFName = basename(strelkaVCF, ".gz")
 
+        String memory = "2G"
         Int timeMinutes = 20
         String dockerImage = "lethalfang/somaticseq:3.1.0"
     }
@@ -447,6 +460,7 @@ task ModifyStrelka {
     }
 
     runtime {
+        memory: memory
         time_minutes: timeMinutes
         docker: dockerImage
     }
@@ -455,6 +469,7 @@ task ModifyStrelka {
         # inputs
         strelkaVCF: {description: "A vcf file as produced by strelka.", category: "required"}
         outputVCFName: {description: "The location the output VCF file should be written to.", category: "advanced"}
+        memory: {description: "The amount of memory this job will use.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
 
diff --git a/spades.wdl b/spades.wdl
index 7cc16d21e7e74aaf3a820c5a3ffa0bc29d7fe7ab..3975dd32e3bdff906b1127d93a5aa8f3ca714e8a 100644
--- a/spades.wdl
+++ b/spades.wdl
@@ -34,16 +34,16 @@ task Spades {
         File? tslrContigs
         File? trustedContigs
         File? untrustedContigs
-        Boolean? singleCell
-        Boolean? metagenomic
-        Boolean? rna
-        Boolean? plasmid
-        Boolean? ionTorrent
-        Boolean? onlyErrorCorrection
-        Boolean? onlyAssembler
-        Boolean? careful
-        Boolean? disableGzipOutput
-        Boolean? disableRepeatResolution
+        Boolean singleCell = false
+        Boolean metagenomic = false
+        Boolean rna = false
+        Boolean plasmid = false
+        Boolean ionTorrent = false
+        Boolean onlyErrorCorrection = false
+        Boolean onlyAssembler = false
+        Boolean careful = false
+        Boolean disableGzipOutput = false
+        Boolean disableRepeatResolution = false
         File? dataset
         File? tmpDir
         String? k
diff --git a/stringtie.wdl b/stringtie.wdl
index 81d9613265242aaa7504f78fa426cab510d9dc91..9c2f3cfcb1683e2340029eae312d12c7da14c582 100644
--- a/stringtie.wdl
+++ b/stringtie.wdl
@@ -31,11 +31,12 @@ task Stringtie {
         Boolean? firstStranded
         Boolean? secondStranded
         String? geneAbundanceFile
+        Float? minimumCoverage
 
         Int threads = 1
         String memory = "2G"
         Int timeMinutes = 1 + ceil(size(bam, "G") * 60 / threads)
-        String dockerImage = "quay.io/biocontainers/stringtie:2.1.4--h7e0af3c_0"
+        String dockerImage = "quay.io/biocontainers/stringtie:1.3.6--h92e31bf_0"
     }
 
     command {
@@ -47,6 +48,7 @@ task Stringtie {
         ~{true="-e" false="" skipNovelTranscripts} \
         ~{true="--rf" false="" firstStranded} \
         ~{true="--fr" false="" secondStranded} \
+        ~{"-c " + minimumCoverage} \
         -o ~{assembledTranscriptsFile} \
         ~{"-A " + geneAbundanceFile} \
         ~{bam}
@@ -74,6 +76,7 @@ task Stringtie {
         firstStranded: {description: "Equivalent to the --rf flag of stringtie.", category: "required"}
         secondStranded: {description: "Equivalent to the --fr flag of stringtie.", category: "required"}
         geneAbundanceFile: {description: "Where the abundance file should be written.", category: "common"}
+        minimumCoverage: {description: "The minimum coverage for a transcript to be shown in the output.", category: "advanced"}
         threads: {description: "The number of threads to use.", category: "advanced"}
         memory: {description: "The amount of memory needed for this task in GB.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
diff --git a/survivor.wdl b/survivor.wdl
index 8b0360d87fe7e783d01a3f6e128a44590e16ef53..de232405b4d617a46a785f7aa9970a45f474b60b 100644
--- a/survivor.wdl
+++ b/survivor.wdl
@@ -44,9 +44,9 @@ task Merge {
         fileList \
         ~{breakpointDistance} \
         ~{suppVecs} \
-        ~{true=1 false=0 svType} \
-        ~{true=1 false=0 strandType} \
-        ~{true=1 false=0 distanceBySvSize} \
+        ~{true='1' false='0' svType} \
+        ~{true='1' false='0' strandType} \
+        ~{true='1' false='0' distanceBySvSize} \
         ~{minSize} \
         ~{outputPath}
     }
diff --git a/umi-tools.wdl b/umi-tools.wdl
index 6524d656d59b28eaf4de21df2457de2c79036bb3..b79817c2e4304c76b8203c23f366df601836151f 100644
--- a/umi-tools.wdl
+++ b/umi-tools.wdl
@@ -30,8 +30,9 @@ task Extract {
         String? read2Output = "umi_extracted_R2.fastq.gz"
         Boolean threePrime = false
 
+        String memory = "20G"
         Int timeMinutes = 1 + ceil(size([read1, read2], "G") * 2)
-        String dockerImage = "quay.io/biocontainers/mulled-v2-509311a44630c01d9cb7d2ac5727725f51ea43af:6089936aca6219b5bb5f54210ac5eb456c7503f2-0"
+        String dockerImage = "quay.io/biocontainers/mulled-v2-509311a44630c01d9cb7d2ac5727725f51ea43af:3067b520386698317fd507c413baf7f901666fd4-0"
     }
 
     command {
@@ -51,6 +52,7 @@ task Extract {
     }
 
     runtime {
+        memory: memory
         time_minutes: timeMinutes
         docker: dockerImage
     }
@@ -78,6 +80,8 @@ task Dedup {
         File inputBam
         File inputBamIndex
         String outputBamPath
+        String tmpDir = "./umiToolsDedupTmpDir"
+
         Boolean paired = true
 
         String? umiSeparator
@@ -85,21 +89,21 @@ task Dedup {
 
         String memory = "25G"
         Int timeMinutes = 30 + ceil(size(inputBam, "G") * 30)
-        # Use a multi-package-container which includes umi_tools (0.5.5) and samtools (1.9).
-        String dockerImage = "quay.io/biocontainers/mulled-v2-509311a44630c01d9cb7d2ac5727725f51ea43af:6089936aca6219b5bb5f54210ac5eb456c7503f2-0"
+        String dockerImage = "quay.io/biocontainers/mulled-v2-509311a44630c01d9cb7d2ac5727725f51ea43af:3067b520386698317fd507c413baf7f901666fd4-0"
     }
 
     String outputBamIndex = sub(outputBamPath, "\.bam$", ".bai")
 
     command {
         set -e
-        mkdir -p "$(dirname ~{outputBamPath})"
+        mkdir -p "$(dirname ~{outputBamPath})" "~{tmpDir}"
         umi_tools dedup \
-        --stdin ~{inputBam} \
-        --stdout ~{outputBamPath} \
+        --stdin=~{inputBam} \
+        --stdout=~{outputBamPath} \
         ~{"--output-stats " + statsPrefix} \
         ~{"--umi-separator=" + umiSeparator} \
-        ~{true="--paired" false="" paired}
+        ~{true="--paired" false="" paired} \
+        --temp-dir=~{tmpDir}
         samtools index ~{outputBamPath} ~{outputBamIndex}
     }
 
@@ -122,6 +126,7 @@ task Dedup {
         inputBam: {description: "The input BAM file.", categrory: "required"}
         inputBamIndex: {description: "The index for the ipnut BAM file.", cateogry: "required"}
         outputBamPath: {description: "The location to write the output BAM file to.", category: "required"}
+        tmpDir: {description: "Temporary directory.", category: "advanced"}
         paired: {description: "Whether or not the data is paired.", category: "common"}
         umiSeparator: {description: "Seperator used for UMIs in the read names.", category: "advanced"}
         statsPrefix: {description: "The prefix for the stats files.", category: "advanced"}
diff --git a/wisestork.wdl b/wisestork.wdl
index 6be32168ef3f70b837af655c545650954a188ff5..8fb4b76b703d485b244ef7342424f727c3c522f6 100644
--- a/wisestork.wdl
+++ b/wisestork.wdl
@@ -31,6 +31,7 @@ task Count {
         Int? binSize
         File? binFile
 
+        String memory = "2G"
         String dockerImage = "quay.io/biocontainers/wisestork:0.1.2--pyh24bf2e0_0"
     }
 
@@ -50,6 +51,7 @@ task Count {
     }
 
     runtime {
+        memory: memory
         docker: dockerImage
     }
 }
@@ -67,6 +69,7 @@ task GcCorrect {
         Int? iter
         Float? fracLowess
 
+        String memory = "2G"
         String dockerImage = "quay.io/biocontainers/wisestork:0.1.2--pyh24bf2e0_0"
     }
 
@@ -89,6 +92,7 @@ task GcCorrect {
     }
 
     runtime {
+        memory: memory
         docker: dockerImage
     }
 }
@@ -143,6 +147,7 @@ task Zscore {
         Int? binSize
         File? binFile
 
+        String memory = "2G"
         String dockerImage = "quay.io/biocontainers/wisestork:0.1.2--pyh24bf2e0_0"
     }
 
@@ -163,6 +168,7 @@ task Zscore {
     }
 
     runtime {
+        memory: memory
         docker: dockerImage
     }
 }