diff --git a/.patches/exercise-mainfile/exercise-mainfile.patch b/.patches/exercise-mainfile/exercise-mainfile.patch
index b760bf7c9d2d84698e738a0a23e2225f821619b9..54087404143354b1d2dc043187bf97d9da3ef73f 100644
--- a/.patches/exercise-mainfile/exercise-mainfile.patch
+++ b/.patches/exercise-mainfile/exercise-mainfile.patch
@@ -1,56 +1,26 @@
-diff -ruN exercises/exercise-mainfile/1pproblem.hh exercises/solution/exercise-mainfile/1pproblem.hh
---- exercises/exercise-mainfile/1pproblem.hh	2024-07-08 09:06:59.589159960 +0200
-+++ exercises/solution/exercise-mainfile/1pproblem.hh	2024-07-08 09:06:59.617159848 +0200
-@@ -24,9 +24,9 @@
- #ifndef DUMUX_EX_MAINFILE_ONEP_TEST_PROBLEM_HH
- #define DUMUX_EX_MAINFILE_ONEP_TEST_PROBLEM_HH
- 
-+#include <dumux/porousmediumflow/problem.hh>
- #include <dumux/common/properties.hh>
- #include <dumux/common/boundarytypes.hh>
--#include <dumux/porousmediumflow/problem.hh>
- 
- namespace Dumux {
- 
-@@ -55,7 +55,7 @@
-     OnePTestProblem(std::shared_ptr<const GridGeometry> gridGeometry)
-     : ParentType(gridGeometry)
-     {
--        FluidSystem::Component::init(/*tempMin=*/273.15,
-+        FluidSystem::Component::init(/*tempMin=*/272.15,
-                                      /*tempMax=*/294.15,
-                                      /*numTemp=*/10,
-                                      /*pMin=*/1.0e4,
-@@ -104,7 +104,6 @@
-     {
-         return PrimaryVariables(1.0e5);
-     }
--
- };
- 
- } // end namespace Dumux
 diff -ruN exercises/exercise-mainfile/CMakeLists.txt exercises/solution/exercise-mainfile/CMakeLists.txt
---- exercises/exercise-mainfile/CMakeLists.txt	2024-07-08 09:06:59.589159960 +0200
-+++ exercises/solution/exercise-mainfile/CMakeLists.txt	2024-07-08 09:06:59.617159848 +0200
-@@ -1,12 +1,9 @@
+--- exercises/exercise-mainfile/CMakeLists.txt	2024-07-17 10:22:05.932307007 +0200
++++ exercises/solution/exercise-mainfile/CMakeLists.txt	2024-07-17 10:53:48.856804228 +0200
+@@ -1,12 +1,7 @@
  # the one-phase simulation program
 -dumux_add_test(NAME exercise_mainfile_a
 -               SOURCES exercise1pamain.cc)
-+dumux_add_test(NAME exercise_mainfile_a_solution
-+               SOURCES exercise1pa_solution_main.cc
-+               COMPILE_DEFINITIONS TYPETAG=OnePIncompressible)
- 
+-
 -dumux_add_test(NAME exercise_mainfile_b
 -               SOURCES exercise1pbmain.cc)
 -
 -dumux_add_test(NAME exercise_mainfile_c
 -               SOURCES exercise1pcmain.cc)
-+# here, add the two-phase non-isothermal simulation program
++dumux_add_test(NAME exercise_mainfile_a_solution
++               SOURCES exercise1pa_solution_main.cc
++               COMPILE_DEFINITIONS TYPETAG=OnePIncompressible)
  
  # add a symlink for each input file
- add_input_file_links()
+-add_input_file_links()
++add_input_file_links()
+\ No newline at end of file
 diff -ruN exercises/exercise-mainfile/exercise1pamain.cc exercises/solution/exercise-mainfile/exercise1pamain.cc
---- exercises/exercise-mainfile/exercise1pamain.cc	2024-07-08 09:06:59.589159960 +0200
+--- exercises/exercise-mainfile/exercise1pamain.cc	2024-07-16 09:26:32.478904819 +0200
 +++ exercises/solution/exercise-mainfile/exercise1pamain.cc	1970-01-01 01:00:00.000000000 +0100
 @@ -1,142 +0,0 @@
 -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -197,8 +167,8 @@ diff -ruN exercises/exercise-mainfile/exercise1pamain.cc exercises/solution/exer
 -}// end main
 diff -ruN exercises/exercise-mainfile/exercise1pa_solution_main.cc exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc
 --- exercises/exercise-mainfile/exercise1pa_solution_main.cc	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc	2024-07-08 09:06:59.617159848 +0200
-@@ -0,0 +1,143 @@
++++ exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc	2024-07-17 10:13:11.041822458 +0200
+@@ -0,0 +1,142 @@
 +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 +// vi: set et ts=4 sw=4 sts=4:
 +/*****************************************************************************
@@ -224,7 +194,6 @@ diff -ruN exercises/exercise-mainfile/exercise1pa_solution_main.cc exercises/sol
 + */
 +#include <config.h>
 +
-+#include "1pproblem.hh"
 +#include "properties.hh"
 +
 +#include <iostream>
@@ -301,8 +270,8 @@ diff -ruN exercises/exercise-mainfile/exercise1pa_solution_main.cc exercises/sol
 +
 +    Dune::Timer timer;
 +
-+    // TODO: dumux-course-task
-+    // change the differentiation method to analytic by changing from DiffMethod::numeric to DiffMethod::analytic
++    // TODO: dumux-course-task 3
++    // Change the differentiation method to analytic by changing from DiffMethod::numeric to DiffMethod::analytic
 +
 +    // the assembler for stationary problems
 +    using Assembler = FVAssembler<TypeTag, DiffMethod::analytic>;
@@ -343,7 +312,7 @@ diff -ruN exercises/exercise-mainfile/exercise1pa_solution_main.cc exercises/sol
 +
 +}// end main
 diff -ruN exercises/exercise-mainfile/exercise1pbmain.cc exercises/solution/exercise-mainfile/exercise1pbmain.cc
