diff --git a/src/Drivers/diffeq.jl b/src/Drivers/diffeq.jl
index 724ae256e2255f29f6339258e0cbdfec7db8e3a0..b9a5908e1a13f6ae4f2728995828da059f615882 100644
--- a/src/Drivers/diffeq.jl
+++ b/src/Drivers/diffeq.jl
@@ -9,6 +9,8 @@ Specialized problem type for CryoGrid `ODEProblem`s.
 """
 struct CryoGridODEProblem end
 
+Strat.Tile(integrator::SciMLBase.DEIntegrator) = integrator.sol.prob.f.f
+
 """
     CryoGridProblem(setup::Tile, tspan::NTuple{2,Float64}, p=nothing;kwargs...)
 
@@ -31,7 +33,7 @@ function CryoGridProblem(
     expandtstep(tstep::Number) = tspan[1]:tstep:tspan[end]
     expandtstep(tstep::AbstractVector) = tstep
     getsavestate(model::Tile, u, du) = deepcopy(Strat.getvars(model.state, u, du, savevars...))
-    savefunc(u, t, integrator) = getsavestate(integrator.f.f, Strat.withaxes(u, integrator.f.f), get_du(integrator))
+    savefunc(u, t, integrator) = getsavestate(Tile(integrator), Strat.withaxes(u, Tile(integrator)), get_du(integrator))
     pmodel = Model(tile)
     p = isnothing(p) ? dustrip.(collect(pmodel[:val])) : p
     du0 = zero(u0)