diff --git a/topology.py b/topology.py
index cfb0478ab89dbdf6961d60ad7d056843a81c5f02..0fa52ff717bd820dc39e76f8ef7d2ba54bf2fe79 100644
--- a/topology.py
+++ b/topology.py
@@ -117,57 +117,77 @@ class Topology:
                 output_commodity_2,
             ) = component.get_input_output_commodities()
             if input_commodity_1 != None:
-                self._connectors[component_name + ".input_1"] = Connector(
+                self._connectors[component_name, "input_1"] = Connector(
                     component_name + ".input_1"
                 )
             if input_commodity_2 != None:
-                self._connectors[component_name + ".input_2"] = Connector(
+                self._connectors[component_name, "input_2"] = Connector(
                     component_name + ".input_2"
                 )
             if output_commodity_1 != None:
-                self._connectors[component_name + ".output_1"] = Connector(
+                self._connectors[component_name, "output_1"] = Connector(
                     component_name + ".output_1"
                 )
             if output_commodity_2 != None:
-                self._connectors[component_name + ".output_2"] = Connector(
+                self._connectors[component_name, "output_2"] = Connector(
                     component_name + ".output_2"
                 )
 
-        self._flows = []
         self._connections = []
         self._connections_map = dict()
 
         for connection in configuration["connections"]:
             index = len(self._connections)
             if connection["type"] == "OneToOne":
-                flow_from = connection["from"]
-                in_flow = flow_from + "_" + str(index)
-                self._flows.append(in_flow)
-                connector_from = self._connectors[flow_from]
+                flow_from = connection["from"].split(".")
+                flow_from_component = flow_from[0]
+                flow_from_connector = flow_from[1]
+                in_flow = (
+                    flow_from_component + "." + flow_from_connector + "__" + str(index)
+                )
+                connector_from = self._connectors[
+                    flow_from_component, flow_from_connector
+                ]
                 connector_from.flows.append(in_flow)
                 # connector_from.other_sides.append(index)
                 in_flows = [in_flow]
-                flow_to = connection["to"]
-                out_flow = str(index) + "_" + flow_to
-                self._flows.append(out_flow)
-                connector_to = self._connectors[flow_to]
+                flow_to = connection["to"].split(".")
+                flow_to_component = flow_to[0]
+                flow_to_connector = flow_to[1]
+                out_flow = (
+                    str(index) + "__" + flow_to_component + "." + flow_to_connector
+                )
+                connector_to = self._connectors[flow_to_component, flow_to_connector]
                 connector_to.flows.append(out_flow)
                 # connector_to.other_sides.append(index)
                 out_flows = [out_flow]
-                self._connections_map[flow_from, flow_to] = index
+                self._connections_map[connection["from"], connection["to"]] = index
             elif connection["type"] == "Sum":
                 in_flows = []
                 out_flows = []
                 for member in connection["members"]:
+                    temp = member.split(".")
+                    member_component = temp[0]
+                    member_connector = temp[1]
                     if "output" in member:
-                        flow = member + "_" + str(index)
-                        self._flows.append(flow)
+                        flow = (
+                            member_component
+                            + "."
+                            + member_connector
+                            + "__"
+                            + str(index)
+                        )
                         in_flows.append(flow)
                     else:
-                        flow = str(index) + "_" + member
-                        self._flows.append(flow)
+                        flow = (
+                            str(index)
+                            + "__"
+                            + member_component
+                            + "."
+                            + member_connector
+                        )
                         out_flows.append(flow)
-                    connector = self._connectors[member]
+                    connector = self._connectors[member_component, member_connector]
                     connector.flows.append(flow)
                     # connector.other_sides.append(index)
             if "loss_factor" in connection:
@@ -403,10 +423,10 @@ class Topology:
             self._components[component].add_state_model(d_block, o_block, s_block)
             self._components[component].add_additional_model_logic(d_block, o_block)
 
-        for flow in self._flows:
-            o_block.add(flow, pyo.Var(o_block.T, bounds=(0, None)))
-
         for connector in self._connectors.values():
+            for flow in connector.flows:
+                o_block.add(flow, pyo.Var(o_block.T, bounds=(0, None)))
+
             connector_var = o_block.component_dict[connector.name]
 
             def rule(m, t):
@@ -547,8 +567,9 @@ class Topology:
                     self._components[component].state_base_variable_names()
                 )
 
-            for flow in self._flows:
-                base_variable_names.append((flow, VariableKind.INDEXED))
+            for connector in self._connectors.values():
+                for flow in connector.flows:
+                    base_variable_names.append((flow, VariableKind.INDEXED))
 
             result = EntityResult(architecture)
             result.register_dynamic(architecture.dynamic, "", base_variable_names)
@@ -574,8 +595,9 @@ class Topology:
                     self._components[component].state_base_variable_names()
                 )
 
-            for flow in self._flows:
-                operational_base_variable_names.append((flow, VariableKind.INDEXED))
+            for connector in self._connectors.values():
+                for flow in connector.flows:
+                    operational_base_variable_names.append((flow, VariableKind.INDEXED))
 
             result.register_dynamic(
                 architecture.value_dynamic,