---- exercises/exercise-mainfile/exercise1pbmain.cc	2024-07-08 09:06:59.589159960 +0200
+--- exercises/exercise-mainfile/exercise1pbmain.cc	2024-07-16 09:26:32.478904819 +0200
 +++ exercises/solution/exercise-mainfile/exercise1pbmain.cc	1970-01-01 01:00:00.000000000 +0100
 @@ -1,132 +0,0 @@
 -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -479,7 +448,7 @@ diff -ruN exercises/exercise-mainfile/exercise1pbmain.cc exercises/solution/exer
 -
 -}// end main
 diff -ruN exercises/exercise-mainfile/exercise1pcmain.cc exercises/solution/exercise-mainfile/exercise1pcmain.cc
---- exercises/exercise-mainfile/exercise1pcmain.cc	2024-07-08 09:06:59.589159960 +0200
+--- exercises/exercise-mainfile/exercise1pcmain.cc	2024-07-16 09:26:32.478904819 +0200
 +++ exercises/solution/exercise-mainfile/exercise1pcmain.cc	1970-01-01 01:00:00.000000000 +0100
 @@ -1,158 +0,0 @@
 -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -641,7 +610,7 @@ diff -ruN exercises/exercise-mainfile/exercise1pcmain.cc exercises/solution/exer
 -
 -}// end main
 diff -ruN exercises/exercise-mainfile/exercise_mainfile_a.input exercises/solution/exercise-mainfile/exercise_mainfile_a.input
---- exercises/exercise-mainfile/exercise_mainfile_a.input	2024-07-08 09:06:59.589159960 +0200
+--- exercises/exercise-mainfile/exercise_mainfile_a.input	2024-07-17 10:40:13.034110630 +0200
 +++ exercises/solution/exercise-mainfile/exercise_mainfile_a.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,18 +0,0 @@
 -[Grid]
