diff --git a/kadmos/graph/graph_data.py b/kadmos/graph/graph_data.py
index b67e0227b5c5b344d15232f4f5ddb9b5c0d9c5b5..b58bb191447250458157684174c63aee2f99d058 100644
--- a/kadmos/graph/graph_data.py
+++ b/kadmos/graph/graph_data.py
@@ -4374,7 +4374,7 @@ class FundamentalProblemGraph(DataGraph, KeChainMixin):
                         sub_func_orderings[partition]['coupled']
                     mdg.connect_converger(converger, conv_type_partition, nodes, True, label=converger_label,
                                           converger_is_optimizer=converger_is_optimizer)
-                # Connect remaining couplings to optimer as system converger
+                # Connect remaining couplings to optimizer as system converger
                 mdg.connect_converger(sys_opt, graph.OPTIONS_ARCHITECTURES[2], coup_functions, True,
                                       system_converger=True, label=sys_opt_label, converger_is_optimizer=True)
                 # Connect optimizer
@@ -5993,7 +5993,6 @@ class MdaoDataGraph(DataGraph, MdaoMixin):
         couplings = self.get_direct_coupling_nodes(func_order, direction=direction, print_couplings=False)
 
         # Manipulate the coupling nodes accordingly
-        idx = 0
         for coupling in couplings:
             if system_converger:
                 assert 'coupled_functions_groups' in self.graph['problem_formulation'], 'Graph is not partitioned'
@@ -6034,7 +6033,6 @@ class MdaoDataGraph(DataGraph, MdaoMixin):
                 self.add_edge(coupling[2], converger)
             # If the converger node is an optimizer (IDF), then connect it accordingly
             elif self.nodes[converger]['architecture_role'] == self.ARCHITECTURE_ROLES_FUNS[1]:
-                idx += 1
                 # Connect initial guess as input to the optimizer
                 self.add_edge(ini_guess_node, converger)
                 # Create coupling copy variable (coming from converger/optimizer) and connect it accordingly
@@ -6042,16 +6040,18 @@ class MdaoDataGraph(DataGraph, MdaoMixin):
                 if not self.has_edge(converger, coupling_copy_node):
                     self.add_edge(converger, coupling_copy_node)
                 self.copy_edge((coupling[2], coupling[1]), (coupling_copy_node, coupling[1]))
+                # Create equation label
+                equation_label = coupling[2].split('/')[-1]
                 # Connect original and copied coupling node to the consistency constraint function
-                self.add_edge(coupling[2], self.CONSCONS_STRING, equation_label='y{}'.format(idx))
-                self.add_edge(coupling_copy_node, self.CONSCONS_STRING, equation_label='y{}c'.format(idx))
+                self.add_edge(coupling[2], self.CONSCONS_STRING, equation_label=equation_label)
+                self.add_edge(coupling_copy_node, self.CONSCONS_STRING, equation_label=equation_label+'c')
                 # Make original coupling node a design variable
                 self.mark_as_design_variable(coupling[2])
                 # Create consistency constraint variables for each coupling and make them output of the function
                 consistency_node = self.copy_node_as(coupling[2], self.ARCHITECTURE_ROLES_VARS[6])
                 self.mark_as_constraint(consistency_node, '==', 0.0)
                 self.add_edge(self.CONSCONS_STRING, consistency_node)
-                self.add_equation((self.CONSCONS_STRING, consistency_node), 'y{}-y{}c'.format(idx, idx), 'Python')
+                self.add_equation((self.CONSCONS_STRING, consistency_node), '{0}-{0}c'.format(equation_label), 'Python')
                 if 'consistency_nodes' in self.nodes[self.CONSCONS_STRING]:
                     self.nodes[self.CONSCONS_STRING]['consistency_nodes'].append(consistency_node)
                 else: