diff --git a/biopet/biopet.wdl b/biopet/biopet.wdl
index 149d8bfdf33d75a2b1a86b7d2ab06294df7410ae..15f0771381d81ae668aaf25d8e173b3551bfd8d9 100644
--- a/biopet/biopet.wdl
+++ b/biopet/biopet.wdl
@@ -84,7 +84,7 @@ task ExtractAdaptersFastqc {
         Float? adapterCutoff
         Boolean? outputAsFasta
 
-        Int memory = 4
+        Int memory = 8
         Float memoryMultiplier = 5 # This is ridiculous...
         String dockerTag = "0.2--1"
     }
@@ -179,7 +179,7 @@ task FastqSync {
     output {
         FastqPair out1 = object {
           R1: out1path,
-          R1: out2path
+          R2: out2path
         }
     }
     
diff --git a/bowtie.wdl b/bowtie.wdl
new file mode 100644
index 0000000000000000000000000000000000000000..6aa886da52c5c088f7b831b5077af82d22bc777c
--- /dev/null
+++ b/bowtie.wdl
@@ -0,0 +1,85 @@
+version 1.0
+
+# MIT License
+#
+# Copyright (c) 2018 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 Bowtie {
+    input {
+        Array[File]+ readsUpstream
+        Array[File]+? readsDownstream
+        String outputPath = "mapped.bam"
+        Array[File]+ indexFiles
+        Int? seedmms
+        Int? seedlen
+        Int? k
+        Boolean best = false
+        Boolean strata = false
+        String? samRG
+        Int threads = 1
+        Int memory = 8
+        Int picardMemory = 4
+        # Image contains bowtie=1.2.2 and picard=2.9.2
+        String dockerImage = "quay.io/biocontainers/mulled-v2-bfe71839265127576d3cd749c056e7b168308d56:1d8bec77b352cdcf3e9ff3d20af238b33ed96eae-0"
+    }
+
+    # Assume fastq input with -q flag.
+    # The output always needs to be SAM as it is piped into Picard SortSam
+    # Hence, the --sam flag is used.
+
+    command {
+        set -e -o pipefail
+        mkdir -p $(dirname ~{outputPath})
+        bowtie -q \
+        --sam \
+        ~{"--seedmms " +  seedmms} \
+        ~{"--seedlen " + seedlen} \
+        ~{"-k " + k} \
+        ~{true="--best" false="" best} \
+        ~{true="--strata" false="" strata} \
+        ~{"--threads " + threads} \
+        ~{"--sam-RG '" + samRG}~{true="'" false="" defined(samRG)} \
+        ~{sub(indexFiles[0], "(\.rev)?\.[0-9]\.ebwt$", "")} \
+        ~{true="-1" false="" defined(readsDownstream)} ~{sep="," readsUpstream} \
+        ~{true="-2" false="" defined(readsDownstream)} ~{sep="," readsDownstream} \
+        | picard -Xmx~{picardMemory}G SortSam \
+        INPUT=/dev/stdin \
+        OUTPUT=~{outputPath} \
+        SORT_ORDER=coordinate \
+        CREATE_INDEX=true
+    }
+
+    output {
+        File outputBam = outputPath
+        File outputBamIndex = sub(outputPath, "\.bam$", ".bai")
+    }
+
+    runtime {
+        cpu: threads
+        memory: memory + picardMemory + picardMemory
+        docker: dockerImage
+    }
+}
+
+struct BowtieIndex {
+    File fasta
+    Array[File] indexFiles
+}
\ No newline at end of file
diff --git a/collect-columns.wdl b/collect-columns.wdl
index 3bed1b619b4c9b4a6a276a7d20b6eca46c9b3121..68c9dcc884563d41e6322440e2f0743368c65ef7 100644
--- a/collect-columns.wdl
+++ b/collect-columns.wdl
@@ -13,7 +13,7 @@ task CollectColumns {
         File? referenceGtf
         String? featureAttribute
 
-        String dockerTag = "0.1.1--py_0"
+        String dockerTag = "0.2.0--py_1"
     }
 
     command {
diff --git a/common.wdl b/common.wdl
index d5db7685565de1d563ddf2b74ef57396a919035f..7b85d461c58869e45cc818344ffb4d24e2f293d2 100644
--- a/common.wdl
+++ b/common.wdl
@@ -131,23 +131,6 @@ task MapMd5 {
     }
 }
 
