diff --git a/include/aidge/data/Data.hpp b/include/aidge/data/Data.hpp
index 5abac778be6d0edee83e451922338057c7f22236..47839a8bec6a49b92b35cb2635a7b92337579bbd 100644
--- a/include/aidge/data/Data.hpp
+++ b/include/aidge/data/Data.hpp
@@ -233,13 +233,18 @@ constexpr std::size_t sizeOf(DataType const i_dataType)
     }
 }
 
+} // namespace detail
+} // namespace Aidge
+
+/// @todo possibly move all EnumStrings to Aidge::detail, see aidge#24
+namespace
+{
 template<>
 const char* const EnumStrings<Aidge::DataType>::data[]
     = {"Float64", "Float32", "Float16", "BFloat16", "Binary", "Ternary", "Int2",
        "Int3",    "Int4",    "Int5",    "Int6",     "Int7",   "Int8",    "Int16",
        "Int32",   "Int64",   "UInt2",   "UInt3",    "UInt4",  "UInt5",   "UInt6",
        "UInt7",   "UInt8",   "UInt16",  "UInt32",   "UInt64"};
-} // namespace detail
-} // namespace Aidge
 
+}
 #endif /* AIDGE_DATA_H_ */
\ No newline at end of file
diff --git a/include/aidge/data/Tensor.hpp b/include/aidge/data/Tensor.hpp
index caca9fbeb9f305c12935c164661932111e854b04..9f28f216e46494bdc533cee890295c0868124751 100644
--- a/include/aidge/data/Tensor.hpp
+++ b/include/aidge/data/Tensor.hpp
@@ -370,7 +370,10 @@ public:
      */
     inline DimIdx_t nbDims() const
     {
-        return mDims.size();
+        assert(
+            mDims.size() <= std::numeric_limits<DimIdx_t>::max()
+            && "Too many tensor dimensions");
+        return static_cast<DimIdx_t>(mDims.size());
     }
 
     /**
diff --git a/include/aidge/utils/TensorUtils.hpp b/include/aidge/utils/TensorUtils.hpp
index e14a6dcedb4b96a0843cb84a12feca005d4ea318..66a197be9270fafd84bb92dd0cdebec5c44ff121 100644
--- a/include/aidge/utils/TensorUtils.hpp
+++ b/include/aidge/utils/TensorUtils.hpp
@@ -46,7 +46,7 @@ bool approxEq(Aidge::Tensor t1, Aidge::Tensor t2, float relative, float absolute
     {
         return false;
     }
-    for (size_t i; i < t1.size(); ++i)
+    for (size_t i = 0; i < t1.size(); ++i)
     {
         if (static_cast<float>(std::abs(t1.get<T>(i) - t2.get<T>(i)))
             > (absolute + (relative * static_cast<float>(std::abs(t2.get<T>(i))))))
diff --git a/python_binding/utils/pybind_TensorUtils.cpp b/python_binding/utils/pybind_TensorUtils.cpp
index 78825a5f3b8d45f22f76c57bd780dc7019fbc123..d516317588784984919d18e7abc6f4b68ac0ce4d 100644
--- a/python_binding/utils/pybind_TensorUtils.cpp
+++ b/python_binding/utils/pybind_TensorUtils.cpp
@@ -18,17 +18,18 @@
 
 namespace py = pybind11;
 
-namespace Aidge {
-
-template<typename T>
-void addTensorUtilsFunction(py::module &m){
-    m.def("approx_eq",
-    & approxEq<T>,
-    py::arg("t1"),
-    py::arg("t2"),
-    py::arg("relative"),
-    py::arg("absolute"),
-    R"mydelimiter(
+namespace Aidge
+{
+template<typename T> void addTensorUtilsFunction(py::module &m)
+{
+    m.def(
+        "approx_eq",
+        &approxEq<T>,
+        py::arg("t1"),
+        py::arg("t2"),
+        py::arg("relative"),
+        py::arg("absolute"),
+        R"mydelimiter(
         Compare two :cpp:class:`Aidge::Tensor` value wise. The comparison function is:
             |t1-t2| <= absolute + relative * |t2|
 
@@ -48,10 +49,11 @@ void addTensorUtilsFunction(py::module &m){
         )mydelimiter");
 }
 
-void init_TensorUtils(py::module &m) {
+void init_TensorUtils(py::module &m)
+{
     addTensorUtilsFunction<float>(m);
     addTensorUtilsFunction<double>(m);
-    addTensorUtilsFunction<int>(m);
-    addTensorUtilsFunction<long>(m);
+    addTensorUtilsFunction<detail::CppType_t<DataType::Int32>>(m);
+    addTensorUtilsFunction<detail::CppType_t<DataType::Int64>>(m);
 }
 } // namespace Aidge