diff --git a/src/variables.jl b/src/variables.jl
index af796e9ae470ccc676eb987e4fa1a11ba3312b52..6d85e71d387d87cd0c5eb28e4a14b359b9984942 100644
--- a/src/variables.jl
+++ b/src/variables.jl
@@ -291,7 +291,9 @@ end
 for base_fn in [:qval, :gradient_strength, :slew_rate]
     fn3 = Symbol(String(base_fn) * "3")
     @eval function $fn3(bb::AbstractBlock, args...; kwargs...)
-        if hasproperty(bb, :orientation)
+        if hasmethod(get_gradient, (typeof(bb), ))
+            return $fn3(get_gradient(bb), args...; kwargs...)
+        else
             value = $base_fn(bb, args...; kwargs...)
             if value isa Number && iszero(value)
                 return zero(SVector{3, Float64})
@@ -300,8 +302,6 @@ for base_fn in [:qval, :gradient_strength, :slew_rate]
             else
                 return value .* bb.orientation
             end
-        else
-            return $fn3(get_gradient(bb), args...; kwargs...)
         end
     end
     @eval $fn3(nt::NamedTuple, args...; kwargs...) = map(v -> $fn3(v, args...; kwargs...), nt)