diff --git a/aidge_export_cpp/__init__.py b/aidge_export_cpp/__init__.py
index 458aa76530daed925daba6f42d415bb5102198d5..aad1f5068c9ae43efb1785a2dbe647bc1c75147d 100644
--- a/aidge_export_cpp/__init__.py
+++ b/aidge_export_cpp/__init__.py
@@ -45,15 +45,19 @@ def export(export_folder, graphview, scheduler):
     list_configs = []
     
     list_forward_nodes = scheduler.get_static_scheduling()
+    list_op = {}
     
-    for node in list_forward_nodes:
+    for node in graphview.get_nodes():
         if node.type() in supported_operators():
             op = EXPORT_CPP_REGISTRY[node.type()](node)
+            list_op[node.name()] = op
         else:
             continue
 
         list_configs = op.export(dnn_folder, list_configs)
-        list_actions = op.forward(list_actions)
+
+    for node in list_forward_nodes:
+        list_actions = list_op[node.name()].forward(list_actions)
 
     
     # Memory management
diff --git a/aidge_export_cpp/operators.py b/aidge_export_cpp/operators.py
index bc7a16b188f12de77cab6c1e00abc10e8e8dbda8..3cc127f61dd4ae065f1b7fc19a9eea6610803f6c 100644
--- a/aidge_export_cpp/operators.py
+++ b/aidge_export_cpp/operators.py
@@ -241,9 +241,8 @@ class ReLUCPP(ExportNode):
     def __init__(self, node):
         super().__init__(node)
 
-        self.input_dims = self.input.get_operator().output(0).dims()
         self.nb_data = 1
-        for i in self.input_dims:
+        for i in self.inputs_dims[0]:
             self.nb_data *= i
 
     def export(self, export_folder:str, list_configs:list):
@@ -270,7 +269,7 @@ class ReLUCPP(ExportNode):
         list_actions.append(generate_action(
             KERNELS_FORWARD.ACTIVATION,
             name=self.name,
-            input_name=self.input[0].name(),
+            input_name=self.inputs[0].name(),
             output_name=self.name
         ))
         return list_actions
@@ -367,6 +366,14 @@ class FcCPP(ExportNode):
     def __init__(self, node):
         super().__init__(node)
 
+        if len(self.inputs_dims[0]) == 2:
+            self.inputs_dims[0] = [self.inputs_dims[0][1], 1, 1]
+        elif len(self.inputs_dims[0]) == 4:
+            self.inputs_dims[0] = self.inputs_dims[0][1:]
+
+        if len(self.outputs_dims[0]) == 2:
+            self.outputs_dims[0] = [self.outputs_dims[0][1], 1, 1]
+
     def export(self, export_folder:str, list_configs:list):
 
         copyfile(KERNELS.FC, f"{export_folder}/include/kernels/")
@@ -382,6 +389,10 @@ class FcCPP(ExportNode):
             output_dims=self.outputs_dims[0],
             activation="Linear",
             rescaling="NoScaling")
+        
+        print(self.name)
+        print(self.inputs_dims[0])
+        print(self.outputs_dims[0])
 
         # TODO : replace this by producer node export !
         # for i in range(len(self.parameters)):
@@ -408,3 +419,23 @@ class FcCPP(ExportNode):
             biases_name=self.inputs[2].name()
         ))
         return list_actions
+
+
+@export_cpp_register("Producer")
+class ProducerCPP(ExportNode):
+    def __init__(self, node):
+        super().__init__(node)
+
+        self.values = np.array(self.operator.output(0))
+
+    def export(self, export_folder:str, list_configs:list):
+        
+        list_configs.append(f"parameters/{self.name}.h")
+        export_to_static(self.name,
+                            self.values.reshape(-1),
+                            f"{export_folder}/parameters/{self.name}.h")
+            
+        return list_configs
+    
+    def forward(self, list_actions:list):
+        return list_actions
\ No newline at end of file