diff --git a/src/nf_modules/samtools/main.nf b/src/nf_modules/samtools/main.nf
index b5d075de66d926e2c5cd79ee8992bd1f79c45959..a50a75ee42199285c5f4ed4eb80831fe8e547224 100644
--- a/src/nf_modules/samtools/main.nf
+++ b/src/nf_modules/samtools/main.nf
@@ -1,10 +1,15 @@
 version = "1.11"
 container_url = "lbmc/samtools:${version}"
 
+params.index_fasta = ""
+params.index_fasta_out = ""
 process index_fasta {
   container = "${container_url}"
   label "big_mem_mono_cpus"
   tag "$file_id"
+  if (params.mapping_fastq_out != "") {
+    publishDir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(file_id), path(fasta)
@@ -13,16 +18,20 @@ process index_fasta {
 
   script:
 """
-samtools faidx ${fasta}
+samtools faidx ${params.index_fasta} ${fasta}
 """
 }
 
-filter_bam_quality_threshold = 30
-
+params.filter_bam_quality_threshold = 30
+params.filter_bam_quality = "-q ${filter_bam_quality_threshold}"
+params.filter_bam_quality_out = ""
 process filter_bam_quality {
   container = "${container_url}"
   label "big_mem_multi_cpus"
   tag "$file_id"
+  if (params.mapping_fastq_out != "") {
+    publishDir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(file_id), path(bam)
@@ -31,16 +40,20 @@ process filter_bam_quality {
     tuple val(file_id), path("*_filtered.bam"), emit: bam
   script:
 """
-samtools view -@ ${task.cpus} -hb ${bam} -q ${filter_bam_quality_threshold} > \
+samtools view -@ ${task.cpus} -hb ${bam} ${params.filter_bam_quality} > \
   ${bam.simpleName}_filtered.bam
 """
 }
 
-
+params.filter_bam = ""
+params.filter_bam_out = ""
 process filter_bam {
   container = "${container_url}"
   label "big_mem_multi_cpus"
   tag "$file_id"
+  if (params.mapping_fastq_out != "") {
+    publishDir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(file_id), path(bam)
@@ -50,11 +63,13 @@ process filter_bam {
     tuple val(file_id), path("*_filtered.bam"), emit: bam
   script:
 """
-samtools view -@ ${task.cpus} -hb ${bam} -L ${bed} > \
+samtools view -@ ${task.cpus} -hb ${bam} -L ${bed} ${params.filter_bam} > \
   ${bam.simpleName}_filtered.bam
 """
 }
 
+params.filter_bam_mapped = "-F 4"
+params.filter_bam_mapped_out = ""
 process filter_bam_mapped {
   container = "${container_url}"
   label "big_mem_multi_cpus"
@@ -67,15 +82,20 @@ process filter_bam_mapped {
     tuple val(file_id), path("*_mapped.bam"), emit: bam
   script:
 """
-samtools view -@ ${task.cpus} -F 4 -hb ${bam} > \
+samtools view -@ ${task.cpus} ${params.filter_bam_mapped} -hb ${bam} > \
   ${bam.simpleName}_mapped.bam
 """
 }
 
+params.filter_bam_unmapped = "-f 4"
+params.filter_bam_unmapped_out = ""
 process filter_bam_unmapped {
   container = "${container_url}"
   label "big_mem_multi_cpus"
   tag "$file_id"
+  if (params.mapping_fastq_out != "") {
+    publishDir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(file_id), path(bam)
@@ -84,11 +104,12 @@ process filter_bam_unmapped {
     tuple val(file_id), path("*_unmapped.bam"), emit: bam
   script:
 """
-samtools view -@ ${task.cpus} -f 4 -hb ${bam} > ${bam.simpleName}_unmapped.bam
+samtools view -@ ${task.cpus} ${params.filter_bam_unmapped} -hb ${bam} > ${bam.simpleName}_unmapped.bam
 """
 }
 
-
+params.index_bam = ""
+params.index_bam_out = ""
 process index_bam {
   container = "${container_url}"
   label "big_mem_mono_cpus"
@@ -103,14 +124,19 @@ process index_bam {
 
   script:
 """
-samtools index ${bam}
+samtools index ${params.index_bam} ${bam}
 """
 }
 
+params.sort_bam = ""
+params.sort_bam_out = ""
 process sort_bam {
   container = "${container_url}"
   label "big_mem_multi_cpus"
   tag "$file_id"
+  if (params.mapping_fastq_out != "") {
+    publishDir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(file_id), path(bam)
@@ -120,15 +146,19 @@ process sort_bam {
 
   script:
 """
-samtools sort -@ ${task.cpus} -O BAM -o ${bam.simpleName}_sorted.bam ${bam}
+samtools sort -@ ${task.cpus} ${params.sort_bam} -O BAM -o ${bam.simpleName}_sorted.bam ${bam}
 """
 }
 
-
+params.split_bam = ""
+params.split_bam_out = ""
 process split_bam {
   container = "${container_url}"
   label "big_mem_multi_cpus"
   tag "$file_id"
+  if (params.mapping_fastq_out != "") {
+    publishDir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(file_id), path(bam)
@@ -138,19 +168,22 @@ process split_bam {
     tuple val(file_id), path("*_reverse.bam*"), emit: bam_reverse
   script:
 """
-samtools view --@ ${Math.round(task.cpus/2)} \
+samtools view --@ ${Math.round(task.cpus/2)} ${params.split_bam} \
   -hb -F 0x10 ${bam} > ${bam.simpleName}_forward.bam &
-samtools view --@ ${Math.round(task.cpus/2)} \
+samtools view --@ ${Math.round(task.cpus/2)} ${params.split_bam} \
   -hb -f 0x10 ${bam} > ${bam.simpleName}_reverse.bam
 """
 }
 
-
+params.merge_bam = ""
+params.merge_bam_out = ""
 process merge_bam {
   container = "${container_url}"
   label "big_mem_multi_cpus"
   tag "$file_id"
-  cpus = 2
+  if (params.mapping_fastq_out != "") {
+    publishdir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(first_file_id), path(first_bam)
@@ -160,16 +193,20 @@ process merge_bam {
     tuple val(file_id), path("*.bam*"), emit: bam
   script:
 """
-samtools merge ${first_bam} ${second_bam} \
+samtools merge -@ ${task.cpus} ${params.merge_bam} ${first_bam} ${second_bam} \
   ${first_bam.simpleName}_${second_file.simpleName}.bam
 """
 }
 
+params.merge_multi_bam = ""
+params.merge_multi_bam_out = ""
 process merge_multi_bam {
   container = "${container_url}"
   label "big_mem_multi_cpus"
   tag "$file_id"
-  cpus = 2
+  if (params.mapping_fastq_out != "") {
+    publishdir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(file_id), path(bams)
@@ -179,16 +216,21 @@ process merge_multi_bam {
   script:
 """
 samtools merge -@ ${task.cpus} \
+  ${params.merge_multi_bam} \
   ${bams[0].simpleName}_merged.bam \
   ${bams}
 """
 }
 
+params.stats_bam = ""
+params.stats_bam_out = ""
 process stats_bam {
   container = "${container_url}"
   label "big_mem_multi_cpus"
   tag "$file_id"
-  cpus = 2
+  if (params.mapping_fastq_out != "") {
+    publishdir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(file_id), path(bam)
@@ -197,12 +239,17 @@ process stats_bam {
     tuple val(file_id), path("*.tsv"), emit: tsv
   script:
 """
-samtools flagstat -@ ${task.cpus} -O tsv ${bam} > ${bam.simpleName}_stats.tsv
+samtools flagstat -@ ${task.cpus} ${params.stats_bam} -O tsv ${bam} > ${bam.simpleName}_stats.tsv
 """
 }
 
+params.flagstat_2_multiqc = ""
+params.flagstat_2_multiqc_out = ""
 process flagstat_2_multiqc {
   tag "$file_id"
+  if (params.mapping_fastq_out != "") {
+    publishdir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(file_id), path(tsv)
@@ -214,8 +261,13 @@ mv ${tsv} ${tsv.simpleName}.flagstat.txt
 """
 }
 
+params.idxstat_2_multiqc = ""
+params.idxstat_2_multiqc_out = ""
 process idxstat_2_multiqc {
   tag "$file_id"
+  if (params.mapping_fastq_out != "") {
+    publishdir "results/${params.mapping_fastq_out}", mode: 'copy'
+  }
 
   input:
     tuple val(file_id), path(tsv)
diff --git a/src/nf_modules/sratoolkit/main.nf b/src/nf_modules/sratoolkit/main.nf
index 3396d6e3e749eca10e6d69b3aa72e47ef81217f1..158d4058764560e9771133952db53b70391182c9 100644
--- a/src/nf_modules/sratoolkit/main.nf
+++ b/src/nf_modules/sratoolkit/main.nf
@@ -1,10 +1,15 @@
 version = "2.8.2"
 container_url = "lbmc/sratoolkit:${version}"
 
+params.fastq_dump = ""
+params.fastq_dump_out = ""
 process fastq_dump {
   container = "${container_url}"
   label "big_mem_mono_cpus"
   tag "$sra"
+  if (params.fastq_dump_out != "") {
+    publishDir "results/${params.fastq_dump_out}", mode: 'copy'
+  }
 
   input:
     val sra
@@ -14,7 +19,7 @@ process fastq_dump {
 
   script:
 """
-fastq-dump --split-files --gzip ${sra}
+fastq-dump ${params.fastq_dump} --split-files --gzip ${sra}
 if [ -f ${sra}_1.fastq ]
 then
   mv ${sra}_1.fastq ${sra}_R1.fastq
diff --git a/src/nf_modules/ucsc/main.nf b/src/nf_modules/ucsc/main.nf
index 1e9debe3206e2bf3e83b645b0b060105fce63038..bba183435efcbb1036a399aa171af76fa834624a 100644
--- a/src/nf_modules/ucsc/main.nf
+++ b/src/nf_modules/ucsc/main.nf
@@ -2,10 +2,14 @@ version = "407"
 container_url = "lbmc/ucsc:${version}"
 
 params.bedgraph_to_bigwig = ""
+params.bedgraph_to_bigwig_out = ""
 process bedgraph_to_bigwig {
   container = "${container_url}"
   label "big_mem_mono_cpus"
   tag "${file_id}"
+  if (params.bedgraph_to_bigwig_out != "") {
+    publishDir "results/${params.bedgraph_to_bigwig_out}", mode: 'copy'
+  }
 
   input:
   tuple val(file_id) path(bg)
diff --git a/src/nf_modules/urqt/main.nf b/src/nf_modules/urqt/main.nf
index 48200cc0487938db3c8295e12c5077d8e721b39d..94279df885615b280b90fab8926453b4fd470021 100644
--- a/src/nf_modules/urqt/main.nf
+++ b/src/nf_modules/urqt/main.nf
@@ -3,74 +3,37 @@ container_url = "lbmc/urqt:${version}"
 
 trim_quality = "20"
 
+params.trimming = "--t 20"
 process trimming {
   container = "${container_url}"
   label "big_mem_multi_cpus"
-  tag "${reads}"
+  tag "${file_id}"
 
   input:
-  tuple val(pair_id), path(reads)
-
-  output:
-  tuple val(pair_id), path("*_trim_R{1,2}.fastq.gz"), emit: fastq
-  path "*_report.txt", emit: report
-
-  script:
-if (reads instanceof List)
-"""
-UrQt --t 20 --m ${task.cpus} --gz \
-  --in ${reads[0]} --inpair ${reads[1]} \
-  --out ${pair_id}_trim_R1.fastq.gz --outpair ${pair_id}_trim_R2.fastq.gz \
-  > ${pair_id}_trimming_report.txt
-"""
-else
-"""
-UrQt --t 20 --m ${task.cpus} --gz \
-  --in ${reads} \
-  --out ${file_id}_trim.fastq.gz \
-  > ${file_id}_trimming_report.txt
-"""
-}
-
-process trimming_pairedend {
-  container = "${container_url}"
-  label "big_mem_multi_cpus"
-  tag "${reads}"
-
-  input:
-  tuple val(pair_id), path(reads)
+  tuple val(file_id), path(reads)
 
   output:
   tuple val(pair_id), path("*_trim_R{1,2}.fastq.gz"), emit: fastq
   path "*_report.txt", emit: report
 
   script:
-"""
-UrQt --t 20 --m ${task.cpus} --gz \
+  if (file_id instanceof List){
+    file_prefix = file_id[0]
+  } else {
+    file_prefix = file_id
+  }
+  if (reads.size() == 2)
+"""
+UrQt ${params.trimming} --m ${task.cpus} --gz \
   --in ${reads[0]} --inpair ${reads[1]} \
-  --out ${pair_id}_trim_R1.fastq.gz --outpair ${pair_id}_trim_R2.fastq.gz \
+  --out ${file_prefix}_trim_R1.fastq.gz --outpair ${file_prefix}_trim_R2.fastq.gz \
   > ${pair_id}_trimming_report.txt
 """
-}
-
-process trimming_singleend {
-  container = "${container_url}"
-  label "big_mem_multi_cpus"
-  tag "$file_id"
-
-  input:
-  tuple val(file_id), path(reads)
-
-  output:
-  tuple val(file_id), path("*_trim.fastq.gz"), emit: fastq
-  path "*_report.txt", emit: report
-
-  script:
+  else if (reads.size() == 1)
 """
-UrQt --t 20 --m ${task.cpus} --gz \
-  --in ${reads} \
-  --out ${file_id}_trim.fastq.gz \
-  > ${file_id}_trimming_report.txt
+UrQt ${params.trimming} --m ${task.cpus} --gz \
+  --in ${reads[0]} \
+  --out ${file_prefix}_trim.fastq.gz \
+  > ${file_prefix}_trimming_report.txt
 """
-}
-
+}
\ No newline at end of file