diff --git a/src/operator/Conv.cpp b/src/operator/Conv.cpp
index 836c47645c20ff23539b836af8593cddfbb48498..ee850414cb97851b78e5413b5a4f69d77ad041a4 100644
--- a/src/operator/Conv.cpp
+++ b/src/operator/Conv.cpp
@@ -57,14 +57,12 @@ bool Aidge::Conv_Op<DIM>::forwardDims(bool /*allowDataDependency*/) {
         std::array<DimSize_t, DIM + 2> outputDims{};
         const std::array<DimSize_t, DIM + 2> inputDims(getInput(0)->template dims<DIM+2>());
 
-        for (std::size_t dim = 0; dim < mAttributes->template getAttr<ConvAttr::KernelDims>().size() ; ++dim) {
-            const DimSize_t kernelExtent = mAttributes->template getAttr<ConvAttr::DilationDims>()[dim] *
-                                                    (mAttributes->template getAttr<ConvAttr::KernelDims>()[dim] - 1) +
-                                            1;
+        for (std::size_t dim = 0; dim < kernelDims().size() ; ++dim) {
+            const DimSize_t kernelExtent = dilationDims()[dim] * (kernelDims()[dim] - 1) + 1;
 
             outputDims[dim+2] = 1 + static_cast<DimSize_t>(
                     floor(static_cast<float>(inputDims[dim+2] - kernelExtent) /
-                            static_cast<float>(mAttributes->template getAttr<ConvAttr::StrideDims>()[dim])));
+                            static_cast<float>(strideDims()[dim])));
         }
 
         outputDims[1] = outChannels();