diff --git a/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.cpp b/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.cpp
index 64b79443c5e386ccdd158186fff3b74492317777..f24d8e78510a2a88156f62e9133df2341a8d023b 100644
--- a/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.cpp
+++ b/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.cpp
@@ -20,9 +20,6 @@ namespace GroundwaterFlow
 {
 std::unique_ptr<Process> createGroundwaterFlowProcess(
     MeshLib::Mesh& mesh,
-    Process::NonlinearSolver& nonlinear_solver,
-    std::unique_ptr<Process::TimeDiscretization>&& time_discretization,
-    std::unique_ptr<NumLib::ConvergenceCriterion>&& convergence_criterion,
     std::vector<ProcessVariable> const& variables,
     std::vector<std::unique_ptr<ParameterBase>> const& parameters,
     BaseLib::ConfigTree const& config)
@@ -58,15 +55,9 @@ std::unique_ptr<Process> createGroundwaterFlowProcess(
     ProcessLib::parseSecondaryVariables(config, secondary_variables,
                                         named_function_caller);
 
-    //! \ogs_file_param{process__output}
-    ProcessOutput process_output{config.getConfigSubtree("output")};
-
     return std::unique_ptr<Process>{new GroundwaterFlowProcess{
-        mesh, nonlinear_solver, std::move(time_discretization),
-        std::move(convergence_criterion), parameters,
-        std::move(process_variables), std::move(process_data),
-        std::move(secondary_variables), std::move(process_output),
-        std::move(named_function_caller)}};
+        mesh, parameters, std::move(process_variables), std::move(process_data),
+        std::move(secondary_variables), std::move(named_function_caller)}};
 }
 
 }  // namespace GroundwaterFlow
