diff --git a/src/bioflowinsighterror.py b/src/bioflowinsighterror.py
index a9489087bed4ec55b7076ceceb09c1f9e36a1f55..f7490de97df3fd62e36a47897b55796b10c6700a 100644
--- a/src/bioflowinsighterror.py
+++ b/src/bioflowinsighterror.py
@@ -11,7 +11,6 @@ class BioFlowInsightError(Exception):
     """
     def __init__(self, error, num, origin = None):
         self.origin = origin
-        #TODO -> add message at the end
         if(origin!=None):
             super().__init__(f"[{num}] Error in the file '{self.origin.get_file_address()}': "+error)
         else:
diff --git a/src/condition.py b/src/condition.py
index da5da0301ca34a45697ed8bde016bbeff2520940..34a1fcbe8cfddb9ccc9524f6af7d28aed790c45c 100644
--- a/src/condition.py
+++ b/src/condition.py
@@ -16,6 +16,8 @@ class Condition:
 
         
         conditions_dico = self.origin.get_file_conditions()
+        #conditions_dico_temp = extract_conditions(code)
+        #print(conditions_dico==conditions_dico_temp)
         pos = code.find(thing_defined)
         for c in conditions_dico:
             condition_extend = conditions_dico[c]
diff --git a/src/include.py b/src/include.py
index 3ff4fff9e145511f6216b3a3d048ef99c7be40b3..35ccf9ddabff89954803e3de175b7f47a396ec5c 100644
--- a/src/include.py
+++ b/src/include.py
@@ -125,8 +125,6 @@ class Include(Nextflow_Building_Blocks):
                     for match in re.finditer(pattern_as, include):
                         found = True
                         if(self.get_duplicate_status()):
-                            #TODO -> try shallow copy too
-                            #thing_as = copy.copy(self.file.get_element_from_name(match.group(1)))
                             thing_as = copy.deepcopy(self.file.get_element_from_name(match.group(1)))
                             thing_as.set_alias(match.group(3))
                             self.defines.append(thing_as)
diff --git a/src/main_DSL2.py b/src/main_DSL2.py
index ecde61bf97ed5d23913a2ba192d76c84e8f276f6..7360194ba2718dc4fcab0be0ac288a3d96e1507b 100644
--- a/src/main_DSL2.py
+++ b/src/main_DSL2.py
@@ -1,23 +1,30 @@
 from .nextflow_building_blocks import Nextflow_Building_Blocks
 from .bioflowinsighterror import BioFlowInsightError
 import re
-from .outils import get_dico_from_tab_from_id
+from .outils import get_dico_from_tab_from_id, extract_conditions
 
 from . import constant
 
 
+
 class Main_DSL2(Nextflow_Building_Blocks):
     def __init__(self, code, origin):
         Nextflow_Building_Blocks.__init__(self, code)
         self.origin = origin
         self.calls = []
         self.initialised = False
+        self.conditions=None
 
     def get_channels(self):
         return self.channels
     
     def get_workflow_code(self):
         return self.get_code()
+    
+    def get_file_conditions(self):
+        if(self.conditions==None):
+            self.conditions = extract_conditions(self.get_code())
+        return self.conditions
 
     def get_type(self):
         return "Main DSL2"
diff --git a/src/nextflow_file.py b/src/nextflow_file.py
index e199cf541b3dd6dc8f2ed19fec2f516d9eb38ad0..f4112fdf9306c71f9523b4132926e81c2f409fc3 100644
--- a/src/nextflow_file.py
+++ b/src/nextflow_file.py
@@ -37,9 +37,8 @@ class Nextflow_File(Nextflow_Building_Blocks):
         if(self.first_file==True):
             self.origin.set_DSL(self.which_DSL())
         self.graph = None
-        self.conditions = extract_conditions(self.get_code())
-        
         self.added_2_rocrate = False
+        self.conditions=None
         self.check_file_correctness()
         self.do_start_stuff()
         #self.extract_metadata()
@@ -55,6 +54,8 @@ class Nextflow_File(Nextflow_Building_Blocks):
         return self.get_code()
 
     def get_file_conditions(self):
+        if(self.conditions==None):
+            self.conditions = extract_conditions(self.get_code())
         return self.conditions
 
 
@@ -237,16 +238,14 @@ class Nextflow_File(Nextflow_Building_Blocks):
     def which_DSL(self):
         DSL = "DSL2"
         #If there are include
-        self.extract_includes()
-        if(len(self.includes)>0):
+        pattern = constant.FULL_INLCUDE_2
+        for match in re.finditer(pattern, self.get_code()):
             return DSL
         #If there are subworkflows
-        self.extract_subworkflows()
-        if(len(self.subworkflows)>0):
+        for match in re.finditer(constant.SUBWORKFLOW_HEADER, self.get_code()):
             return DSL
         #If there is the main
-        self.extract_main()
-        if(self.main!=None):
+        for match in re.finditer(constant.WORKFLOW_HEADER_2, '\n'+self.get_code()+'\n'):
             return DSL
         #Analyse the processes
         self.extract_processes()
diff --git a/src/outils.py b/src/outils.py
index c4004c6b6090063da174658907b13cac66cefbcd..3b7bc90e34634439f0b4ba46736b0341cd44e8e8 100644
--- a/src/outils.py
+++ b/src/outils.py
@@ -975,9 +975,7 @@ def extract_conditions(code):
                 if(code[start-1]!="\\" or (code[start-1]=="\\" and code[start-2]=="\\")):
                     quote_double=False
 
-            #TODO add "else if" compatibaliaty 
             #TODO Right now -> support only for if/else written with curlies -> not on single line
-
             def adding_inside(conditions_dico, code, start_inside, end_inside):
                 temp_dico = extract_conditions(code[start_inside:end_inside])
                 for c in temp_dico: