diff --git a/aidge_export_cpp/templates/configuration/_def_io.jinja b/aidge_export_cpp/templates/configuration/_def_io.jinja
index 9770465a0540a77052acc8ee1e1a618bc3e9491b..e8330d9fa1b156530ed1e3f460f669c2379e472a 100644
--- a/aidge_export_cpp/templates/configuration/_def_io.jinja
+++ b/aidge_export_cpp/templates/configuration/_def_io.jinja
@@ -1,8 +1,12 @@
 {# NOTE: Suppose input is first #}
-#define {{ name|upper }}_NB_CHANNELS {{ in_chan[0] }}
-#define {{ name|upper }}_CHANNELS_HEIGHT {{ in_height[0] }}
-#define {{ name|upper }}_CHANNELS_WIDTH {{ in_width[0] }}
-#define {{ name|upper }}_NB_OUTPUTS {{ out_chan[0] }}
-#define {{ name|upper }}_OUTPUTS_HEIGHT {{ out_height[0] }}
-#define {{ name|upper }}_OUTPUTS_WIDTH {{ out_width[0] }}
 
+{% for inidx in range(nb_in) -%}
+#define {{ in_name[inidx]|upper }}_NB_CHANNELS {{ in_chan[inidx] }}
+#define {{ in_name[inidx]|upper }}_IN_HEIGHT {{ in_height[inidx] }}
+#define {{ in_name[inidx]|upper }}_IN_WIDTH {{ in_width[inidx] }}
+{% endfor %}
+{% for outidx in range(nb_out) -%}
+#define {{ out_name[outidx]|upper }}_NB_OUTPUTS {{ out_chan[outidx] }}
+#define {{ out_name[outidx]|upper }}_OUT_HEIGHT {{ out_height[outidx] }}
+#define {{ out_name[outidx]|upper }}_OUT_WIDTH {{ out_width[outidx] }}
+{% endfor %}
diff --git a/aidge_export_cpp/templates/configuration/activation_config.jinja b/aidge_export_cpp/templates/configuration/activation_config.jinja
index 240e86bec4a9f2cdf33d12017437e064fc5a1812..f9535e7bebf50ad25bfd6defd79562d410addf5e 100644
--- a/aidge_export_cpp/templates/configuration/activation_config.jinja
+++ b/aidge_export_cpp/templates/configuration/activation_config.jinja
@@ -6,6 +6,7 @@
 {%- set nb_data = in_chan[0] * in_height[0] * in_width[0] %}
 #define {{ name|upper }}_NB_DATA {{ nb_data }}
 #define {{ name|upper }}_ACTIVATION {{ activation }}
+{% include "./_def_io.jinja" %}
 {% include "./_meminfo.jinja" %}
 static const {{ rescaling }} {{ name|upper }}_RESCALING = {};
 
diff --git a/aidge_export_cpp/templates/configuration/elemwise_config.jinja b/aidge_export_cpp/templates/configuration/elemwise_config.jinja
index 2c5c436de24aca803ef085284009afbb83b541fb..fc801f16806968bf9da86c6009532d84655125b3 100644
--- a/aidge_export_cpp/templates/configuration/elemwise_config.jinja
+++ b/aidge_export_cpp/templates/configuration/elemwise_config.jinja
@@ -2,6 +2,7 @@
 #ifndef {{ name|upper }}_LAYER_H
 #define {{ name|upper }}_LAYER_H
 
+{% include "./_def_io.jinja" %}
 {% include "./_meminfo.jinja" %}
 {# For layer configuration -#}
 #define {{ name|upper }}_NB_ELTS {{ in_dims[0]|join('*') }}
diff --git a/aidge_export_cpp/templates/configuration/leakyrelu_config.jinja b/aidge_export_cpp/templates/configuration/leakyrelu_config.jinja
index d8377de9c1913b8f9ac2536741ede94f461800b7..80903622d394bac9132ae3015f82ef72ac2242ea 100644
--- a/aidge_export_cpp/templates/configuration/leakyrelu_config.jinja
+++ b/aidge_export_cpp/templates/configuration/leakyrelu_config.jinja
@@ -3,6 +3,7 @@
 #define {{ name|upper }}_LAYER_H
 
 {# For layer configuration -#}
+{% include "./_def_io.jinja" %}
 {% include "./_meminfo.jinja" %}
 #define {{ name|upper }}_NB_DATA {{ nb_data }}
 #define {{ name|upper }}_ALPHA {{ alpha }}
diff --git a/aidge_export_cpp/templates/kernel_forward/_save_outputs.jinja b/aidge_export_cpp/templates/kernel_forward/_save_outputs.jinja
index 1b2a698b0493ac4a2c97c5098fe1ed76234e4e47..ddefc0c7bfbb5fc5e9298091f755b0438496fe53 100644
--- a/aidge_export_cpp/templates/kernel_forward/_save_outputs.jinja
+++ b/aidge_export_cpp/templates/kernel_forward/_save_outputs.jinja
@@ -1,18 +1,19 @@
-/* COMMENTED FOR THE MOMENT
+/*
 #ifdef SAVE_OUTPUTS
 {% for outidx in range(nb_out) -%}
     FILE* {{out_name[outidx]|upper}}_STREAM = fopen("outputs/{{out_name[outidx]}}.txt", "w");
-    saveOutputs(
+    saveOutputs<{{out_cdtype[outidx]}}>(
         {{out_name[outidx]|upper}}_NB_OUTPUTS,
-        {{out_name[outidx]|upper}}_OUTPUTS_HEIGHT,
-        {{out_name[outidx]|upper}}_OUTPUTS_WIDTH,
+        {{out_name[outidx]|upper}}_OUT_HEIGHT,
+        {{out_name[outidx]|upper}}_OUT_WIDTH,
         {{out_name[outidx]|upper}}_CONT_OFFSET,
         {{out_name[outidx]|upper}}_CONT_SIZE,
         {{out_name[outidx]|upper}}_WRAP_OFFSET,
         {{out_name[outidx]|upper}}_WRAP_SIZE,
         {{out_name[outidx]|upper}}_STRIDE,
         {{out_name[outidx]}},
-        {{out_name[outidx]|upper}}_STREAM, Network::Format::CHW);
+        {{out_name[outidx]|upper}}_STREAM,
+        Format::{{out_format[outidx]}});
     fclose({{out_name[outidx]|upper}}_STREAM);
 {% endfor %}
 #endif
diff --git a/aidge_export_cpp/templates/kernel_forward/batchnorm_forward.jinja b/aidge_export_cpp/templates/kernel_forward/batchnorm_forward.jinja
index 4bf5191b033bc952be43ca1799d13550a3a56b71..86dfb9be5e698ea1ea5d5220fdba24355c816c4e 100644
--- a/aidge_export_cpp/templates/kernel_forward/batchnorm_forward.jinja
+++ b/aidge_export_cpp/templates/kernel_forward/batchnorm_forward.jinja
@@ -1,6 +1,6 @@
-batchnorm_forward<{{name|upper}}_NB_OUTPUTS,
-                  {{name|upper}}_OUTPUTS_HEIGHT,
-                  {{name|upper}}_OUTPUTS_WIDTH,
+batchnorm_forward<{{ out_name[0]|upper }}_NB_OUTPUTS,
+                  {{ out_name[0]|upper }}_OUT_HEIGHT,
+                  {{ out_name[0]|upper }}_OUT_WIDTH,
                   {{name|upper}}_ACTIVATION>
                   ({{input_name}}, {{output_name}}, {{biases_name}}, {{variances_name}}, {{means_name}}, {{scales_name}}, {{name|upper}}_EPSILON);
 {% include "./_save_outputs.jinja" %}
diff --git a/aidge_export_cpp/templates/kernel_forward/convolution_forward.jinja b/aidge_export_cpp/templates/kernel_forward/convolution_forward.jinja
index e51fa3b4a9f4084f27085a29a59c00d1a8f140fb..59f218737082ad8a357672b18253b6d577365aa0 100644
--- a/aidge_export_cpp/templates/kernel_forward/convolution_forward.jinja
+++ b/aidge_export_cpp/templates/kernel_forward/convolution_forward.jinja
@@ -1,12 +1,12 @@
 {% if not is_output %}
 {{out_cdtype[0]}}* {{out_name[0]}} = ({{out_cdtype[0]}}*) mem + {{out_name[0]|upper}}_OFFSET;
 {% endif %}
-convolution_forward<{{name|upper}}_NB_CHANNELS,
-                    {{name|upper}}_CHANNELS_HEIGHT,
-                    {{name|upper}}_CHANNELS_WIDTH,
-                    {{name|upper}}_NB_OUTPUTS,
-                    {{name|upper}}_OUTPUTS_HEIGHT,
-                    {{name|upper}}_OUTPUTS_WIDTH,
+convolution_forward<{{ 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,
diff --git a/aidge_export_cpp/templates/kernel_forward/fullyconnected_forward.jinja b/aidge_export_cpp/templates/kernel_forward/fullyconnected_forward.jinja
index e0043ed9c794f1b222f8a496884505063498f7cc..bb1e5f4974e99dc424b36268b4f7bba6745a6804 100644
--- a/aidge_export_cpp/templates/kernel_forward/fullyconnected_forward.jinja
+++ b/aidge_export_cpp/templates/kernel_forward/fullyconnected_forward.jinja
@@ -1,12 +1,12 @@
 {% if not is_output %}
 {{out_cdtype[0]}}* {{out_name[0]}} = ({{out_cdtype[0]}}*) mem + {{out_name[0]|upper}}_OFFSET;
 {% endif %}
-fullyconnected_forward<{{name|upper}}_NB_CHANNELS,
-                       {{name|upper}}_CHANNELS_HEIGHT,
-                       {{name|upper}}_CHANNELS_WIDTH,
-                       {{name|upper}}_NB_OUTPUTS,
-                       {{name|upper}}_OUTPUTS_HEIGHT,
-                       {{name|upper}}_OUTPUTS_WIDTH,
+fullyconnected_forward<{{ 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>
                        ({{in_name[0]}}, {{out_name[0]}}, {{in_name[1]}}, {{in_name[2]}}, {{name|upper}}_RESCALING);
 {% include "./_save_outputs.jinja" %}
diff --git a/aidge_export_cpp/templates/kernel_forward/pooling_forward.jinja b/aidge_export_cpp/templates/kernel_forward/pooling_forward.jinja
index c70bba63781bf24aaae1b07ee1262c0c7b732b75..47973085549ba344478970fa60186c56f965481b 100644
--- a/aidge_export_cpp/templates/kernel_forward/pooling_forward.jinja
+++ b/aidge_export_cpp/templates/kernel_forward/pooling_forward.jinja
@@ -1,12 +1,12 @@
 {% if not is_output %}
 {{out_cdtype[0]}}* {{out_name[0]}} = ({{out_cdtype[0]}}*) mem + {{out_name[0]|upper}}_OFFSET;
 {% endif %}
-pooling_forward<{{name|upper}}_NB_CHANNELS,
-                {{name|upper}}_CHANNELS_HEIGHT,
-                {{name|upper}}_CHANNELS_WIDTH,
-                {{name|upper}}_NB_OUTPUTS,
-                {{name|upper}}_OUTPUTS_HEIGHT,
-                {{name|upper}}_OUTPUTS_WIDTH,
+pooling_forward<{{ 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,
diff --git a/aidge_export_cpp/templates/network/network_forward.jinja b/aidge_export_cpp/templates/network/network_forward.jinja
index 863fefd519b984e0bfb138c0fa76adfab0a21717..592e8c92bfaa5b67974791919553cb86005a2840 100644
--- a/aidge_export_cpp/templates/network/network_forward.jinja
+++ b/aidge_export_cpp/templates/network/network_forward.jinja
@@ -25,7 +25,7 @@ void model_forward({% for inp in inputs %}const {{inp[0]}}* {{inp[1]}}, {% endfo
 
     #ifdef SAVE_OUTPUTS
     // Creation of the outputs directory
-    struct stat st = {0};
+    struct stat st {};
     if (stat("outputs", &st) == -1) {
         mkdir("outputs", 0700);
     }