diff --git a/aidge_export_arm_cortexm/operators.py b/aidge_export_arm_cortexm/operators.py
index 2903edefc53199337fb4a658a6fc27ac2ed6b7cc..521cb36e42520ec069be6c2e8b9b66ee7b2cb442 100644
--- a/aidge_export_arm_cortexm/operators.py
+++ b/aidge_export_arm_cortexm/operators.py
@@ -269,9 +269,7 @@ class ReLU_ARMCortexM_float32(ExportNodeCpp):
 
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "relu.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Relu" / "aidge_relu_float32.h"),
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Relu" / "aidge_relu_float32.h")
 
 @ExportLibAidgeARM.register("Conv2D", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class Conv_ARMCortexM_float32(ExportNodeCpp):
@@ -286,15 +284,13 @@ class Conv_ARMCortexM_float32(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "conv_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "conv_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "Conv.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp"),
-            # str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h"),
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "Conv.hpp")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h", fwd_include=False)
 
 @ExportLibAidgeARM.register_generic("ArmPadConv2D", aidge_core.ImplSpec([
                                                                 aidge_core.IOSpec(aidge_core.dtype.any),               # Input[0] : Input Spec
@@ -334,17 +330,16 @@ class PadConvScaling_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "conv_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "lowbit_conv_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "LowbitConv.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "subkernels_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "LowbitConv.hpp")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "subkernels_functions.hpp", fwd_include=False),
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h", fwd_include=False)
+        
 
 
 @ExportLibAidgeARM.register_generic("ArmConv2D", aidge_core.ImplSpec([
@@ -384,17 +379,15 @@ class ConvScaling_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "conv_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "lowbit_conv_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "LowbitConv.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "subkernels_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "LowbitConv.hpp")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "subkernels_functions.hpp", fwd_include=False),
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h", fwd_include=False)
 
 
 @ExportLibAidgeARM.register_generic("ArmFC", aidge_core.ImplSpec([
@@ -424,17 +417,15 @@ class FCScaling_ARMCortexM_int4(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "fc_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "lowbit_fc_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "FullyConnected" / "LowbitFc.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "subkernels_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "FullyConnected" / "LowbitFc.hpp")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "subkernels_functions.hpp", fwd_include=False),
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h", fwd_include=False)
 
 # FIXME This take the precedence on float32 kernel due to poor management of IOSpec
 # Need to update the IOSpec
@@ -492,17 +483,15 @@ class Conv_ARMCortexM_int4(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "conv_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "lowbit_conv_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "LowbitConv.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "subkernels_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "LowbitConv.hpp")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "subkernels_functions.hpp", fwd_include=False),
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h", fwd_include=False)
 
 @ExportLibAidgeARM.register("ConvDepthWise2D", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class ConvDW_ARMCortexM(ExportNodeCpp):
@@ -517,9 +506,7 @@ class ConvDW_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "conv_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "conv_dw_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "ConvDW.hpp")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "ConvDW.hpp")
 
 @ExportLibAidgeARM.register_metaop("PaddedConvDepthWise2D", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class PaddedConvDW_ARMCortexM(ExportNodeCpp):
@@ -542,9 +529,7 @@ class PaddedConvDW_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "conv_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "conv_dw_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "ConvDW.hpp")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "ConvDW.hpp")
 
 
 
@@ -569,9 +554,7 @@ class PaddedConv_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "conv_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "conv_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "Conv.hpp")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Convolution" / "Conv.hpp")
 
 
 class Pooling_ARMCortexM(ExportNodeCpp):
@@ -586,10 +569,8 @@ class Pooling_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "pool_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "pool_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Pooling" / "Pooling.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Pooling" / "Pooling.hpp")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp", fwd_include=False)
         self.kernel = node.get_operator().attr.kernel_dims
         self.stride = node.get_operator().attr.stride_dims
 