-task ObjectMd5 {
-    input {
-        Object the_object
-    }
-
-    command {
-        cat ~{write_object(the_object)} |  md5sum - | sed -e 's/  -//'
-    }
-
-    output {
-        String md5sum = read_string(stdout())
-    }
-
-    runtime {
-        memory: 1
-    }
-}
 
 task StringArrayMd5 {
     input {
diff --git a/cutadapt.wdl b/cutadapt.wdl
index 9b3f4a91f0f68d8b0b8974097f20093e26a54d3c..cf9095bd2fe3a1df35f83fc27ad8cef8b5e6e664 100644
--- a/cutadapt.wdl
+++ b/cutadapt.wdl
@@ -62,7 +62,7 @@ task Cutadapt {
         String? reportPath
 
         Int cores = 1
-        Int memory = 8
+        Int memory = 16
         String dockerTag = "2.3--py36h14c3975_0"
     }
 
diff --git a/hisat2.wdl b/hisat2.wdl
index aeb3cbea159605a1daf756a48babf98beaf26669..0c8417f7ae3592e863477d251a550b7f8457feca 100644
--- a/hisat2.wdl
+++ b/hisat2.wdl
@@ -2,8 +2,7 @@ version 1.0
 
 task Hisat2 {
     input {
-        File indexDirectory
-        String indexBasename
+        Array[File]+ indexFiles
         File inputR1
         File? inputR2
         String outputBam
@@ -24,7 +23,7 @@ task Hisat2 {
         mkdir -p $(dirname ~{outputBam})
         hisat2 \
         -p ~{threads} \
-        -x ~{indexDirectory}/~{indexBasename} \
+        -x ~{sub(indexFiles[0], "\.[0-9]\.ht2", "")} \
         ~{true="-1" false="-U" defined(inputR2)} ~{inputR1} \
         ~{"-2" + inputR2} \
         --rg-id ~{readgroup} \
diff --git a/htseq.wdl b/htseq.wdl
index 3011c36146a6db7d577c9cd757dd2bfb2441e734..a687a8a6242b4ec0a8b1dd2b3b46b5a2c49d3923 100644
--- a/htseq.wdl
+++ b/htseq.wdl
@@ -5,12 +5,12 @@ task HTSeqCount {
         Array[File]+ inputBams
         Array[File]+ inputBamsIndex
         File gtfFile
-        String outputTable
+        String outputTable = "output.tsv"
         String format = "bam"
         String order = "pos"
         String stranded = "no"
 
-        Int memory = 20
+        Int memory = 40
         String dockerTag = "0.9.1--py36h7eb728f_2"
     }
 
diff --git a/mergecounts.wdl b/mergecounts.wdl
index dcd76a06a46d5a951b7f85a7808300f31f9cd33d..e89a39ed833578c44cec06604449ae23f6d6512f 100644
--- a/mergecounts.wdl
+++ b/mergecounts.wdl
@@ -1,5 +1,6 @@
 version 1.0
 
+#DEPRECATED
 task MergeCounts {
     input {
         Array[File] inputFiles
diff --git a/multiqc.wdl b/multiqc.wdl
index ec2f4a5a622ed8f2a7755be121b6865d7e278bfc..76563a494f1998eab5b2f83ac42e5bf7e81a47fe 100644
--- a/multiqc.wdl
+++ b/multiqc.wdl
@@ -5,7 +5,7 @@ task MultiQC {
         String dockerTag = "1.7--py_1"
         # Use a string here so cromwell does not relocate an entire analysis directory
         String analysisDirectory
-        Array[File] dependencies   # This must be used in order to run multiqc after these tasks.
+        Array[File] dependencies = []  # This must be used in order to run multiqc after these tasks.
         Boolean force = false
         Boolean dirs = false
         Int? dirsDepth
@@ -37,6 +37,7 @@ task MultiQC {
         String? clConfig
         Boolean verbose  = false
         Boolean quiet = false
+        Array[Boolean] finished = []  # An array of booleans that can be used to let multiqc wait on stuff.
     }
 
     command {
diff --git a/picard.wdl b/picard.wdl
index 2628ca8125e78087b4fc57e98118e15a9cde47a0..9f42acbd781f47e5cc08a364f15e613bfd9e962a 100644
--- a/picard.wdl
+++ b/picard.wdl
@@ -50,8 +50,8 @@ task CollectMultipleMetrics {
         Boolean collectSequencingArtifactMetrics = true
         Boolean collectQualityYieldMetrics = true
 
-        Int memory = 4
-        Float memoryMultiplier = 3.5
+        Int memory = 8
+        Float memoryMultiplier = 4
         String dockerTag = "8dde04faba6c9ac93fae7e846af3bafd2c331b3b-0"
     }
 
@@ -133,8 +133,8 @@ task CollectRnaSeqMetrics {
         String basename
         String strandSpecificity = "NONE"
 
-        Int memory = 4
-        Float memoryMultiplier = 3.0
+        Int memory = 8
+        Float memoryMultiplier = 4.0
         String dockerTag = "8dde04faba6c9ac93fae7e846af3bafd2c331b3b-0"
     }
 
@@ -278,7 +278,7 @@ task MarkDuplicates {
         String outputBamPath
         String metricsPath
 
-        Int memory = 4
+        Int memory = 8
         Float memoryMultiplier = 3.0
         String dockerTag = "2.18.26--0"
 
diff --git a/star.wdl b/star.wdl
index dde8be228b89de52432ad33f666efdf74f9b06b3..edc57155ee89b240e7aed5644fc3294159899406 100644
--- a/star.wdl
+++ b/star.wdl
@@ -2,14 +2,14 @@ version 1.0
 
 task Star {
     input {
-        Array[File] inputR1
+        Array[File]+ inputR1
         Array[File]? inputR2
-        File genomeDir
+        Array[File]+ indexFiles
         String outFileNamePrefix
         String outSAMtype = "BAM SortedByCoordinate"
         String readFilesCommand = "zcat"
         String? outStd
-        String? twopassMode
+        String? twopassMode = "Basic"
         Array[String]? outSAMattrRGline
         String? outSAMunmapped = "Within KeepPairs"
         Int? limitBAMsortRAM
@@ -19,7 +19,7 @@ task Star {
         String dockerTag = "2.6.0c--0"
     }
 
-    # Needs to be extended for all possible output extensions
+    #TODO Needs to be extended for all possible output extensions
     Map[String, String] samOutputNames = {"BAM SortedByCoordinate": "sortedByCoord.out.bam"}
 
     command {
@@ -28,7 +28,7 @@ task Star {
         STAR \
         --readFilesIn ~{sep=',' inputR1} ~{sep="," inputR2} \
         --outFileNamePrefix ~{outFileNamePrefix} \
-        --genomeDir ~{genomeDir} \
+        --genomeDir ~{sub(indexFiles[0], basename(indexFiles[0]), "")} \
         --outSAMtype ~{outSAMtype} \
         --readFilesCommand ~{readFilesCommand} \
         ~{"--outSAMunmapped " + outSAMunmapped} \