diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6230afbff4f9abcadb75abf76e40c14c95081aac..c1e7a2548d77bc75963de3cefcf864ad346aebb1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,9 @@ version 5.0.0-dev
 + isoseq3: Add required bam index input to isoseq3.
 + pbbam: Add task for indexing PacBio bam files
 + picard: Add CollectHsMetrics and CollectVariantCallingMetrics.
++ bcftools: add tmpDir input to specify temporary directory when sorting.
++ bcftools: remove outputType and implement indexing based on output file extension. 
++ NanoPack: Add parameter_meta to NanoPlot task.
 + Centrifuge: Remove metrics file from classification (which causes the
   summary report to be empty).
   https://github.com/DaehwanKimLab/centrifuge/issues/83
diff --git a/bcftools.wdl b/bcftools.wdl
index affa805a78e7fcd2755fc1dab1365741968ff885..a0aeb44258e6d133fb7b97355287921574bbeceb 100644
--- a/bcftools.wdl
+++ b/bcftools.wdl
@@ -35,7 +35,6 @@ task Annotate {
         Boolean keepSites = false
         String? markSites
         Boolean noVersion = false
-        String outputType = "z"
         String? regions
         File? regionsFile
         File? renameChrs
@@ -52,14 +51,14 @@ task Annotate {
         String dockerImage = "quay.io/biocontainers/bcftools:1.10.2--h4f4756c_2"
     }
 
-    Boolean indexing = if outputType == "z" then true else false
+    Boolean compressed = basename(outputPath) != basename(outputPath, ".gz")
 
     command {
         set -e 
         mkdir -p "$(dirname ~{outputPath})"
         bcftools annotate \
         -o ~{outputPath} \
-        -O ~{outputType} \
+        -O ~{true="z" false="v" compressed} \
         ~{"--annotations " + annsFile} \
         ~{"--collapse " + collapse} \
         ~{true="--columns" false="" length(columns) > 0} ~{sep="," columns} \
@@ -80,7 +79,7 @@ task Annotate {
         ~{true="--remove" false="" length(removeAnns) > 0} ~{sep="," removeAnns} \
         ~{inputFile}
 
-        ~{if indexing then 'bcftools index --tbi ~{outputPath}' else ''}
+        ~{if compressed then 'bcftools index --tbi ~{outputPath}' else ''}
 
     }
     
@@ -97,7 +96,6 @@ task Annotate {
 
     parameter_meta {
         outputPath: {description: "The location the output VCF file should be written.", category: "common"}
-        outputType: {description: "Output type: v=vcf, z=vcf.gz, b=bcf, u=uncompressed bcf", category: "advanced"}
         annsFile: {description: "Bgzip-compressed and tabix-indexed file with annotations (see man page for details).", category: "advanced"}
         collapse: {description: "Treat as identical records with <snps|indels|both|all|some|none>, see man page for details.", category: "advanced"}
         columns: {description: "Comma-separated list of columns or tags to carry over from the annotation file (see man page for details).", category: "advanced"}
@@ -129,23 +127,24 @@ task Sort {
     input {
         File inputFile
         String outputPath = "output.vcf.gz"
+        String tmpDir = "./sorting-tmp"
         String memory = "256M"
         Int timeMinutes = 1 + ceil(size(inputFile, "G"))
         String dockerImage = "quay.io/biocontainers/bcftools:1.10.2--h4f4756c_2"
-        String outputType = "z"
     }
 
-    Boolean indexing = if outputType == "z" then true else false
+    Boolean compressed = basename(outputPath) != basename(outputPath, ".gz")
 
     command {
         set -e
-        mkdir -p "$(dirname ~{outputPath})"
+        mkdir -p "$(dirname ~{outputPath})" ~{tmpDir}
         bcftools sort \
         -o ~{outputPath} \
-        -O ~{outputType} \
+        -O ~{true="z" false="v" compressed} \
+        -T ~{tmpDir} \
         ~{inputFile}
 
-        ~{if indexing then 'bcftools index --tbi ~{outputPath}' else ''}
+        ~{if compressed then 'bcftools index --tbi ~{outputPath}' else ''}
     }
 
     output {
@@ -162,7 +161,7 @@ task Sort {
     parameter_meta {
         inputFile: {description: "A vcf or bcf file.", category: "required"}
         outputPath: {description: "The location the output VCF file should be written.", category: "common"}
-        outputType: {description: "Output type: v=vcf, z=vcf.gz, b=bcf, u=uncompressed bcf", category: "advanced"}
+        tmpDir: {description: "The location of the temporary files during the bcftools sorting.", 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"}
@@ -280,26 +279,22 @@ task View {
     input {
         File inputFile
         String outputPath = "output.vcf"
-        Int compressionLevel = 0
         String memory = "256M"
         Int timeMinutes = 1 + ceil(size(inputFile, "G"))
         String dockerImage = "quay.io/biocontainers/bcftools:1.10.2--h4f4756c_2"
     }
 
-    String outputType = if compressionLevel > 0 then "z" else "v"
-    Boolean indexing = if compressionLevel > 0 then true else false
-    String outputFilePath = if compressionLevel > 0 then outputPath + ".gz" else outputPath
+    Boolean compressed = basename(outputPath) != basename(outputPath, ".gz")
 
     command {
         set -e
         mkdir -p "$(dirname ~{outputPath})"
         bcftools view \
         -o ~{outputPath} \
-        -l ~{compressionLevel} \
-        -O ~{outputType} \
+        -O ~{true="z" false="v" compressed} \
         ~{inputFile}
 
-        ~{if indexing then 'bcftools index --tbi ~{outputPath}' else ''}
+        ~{if compressed then 'bcftools index --tbi ~{outputPath}' else ''}
     }
     output {
         File outputVcf = outputPath
@@ -314,7 +309,6 @@ task View {
 
     parameter_meta {
         inputFile: {description: "A vcf or bcf file.", category: "required"}
-        compressionLevel: {description: "Compression level from 0 (uncompressed) to 9 (best).", category: "advanced"}
         outputPath: {description: "The location the output VCF file should be written.", 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"}
diff --git a/nanopack.wdl b/nanopack.wdl
index 6860cf13828d50b0190c88d23e62601111bffb8d..e4d15135cd1e9145ab8282b2614cc7bbbf27f5c0 100644
--- a/nanopack.wdl
+++ b/nanopack.wdl
@@ -92,6 +92,7 @@ task NanoPlot {
         inputFileType: {description: "The format of the read file.", category: "required"}
         outputDir: {description: "Output directory path.", category: "required"}
         outputPrefix: {description: "Output file prefix.", category: "required"}
+        outputPath: {description: "Combination of the outputDir & outputPrefix strings.", category: "advanced"}
         outputTsvStats: {description: "Output the stats file as a properly formatted TSV.", category: "common"}
         dropOutliers: {description: "Drop outlier reads with extreme long length.", category: "advanced"}
         logLengths: {description: "Additionally show logarithmic scaling of lengths in plots.", category: "advanced"}