diff --git a/ProcessLib/HeatConduction/HeatConductionProcess.cpp b/ProcessLib/HeatConduction/HeatConductionProcess.cpp
index 94e61d257172fad85f1586acdc6bb599ea904a68..d341c30a4f9ab2476aa4209820f4b591b3e90821 100644
--- a/ProcessLib/HeatConduction/HeatConductionProcess.cpp
+++ b/ProcessLib/HeatConduction/HeatConductionProcess.cpp
@@ -47,9 +47,6 @@ void HeatConductionProcess::preTimestepConcreteProcess(GlobalVector const& x,
         auto& x0 = *_x_previous_timestep;
         MathLib::LinAlg::copy(x, x0);
     }
-
-    auto& x0 = *_x_previous_timestep;
-    MathLib::LinAlg::setLocalAccessibleVector(x0);
 }
 
 void HeatConductionProcess::initializeConcreteProcess(
diff --git a/ProcessLib/StaggeredCouplingTerm.cpp b/ProcessLib/StaggeredCouplingTerm.cpp
index a6c7b0da65dcde82471730a9aaa7159c9c0a0fa6..7047b87f8298689a8a914c61379bfca67d243cfe 100644
--- a/ProcessLib/StaggeredCouplingTerm.cpp
+++ b/ProcessLib/StaggeredCouplingTerm.cpp
@@ -11,10 +11,40 @@
  */
 
 #include "StaggeredCouplingTerm.h"
+
+#include "MathLib/LinAlg/LinAlg.h"
 #include "Process.h"
 
 namespace ProcessLib
 {
+
+StaggeredCouplingTerm::StaggeredCouplingTerm(
+    std::unordered_map<std::type_index, Process const&> const&
+        coupled_processes_,
+    std::unordered_map<std::type_index, GlobalVector const&> const& coupled_xs_,
+    const double dt_, const bool empty_)
+    : coupled_processes(coupled_processes_),
+      coupled_xs(coupled_xs_),
+      dt(dt_),
+      empty(empty_)
+{
+    for (auto const& coupled_x_pair : coupled_xs)
+    {
+        auto const& coupled_x = coupled_x_pair.second;
+        MathLib::LinAlg::setLocalAccessibleVector(coupled_x);
+    }
+
+    for (auto const& coupled_process_pair : coupled_processes)
+    {
+        auto const& coupled_pcs = coupled_process_pair.second;
+        auto const prevous_time_x = coupled_pcs.getPreviousTimeStepSolution();
+        if (prevous_time_x)
+        {
+            MathLib::LinAlg::setLocalAccessibleVector(*prevous_time_x);
+        }
+    }
+}
+
 const StaggeredCouplingTerm createVoidStaggeredCouplingTerm()
 {
     std::unordered_map<std::type_index, Process const&> coupled_processes;
diff --git a/ProcessLib/StaggeredCouplingTerm.h b/ProcessLib/StaggeredCouplingTerm.h
index 8e362536a174a17e2f3df526815b912eda275757..6cbebcc99ab36eb0feaafacb63fdd8eca9df02d6 100644
--- a/ProcessLib/StaggeredCouplingTerm.h
+++ b/ProcessLib/StaggeredCouplingTerm.h
@@ -36,13 +36,7 @@ struct StaggeredCouplingTerm
             coupled_processes_,
         std::unordered_map<std::type_index, GlobalVector const&> const&
             coupled_xs_,
-        const double dt_, const bool empty_ = false)
-        : coupled_processes(coupled_processes_),
-          coupled_xs(coupled_xs_),
-          dt(dt_),
-          empty(empty_)
-    {
-    }
+        const double dt_, const bool empty_ = false);
 
     /// References to the coupled processes are distinguished by the keys of
     /// process types.