diff --git a/core/lha.jl b/core/lha.jl
index 2207e848b52f30cd20db613f9d4a4fff9bb98df6..8b9c1af9b83ffba2218f0a5d8785f27bbd0b23a8 100644
--- a/core/lha.jl
+++ b/core/lha.jl
@@ -213,13 +213,16 @@ function next_state!(Snplus1::StateLHA, A::LHA,
         println("Time flies with the flow...")
     end
     # Now time flies according to the flow
-    for i in eachindex(Snplus1.values)
-        coeff_deriv = (A.flow[Snplus1.loc])[i]
+    values_Snplus1 = getfield(Snplus1, :values)
+    time_Snplus1 = getfield(Snplus1, :time)
+    current_loc = getfield(Snplus1, :loc)
+    for i in eachindex(values_Snplus1)
+        @inbounds coeff_deriv = (getfield(A, :flow)[current_loc])[i]
         if coeff_deriv > 0
-            Snplus1.values[i] += coeff_deriv*(tnplus1 - Snplus1.time)
+            @inbounds values_Snplus1[i] += coeff_deriv*(tnplus1 - time_Snplus1)
         end
     end
-    Snplus1.time = tnplus1
+    setfield!(Snplus1, :time, tnplus1)
     if verbose 
         @show Snplus1 
     end