diff --git a/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.h b/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.h
index 3e964c246f8653e4963fc56ed828e7f01e80108e..0f3c11ce5116147522410d544b90fc97ad4016fe 100644
--- a/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.h
+++ b/ProcessLib/GroundwaterFlow/CreateGroundwaterFlowProcess.h
@@ -20,9 +20,6 @@ namespace GroundwaterFlow
 {
 std::unique_ptr<Process> createGroundwaterFlowProcess(
     MeshLib::Mesh& mesh,
-    Process::NonlinearSolver& nonlinear_solver,
-    std::unique_ptr<Process::TimeDiscretization>&& time_discretization,
-    std::unique_ptr<NumLib::ConvergenceCriterion>&& convergence_criterion,
     std::vector<ProcessVariable> const& variables,
     std::vector<std::unique_ptr<ParameterBase>> const& parameters,
     BaseLib::ConfigTree const& config);
diff --git a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp
index e077af278382462a8f329036176aa8299f5a19d9..fd13527d1eacff4394ee6da8a6ea3044bf5bfc55 100644
--- a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp
+++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp
@@ -19,33 +19,15 @@ namespace GroundwaterFlow
 {
 GroundwaterFlowProcess::GroundwaterFlowProcess(
     MeshLib::Mesh& mesh,
-    Base::NonlinearSolver& nonlinear_solver,
-    std::unique_ptr<Base::TimeDiscretization>&& time_discretization,
-    std::unique_ptr<NumLib::ConvergenceCriterion>&& convergence_criterion,
     std::vector<std::unique_ptr<ParameterBase>> const& parameters,
     std::vector<std::reference_wrapper<ProcessVariable>>&& process_variables,
     GroundwaterFlowProcessData&& process_data,
     SecondaryVariableCollection&& secondary_variables,
-    ProcessOutput&& process_output,
     NumLib::NamedFunctionCaller&& named_function_caller)
-    : Process(mesh, nonlinear_solver, std::move(time_discretization),
-              std::move(convergence_criterion), parameters,
-              std::move(process_variables), std::move(secondary_variables),
-              std::move(process_output), std::move(named_function_caller)),
+    : Process(mesh, parameters, std::move(process_variables),
+              std::move(secondary_variables), std::move(named_function_caller)),
       _process_data(std::move(process_data))
 {
-    if (dynamic_cast<NumLib::ForwardEuler*>(
-            &Base::getTimeDiscretization()) != nullptr)
-    {
-        OGS_FATAL(
-            "GroundwaterFlowProcess can not be solved with the ForwardEuler"
-            " time discretization scheme. Aborting");
-        // Because the M matrix is not assembled. Thus, the linearized system
-        // would be singular. The same applies to CrankNicolson with theta = 0.0,
-        // but this case is not checked here.
-        // Anyway, the GroundwaterFlowProcess shall be transferred to a simpler
-        // ODESystemTag in the future.
-    }
 }
 
 void GroundwaterFlowProcess::initializeConcreteProcess(
diff --git a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h
index 8f043ea6dcde6275957a9bb7be7f4a23be563afd..ca21d362461104aee9c49d2d0a32782286ae8cb5 100644
--- a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h
+++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h
@@ -27,15 +27,11 @@ class GroundwaterFlowProcess final : public Process
 public:
     GroundwaterFlowProcess(
         MeshLib::Mesh& mesh,
-        Base::NonlinearSolver& nonlinear_solver,
-        std::unique_ptr<Base::TimeDiscretization>&& time_discretization,
-        std::unique_ptr<NumLib::ConvergenceCriterion>&& convergence_criterion,
         std::vector<std::unique_ptr<ParameterBase>> const& parameters,
         std::vector<std::reference_wrapper<ProcessVariable>>&&
             process_variables,
         GroundwaterFlowProcessData&& process_data,
         SecondaryVariableCollection&& secondary_variables,
-        ProcessOutput&& process_output,
         NumLib::NamedFunctionCaller&& named_function_caller);
 
     //! \name ODESystem interface
diff --git a/ProcessLib/TES/CreateTESProcess.cpp b/ProcessLib/TES/CreateTESProcess.cpp
index 2c5393eb0d673429a42fac73603b236a2b7ca5c1..0f2b0da925436ea2f9c065cea4810519ace9a775 100644
--- a/ProcessLib/TES/CreateTESProcess.cpp
+++ b/ProcessLib/TES/CreateTESProcess.cpp
@@ -18,9 +18,6 @@ namespace TES
 {
 std::unique_ptr<Process> createTESProcess(
     MeshLib::Mesh& mesh,
-    Process::NonlinearSolver& nonlinear_solver,
-    std::unique_ptr<Process::TimeDiscretization>&& time_discretization,
-    std::unique_ptr<NumLib::ConvergenceCriterion>&& convergence_criterion,
     std::vector<ProcessVariable> const& variables,
     std::vector<std::unique_ptr<ParameterBase>> const& parameters,
     BaseLib::ConfigTree const& config)
@@ -42,14 +39,9 @@ std::unique_ptr<Process> createTESProcess(
     ProcessLib::parseSecondaryVariables(config, secondary_variables,
                                         named_function_caller);
 
-    //! \ogs_file_param{process__output}
-    ProcessOutput process_output{config.getConfigSubtree("output")};
-
     return std::unique_ptr<Process>{new TESProcess{
-        mesh, nonlinear_solver, std::move(time_discretization),
-        std::move(convergence_criterion), parameters,
-        std::move(process_variables), std::move(secondary_variables),
-        std::move(process_output), std::move(named_function_caller), config}};
+        mesh, parameters, std::move(process_variables), std::move(secondary_variables),
+        std::move(named_function_caller), config}};
 }
 
 }  // namespace TES
diff --git a/ProcessLib/TES/CreateTESProcess.h b/ProcessLib/TES/CreateTESProcess.h
index f51d00030e62f638f5625092cccca88c82b9304e..856625928eb0b4e580b30313b5672de13af20019 100644
--- a/ProcessLib/TES/CreateTESProcess.h
+++ b/ProcessLib/TES/CreateTESProcess.h
@@ -19,9 +19,6 @@ namespace TES
 {
 std::unique_ptr<Process> createTESProcess(
     MeshLib::Mesh& mesh,
-    Process::NonlinearSolver& nonlinear_solver,
-    std::unique_ptr<Process::TimeDiscretization>&& time_discretization,
-    std::unique_ptr<NumLib::ConvergenceCriterion>&& convergence_criterion,
     std::vector<ProcessVariable> const& variables,
     std::vector<std::unique_ptr<ParameterBase>> const& /*parameters*/,
     BaseLib::ConfigTree const& config);
diff --git a/ProcessLib/TES/TESProcess.cpp b/ProcessLib/TES/TESProcess.cpp
index c53b16cebdf74d4f1a0bb12cb7e95d510f03ec6a..40a095841ff8933fb272e50360d3976087a21520 100644
--- a/ProcessLib/TES/TESProcess.cpp
+++ b/ProcessLib/TES/TESProcess.cpp
@@ -55,19 +55,13 @@ namespace TES
 {
 TESProcess::TESProcess(
     MeshLib::Mesh& mesh,
-    Process::NonlinearSolver& nonlinear_solver,
-    std::unique_ptr<Process::TimeDiscretization>&& time_discretization,
-    std::unique_ptr<NumLib::ConvergenceCriterion>&& convergence_criterion,
     std::vector<std::unique_ptr<ParameterBase>> const& parameters,
     std::vector<std::reference_wrapper<ProcessVariable>>&& process_variables,
     SecondaryVariableCollection&& secondary_variables,
-    ProcessOutput&& process_output,
     NumLib::NamedFunctionCaller&& named_function_caller,
     const BaseLib::ConfigTree& config)
-    : Process(mesh, nonlinear_solver, std::move(time_discretization),
-              std::move(convergence_criterion), parameters,
-              std::move(process_variables), std::move(secondary_variables),
-              std::move(process_output), std::move(named_function_caller))
+    : Process(mesh, parameters, std::move(process_variables),
+              std::move(secondary_variables), std::move(named_function_caller))
 {
     DBUG("Create TESProcess.");
 
@@ -298,20 +292,6 @@ void TESProcess::preIterationConcreteProcess(const unsigned iter,
 NumLib::IterationResult TESProcess::postIterationConcreteProcess(
     GlobalVector const& x)
 {
-    if (this->_process_output.output_iteration_results)
-    {
-        DBUG("output results of iteration %li",
-             _assembly_params.total_iteration);
-        std::string fn =
-            "tes_iter_" + std::to_string(_assembly_params.total_iteration) +
-            +"_ts_" + std::to_string(_assembly_params.timestep) + "_" +
-            std::to_string(_assembly_params.iteration_in_current_timestep) +
-            "_" + std::to_string(_assembly_params.number_of_try_of_iteration) +
-            ".vtu";
-
-        this->output(fn, 0, x);
-    }
-
     bool check_passed = true;
 
     if (!Trafo::constrained)
diff --git a/ProcessLib/TES/TESProcess.h b/ProcessLib/TES/TESProcess.h
index 84dbb50132ee213c17810cb1c3eae68fcfd2f4af..e0d94642f6f36b0861c52ee15714afb67962d8f8 100644
--- a/ProcessLib/TES/TESProcess.h
+++ b/ProcessLib/TES/TESProcess.h
@@ -33,14 +33,10 @@ class TESProcess final : public Process
 public:
     TESProcess(
         MeshLib::Mesh& mesh,
-        Process::NonlinearSolver& nonlinear_solver,
-        std::unique_ptr<Process::TimeDiscretization>&& time_discretization,
-        std::unique_ptr<NumLib::ConvergenceCriterion>&& convergence_criterion,
         std::vector<std::unique_ptr<ParameterBase>> const& parameters,
         std::vector<std::reference_wrapper<ProcessVariable>>&&
             process_variables,
         SecondaryVariableCollection&& secondary_variables,
-        ProcessOutput&& process_output,
         NumLib::NamedFunctionCaller&& named_function_caller,
         BaseLib::ConfigTree const& config);