diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py
index 74df86d034a567202fab9fecd96a26dc58b35abb..d927801b5890306f97049257a986302f314413a8 100644
--- a/b_asic/signal_flow_graph.py
+++ b/b_asic/signal_flow_graph.py
@@ -133,21 +133,23 @@ class SFG(AbstractOperation):
         for sig, input_index in self._original_input_signals_indexes.items():
             # Check if already added destination.
             new_sig = self._added_components_mapping[sig]
-            if new_sig.destination is not None and new_sig.destination.operation in output_operations_set:
-                # Add directly connected input to output to dfs order list
-                self._components_in_dfs_order.extend([
-                    new_sig.source.operation, new_sig, new_sig.destination.operation])
-            elif sig.destination is None:
-                raise ValueError(
-                    f"Input signal #{input_index} is missing destination in SFG")
-            elif sig.destination.operation not in self._added_components_mapping:
-                self._copy_structure_from_operation_dfs(
-                    sig.destination.operation)
+            if new_sig.destination is None:
+                if sig.destination is None:
+                    raise ValueError(
+                        f"Input signal #{input_index} is missing destination in SFG")
+                elif sig.destination.operation not in self._added_components_mapping:
+                    self._copy_structure_from_operation_dfs(
+                        sig.destination.operation)
+            else:
+                if new_sig.destination.operation in output_operations_set:
+                    # Add directly connected input to output to dfs order list
+                    self._components_in_dfs_order.extend([
+                        new_sig.source.operation, new_sig, new_sig.destination.operation])
 
         # Search the graph inwards from each output signal.
         for sig, output_index in self._original_output_signals_indexes.items():
             # Check if already added source.
-            mew_sig = self._added_components_mapping[sig]
+            new_sig = self._added_components_mapping[sig]
             if new_sig.source is None:
                 if sig.source is None:
                     raise ValueError(
@@ -156,6 +158,9 @@ class SFG(AbstractOperation):
                     self._copy_structure_from_operation_dfs(
                         sig.source.operation)
 
+    def __call__(self):
+        return self.deep_copy()
+
     @property
     def type_name(self) -> TypeName:
         return "sfg"