diff --git a/aidge_export_arm_cortexm/operators.py b/aidge_export_arm_cortexm/operators.py
index 63bb7d341863d7881d4454fc802736b16896d19c..bbc111d3d12845e8c20f3fc367d943b7fafa5eb5 100644
--- a/aidge_export_arm_cortexm/operators.py
+++ b/aidge_export_arm_cortexm/operators.py
@@ -56,7 +56,7 @@ class Producer_ARMCortexM(ExportNode):
             self.values = np.transpose(self.values, (0, 2, 3, 1))
 
     def export(self, export_folder: Path):
-        header_path = f"include/parameters/{self.attributes['name']}.h"
+        header_path = f"include/parameters/{self.attributes['name']}.hpp"
         export_params(
             self.attributes['out_name'][0],
             self.values.reshape(-1),
@@ -180,15 +180,15 @@ class Scaling():
 @operator_register(ExportLibAidgeARM, "ReLU")
 class ReLU_ARMCortexM(ExportNodeCpp):
     def __init__(self, node, mem_info, is_input, is_output):
-        super().__init__(node)
+        super().__init__(node, mem_info, is_input, is_output)
         self.attributes["activation_type"] = "RELU"
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "relu.jinja")
 
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "relu.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "relu.jinja")
         self.include_list = []
         self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Activation" / "Relu" / "aidge_relu_float32.c"),
+            str(ROOT / "_Aidge_Arm" / "kernels" / "Relu" / "aidge_relu_float32.c"),
         ]
     @classmethod
     def exportable(cls, node):
@@ -205,7 +205,7 @@ class Conv_ARMCortexM(ExportNodeCpp):
         self.attributes["padding"] = [0, 0]
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "conv_config.jinja")
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "conv_kernel.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "conv_kernel.jinja")
         self.include_list = []
         self.kernels_to_copy = []
     @classmethod
@@ -231,7 +231,7 @@ class PaddedConv_ARMCortexM(ExportNodeCpp):
                 ).attr.dilation_dims
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "conv_config.jinja")
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "conv_kernel.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "conv_kernel.jinja")
         self.include_list = []
         self.kernels_to_copy = []
     @classmethod
@@ -251,7 +251,7 @@ class Pooling_ARMCortexM(ExportNodeCpp):
         self.attributes["padding"] = [0, 0]
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "pool_config.jinja")
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "pool_kernel.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "pool_kernel.jinja")
         self.include_list = []
         self.kernels_to_copy = []
         self.kernel = node.get_operator().attr.kernel_dims
@@ -271,7 +271,7 @@ class FC_ARMCortexM(ExportNodeCpp):
         self.attributes["padding"] = [0, 0]
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "fc_config.jinja")
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "fc_kernel.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "fc_kernel.jinja")
         self.include_list = []
         self.kernels_to_copy = []
     @classmethod
@@ -302,9 +302,11 @@ class FC_ARMCortexM(ExportNodeCpp):
         self.attributes["padding"] = [0, 0]
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "fc_config.jinja")
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "fc_kernel.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "fc_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = []
+        self.kernels_to_copy = [
+            str(ROOT / "_Aidge_Arm" / "kernels" / "FullyConnected" / "Fc.hpp")
+        ]
 
 @operator_register(ExportLibAidgeARM, "Add")
 class Add_ARMCortexM(ExportNodeCpp):
@@ -313,11 +315,11 @@ class Add_ARMCortexM(ExportNodeCpp):
         self.attributes["elemwise_op"] = "\"ADD\""
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "elemwise.jinja")
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "elemwise.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "elemwise.jinja")
         self.include_list = []
         self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "ElemWise" / "Add" / "aidge_add_float32.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "SupportFunctions" / "aidge_supportfunctions.h")
+            str(ROOT / "_Aidge_Arm" / "kernels" / "Add" / "aidge_add_float32.h"),
+            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h")
         ]
 
 @operator_register(ExportLibAidgeARM, "Mul")
