diff --git a/include/aidge/backend/cpu/operator/ScalingImpl.hpp b/include/aidge/backend/cpu/operator/ScalingImpl.hpp
index c6ef9585aaaf76b3a727e29e7df56a1261010861..37549349b9f5ffbf443d976135db05b4cec209b7 100644
--- a/include/aidge/backend/cpu/operator/ScalingImpl.hpp
+++ b/include/aidge/backend/cpu/operator/ScalingImpl.hpp
@@ -18,16 +18,17 @@
 #include "aidge/utils/Types.h"
 #include <memory>
 #include <vector>
+#include <array>
 
 namespace Aidge {
 // class Scaling_Op;
 
 // compute kernel registry for forward and backward
 class ScalingImplForward_cpu
-    : public Registrable<ScalingImplForward_cpu, std::tuple<DataType, DataType>, void(const Scaling_Op::Attributes&, std::size_t, const void*, void*)> {
+    : public Registrable<ScalingImplForward_cpu, std::tuple<DataType, DataType>, void(const Scaling_Op::Attrs&, std::size_t, const void*, void*)> {
 };
 class ScalingImplBackward_cpu
-    : public Registrable<ScalingImplBackward_cpu, std::tuple<DataType, DataType>, void(const Scaling_Op::Attributes&, std::size_t, const void*, void*)> {
+    : public Registrable<ScalingImplBackward_cpu, std::tuple<DataType, DataType>, void(const Scaling_Op::Attrs&, std::size_t, const void*, void*)> {
 };
 
 class ScalingImpl_cpu : public OperatorImpl {
diff --git a/include/aidge/backend/cpu/operator/ScalingImpl_forward_kernels.hpp b/include/aidge/backend/cpu/operator/ScalingImpl_forward_kernels.hpp
index e517f0a059948fbfccf0508eaf195611077a88eb..8fe13bce3a4c470d77b083603d3b889a46fda71f 100644
--- a/include/aidge/backend/cpu/operator/ScalingImpl_forward_kernels.hpp
+++ b/include/aidge/backend/cpu/operator/ScalingImpl_forward_kernels.hpp
@@ -18,14 +18,14 @@
 
 namespace Aidge {
 template <class I, class O>
-void ScalingImpl_cpu_forward_kernel(const Scaling_Op::Attributes& attrs,
+void ScalingImpl_cpu_forward_kernel(const Scaling_Op::Attrs& attrs,
                                      std::size_t inputLenght,
                                      const void* input_,
                                      void* output_) {
 
     const I* input = static_cast<const I*>(input_);
     O* output = static_cast<O*>(output_);
-    I scalingFactor = static_cast<I>(std::get<0>(attrs));
+    const I& scalingFactor = static_cast<const I&>(std::get<0>(attrs));
 
     for (std::size_t i = 0; i < inputLenght; ++i) {
         output[i] = input[i] * scalingFactor;
diff --git a/src/operator/ScalingImpl.cpp b/src/operator/ScalingImpl.cpp
index c6a96f3bc8ea865da1c31ddfadff67c1e8556ad5..84cd6ee33a8316a24bae472c74c039dabe0afba3 100644
--- a/src/operator/ScalingImpl.cpp
+++ b/src/operator/ScalingImpl.cpp
@@ -68,7 +68,7 @@ void Aidge::ScalingImpl_cpu::forward() {
         mOp.getOutput(0)->dataType()});
 
     // Call kernel
-    kernelFunc(mOp.getParams(),
+    kernelFunc(mOp.getStaticAttributes(),
         std::static_pointer_cast<Tensor>(mOp.getInput(0))->size(),
         mOp.getInput(0)->getImpl()->rawPtr(),
         mOp.getOutput(0)->getImpl()->rawPtr());