diff --git a/aidge_export_cpp/operators_old.py b/aidge_export_cpp/operators_old.py
deleted file mode 100644
index aa780fb293168800714d8fea827642510bc8597f..0000000000000000000000000000000000000000
--- a/aidge_export_cpp/operators_old.py
+++ /dev/null
@@ -1,474 +0,0 @@
-from aidge_core import ExportNode
-import numpy as np
-from jinja2 import Environment, FileSystemLoader
-import os
-import shutil
-from aidge_export_cpp.register import export_cpp_register
-
-dirpath = os.path.dirname(__file__)
-
-class KERNELS:
-    ACTIVATION = dirpath + "/kernels/activation.hpp"
-    BATCHNORM = dirpath + "/kernels/batchnorm.hpp"
-    CONV = dirpath + "/kernels/convolution.hpp"
-    ADD = dirpath + "/kernels/elemwise.hpp"
-    FC = dirpath + "/kernels//fullyconnected.hpp"
-    POOLING = dirpath + "/kernels/pooling.hpp"
-    LEAKYRELU = dirpath + "/kernels/leakyrelu.hpp"
-
-class KERNELS_FORWARD:
-    ACTIVATION = dirpath + "/templates/kernel_forward/activation_forward.jinja"
-    BATCHNORM = dirpath + "/templates/kernel_forward/batchnorm_forward.jinja"
-    CONV = dirpath + "/templates/kernel_forward/convolution_forward.jinja"
-    ADD = dirpath + "/templates/kernel_forward/elemwise_forward.jinja"
-    FC = dirpath + "/templates/kernel_forward/fullyconnected_forward.jinja"
-    POOLING = dirpath + "/templates/kernel_forward/pooling_forward.jinja"
-    LEAKYRELU = dirpath + "/templates/kernel_forward/leakyrelu_forward.jinja"
-
-class CONFIGURATIONS:
-    ACTIVATION = dirpath + "/templates/configuration/activation_config.jinja"
-    BATCHNORM = dirpath + "/templates/configuration/batchnorm_config.jinja"
-    CONV = dirpath + "/templates/configuration/convolution_config.jinja"
-    ADD = dirpath + "/templates/configuration/elemwise_config.jinja"
-    FC = dirpath + "/templates/configuration//fullyconnected_config.jinja"
-    POOLING = dirpath + "/templates/configuration/pooling_config.jinja"
-    LEAKYRELU = dirpath + "/templates/configuration/leakyrelu_config.jinja"
-
-##############################################
-############## Export functions ##############
-##############################################
-
-def generate_file(filename, templatename, **kwargs):
-
-    # Get directory name of the file
-    dirname = os.path.dirname(filename)
-
-    # If directory doesn't exist, create it
-    if not os.path.exists(dirname):
-        os.makedirs(dirname)
-
-    # Get directory name and name of the template
-    template_dir = os.path.dirname(templatename)
-    template_name = os.path.basename(templatename)
-
-    # Select template
-    template = Environment(loader=FileSystemLoader(template_dir)).get_template(template_name)
-
-    # Generate file
-    content = template.render(kwargs)
-    with open(filename, mode="w", encoding="utf-8") as message:
-        message.write(content)
-
-
-def generate_action(template_path, **kwargs):
-    dirname = os.path.dirname(template_path)
-    filename = os.path.basename(template_path)
-    template = Environment(loader=FileSystemLoader(dirname)).get_template(filename)
-    return template.render(kwargs)
-
-
-def copyfile(filename, dst_folder):
-
-    # If directory doesn't exist, create it
-    if not os.path.exists(dst_folder):
-        os.makedirs(dst_folder)
-
-    shutil.copy(filename, dst_folder)
-
-
-def export_to_static(name, array, filepath):
-
-    # Get directory name of the file
-    dirname = os.path.dirname(filepath)
-
-    # If directory doesn't exist, create it
-    if not os.path.exists(dirname):
-        os.makedirs(dirname)
-
-    generate_file(
-        filepath,
-        dirpath + "/templates/data/data_static.jinja",
-        dims = array.shape,
-        data_t = "float",
-        name = name,
-        values = array.tolist()
-    )
-
-
-##############################################
-################### Utils ####################
-##############################################
-
-def get_node_parents(node):
-    parents = []
-    for parent in node.get_parents():
-        if parent.type() != "Producer":
-            parents.append(parent)
-    return parents
-
-def get_producer_parents(node):
-    parents = []
-    for parent in node.get_parents():
-        if parent.type() == "Producer":
-            parents.append(parent)
-    return parents
-
-
-##############################################
-################### Actions ##################
-##############################################
-
-def set_up_output(name, datatype):
-    return f"{datatype}* {name} = ({datatype}*) mem + {name.upper()}_OFFSET;"
-
-
-##############################################
-############## Operators helper ##############
-##############################################
-
-@export_cpp_register("Conv")
-class ConvCPP(ExportNode):
-    def __init__(self, node):
-        super().__init__(node)
-
-        self.kernel = node.get_operator().get_attr("KernelDims")
-        self.stride = node.get_operator().get_attr("StrideDims")
-
-        # Not working anymore because Padding is a standalone operator
-        # self.padding = node.get_operator().get_attr("PaddingDims")
-        self.padding = [1, 1]
-        self.dilation = node.get_operator().get_attr("DilationDims")
-        self.nb_channels = node.get_operator().get_attr("InChannels")
-        self.nb_outputs = node.get_operator().get_attr("OutChannels")
-
-    def export(self, export_folder:str, list_configs:list):
-
-        copyfile(KERNELS.CONV, f"{export_folder}/include/kernels/")
-        copyfile(dirpath + "/kernels/macs.hpp", f"{export_folder}/include/kernels/")
-        copyfile(dirpath + "/kernels/activation.hpp", f"{export_folder}/include/kernels/")
-
-        list_configs.append("kernels/convolution.hpp")
-        list_configs.append(f"layers/{self.name}.h")
-        generate_file(
-            f"{export_folder}/layers/{self.name}.h",
-            CONFIGURATIONS.CONV,
-            name=self.name,
-            input_dims=self.inputs_dims[0][1:],
-            output_dims=self.outputs_dims[0][1:],
-            kernel=self.kernel,
-            stride=self.stride,
-            padding=self.padding,
-            dilation=self.dilation,
-            activation="Linear",
-            rescaling="NoScaling")
-
-        return list_configs
-
-    def forward(self, list_actions:list):
-
-        if not self.is_last:
-            list_actions.append(set_up_output(self.name, "float"))
-
-        list_actions.append(generate_action(
-            KERNELS_FORWARD.CONV,
-            name=self.name,
-            input_name=self.inputs[0].name(),
-            output_name=self.name,
-            weights_name=self.inputs[1].name(),
-            biases_name=self.inputs[2].name()
-        ))
-        return list_actions
-
-
-class BatchNormCPP:
-    def __init__(self, node):
-        self.name = node.name()
-        self.epsilon = node.get_operator().get_attr("Epsilon")
-
-        self.producers = get_producer_parents(node)
-
-        self.scales = np.array(self.producers[0].get_operator().get_output(0)).reshape(-1).tolist()
-        self.biases = np.array(self.producers[1].get_operator().get_output(0)).reshape(-1).tolist()
-        self.means = np.array(self.producers[2].get_operator().get_output(0)).reshape(-1).tolist()
-        self.vars = np.array(self.producers[3].get_operator().get_output(0)).reshape(-1).tolist()
-
-        parents = get_node_parents(node)
-        if len(parents) == 0:
-            self.input_name = "in"
-        else :
-            self.input_name = parents[0].name()
-
-    def export(self, export_folder:str, list_configs:list):
-        list_configs.append(f"layers/{self.name}.h")
-        generate_file(
-            f"{export_folder}/layers/{self.name}.h",
-            "tensorrt/templates/configuration/batchnorm_config.jinja",
-            name=self.name,
-            input_dims=[0, 0, 0],
-            output_dims=[0, 0, 0],
-            activation="Linear",
-            epsilon=self.epsilon)
-
-        # export the batchnorm parameters
-
-        return list_configs
-
-    def forward(self, list_actions:list):
-
-        list_actions.append(set_up_output(self.name, "float"))
-        list_actions.append(generate_action(
-            "cpp/templates/kernel_forward/batchnorm_forward.jinja",
-            name=self.name,
-            input_name=self.input_name,
-            output_name=self.name,
-            biases_name=self.producers[0].name(),
-            variances_name=self.producers[1].name(),
-            means_name=self.producers[2].name(),
-            scales_name=self.producers[3].name()
-        ))
-        return list_actions
-
-@export_cpp_register("ReLU")
-class ReLUCPP(ExportNode):
-    def __init__(self, node):
-        super().__init__(node)
-
-        self.nb_data = 1
-        for i in self.inputs_dims[0]:
-            self.nb_data *= i
-
-    def export(self, export_folder:str, list_configs:list):
-
-        copyfile(KERNELS.ACTIVATION, f"{export_folder}/include/kernels/")
-
-        list_configs.append("kernels/activation.hpp")
-        list_configs.append(f"layers/{self.name}.h")
-        generate_file(
-            f"{export_folder}/layers/{self.name}.h",
-            CONFIGURATIONS.ACTIVATION,
-            name=self.name,
-            nb_data=self.nb_data,
-            activation="Rectifier",
-            rescaling="NoScaling")
-
-        return list_configs
-
-    def forward(self, list_actions:list):
-
-        if not self.is_last:
-            list_actions.append(set_up_output(self.name, "float"))
-
-        list_actions.append(generate_action(
-            KERNELS_FORWARD.ACTIVATION,
-            name=self.name,
-            input_name=self.inputs[0].name(),
-            output_name=self.name
-        ))
-        return list_actions
-
-
-@export_cpp_register("LeakyReLU")
-class LeakyReLUCPP(ExportNode):
-    def __init__(self, node):
-        super().__init__(node)
-
-        self.alpha = node.get_operator().get_attr("NegativeSlope")
-
-        self.nb_data = 1
-        for i in self.inputs_dims[0]:
-            self.nb_data *= i
-
-    def export(self, export_folder:str, list_configs:list):
-
-        copyfile(KERNELS.LEAKYRELU, f"{export_folder}/include/kernels/")
-
-        list_configs.append("kernels/activation.hpp")
-        list_configs.append(f"layers/{self.name}.h")
-        generate_file(
-            f"{export_folder}/layers/{self.name}.h",
-            CONFIGURATIONS.LEAKYRELU,
-            name=self.name,
-            nb_data=self.nb_data,
-            alpha = self.alpha)
-
-        return list_configs
-
-    def forward(self, list_actions:list):
-
-        if not self.is_last:
-            list_actions.append(set_up_output(self.name, "float"))
-
-        list_actions.append(generate_action(
-            KERNELS_FORWARD.LEAKYRELU,
-            name=self.name,
-            input_name=self.inputs[0].name(),
-            output_name=self.name
-        ))
-        return list_actions
-
-
-class AddCPP:
-    def __init__(self, node):
-        self.name = node.name()
-        self.parents = get_node_parents(node)
-
-    def export(self, export_folder:str, list_configs:list):
-        list_configs.append(f"layers/{self.name}.h")
-        generate_file(
-            f"{export_folder}/layers/{self.name}.h",
-            CONFIGURATIONS.ADD,
-            name=self.name,
-            input_dims=[0, 0, 0],
-            output_dims=[0, 0, 0],
-            activation="Linear",
-            elemwise_op="Sum")
-
-        return list_configs
-
-    def forward(self, list_actions:list):
-
-        list_actions.append(set_up_output(self.name, "float"))
-        list_actions.append(generate_action(
-            "cpp/templates/kernel_forward/elemwise_forward.jinja",
-            name=self.name,
-            input1_name=self.parents[0].name(),
-            input2_name=self.parents[1].name(),
-            output_name=self.name
-        ))
-        return list_actions
-
-
-@export_cpp_register("MaxPooling")
-class MaxPoolCPP(ExportNode):
-    def __init__(self, node):
-        super().__init__(node)
-
-        self.kernel = node.get_operator().get_attr("KernelDims")
-        self.stride = node.get_operator().get_attr("StrideDims")
-
-        # Not supported by the core...
-        # self.padding = node.get_operator().get_attr("PaddingDims")
-        self.padding = [0, 0]
-
-    def export(self, export_folder:str, list_configs:list):
-
-        copyfile(KERNELS.POOLING, f"{export_folder}/include/kernels/")
-
-        list_configs.append("kernels/pooling.hpp")
-        list_configs.append(f"layers/{self.name}.h")
-        generate_file(
-            f"{export_folder}/layers/{self.name}.h",
-            CONFIGURATIONS.POOLING,
-            name=self.name,
-            input_dims=self.inputs_dims[0],
-            output_dims=self.outputs_dims[0],
-            kernel=self.kernel,
-            stride=self.stride,
-            padding=self.padding,
-            pool_type="Max",
-            activation="Linear")
-
-        return list_configs
-
-    def forward(self, list_actions:list):
-
-        if not self.is_last:
-            list_actions.append(set_up_output(self.name, "float"))
-
-        list_actions.append(generate_action(
-            KERNELS_FORWARD.POOLING,
-            name=self.name,
-            input_name=self.inputs[0].name(),
-            output_name=self.name
-        ))
-        return list_actions
-
-
-class GlobalAvgPoolCPP:
-    def __init__(self, node):
-
-        # node.get_operator().set_compute_output_dims(lambda x: [[x[0][0], x[0][1], 1, 1]])
-        pass
-
-    def export(self, export_folder:str, list_configs:list):
-
-        return list_configs
-
-    def forward(self, list_actions:list):
-
-        list_actions.append(set_up_output(self.name, "float"))
-        list_actions.append(generate_action(
-            "cpp/templates/kernel_forward/pooling_forward.jinja",
-            name=self.name,
-            input_name=self.input_name,
-            output_name=self.name
-        ))
-        return list_actions
-
-@export_cpp_register("FC")
-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/")
-        copyfile(dirpath + "/kernels/macs.hpp", f"{export_folder}/include/kernels/")
-        copyfile(dirpath + "/kernels/activation.hpp", f"{export_folder}/include/kernels/")
-
-        list_configs.append("kernels/fullyconnected.hpp")
-        list_configs.append(f"layers/{self.name}.h")
-        generate_file(
-            f"{export_folder}/layers/{self.name}.h",
-            CONFIGURATIONS.FC,
-            name=self.name,
-            input_dims=self.inputs_dims[0],
-            output_dims=self.outputs_dims[0],
-            activation="Linear",
-            rescaling="NoScaling")
-
-        return list_configs
-
-
-    def forward(self, list_actions:list):
-
-        if not self.is_last:
-            list_actions.append(set_up_output(self.name, "float"))
-
-        list_actions.append(generate_action(
-            KERNELS_FORWARD.FC,
-            name=self.name,
-            input_name=self.inputs[0].name() if self.inputs[0] else self.name + "_input",
-            output_name=self.name,
-            weights_name=self.inputs[1].name(),
-            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.get_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