diff --git a/python_binding/backend/pybind_OperatorImpl.cpp b/python_binding/backend/pybind_OperatorImpl.cpp
index 91d65484a122d6a651758e16eb0e925b6e0bfdd0..4574bd8f86172798e6f72ea768dc04879c7d5e5c 100644
--- a/python_binding/backend/pybind_OperatorImpl.cpp
+++ b/python_binding/backend/pybind_OperatorImpl.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 #include <pybind11/stl.h>
+#include <string>
 
 #include "aidge/operator/Operator.hpp"
 #include "aidge/backend/OperatorImpl.hpp"
@@ -116,7 +117,7 @@ public:
 void init_OperatorImpl(py::module& m){
 
     py::class_<OperatorImpl, std::shared_ptr<OperatorImpl>, pyOperatorImpl>(m, "OperatorImpl", py::dynamic_attr())
-    .def(py::init<const Operator&>(), py::keep_alive<1, 1>(), py::keep_alive<1, 2>())
+    .def(py::init<const Operator&, const std::string&>(), py::keep_alive<1, 1>(), py::keep_alive<1, 2>())
     .def("forward", &OperatorImpl::forward)
     .def("backward", &OperatorImpl::backward)
     .def("get_nb_required_data", &OperatorImpl::getNbRequiredData)
diff --git a/python_binding/operator/pybind_Add.cpp b/python_binding/operator/pybind_Add.cpp
index 661c96bb835fa3ac719ab10dbf83e4137f1bb248..c3eeb192a88163be96f973a55e6ef7cc60ec48af 100644
--- a/python_binding/operator/pybind_Add.cpp
+++ b/python_binding/operator/pybind_Add.cpp
@@ -12,6 +12,7 @@
 #include <pybind11/pybind11.h>
 
 #include "aidge/operator/Add.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/backend/OperatorImpl.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/utils/Types.h"
diff --git a/python_binding/operator/pybind_AvgPooling.cpp b/python_binding/operator/pybind_AvgPooling.cpp
index c44c7b49ade1e47438f80f0b3f3a83c18eb4e0fa..ab52472b4576d4ab4adf05d3fed139ae40c75919 100644
--- a/python_binding/operator/pybind_AvgPooling.cpp
+++ b/python_binding/operator/pybind_AvgPooling.cpp
@@ -17,6 +17,7 @@
 #include <array>
 
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/AvgPooling.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/utils/Types.h"
diff --git a/python_binding/operator/pybind_BatchNorm.cpp b/python_binding/operator/pybind_BatchNorm.cpp
index 7020c35f63880e77ecd3c2011a1b3c74bed847ed..87e444bbc11403a9cc03a58718c74ca8be1957c9 100644
--- a/python_binding/operator/pybind_BatchNorm.cpp
+++ b/python_binding/operator/pybind_BatchNorm.cpp
@@ -12,6 +12,7 @@
 #include <pybind11/pybind11.h>
 #include <string>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/BatchNorm.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/utils/Types.h"
diff --git a/python_binding/operator/pybind_Concat.cpp b/python_binding/operator/pybind_Concat.cpp
index 38d8a20cba1eafc255b1da313d35ad8be116620d..756686c209c33fe03f7bda4bbb53d8c3c71e8b4c 100644
--- a/python_binding/operator/pybind_Concat.cpp
+++ b/python_binding/operator/pybind_Concat.cpp
@@ -12,6 +12,7 @@
 #include <pybind11/pybind11.h>
 #include <string>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Concat.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Conv.cpp b/python_binding/operator/pybind_Conv.cpp
index aea402017622655a577ac4f9e207141bff01d70d..cd20750b3c4d80096143593504a7c60aa4e5c650 100644
--- a/python_binding/operator/pybind_Conv.cpp
+++ b/python_binding/operator/pybind_Conv.cpp
@@ -16,6 +16,7 @@
 #include <array>
 
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Conv.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/utils/Types.h"
diff --git a/python_binding/operator/pybind_ConvDepthWise.cpp b/python_binding/operator/pybind_ConvDepthWise.cpp
index 83eac8742628bf2e0921e6a17dd46226c46fbea1..a136a7a4f04f7e16806efa4793996ae2a9a72026 100644
--- a/python_binding/operator/pybind_ConvDepthWise.cpp
+++ b/python_binding/operator/pybind_ConvDepthWise.cpp
@@ -17,6 +17,7 @@
 #include <array>
 
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/ConvDepthWise.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/utils/Types.h"
diff --git a/python_binding/operator/pybind_Div.cpp b/python_binding/operator/pybind_Div.cpp
index 2996e0bcae6d69d9ad2ef0d4d8eee8489cd8cdc8..e9bf26b629aa05090c9601103676cbc12ff4c88d 100644
--- a/python_binding/operator/pybind_Div.cpp
+++ b/python_binding/operator/pybind_Div.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Div.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Erf.cpp b/python_binding/operator/pybind_Erf.cpp
index e1aef08ad597d92c4cf4b6d5a2cff487e438538e..c5fd53f2a665b5b816a3778e6f874cd04956e99e 100644
--- a/python_binding/operator/pybind_Erf.cpp
+++ b/python_binding/operator/pybind_Erf.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Erf.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_FC.cpp b/python_binding/operator/pybind_FC.cpp
index 0b13643cbd3ebb265dab62a1030729fca62dea62..ab1ed9ce20bec01e205cd6478c6a93df9f91a2fb 100644
--- a/python_binding/operator/pybind_FC.cpp
+++ b/python_binding/operator/pybind_FC.cpp
@@ -11,8 +11,9 @@
 
 #include <pybind11/pybind11.h>
 
-#include "aidge/operator/FC.hpp"
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
+#include "aidge/operator/FC.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/utils/Types.h"
 
diff --git a/python_binding/operator/pybind_Gather.cpp b/python_binding/operator/pybind_Gather.cpp
index db6bdb15a2e6288b5f775d538a5e14f15d79d2c1..8c32acfe2bd7e0118c186be8fa1297ee16fe6f6c 100644
--- a/python_binding/operator/pybind_Gather.cpp
+++ b/python_binding/operator/pybind_Gather.cpp
@@ -12,6 +12,7 @@
 #include <pybind11/pybind11.h>
 #include <string>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Gather.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_GenericOperator.cpp b/python_binding/operator/pybind_GenericOperator.cpp
index a5435a3ce67ffe0f75b8bbda19e3d552baeef5ef..31ee946fc99df40133ff04965c762f9ddae0d131 100644
--- a/python_binding/operator/pybind_GenericOperator.cpp
+++ b/python_binding/operator/pybind_GenericOperator.cpp
@@ -15,6 +15,7 @@
 #include <stdio.h>
 
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/GenericOperator.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 namespace py = pybind11;
diff --git a/python_binding/operator/pybind_Identity.cpp b/python_binding/operator/pybind_Identity.cpp
index b1b1e8888976c578ff490f35776c890ba59911dc..4538b72fcb012a35ca0ebf3a15449a4b5cfff7a8 100644
--- a/python_binding/operator/pybind_Identity.cpp
+++ b/python_binding/operator/pybind_Identity.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Identity.hpp"
 #include "aidge/operator/Operator.hpp"
 
diff --git a/python_binding/operator/pybind_LeakyReLU.cpp b/python_binding/operator/pybind_LeakyReLU.cpp
index 66b2c34a9a558d20d90f71dd590d9fe8c370c10d..9ad47e7a391698ae9b30d35d94f05e8b80138590 100644
--- a/python_binding/operator/pybind_LeakyReLU.cpp
+++ b/python_binding/operator/pybind_LeakyReLU.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/LeakyReLU.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Matmul.cpp b/python_binding/operator/pybind_Matmul.cpp
index 383bad54be08905c5e9248ab3f7bf5c83bddc836..73bfac04a78ec9b972ec984466dbae582b2c03dc 100644
--- a/python_binding/operator/pybind_Matmul.cpp
+++ b/python_binding/operator/pybind_Matmul.cpp
@@ -11,8 +11,9 @@
 
 #include <pybind11/pybind11.h>
 
-#include "aidge/operator/MatMul.hpp"
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
+#include "aidge/operator/MatMul.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/utils/Types.h"
 
diff --git a/python_binding/operator/pybind_MaxPooling.cpp b/python_binding/operator/pybind_MaxPooling.cpp
index 8a5e3db9decd01bd5fabe5897847f939e7fa02b3..91fa0489d8bedd16dd33424e33d7e15eea3e3ecb 100644
--- a/python_binding/operator/pybind_MaxPooling.cpp
+++ b/python_binding/operator/pybind_MaxPooling.cpp
@@ -17,10 +17,10 @@
 #include <array>
 
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/MaxPooling.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/utils/Types.h"
-#include "aidge/data/Tensor.hpp"
 
 namespace py = pybind11;
 namespace Aidge {
diff --git a/python_binding/operator/pybind_Mul.cpp b/python_binding/operator/pybind_Mul.cpp
index 5354f01ca508eb6ff04304d1f4072f431339973c..47c84c0e52f605a5466a63a5a5d0851fecedd2f8 100644
--- a/python_binding/operator/pybind_Mul.cpp
+++ b/python_binding/operator/pybind_Mul.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Mul.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Operator.cpp b/python_binding/operator/pybind_Operator.cpp
index 05d6cd089754d1155e1506b4a491af7919bc4d31..589bad0be4ebfac10b476990e4501d6c219abbb1 100644
--- a/python_binding/operator/pybind_Operator.cpp
+++ b/python_binding/operator/pybind_Operator.cpp
@@ -11,10 +11,12 @@
  ********************************************************************************/
 
 #include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Operator.hpp"
 #include "aidge/utils/Types.h"
-#include <pybind11/stl.h>
 
 namespace py = pybind11;
 namespace Aidge {
diff --git a/python_binding/operator/pybind_OperatorTensor.cpp b/python_binding/operator/pybind_OperatorTensor.cpp
index d0a4d024384ca158c1c9b009f5267aedcb9b8470..4cd7306494730036f90dd6311bc80d821ebe8f4d 100644
--- a/python_binding/operator/pybind_OperatorTensor.cpp
+++ b/python_binding/operator/pybind_OperatorTensor.cpp
@@ -10,7 +10,9 @@
  ********************************************************************************/
 
 #include <pybind11/pybind11.h>
+
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/operator/Operator.hpp"
 #include <pybind11/stl.h>
diff --git a/python_binding/operator/pybind_Pad.cpp b/python_binding/operator/pybind_Pad.cpp
index 27d3a5428ed6ca25f5c752a94b0eacd8d96a046e..1cd9f074fe5241be11da0ea7d0d1ed5a1c5869c2 100644
--- a/python_binding/operator/pybind_Pad.cpp
+++ b/python_binding/operator/pybind_Pad.cpp
@@ -9,13 +9,14 @@
  *
  ********************************************************************************/
 
+#include <array>
 #include <pybind11/pybind11.h>
 #include <pybind11/stl.h>
 #include <string>
 #include <vector>
-#include <array>
 
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Pad.hpp"
 #include "aidge/operator/Operator.hpp"
 #include "aidge/utils/Types.h"
diff --git a/python_binding/operator/pybind_Pop.cpp b/python_binding/operator/pybind_Pop.cpp
index 91726fc1d4721df1be712a26721d09b1a98fd9a2..baae552270a4776d292047140e213dbe1566d35e 100644
--- a/python_binding/operator/pybind_Pop.cpp
+++ b/python_binding/operator/pybind_Pop.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Pop.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Pow.cpp b/python_binding/operator/pybind_Pow.cpp
index 03e822adbd326b6ad9693d58b53cd9f8f4bc3ac8..9e9ef772cadddb1c7928060b503c388b094ed9f4 100644
--- a/python_binding/operator/pybind_Pow.cpp
+++ b/python_binding/operator/pybind_Pow.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Pow.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Producer.cpp b/python_binding/operator/pybind_Producer.cpp
index 025c8c5dd1651b3466a22e88f0966a7f51d2c109..eb74515915c252d50a2522cae6d6f4c6832ab3ef 100644
--- a/python_binding/operator/pybind_Producer.cpp
+++ b/python_binding/operator/pybind_Producer.cpp
@@ -12,11 +12,11 @@
 #include <pybind11/pybind11.h>
 #include <pybind11/stl.h>
 
-#include "aidge/utils/Types.h"
 // #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/operator/Producer.hpp"
-#include "aidge/data/Tensor.hpp"
+#include "aidge/utils/Types.h"
 
 namespace py = pybind11;
 namespace Aidge {
diff --git a/python_binding/operator/pybind_ReLU.cpp b/python_binding/operator/pybind_ReLU.cpp
index f08c67cb98b629b8d1b61471c6f50a0de4c421d6..57601e25607a40c44c400fe75965d83050a146ed 100644
--- a/python_binding/operator/pybind_ReLU.cpp
+++ b/python_binding/operator/pybind_ReLU.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/ReLU.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_ReduceMean.cpp b/python_binding/operator/pybind_ReduceMean.cpp
index fbec6864042cf16a877faa67b351be5eb3f9b1eb..b89c09d5637ac64c1a3572b9c320ddbe5c2c878d 100644
--- a/python_binding/operator/pybind_ReduceMean.cpp
+++ b/python_binding/operator/pybind_ReduceMean.cpp
@@ -9,13 +9,14 @@
  *
  ********************************************************************************/
 
+#include <array>
 #include <pybind11/pybind11.h>
 #include <pybind11/stl.h>
 #include <string>
 #include <vector>
-#include <array>
 
 #include "aidge/backend/OperatorImpl.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 #include "aidge/operator/ReduceMean.hpp"
 #include "aidge/utils/Types.h"
diff --git a/python_binding/operator/pybind_Reshape.cpp b/python_binding/operator/pybind_Reshape.cpp
index dc6a9b4ec5de297df7c1c52877974ab84d55a0c2..0e336db28ddba4629e61d30e026befe4240c40b6 100644
--- a/python_binding/operator/pybind_Reshape.cpp
+++ b/python_binding/operator/pybind_Reshape.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Reshape.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Sigmoid.cpp b/python_binding/operator/pybind_Sigmoid.cpp
index 2393e56c10ef37e4eee078fe6f8bee4abd77ac39..8ffa8581593af9dc994baa566475317bcd96d475 100644
--- a/python_binding/operator/pybind_Sigmoid.cpp
+++ b/python_binding/operator/pybind_Sigmoid.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Sigmoid.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Slice.cpp b/python_binding/operator/pybind_Slice.cpp
index 3bb1b082c19b98447726b0fb980cbd8688fd5ba3..558fc98c172ea1a264ee8ac3ebbc70e09eba826d 100644
--- a/python_binding/operator/pybind_Slice.cpp
+++ b/python_binding/operator/pybind_Slice.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Slice.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Softmax.cpp b/python_binding/operator/pybind_Softmax.cpp
index bac553387a00856f2d4e01dea95e630a59666938..837f3ed2b92aeab5739d07a04b071040806d8a1f 100644
--- a/python_binding/operator/pybind_Softmax.cpp
+++ b/python_binding/operator/pybind_Softmax.cpp
@@ -12,6 +12,7 @@
 #include <pybind11/pybind11.h>
 #include <string>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Softmax.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Sqrt.cpp b/python_binding/operator/pybind_Sqrt.cpp
index 33d46e02caee1046cbbdbaaa186c4898db5b10c1..7065b828eb18d77edce49726dd903045c7952977 100644
--- a/python_binding/operator/pybind_Sqrt.cpp
+++ b/python_binding/operator/pybind_Sqrt.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Sqrt.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Sub.cpp b/python_binding/operator/pybind_Sub.cpp
index 1b858d1527eb3969e2acad9c0206311ff2981f17..e031040dfe8373c07d1524cbe4f75f3744e2f312 100644
--- a/python_binding/operator/pybind_Sub.cpp
+++ b/python_binding/operator/pybind_Sub.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Sub.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Tanh.cpp b/python_binding/operator/pybind_Tanh.cpp
index 2f3140039b030505af860352372c865c1aab05e3..a5c2f9dd5f2eab17e296f82788726210f976bd0d 100644
--- a/python_binding/operator/pybind_Tanh.cpp
+++ b/python_binding/operator/pybind_Tanh.cpp
@@ -11,6 +11,7 @@
 
 #include <pybind11/pybind11.h>
 
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/Tanh.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
 
diff --git a/python_binding/operator/pybind_Transpose.cpp b/python_binding/operator/pybind_Transpose.cpp
index 59482cf481849738ed0656d8c55188b2ade51954..f6e2f2225e4858d3385c5d0140a863e7e7705652 100644
--- a/python_binding/operator/pybind_Transpose.cpp
+++ b/python_binding/operator/pybind_Transpose.cpp
@@ -17,10 +17,10 @@
 #include <array>
 
 #include "aidge/backend/OperatorImpl.hpp"
-#include "aidge/operator/Transpose.hpp"
+#include "aidge/data/Tensor.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
+#include "aidge/operator/Transpose.hpp"
 #include "aidge/utils/Types.h"
-#include "aidge/data/Tensor.hpp"
 
 namespace py = pybind11;
 namespace Aidge {