diff --git a/biopet.wdl b/biopet.wdl
index 3ae549023b278f5ae9ddb2c43c5e42db5690a80b..aabad202af2499cbcfc79e5fd3d402f9e1cddaf1 100644
--- a/biopet.wdl
+++ b/biopet.wdl
@@ -39,7 +39,7 @@ task ScatterRegions {
         set -e -o pipefail
         ${preCommand}
         mkdir -p ${outputDirPath}
-        java -Xmx${true=memory false="2" defined(memory)}G -jar ${tool_jar} \
+        java -Xmx${select_first([memory, 2])}G -jar ${tool_jar} \
           -R ${ref_fasta} \
           -o ${outputDirPath} \
           ${"-s " + scatterSize} \
@@ -72,7 +72,7 @@ task SampleConfig {
         set -e -o pipefail
         ${preCommand}
         mkdir -p . ${"$(dirname " + jsonOutputPath + ")"} ${"$(dirname " + tsvOutputPath + ")"}
-        java -Xmx${true=memory false="4" defined(memory)}G -jar ${tool_jar} \
+        java -Xmx${select_first([memory, 4])}G -jar ${tool_jar} \
         -i ${sep="-i " inputFiles} \
         ${"--sample " + sample} \
         ${"--library " + library} \
@@ -108,7 +108,7 @@ task BaseCounter {
         set -e -o pipefail
         ${preCommand}
         mkdir -p ${outputDir}
-        java -Xmx${true=memory false="12" defined(memory)}G -jar ${tool_jar} \
+        java -Xmx${select_first([memory, 12])}G -jar ${tool_jar} \
         -b ${bam} \
         -r ${refFlat} \
         -o ${outputDir} \
@@ -153,6 +153,6 @@ task BaseCounter {
     }
 
     runtime {
-        memory: ceil(select_first([memory, 12.0]) * select_first([memoryMultiplier, 2.0]))
+        memory: ceil(select_first([memory, 12.0]) * select_first([memoryMultiplier, 1.5]))
     }
 }
diff --git a/fastqc.wdl b/fastqc.wdl
index 1b1296d723a146e7f8221ce04c512eecba05652f..7211cbc89241cf0596d01db8565fa9c2bffcadc8 100644
--- a/fastqc.wdl
+++ b/fastqc.wdl
@@ -70,7 +70,7 @@ task extractAdapters {
     command {
     set -e
     mkdir -p ${outputDir}
-    java -Xmx${true=memory false="4" defined(memory)}G -jar ${extractAdaptersFastqcJar} \
+    java -Xmx${select_first([memory, 4])}G -jar ${extractAdaptersFastqcJar} \
     --inputFile ${inputFile} \
     ${"--adapterOutputFile " + adapterOutputFilePath } \
     ${"--contamsOutputFile " + contamsOutputFilePath } \
diff --git a/gatk.wdl b/gatk.wdl
index 404a2c1ef1df26b0b237660eb87078593c359b35..fcac6948aa936ce00809b022488a734cfbebb226 100644
--- a/gatk.wdl
+++ b/gatk.wdl
@@ -18,7 +18,7 @@ task BaseRecalibrator {
     command {
         set -e -o pipefail
         ${preCommand}
-        java -Xms${true=memory false="4" defined(memory)}G -jar ${gatk_jar} \
+        java -Xms${select_first([memory, 4])}G -jar ${gatk_jar} \
           BaseRecalibrator \
           -R ${ref_fasta} \
           -I ${input_bam} \
@@ -57,7 +57,7 @@ task ApplyBQSR {
         set -e -o pipefail
         ${preCommand}
         java ${"-Dsamjdk.compression_level=" + compression_level} \
-        -Xms${true=memory false="4" defined(memory)}G -jar ${gatk_jar} \
+        -Xms${select_first([memory, 4])}G -jar ${gatk_jar} \
           ApplyBQSR \
           --create-output-bam-md5 \
           --add-output-sam-program-record \
@@ -93,7 +93,7 @@ task GatherBqsrReports {
     command {
         set -e -o pipefail
         ${preCommand}
-        java -Xms${true=memory false="3" defined(memory)}G -jar ${gatk_jar} \
+        java -Xms${select_first([memory, 4])}G -jar ${gatk_jar} \
         GatherBQSRReports \
         -I ${sep=' -I ' input_bqsr_reports} \
         -O ${output_report_filepath}
@@ -129,7 +129,7 @@ task HaplotypeCallerGvcf {
         set -e -o pipefail
         ${preCommand}
         java ${"-Dsamjdk.compression_level=" + compression_level} \
-        -Xmx${true=memory false="4" defined(memory)}G -jar ${gatk_jar} \
+        -Xmx${select_first([memory, 4])}G -jar ${gatk_jar} \
           HaplotypeCaller \
           -R ${ref_fasta} \
           -O ${gvcf_basename}.vcf.gz \
@@ -145,7 +145,7 @@ task HaplotypeCallerGvcf {
     }
 
     runtime {
-        memory: ceil(select_first([memory, 4.0]) * select_first([memoryMultiplier, 1.5]))
+        memory: ceil(select_first([memory, 4]) * select_first([memoryMultiplier, 1.5]))
     }
 }
 
@@ -175,7 +175,7 @@ task GenotypeGVCFs {
         ${preCommand}
 
         java ${"-Dsamjdk.compression_level=" + compression_level} \
-        -Xmx${true=memory false="4" defined(memory)}G -jar ${gatk_jar} \
+        -Xmx${select_first([memory, 4])}G -jar ${gatk_jar} \
          GenotypeGVCFs \
          -R ${ref_fasta} \
          -O ${output_basename + ".vcf.gz"} \
@@ -221,7 +221,7 @@ task CombineGVCFs {
 
         if [ ${length(gvcf_files)} -gt 1 ]; then
             java ${"-Dsamjdk.compression_level=" + compression_level} \
-            -Xmx${true=memory false="4" defined(memory)}G -jar ${gatk_jar} \
+            -Xmx${select_first([memory, 4])}G -jar ${gatk_jar} \
              CombineGVCFs \
              -R ${ref_fasta} \
              -O ${output_basename + ".vcf.gz"} \
@@ -260,7 +260,7 @@ task SplitNCigarReads {
     command {
         set -e -o pipefail
         ${preCommand}
-        java -Xms${true=memory false="4" defined(memory)}G -jar ${gatk_jar} \
+        java -Xms${select_first([memory, 4])}G -jar ${gatk_jar} \
         -I ${input_bam} \
         -R ${ref_fasta} \
         -O ${output_bam} # might have to be -o depending on GATK version \
diff --git a/picard.wdl b/picard.wdl
index 401575168c677f9f0e2fddfb7def5850e01eef23..9c9af5a95205a1ae2723055837404f7ce78cfa71 100644
--- a/picard.wdl
+++ b/picard.wdl
@@ -11,7 +11,7 @@ task ScatterIntervalList {
         set -e -o pipefail
         ${preCommand}
         mkdir scatter_list
-        java -Xmx${true=memory false="4" defined(memory)}G -jar ${picard_jar} \
+        java -Xmx${select_first([memory, 4])}G -jar ${picard_jar} \
           IntervalListTools \
           SCATTER_COUNT=${scatter_count} \
           SUBDIVISION_MODE=BALANCING_WITHOUT_INTERVAL_SUBDIVISION_WITH_OVERFLOW \
@@ -46,7 +46,7 @@ task GatherBamFiles {
         set -e -o pipefail
         ${preCommand}
         java ${"-Dsamjdk.compression_level=" + compression_level} \
-        -Xmx${true=memory false="4" defined(memory)}G -jar ${picard_jar} \
+        -Xmx${select_first([memory, 4])}G -jar ${picard_jar} \
           GatherBamFiles \
           INPUT=${sep=' INPUT=' input_bams} \
           OUTPUT=${output_bam_path} \
@@ -90,7 +90,7 @@ task MarkDuplicates {
         ${preCommand}
         mkdir -p $(dirname ${output_bam_path})
         java ${"-Dsamjdk.compression_level=" + compression_level} \
-        -Xmx${true=memory false="8" defined(memory)}G -jar ${picard_jar} \
+        -Xmx${select_first([memory, 4])}G -jar ${picard_jar} \
           MarkDuplicates \
           INPUT=${sep=' INPUT=' input_bams} \
           OUTPUT=${output_bam_path} \
@@ -132,7 +132,7 @@ task MergeVCFs {
         set -e -o pipefail
         ${preCommand}
         java ${"-Dsamjdk.compression_level=" + compression_level} \
-        -Xmx${true=memory false="4" defined(memory)}G -jar ${picard_jar} \
+        -Xmx${select_first([memory, 4])}G -jar ${picard_jar} \
           MergeVcfs \
           INPUT=${sep=' INPUT=' input_vcfs} \
           OUTPUT=${output_vcf_path}