diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/conv_config.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/conv_config.jinja
index 6a48f2b55c4889829823f0abf095cff40ebecc71..cea1af7109f604bfe31b844a758474b5cade3d1d 100644
--- a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/conv_config.jinja
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/conv_config.jinja
@@ -2,8 +2,7 @@
 #ifndef {{ name|upper }}_LAYER_H
 #define {{ name|upper }}_LAYER_H
 
-#include "typedefs.h"
-#include "nn_scaling_functions.hpp"
+#include "kernels/nn_scaling_functions.hpp"
 
 {% include "./_def_io.jinja" %}
 {% include "./_meminfo.jinja" %}
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/fc_config.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/fc_config.jinja
index ab33588ca642d54e6fb5fcc58fe7a5279d4ddb32..ba84b82a9d85bea686aca366b47067c016cf103e 100644
--- a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/fc_config.jinja
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/fc_config.jinja
@@ -2,8 +2,7 @@
 #ifndef {{ name|upper }}_LAYER_H
 #define {{ name|upper }}_LAYER_H
 
-#include "typedefs.h"
-#include "nn_scaling_functions.hpp"
+#include "kernels/nn_scaling_functions.hpp"
 
 {# For layer configuration -#}
 {% include "./_def_io.jinja" %}
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/pool_config.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/pool_config.jinja
index 02586f2958896397b5d6b18cdc6f1ddfa27f476e..363e6f9bcd3f83460a3a2533ce6e243c887442fd 100644
--- a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/pool_config.jinja
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/pool_config.jinja
@@ -2,7 +2,7 @@
 #ifndef {{ name|upper }}_LAYER_H
 #define {{ name|upper }}_LAYER_H
 
-#include "typedefs.h"
+{# #include "typedefs.h" #}
 
 {# For layer configuration -#}
 {% include "./_def_io.jinja" %}
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_conv_kernel.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_conv_kernel.jinja
new file mode 100644
index 0000000000000000000000000000000000000000..b7dc7bd3ff2ab65d61d5f58af4bff1780dd15444
--- /dev/null
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_conv_kernel.jinja
@@ -0,0 +1,17 @@
+{% filter indent(width=4, first=False) %}
+{% include "./_mem_offset.jinja" %}
+N2D2_Export::customconvcellPropagate<{{ in_name[0]|upper }}_NB_CHANNELS,
+                               {{ in_name[0]|upper }}_IN_HEIGHT,
+                               {{ in_name[0]|upper }}_IN_WIDTH,
+                               {{ out_name[0]|upper }}_NB_OUTPUTS,
+                               {{ out_name[0]|upper }}_OUT_HEIGHT,
+                               {{ out_name[0]|upper }}_OUT_WIDTH,
+                               {{ name|upper }}_PADDING_Y,
+                               {{ name|upper }}_PADDING_X,
+                               {{ name|upper }}_STRIDE_Y,
+                               {{ name|upper }}_STRIDE_X,
+                               {{ name|upper }}_KERNEL_HEIGHT,
+                               {{ name|upper }}_KERNEL_WIDTH,
+                               {{ name|upper }}_ACTIVATION, data<32>>
+                               ({{in_name[0]}}, {{out_name[0]}}, {{in_name[2]}}, {{in_name[1]}}, {{ name|upper }}_SCALING);
+{% endfilter %}
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_fc_kernel.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_fc_kernel.jinja
new file mode 100644
index 0000000000000000000000000000000000000000..7de26494bc8ae6d6edad687b6e6d150d82b50821
--- /dev/null
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_fc_kernel.jinja
@@ -0,0 +1,12 @@
+{% filter indent(width=4, first=False) %}
+{% include "./_mem_offset.jinja" %}
+N2D2_Export::fccellPropagate<{{ in_name[0] | upper }}_NB_CHANNELS,
+                             {{ in_name[0] | upper }}_IN_HEIGHT,
+                             {{ in_name[0] | upper }}_IN_WIDTH,
+                             {{ out_name[0] | upper }}_NB_OUTPUTS,
+                             {{ out_name[0] | upper }}_OUT_HEIGHT,
+                             {{ out_name[0] | upper }}_OUT_WIDTH,
+                             {{name|upper}}_ACTIVATION,
+                             data<32>>
+                             ({{ in_name[0] }}, {{ out_name[0] }}, {{ in_name[2] }}, {{ in_name[1] }}, {{ name | upper }}_SCALING);
+{% endfilter %}
\ No newline at end of file
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_pool_kernel.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_pool_kernel.jinja
new file mode 100644
index 0000000000000000000000000000000000000000..5fe2d352bc28ed09534c0433ef0fc1d9866e037d
--- /dev/null
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/custom_pool_kernel.jinja
@@ -0,0 +1,18 @@
+{% filter indent(width=4, first=False) %}
+{% include "./_mem_offset.jinja" %}
+N2D2_Export::custompoolcellPropagate<{{ in_name[0]|upper }}_NB_CHANNELS,
+                               {{ in_name[0]|upper }}_IN_HEIGHT,
+                               {{ in_name[0]|upper }}_IN_WIDTH,
+                               {{ out_name[0]|upper }}_NB_OUTPUTS,
+                               {{ out_name[0]|upper }}_OUT_HEIGHT,
+                               {{ out_name[0]|upper }}_OUT_WIDTH,
+                               {{ name|upper }}_PADDING_Y,
+                               {{ name|upper }}_PADDING_X,
+                               {{ name|upper }}_STRIDE_Y,
+                               {{ name|upper }}_STRIDE_X,
+                               {{ name|upper }}_KERNEL_HEIGHT,
+                               {{ name|upper }}_KERNEL_WIDTH,
+                               {{ name|upper }}_POOLING_TYPE,
+                               {{ name|upper }}_ACTIVATION>
+                               ({{in_name[0]}}, {{out_name[0]}});
+{% endfilter %}
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/forward.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/forward.jinja
new file mode 100644
index 0000000000000000000000000000000000000000..fa87a657c4dfec6c2ad5da2fb35b03b443e1b8fc
--- /dev/null
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/forward.jinja
@@ -0,0 +1,43 @@
+
+#include <stdint.h>
+
+#ifdef SAVE_OUTPUTS
+#include <sys/types.h>
+#include <sys/stat.h>
+#endif
+
+#include "include/forward.hpp"
+
+// Layer & memory configurations
+{%- for header in headers %}
+#include "{{ header }}"
+{%- endfor %}
+
+// blabla
+
+// Memory block
+{%- if mem_section == None %}
+static {{mem_ctype}} mem[{{peak_mem}}];
+{%- else %}
+static {{mem_ctype}} mem[{{peak_mem}}] __attribute__((section("{{ mem_section }}")));
+{%- endif %}
+
+{# Forward function #}
+{#- Support multiple inputs with different datatypes and multiple outputs with different datatypes -#}
+void {{ func_name }} (
+    {%- for i in range(inputs_name | length) -%}
+    const {{ inputs_dtype[i] }}* {{ inputs_name[i] }},
+    {%- endfor -%}
+    {%- for o in range(outputs_name | length) -%}
+    {{ outputs_dtype[o] }}** {{ outputs_name[o] }}_ptr{% if not loop.last %}, {% endif %}
+    {%- endfor -%})
+{
+
+    {%- for action in actions %}
+    {{ action }}
+    {%- endfor %}
+
+    {%- for output_name in outputs_name %}
+    *{{ output_name }}_ptr = {{ output_name }};
+    {%- endfor %}
+}