diff --git a/src/outils.py b/src/outils.py
index f1bb04fc59135aa441e2536ffc6bfe4aa2282d36..4337c1acdae66b4b70257f8c552a5c9902c218e2 100644
--- a/src/outils.py
+++ b/src/outils.py
@@ -1318,6 +1318,7 @@ def get_channels_to_add_in_false_conditions(body, emitted_channels):
         to_remove = []
         for condition in tab:
             #If the condition and it's neagtion are in the tab -> then we remove the condition and it's negation form the list
+            condition = condition.split("$$__$$")[0]
             negation = f"!({condition})"
             if(negation in tab):
                 to_remove.append(condition)
@@ -1328,6 +1329,7 @@ def get_channels_to_add_in_false_conditions(body, emitted_channels):
 
         #For the remaining condition in the list -> need to create an empty channel in the case of the negation
         for condition in channels_2_conditions[channel]:
+            condition = condition.split("$$__$$")[0]
             body += f"\nif(!({condition})) {{\n{channel} = Channel.empty()\n}}"
     
     return body
diff --git a/src/subworkflow.py b/src/subworkflow.py
index ee80322ffea66a75133fd167df9ddd81543261ba..c132338cdfea8700a674c5b7df783e9d860fe5dd 100644
--- a/src/subworkflow.py
+++ b/src/subworkflow.py
@@ -64,12 +64,10 @@ class Subworkflow(Main):
             for c in call.get_all_calls():
                 if(c.first_element_called.get_alias()==name):
                     tab.append(c)
-
-
         #Here it is important that BioFlow-Insight is not a Nextflow verificator
         #Here i'm checking the call inside the block
-        if(len(tab)!=0):
-            for c in self.root.get_calls_inside_level():
+        if(len(tab)==0):
+            for call in self.root.get_calls_inside_level():
                 #call.initialise()
                 for c in call.get_all_calls():
                     if(c.first_element_called.get_alias()==name):
diff --git a/src/workflow.py b/src/workflow.py
index fe2baf444c046cdad42e645d8cf9a7cd20f95942..24b72fc597aad8c53219033250cac034bfc6cb8c 100644
--- a/src/workflow.py
+++ b/src/workflow.py
@@ -544,39 +544,9 @@ George Marchment, Bryan Brancotte, Marie Schmit, Frédéric Lemoine, Sarah Cohen
             param = parameters[i]
             takes = subworkflow_takes[i].get_gives()[0]
             #Here we're checking that the input inside and outside the subworkflow are the same
-            #If they are we're going to remove everything to avoid the case
-            
-            """
-            param_1 = fastq
-            sub(param_1)
-            
-            AND in the subworkflow 
-
-            sub{
-                take:
-                fastq
-            }
-            ----------
-            This would mean when removing the subworkflow def -> we would get this:
-
-            param_1 = fastq
-            fastq = param_1
-            """
-            #Obviously we want to avoid this case
-            input_val = ""
-            try:
-                input_val = param.origins[0].get_source()[0].get_origins()[0].get_name()
-            except:
-                input_val = param.get_code(get_OG = True)
-            if(takes.get_code()!=input_val):
+            if(takes.get_code()!=param.get_code(get_OG = True)):
                 new_header+=f"{takes.get_code()} = {param.get_code(get_OG = True)}"
-            else:
-                #In the case they are the same -> we remove the remaining operation (which doesn't serve a purpose)
-                #The "param_1 = fastq" operation 
-                operation_code = param.origins[0].get_source()[0].get_code()
-                code = code.replace(operation_code, "", 1)
-        
-    
+
         code = code.replace(OG_call.get_code(get_OG = True), f"{new_header}\n\n{OG_body}", 1)
 
         #REPLACE THE EMITS