@@ -664,8 +633,8 @@ diff -ruN exercises/exercise-mainfile/exercise_mainfile_a.input exercises/soluti
 -BaseEpsilon = 1e-10
 diff -ruN exercises/exercise-mainfile/exercise_mainfile_a_solution.input exercises/solution/exercise-mainfile/exercise_mainfile_a_solution.input
 --- exercises/exercise-mainfile/exercise_mainfile_a_solution.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-mainfile/exercise_mainfile_a_solution.input	2024-07-08 09:06:59.617159848 +0200
-@@ -0,0 +1,17 @@
++++ exercises/solution/exercise-mainfile/exercise_mainfile_a_solution.input	2024-07-17 10:40:16.508138378 +0200
+@@ -0,0 +1,18 @@
 +[Grid]
 +LowerLeft = 0 0
 +UpperRight = 1 1
@@ -683,8 +652,10 @@ diff -ruN exercises/exercise-mainfile/exercise_mainfile_a_solution.input exercis
 +
 +[Assembly.NumericDifference]
 +PriVarMagnitude = 1e5
++BaseEpsilon = 1e-10
+\ No newline at end of file
 diff -ruN exercises/exercise-mainfile/exercise_mainfile_b.input exercises/solution/exercise-mainfile/exercise_mainfile_b.input
---- exercises/exercise-mainfile/exercise_mainfile_b.input	2024-07-08 09:06:59.589159960 +0200
+--- exercises/exercise-mainfile/exercise_mainfile_b.input	2024-07-16 09:26:32.478904819 +0200
 +++ exercises/solution/exercise-mainfile/exercise_mainfile_b.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,17 +0,0 @@
 -[Grid]
@@ -705,7 +676,7 @@ diff -ruN exercises/exercise-mainfile/exercise_mainfile_b.input exercises/soluti
 -[Assembly.NumericDifference]
 -PriVarMagnitude = 1e5
 diff -ruN exercises/exercise-mainfile/exercise_mainfile_c.input exercises/solution/exercise-mainfile/exercise_mainfile_c.input
---- exercises/exercise-mainfile/exercise_mainfile_c.input	2024-07-08 09:06:59.589159960 +0200
+--- exercises/exercise-mainfile/exercise_mainfile_c.input	2024-07-16 09:26:32.478904819 +0200
 +++ exercises/solution/exercise-mainfile/exercise_mainfile_c.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,21 +0,0 @@
 -[TimeLoop]
@@ -729,42 +700,24 @@ diff -ruN exercises/exercise-mainfile/exercise_mainfile_c.input exercises/soluti
 -
 -[Assembly.NumericDifference]
 -PriVarMagnitude = 1e5
-\ Kein Zeilenumbruch am Dateiende.
+\ No newline at end of file
 diff -ruN exercises/exercise-mainfile/properties.hh exercises/solution/exercise-mainfile/properties.hh
---- exercises/exercise-mainfile/properties.hh	2024-07-08 09:06:59.589159960 +0200
-+++ exercises/solution/exercise-mainfile/properties.hh	2024-07-08 09:06:59.617159848 +0200
-@@ -35,20 +35,19 @@
- #include <dumux/discretization/ccmpfa.hh>
- #include <dumux/discretization/box.hh>
+--- exercises/exercise-mainfile/properties.hh	2024-07-17 10:13:11.040822436 +0200
++++ exercises/solution/exercise-mainfile/properties.hh	2024-07-17 10:13:11.041822458 +0200
+@@ -37,8 +37,8 @@
  
--
  #include <dumux/porousmediumflow/1p/model.hh>
--// TODO: dumux-course-task 3
+ // TODO: dumux-course-task 3
 -// uncomment the incompressiblelocalresidual which is a specialization of the standard immiscible localresidual for one phase incompressible cases and provides an analytic jacobian.
 -// #include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh>
-+// TODO: dumux-course-task
 +// uncomment the incompressiblelocalresidual which is a specialization of the standard immisible localresidual for one phase incompressible cases and provides an analytic jacobian.
 +#include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh>
  
  #include "1pspatialparams.hh"
  #include "1pproblem.hh"
