diff --git a/ProcessLib/TimeLoop.cpp b/ProcessLib/TimeLoop.cpp
index f18592836f1e290ab1c4768d9269e456475a8ac7..d11763bfe173240110025c54dec28e0f31e2ec06 100644
--- a/ProcessLib/TimeLoop.cpp
+++ b/ProcessLib/TimeLoop.cpp
@@ -62,9 +62,12 @@ void setEquationSystem(NumLib::NonlinearSolverBase& nonlinear_solver,
     }
 }
 
+bool isMonolithicProcess(ProcessLib::ProcessData const& process_data)
+{
+    return process_data.process.isMonolithicSchemeUsed();
+}
 }  // namespace
 
-
 namespace ProcessLib
 {
 template <NumLib::ODESystemTag ODETag>
@@ -221,16 +224,8 @@ TimeLoop::TimeLoop(std::unique_ptr<Output>&& output,
 {
 }
 
-bool TimeLoop::setCoupledSolutions()
+void TimeLoop::setCoupledSolutions()
 {
-    // All _per_process_data share one process
-    const bool use_monolithic_scheme =
-        _per_process_data[0]->process.isMonolithicSchemeUsed();
-    if (use_monolithic_scheme)
-    {
-        return false;
-    }
-
     _solutions_of_coupled_processes.reserve(_per_process_data.size());
     for (unsigned process_id = 0; process_id < _per_process_data.size();
          process_id++)
@@ -245,8 +240,6 @@ bool TimeLoop::setCoupledSolutions()
         // append a solution vector of suitable size
         _solutions_of_last_cpl_iteration.emplace_back(&x0);
     }
-
-    return true;  // use staggered scheme.
 }
 
 double TimeLoop::computeTimeStepping(const double prev_dt, double& t,
@@ -429,7 +422,14 @@ bool TimeLoop::loop()
     // init solution storage
     _process_solutions = setInitialConditions(_start_time, _per_process_data);
 
-    const bool is_staggered_coupling = setCoupledSolutions();
+    // All _per_process_data share the first process.
+    bool const is_staggered_coupling =
+        !isMonolithicProcess(*_per_process_data[0]);
+
+    if (is_staggered_coupling)
+    {
+        setCoupledSolutions();
+    }
 
     // Output initial conditions
     {
diff --git a/ProcessLib/TimeLoop.h b/ProcessLib/TimeLoop.h
index ee5c31c724fd0e655345cb447e683cc46dbb681e..6d9db035ee9970fdbd12114e554f1c8821cc3aec 100644
--- a/ProcessLib/TimeLoop.h
+++ b/ProcessLib/TimeLoop.h
@@ -52,18 +52,13 @@ public:
     ~TimeLoop();
 
 private:
-
     /**
-     *  This function fills the vector of solutions of coupled processes of
-     *  processes, _solutions_of_coupled_processes, and initializes the vector
-     * of
-     *  solutions of the previous coupling iteration,
-     *  _solutions_of_last_cpl_iteration.
-     *
-     *  \return a boolean value as a flag to indicate there should be a coupling
-     *          among processes or not.
+     * This function fills the vector of solutions of coupled processes of
+     * processes, _solutions_of_coupled_processes, and initializes the vector
+     * of solutions of the previous coupling iteration,
+     * _solutions_of_last_cpl_iteration.
      */
-    bool setCoupledSolutions();
+    void setCoupledSolutions();
 
     /**
      * \brief Member to solver non coupled systems of equations, which can be