@@ -327,11 +329,11 @@ class Mul_ARMCortexM(ExportNodeCpp):
         self.attributes["elemwise_op"] = "\"MUL\""
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "elemwise.jinja")
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "elemwise.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "elemwise.jinja")
         self.include_list = []
         self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "ElemWise" / "Add" / "aidge_mul_float32.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "SupportFunctions" / "aidge_supportfunctions.h")
+            str(ROOT / "_Aidge_Arm" / "kernels" / "Mul" / "aidge_mul_float32.h"),
+            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h")
         ]
 
 @operator_register(ExportLibAidgeARM, "Softmax")
@@ -341,10 +343,10 @@ class Softmax_ARMCortexM(ExportNodeCpp):
         self.attributes["activation_type"] = "\"SOFTMAX\""
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "activation.jinja")
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "activation_chw.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "activation_chw.jinja")
         self.include_list = []
         self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "ElemWise" / "Add" / "aidge_softmax_chw_float32.h"),
+            str(ROOT / "_Aidge_Arm" / "kernels" / "Softmax" / "aidge_softmax_chw_float32.h"),
         ]
 
 @operator_register(ExportLibAidgeARM, "Sigmoid")
@@ -354,10 +356,10 @@ class Sigmoid_ARMCortexM(ExportNodeCpp):
         self.attributes["activation_type"] = "\"SIGMOID\""
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "activation.jinja")
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "activation_chw.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "activation_chw.jinja")
         self.include_list = []
         self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "ElemWise" / "Add" / "aidge_sigmoid_float32.h"),
+            str(ROOT / "_Aidge_Arm" / "kernels" / "Sigmoid" / "aidge_sigmoid_float32.h"),
         ]
 
 @operator_register(ExportLibAidgeARM, "MatMul")
@@ -366,10 +368,10 @@ class MatMul_ARMCortexM(ExportNodeCpp):
         super().__init__(node, mem_info, is_input, is_output)
 
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "matmul.jinja")
-        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "matmul.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "matmul.jinja")
         self.include_list = []
         self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "ElemWise" / "Add" / "aidge_matmul_chw_float32.h"),
+            str(ROOT / "_Aidge_Arm" / "kernels" / "Matmul" / "aidge_matmul_chw_float32.h"),
         ]
 
 
@@ -443,7 +445,7 @@ class MatMul_ARMCortexM(ExportNodeCpp):
 #         if self.library == "aidge":
 
 #             list_actions.append(generate_str(
-#                 str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "batchnorm2d.jinja"),
+#                 str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "batchnorm2d.jinja"),
 #                 name=self.name,
 #                 dataformat=self.dataformat,
 #                 input_name=self.inputs[0].name(),
@@ -492,7 +494,7 @@ class MatMul_ARMCortexM(ExportNodeCpp):
 
 #         if self.library == "aidge":
 #             list_actions.append(generate_str(
-#                 str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "reshape.jinja"),
+#                 str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "reshape.jinja"),
 #                 name=self.name,
 #                 dataformat=self.dataformat,
 #                 input_name=self.inputs[0].name(),
@@ -548,7 +550,7 @@ class MatMul_ARMCortexM(ExportNodeCpp):
 
 #         if self.library == "aidge":
 #             list_actions.append(generate_str(
-#                 str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "gather.jinja"),
+#                 str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "gather.jinja"),
 #                 name=self.name,
 #                 dataformat=self.dataformat,
 #                 input_name=self.inputs[0].name(),
@@ -607,7 +609,7 @@ class MatMul_ARMCortexM(ExportNodeCpp):
 
 #         if self.library == "aidge":
 #             list_actions.append(generate_str(
-#                 str(ROOT / "_Aidge_Arm" / "templates" / "kernel" / "transpose.jinja"),
+#                 str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "transpose.jinja"),
 #                 name=self.name,
 #                 dataformat=self.dataformat,
 #                 input_name=self.inputs[0].name(),