diff --git a/ProcessLib/CreateProcessData.cpp b/ProcessLib/CreateProcessData.cpp
index cde92a31db7d93dc50ad631247380a49f2267053..921784342fa434fba84a5cc8edcc642997da80ba 100644
--- a/ProcessLib/CreateProcessData.cpp
+++ b/ProcessLib/CreateProcessData.cpp
@@ -30,9 +30,6 @@ static std::unique_ptr<ProcessData> makeProcessData(
 {
     using Tag = NumLib::NonlinearSolverTag;
 
-    NumLib::TimeStep previous_timestep(timestepper->begin());
-    NumLib::TimeStep current_timestep(previous_timestep);
-
     if (auto* nonlinear_solver_picard =
             dynamic_cast<NumLib::NonlinearSolver<Tag::Picard>*>(
                 &nonlinear_solver))
@@ -40,9 +37,8 @@ static std::unique_ptr<ProcessData> makeProcessData(
         nonlinear_solver_picard->compensateNonEquilibriumInitialResiduum(
             compensate_non_equilibrium_initial_residuum);
         return std::make_unique<ProcessData>(
-            previous_timestep, current_timestep, std::move(timestepper),
-            Tag::Picard, *nonlinear_solver_picard, std::move(conv_crit),
-            std::move(time_disc), process_id, process);
+            std::move(timestepper), Tag::Picard, *nonlinear_solver_picard,
+            std::move(conv_crit), std::move(time_disc), process_id, process);
     }
     if (auto* nonlinear_solver_newton =
             dynamic_cast<NumLib::NonlinearSolver<Tag::Newton>*>(
@@ -51,7 +47,6 @@ static std::unique_ptr<ProcessData> makeProcessData(
         nonlinear_solver_newton->compensateNonEquilibriumInitialResiduum(
             compensate_non_equilibrium_initial_residuum);
         return std::make_unique<ProcessData>(
-            std::move(previous_timestep), std::move(current_timestep),
             std::move(timestepper), Tag::Newton, *nonlinear_solver_newton,
             std::move(conv_crit), std::move(time_disc), process_id, process);
     }
@@ -60,9 +55,8 @@ static std::unique_ptr<ProcessData> makeProcessData(
             dynamic_cast<NumLib::PETScNonlinearSolver*>(&nonlinear_solver))
     {
         return std::make_unique<ProcessData>(
-            previous_timestep, current_timestep, std::move(timestepper),
-            Tag::Newton, *nonlinear_solver_petsc, std::move(conv_crit),
-            std::move(time_disc), process_id, process);
+            std::move(timestepper), Tag::Newton, *nonlinear_solver_petsc,
+            std::move(conv_crit), std::move(time_disc), process_id, process);
     }
 #endif  // USE_PETSC
 
diff --git a/ProcessLib/ProcessData.h b/ProcessLib/ProcessData.h
index f88d79228a875e375aaabce4aaf211b9ab7ad63e..876c0be9233201411181d3e14a57cf20f3f9968f 100644
--- a/ProcessLib/ProcessData.h
+++ b/ProcessLib/ProcessData.h
@@ -23,16 +23,15 @@ namespace ProcessLib
 struct ProcessData
 {
     ProcessData(
-        NumLib::TimeStep timestep_previous_, NumLib::TimeStep timestep_current_,
         std::unique_ptr<NumLib::TimeStepAlgorithm>&& timestep_algorithm_,
         NumLib::NonlinearSolverTag const nonlinear_solver_tag_,
         NumLib::NonlinearSolverBase& nonlinear_solver_,
         std::unique_ptr<NumLib::ConvergenceCriterion>&& conv_crit_,
         std::unique_ptr<NumLib::TimeDiscretization>&& time_disc_,
         int const process_id_, Process& process_)
-        : timestep_previous(timestep_previous_),
-          timestep_current(timestep_current_),
-          timestep_algorithm(std::move(timestep_algorithm_)),
+        : timestep_algorithm(std::move(timestep_algorithm_)),
+          timestep_previous(timestep_algorithm->begin()),
+          timestep_current(timestep_previous),
           nonlinear_solver_tag(nonlinear_solver_tag_),
           nonlinear_solver(nonlinear_solver_),
           nonlinear_solver_status{true, 0},
@@ -47,9 +46,9 @@ struct ProcessData
     ProcessData& operator=(ProcessData const& pd) = delete;
     ProcessData& operator=(ProcessData&& pd) = delete;
 
+    std::unique_ptr<NumLib::TimeStepAlgorithm> timestep_algorithm;
     NumLib::TimeStep timestep_previous;
     NumLib::TimeStep timestep_current;
-    std::unique_ptr<NumLib::TimeStepAlgorithm> timestep_algorithm;
 
     //! Tag containing the missing type information necessary to cast the
     //! other members of this struct to their concrety types.