@@ -607,15 +588,13 @@ class FC_ARMCortexM_float32(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "fc_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "fc_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "FullyConnected" / "Fc.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp"),
-            # str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "FullyConnected" / "Fc.hpp")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp", fwd_include=False)
+        # self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h", fwd_include=False)
 
 @ExportLibAidgeARM.register("MaxPooling2D", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class MaxPooling_ARMCortexM(Pooling_ARMCortexM):
@@ -643,15 +622,13 @@ class FC_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "fc_config.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "fc_kernel.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "FullyConnected" / "Fc.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp"),
-            # str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "FullyConnected" / "Fc.hpp")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "Macs.hpp", fwd_include=False)
+        # self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "swar_arm_acle.h", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "nn_scaling_functions.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "typedefs.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "utils.hpp", fwd_include=False)
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "assert.h", fwd_include=False)
 
 @ExportLibAidgeARM.register("Add", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class Add_ARMCortexM(ExportNodeCpp):
@@ -661,10 +638,8 @@ class Add_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "add.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "add.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Add" / "aidge_add_float32.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Add" / "aidge_add_float32.h")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h", fwd_include=False)
 
 @ExportLibAidgeARM.register("Sub", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class Sub_ARMCortexM(ExportNodeCpp):
@@ -674,10 +649,8 @@ class Sub_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "sub.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "sub.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Sub" / "aidge_sub_float32.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Sub" / "aidge_sub_float32.h")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h", fwd_include=False)
 
 @ExportLibAidgeARM.register("Mul", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class Mul_ARMCortexM(ExportNodeCpp):
@@ -687,10 +660,8 @@ class Mul_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "mul.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "mul.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Mul" / "aidge_mul_float32.h"),
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h")
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Mul" / "aidge_mul_float32.h")
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Utils" / "aidge_supportfunctions.h", fwd_include=False)
 
 @ExportLibAidgeARM.register("Softmax", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class Softmax_ARMCortexM(ExportNodeCpp):
@@ -699,9 +670,7 @@ class Softmax_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "softmax.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "softmax.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Softmax" / "aidge_softmax_chw_float32.h"),
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Softmax" / "aidge_softmax_chw_float32.h")
 
 @ExportLibAidgeARM.register("Atan", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class Atan_ARMCortexM(ExportNodeCpp):
@@ -711,9 +680,7 @@ class Atan_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "atan.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "atan.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Atan" / "aidge_atan.hpp"),
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Atan" / "aidge_atan.hpp")
 
 
 @ExportLibAidgeARM.register("Slice", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
@@ -724,9 +691,7 @@ class Slice_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "slice.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "slice.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Slice" / "aidge_slice_float32.hpp"),
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Slice" / "aidge_slice_float32.hpp")
 
 @ExportLibAidgeARM.register("Concat", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class Concat_ARMCortexM(ExportNodeCpp):
@@ -736,9 +701,7 @@ class Concat_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "concat.jinja")
         self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "concat.jinja")
         self.include_list = []
-        self.kernels_to_copy = [
-            str(ROOT / "_Aidge_Arm" / "kernels" / "Concat" / "aidge_concat_float32.hpp"),
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Concat" / "aidge_concat_float32.hpp")
 
 @ExportLibAidgeARM.register("Sigmoid", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class Sigmoid_ARMCortexM(ExportNodeCpp):
@@ -749,9 +712,7 @@ class Sigmoid_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "activation.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" / "Sigmoid" / "aidge_sigmoid_float32.h"),
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Sigmoid" / "aidge_sigmoid_float32.h")
 
 @ExportLibAidgeARM.register("MatMul", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class MatMul_ARMCortexM(ExportNodeCpp):
@@ -761,6 +722,4 @@ class MatMul_ARMCortexM(ExportNodeCpp):
         self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "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" / "Matmul" / "aidge_matmul_chw_float32.h"),
-        ]
+        self.add_kernel_to_copy(ROOT / "_Aidge_Arm" / "kernels" / "Matmul" / "aidge_matmul_chw_float32.h")