diff --git a/src/solution_RNASeq.nf b/src/solution_RNASeq.nf
index 914f07f74e3bf22e46b097b20f3087090c656917..f264c3807fb70f74bc580f9dbfb5b6966d4a470c 100644
--- a/src/solution_RNASeq.nf
+++ b/src/solution_RNASeq.nf
@@ -1,5 +1,7 @@
+nextflow.enable.dsl=2
+
 /*
-./nextflow src/solution_RNASeq.nf -c src/solution_RNASeq.config --fastq "data/tiny_dataset/fastq/tiny2_R{1,2}.fastq.gz" --fasta "data/tiny_dataset/fasta/tiny_v2_10.fasta" --bed "data/tiny_dataset/annot/tiny.bed" -profile docker
+./nextflow src/solution_RNASeq_DSL2.nf --fastq "data/tiny_dataset/fastq/tiny2_R{1,2}.fastq.gz" --fasta "data/tiny_dataset/fasta/tiny_v2_10.fasta" --bed "data/tiny_dataset/annot/tiny.bed" -profile docker
 */
 
 log.info "fastq files : ${params.fastq}"
@@ -19,97 +21,16 @@ Channel
   .ifEmpty { error "Cannot find any fastq files matching: ${params.fastq}" }
   .set { fastq_files }
 
-process adaptor_removal {
-  tag "$pair_id"
-  publishDir "results/fastq/adaptor_removal/", mode: 'copy'
-
-  input:
-  set pair_id, file(reads) from fastq_files
-
-  output:
-  set pair_id, "*_cut_R{1,2}.fastq.gz" into fastq_files_cut
-
-  script:
-  """
-
-  cutadapt -a AGATCGGAAGAG -g CTCTTCCGATCT -A AGATCGGAAGAG -G CTCTTCCGATCT \
-  -o ${pair_id}_cut_R1.fastq.gz -p ${pair_id}_cut_R2.fastq.gz \
-  ${reads[0]} ${reads[1]} > ${pair_id}_report.txt
-  """
+include { adaptor_removal_pairedend } from './nf_modules/cutadapt/main'
+include { trimming_pairedend } from './nf_modules/urqt/main'
+include { fasta_from_bed } from './nf_modules/bedtools/main'
+include { index_fasta; mapping_fastq_pairedend } from './nf_modules/kallisto/main'
+
+workflow {
+    adaptor_removal_pairedend(fastq_files)
+    trimming_pairedend(adaptor_removal_pairedend.out.fastq)
+    fasta_from_bed(fasta_files, bed_files)
+    index_fasta(fasta_from_bed.out.fasta)
+    mapping_fastq_pairedend(index_fasta.out.index.collect(), trimming_pairedend.out.fastq)
 }
 
-process trimming {
-  tag "${reads}"
-  publishDir "results/fastq/trimming/", mode: 'copy'
-
-  input:
-  set pair_id, file(reads) from fastq_files_cut
-
-  output:
-  set pair_id, "*_trim_R{1,2}.fastq.gz" into fastq_files_trim
-
-  script:
-"""
-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
-"""
-}
-
-process fasta_from_bed {
-  tag "${bed.baseName}"
-  publishDir "results/fasta/", mode: 'copy'
-
-  input:
-  file fasta from fasta_files
-  file bed from bed_files
-
-  output:
-  file "*_extracted.fasta" into fasta_files_extracted
-
-  script:
-"""
-bedtools getfasta -name \
--fi ${fasta} -bed ${bed} -fo ${bed.baseName}_extracted.fasta
-"""
-}
-
-process index_fasta {
-  tag "$fasta.baseName"
-  publishDir "results/mapping/index/", mode: 'copy'
-
-  input:
-    file fasta from fasta_files_extracted
-
-  output:
-    file "*.index*" into index_files
-    file "*_kallisto_report.txt" into index_files_report
-
-  script:
-"""
-kallisto index -k 31 --make-unique -i ${fasta.baseName}.index ${fasta} \
-2> ${fasta.baseName}_kallisto_report.txt
-"""
-}
-
-process mapping_fastq {
-  tag "$reads"
-  publishDir "results/mapping/quantification/", mode: 'copy'
-
-  input:
-  set pair_id, file(reads) from fastq_files_trim
-  file index from index_files.collect()
-
-  output:
-  file "*" into counts_files
-
-  script:
-"""
-mkdir ${pair_id}
-
-kallisto quant -i ${index} -t ${task.cpus} \
---bias --bootstrap-samples 100 -o ${pair_id} \
-${reads[0]} ${reads[1]} &> ${pair_id}/kallisto_report.txt
-"""
-}