+@@ -80,8 +80,8 @@
  
- namespace Dumux::Properties {
- 
--// Create the new type tag nodes:
-+// Create the new type tag nodes.
- // Here we define the incompressible type tag as well as the compressible type tag.
--// The incompressible uses a different fluidsystem than the compressible
-+// The incompressible uses a different fluidsystem than the compressible.
- namespace TTag {
- struct OnePBase { using InheritsFrom = std::tuple<OneP>; };
- struct OnePIncompressible { using InheritsFrom = std::tuple<OnePBase, CCTpfaModel>; };
-@@ -79,10 +78,10 @@
-     using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
- };
- 
--// TODO: dumux-course-task 3
-+// TODO: dumux-course-task
+ // TODO: dumux-course-task 3
  // set the OneP Incompressible local residual for the OnePIncompressible type tag. This provides an analytic jacobian to be used for the analytic solution. Change that by setting:
 -// template<class TypeTag>
 -// struct LocalResidual<TypeTag, TTag::OnePIncompressible> { using type = OnePIncompressibleLocalResidual<TypeTag>; };
@@ -774,11 +727,10 @@ diff -ruN exercises/exercise-mainfile/properties.hh exercises/solution/exercise-
  
  // the fluid system for compressible tests
 diff -ruN exercises/exercise-mainfile/README.md exercises/solution/exercise-mainfile/README.md
---- exercises/exercise-mainfile/README.md	2024-07-08 09:06:59.589159960 +0200
+--- exercises/exercise-mainfile/README.md	2024-07-17 10:13:11.040822436 +0200
 +++ exercises/solution/exercise-mainfile/README.md	1970-01-01 01:00:00.000000000 +0100
-@@ -1,203 +0,0 @@
+@@ -1,196 +0,0 @@
 -# Exercise Mainfiles (DuMuX course)
--<br>
 -
 -## Problem set-up
 -
@@ -803,9 +755,7 @@ diff -ruN exercises/exercise-mainfile/README.md exercises/solution/exercise-main
 -
 -* Navigate to the directory `dumux-course/exercises/exercise-mainfile`
 -
--<br><br>
--### Task 1: Getting familiar with the code
--<hr>
+-## Task 1: Getting familiar with the code
 -
 -Locate all the files you will need for this exercise
 -* The __main file__ for the __incompressible, stationary__ problem : `exercise1pamain.cc`
@@ -819,8 +769,8 @@ diff -ruN exercises/exercise-mainfile/README.md exercises/solution/exercise-main
 -* The __input file__ for the __compressible, instationary__ problem: `exercise_mainfile_c.input`
 -
 -Please pay special attention to the similarities and differences in the three main files.
--The first main file is solved linearly and does not need a newton solver or any other nonlinear solver method.
--The second problem is a nonlinear problem and uses newton's method to solve the system.
+-The first main file is solved linearly and does not need a Newton solver or any other nonlinear solver method.
+-The second problem is a nonlinear problem and uses Newton's method to solve the system.
 -The third problem is nonlinear and additionally instationary.
 -Therefore, a time loop needs to be included in the main file.
 -
@@ -851,15 +801,15 @@ diff -ruN exercises/exercise-mainfile/README.md exercises/solution/exercise-main
 -
 -// the problem (initial and boundary conditions)
 -using Problem = GetPropType<TypeTag, Properties::Problem>;
--auto problem = std::make_shared<Problem>(fvGridGeometry);
+-auto problem = std::make_shared<Problem>(gridGeometry);
 -
 -// the solution vector
 -using SolutionVector = GetPropType<TypeTag, Properties::SolutionVector>;
--SolutionVector x(fvGridGeometry->numDofs());
+-SolutionVector x(gridGeometry->numDofs());
 -
 -// the grid variables
 -using GridVariables = GetPropType<TypeTag, Properties::GridVariables>;
--auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+-auto gridVariables = std::make_shared<GridVariables>(problem, gridGeometry);
 -gridVariables->init(x);
 -
 -// initialize the vtk output module
@@ -887,7 +837,7 @@ diff -ruN exercises/exercise-mainfile/README.md exercises/solution/exercise-main
 -
 -// the assembler with time loop for instationary problem
 -using Assembler = FVAssembler<TypeTag, DiffMethod::numeric>;
--auto assembler = std::make_shared<Assembler>(problem, fvGridGeometry, gridVariables, timeLoop);
+-auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 -
 -// the linear solver
 -using LinearSolver = ILUBiCGSTABIstlSolver<LinearSolverTraits<GridGeometry>, LinearAlgebraTraitsFromAssembler<Assembler>>;
@@ -928,9 +878,7 @@ diff -ruN exercises/exercise-mainfile/README.md exercises/solution/exercise-main
 -timeLoop->finalize(leafGridView.comm());
 -```
 -
--<br><br><br>
--### Task 2: Compiling and running an executable
--<hr>
+-## Task 2: Compiling and running an executable
 -
 -* Change to the build-directory
 -
@@ -958,9 +906,7 @@ diff -ruN exercises/exercise-mainfile/README.md exercises/solution/exercise-main
 -paraview 1p_incompressible_stationary.pvd
 -```
 -
--<br><br><br>
--### Task 3: Analytical differentiation
--<hr>
+-## Task 3: Analytical differentiation
 -
 -In the input file `exercise_mainfile_a.input`, you will see that there is a variable `BaseEpsilon`.
 -This defines the base value for the epsilon used in the numeric differentiation.
diff --git a/exercises/exercise-mainfile/README.md b/exercises/exercise-mainfile/README.md
index 0f8ee4742f6c7cf62a4340b88714efd317d5dd87..e93bf2ced64d9528ef3cc8c1e47cbb548090c3fb 100644
--- a/exercises/exercise-mainfile/README.md
+++ b/exercises/exercise-mainfile/README.md
@@ -1,5 +1,4 @@
 # Exercise Mainfiles (DuMuX course)
-<br>
 
 ## Problem set-up
 
@@ -24,9 +23,7 @@ In the beginning, there is a uniform pressure of $1\cdot 10^5 Pa$ in the whole d
 
 * Navigate to the directory `dumux-course/exercises/exercise-mainfile`
 
-<br><br>
-### Task 1: Getting familiar with the code
-<hr>
+## Task 1: Getting familiar with the code
 
 Locate all the files you will need for this exercise
 * The __main file__ for the __incompressible, stationary__ problem : `exercise1pamain.cc`
@@ -40,8 +37,8 @@ Locate all the files you will need for this exercise
 * The __input file__ for the __compressible, instationary__ problem: `exercise_mainfile_c.input`
 
 Please pay special attention to the similarities and differences in the three main files.
-The first main file is solved linearly and does not need a newton solver or any other nonlinear solver method.
-The second problem is a nonlinear problem and uses newton's method to solve the system.
+The first main file is solved linearly and does not need a Newton solver or any other nonlinear solver method.
+The second problem is a nonlinear problem and uses Newton's method to solve the system.
 The third problem is nonlinear and additionally instationary.
 Therefore, a time loop needs to be included in the main file.
 
@@ -72,15 +69,15 @@ auto gridGeometry = std::make_shared<GridGeometry>(leafGridView);
 
 // the problem (initial and boundary conditions)
 using Problem = GetPropType<TypeTag, Properties::Problem>;
-auto problem = std::make_shared<Problem>(fvGridGeometry);
+auto problem = std::make_shared<Problem>(gridGeometry);
 
 // the solution vector
 using SolutionVector = GetPropType<TypeTag, Properties::SolutionVector>;
-SolutionVector x(fvGridGeometry->numDofs());
+SolutionVector x(gridGeometry->numDofs());
 
 // the grid variables
 using GridVariables = GetPropType<TypeTag, Properties::GridVariables>;
-auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+auto gridVariables = std::make_shared<GridVariables>(problem, gridGeometry);
 gridVariables->init(x);
 
 // initialize the vtk output module
@@ -108,7 +105,7 @@ timeLoop->setMaxTimeStepSize(maxDt);
 
 // the assembler with time loop for instationary problem
 using Assembler = FVAssembler<TypeTag, DiffMethod::numeric>;
-auto assembler = std::make_shared<Assembler>(problem, fvGridGeometry, gridVariables, timeLoop);
+auto assembler = std::make_shared<Assembler>(problem, gridGeometry, gridVariables, timeLoop, xOld);
 
 // the linear solver
 using LinearSolver = ILUBiCGSTABIstlSolver<LinearSolverTraits<GridGeometry>, LinearAlgebraTraitsFromAssembler<Assembler>>;
@@ -149,9 +146,7 @@ timeLoop->start(); do
 timeLoop->finalize(leafGridView.comm());
 ```
 
-<br><br><br>
-### Task 2: Compiling and running an executable
-<hr>
+## Task 2: Compiling and running an executable
 
 * Change to the build-directory
 
@@ -179,9 +174,7 @@ make exercise_mainfile_a exercise_mainfile_b exercise_mainfile_c
 paraview 1p_incompressible_stationary.pvd
 ```
 
-<br><br><br>
-### Task 3: Analytical differentiation
-<hr>
+## Task 3: Analytical differentiation
 
 In the input file `exercise_mainfile_a.input`, you will see that there is a variable `BaseEpsilon`.
 This defines the base value for the epsilon used in the numeric differentiation.
diff --git a/exercises/exercise-mainfile/properties.hh b/exercises/exercise-mainfile/properties.hh
index ce835d308f37dad995e6ca7956896d47c037f399..309a066e30fdca6f2961942583263003ec0853ad 100644
--- a/exercises/exercise-mainfile/properties.hh
+++ b/exercises/exercise-mainfile/properties.hh
@@ -35,7 +35,6 @@
 #include <dumux/discretization/ccmpfa.hh>
 #include <dumux/discretization/box.hh>
 
-
 #include <dumux/porousmediumflow/1p/model.hh>
 // TODO: dumux-course-task 3
 // uncomment the incompressiblelocalresidual which is a specialization of the standard immiscible localresidual for one phase incompressible cases and provides an analytic jacobian.
diff --git a/exercises/solution/exercise-mainfile/1pproblem.hh b/exercises/solution/exercise-mainfile/1pproblem.hh
index c59565097b35efb053895b9a96f2747963c3650b..8f1ec58929232756025e5d14f8daffc7ae9cb8d8 100644
--- a/exercises/solution/exercise-mainfile/1pproblem.hh
+++ b/exercises/solution/exercise-mainfile/1pproblem.hh
@@ -24,9 +24,9 @@
 #ifndef DUMUX_EX_MAINFILE_ONEP_TEST_PROBLEM_HH
 #define DUMUX_EX_MAINFILE_ONEP_TEST_PROBLEM_HH
 
-#include <dumux/porousmediumflow/problem.hh>
 #include <dumux/common/properties.hh>
 #include <dumux/common/boundarytypes.hh>
+#include <dumux/porousmediumflow/problem.hh>
 
 namespace Dumux {
 
@@ -55,7 +55,7 @@ public:
     OnePTestProblem(std::shared_ptr<const GridGeometry> gridGeometry)
     : ParentType(gridGeometry)
     {
-        FluidSystem::Component::init(/*tempMin=*/272.15,
+        FluidSystem::Component::init(/*tempMin=*/273.15,
                                      /*tempMax=*/294.15,
                                      /*numTemp=*/10,
                                      /*pMin=*/1.0e4,
@@ -104,6 +104,7 @@ public:
     {
         return PrimaryVariables(1.0e5);
     }
+
 };
 
 } // end namespace Dumux
diff --git a/exercises/solution/exercise-mainfile/CMakeLists.txt b/exercises/solution/exercise-mainfile/CMakeLists.txt
index fe4b84747f2b0c41e5e6177b08bf3ebb8fa932e1..ace271dd31b259da48c142b2e798b1545e7a307c 100644
--- a/exercises/solution/exercise-mainfile/CMakeLists.txt
+++ b/exercises/solution/exercise-mainfile/CMakeLists.txt
@@ -3,7 +3,5 @@ dumux_add_test(NAME exercise_mainfile_a_solution
                SOURCES exercise1pa_solution_main.cc
                COMPILE_DEFINITIONS TYPETAG=OnePIncompressible)
 
-# here, add the two-phase non-isothermal simulation program
-
 # add a symlink for each input file
-add_input_file_links()
+add_input_file_links()
\ No newline at end of file
diff --git a/exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc b/exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc
index 22d8495b519bb647aa03d5f5242578c77941c7fd..c25d369209e2aa93b6ad49af4495f1e034f51fa6 100644
--- a/exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc
+++ b/exercises/solution/exercise-mainfile/exercise1pa_solution_main.cc
@@ -23,7 +23,6 @@
  */
 #include <config.h>
 
-#include "1pproblem.hh"
 #include "properties.hh"
 
 #include <iostream>
@@ -100,8 +99,8 @@ int main(int argc, char** argv)
 
     Dune::Timer timer;
 
-    // TODO: dumux-course-task
-    // change the differentiation method to analytic by changing from DiffMethod::numeric to DiffMethod::analytic
+    // TODO: dumux-course-task 3
+    // Change the differentiation method to analytic by changing from DiffMethod::numeric to DiffMethod::analytic
 
     // the assembler for stationary problems
     using Assembler = FVAssembler<TypeTag, DiffMethod::analytic>;
diff --git a/exercises/solution/exercise-mainfile/exercise_mainfile_a_solution.input b/exercises/solution/exercise-mainfile/exercise_mainfile_a_solution.input
index f3d01fc5abac4e26e944289f7dd973b7d4c922d8..c9eb9c076df76a47da255df6927046b771bb2088 100644
--- a/exercises/solution/exercise-mainfile/exercise_mainfile_a_solution.input
+++ b/exercises/solution/exercise-mainfile/exercise_mainfile_a_solution.input
@@ -15,3 +15,4 @@ PermeabilityLens = 1e-12 # [m^2]
 
 [Assembly.NumericDifference]
 PriVarMagnitude = 1e5
+BaseEpsilon = 1e-10
\ No newline at end of file
diff --git a/exercises/solution/exercise-mainfile/properties.hh b/exercises/solution/exercise-mainfile/properties.hh
index e6f9e93cc7966dc5209c2934248c51dbf24692be..ee94cf20eddeb736f98a6086c42bd8e858371e95 100644
--- a/exercises/solution/exercise-mainfile/properties.hh
+++ b/exercises/solution/exercise-mainfile/properties.hh
@@ -36,7 +36,7 @@
 #include <dumux/discretization/box.hh>
 
 #include <dumux/porousmediumflow/1p/model.hh>
-// TODO: dumux-course-task
+// TODO: dumux-course-task 3
 // uncomment the incompressiblelocalresidual which is a specialization of the standard immisible localresidual for one phase incompressible cases and provides an analytic jacobian.
 #include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh>
 
@@ -45,9 +45,9 @@
 
 namespace Dumux::Properties {
 
-// Create the new type tag nodes.
+// Create the new type tag nodes:
 // Here we define the incompressible type tag as well as the compressible type tag.
-// The incompressible uses a different fluidsystem than the compressible.
+// The incompressible uses a different fluidsystem than the compressible
 namespace TTag {
 struct OnePBase { using InheritsFrom = std::tuple<OneP>; };
 struct OnePIncompressible { using InheritsFrom = std::tuple<OnePBase, CCTpfaModel>; };
@@ -78,7 +78,7 @@ public:
     using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
 };
 
-// TODO: dumux-course-task
+// TODO: dumux-course-task 3
 // set the OneP Incompressible local residual for the OnePIncompressible type tag. This provides an analytic jacobian to be used for the analytic solution. Change that by setting:
 template<class TypeTag>
 struct LocalResidual<TypeTag, TTag::OnePIncompressible> { using type = OnePIncompressibleLocalResidual<TypeTag>; };