diff --git a/.patches/exercise-coupling-ff-pm/exercise-coupling-ff-pm.patch b/.patches/exercise-coupling-ff-pm/exercise-coupling-ff-pm.patch
index 3152274794c413d45b0a8dc17e6f1d2a39b8f484..4b5573729ef7049ee30a4ac3c34bf419a27292bc 100644
--- a/.patches/exercise-coupling-ff-pm/exercise-coupling-ff-pm.patch
+++ b/.patches/exercise-coupling-ff-pm/exercise-coupling-ff-pm.patch
@@ -1,6 +1,6 @@
 diff -ruN exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt
---- exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt	2024-07-17 13:58:18.208850308 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt	2024-07-17 13:58:18.216850425 +0200
+--- exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt	2024-07-17 14:21:07.396209997 +0200
++++ exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt	2024-07-17 14:21:07.400210015 +0200
 @@ -1,10 +1,30 @@
  # SPDX-FileCopyrightInfo: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
  # SPDX-License-Identifier: GPL-3.0-or-later
@@ -36,8 +36,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt exercises/s
  # add a symlink for each input file
  add_input_file_links()
 diff -ruN exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh exercises/solution/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh
---- exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2024-07-17 13:58:18.208850308 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2024-07-17 13:58:18.216850425 +0200
+--- exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2024-07-17 14:21:07.396209997 +0200
++++ exercises/solution/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh	2024-07-17 14:21:07.400210015 +0200
 @@ -71,8 +71,7 @@
  
          const auto& globalPos = scvf.dofPosition();
@@ -135,8 +135,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/freeflowsubproblem.hh exer
      }
  
 diff -ruN exercises/exercise-coupling-ff-pm/interface/main.cc exercises/solution/exercise-coupling-ff-pm/interface/main.cc
---- exercises/exercise-coupling-ff-pm/interface/main.cc	2024-07-17 13:58:18.208850308 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/main.cc	2024-07-17 13:58:18.252850955 +0200
+--- exercises/exercise-coupling-ff-pm/interface/main.cc	2024-07-17 14:21:07.396209997 +0200
++++ exercises/solution/exercise-coupling-ff-pm/interface/main.cc	2024-07-17 14:55:41.548286394 +0200
 @@ -52,9 +52,7 @@
      using FreeflowTypeTag = Properties::TTag::FreeflowOneP;
      using PorousMediumTypeTag = Properties::TTag::PorousMediumFlowOneP;
@@ -263,8 +263,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/main.cc exercises/solution
      using PorousMediumSolutionVector = GetPropType<PorousMediumTypeTag, Properties::SolutionVector>;
      VtkOutputModule<PorousMediumGridVariables, PorousMediumSolutionVector> porousMediumVtkWriter(*porousMediumGridVariables,
 diff -ruN exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh exercises/solution/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh
---- exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2024-07-17 13:58:18.252850955 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2024-07-17 13:58:18.252850955 +0200
+--- exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2024-07-17 14:55:41.548286394 +0200
++++ exercises/solution/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh	2024-07-17 14:55:41.548286394 +0200
 @@ -68,9 +68,10 @@
          // set Neumann BCs to all boundaries first
          values.setAllNeumann();
@@ -278,8 +278,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/porousmediumsubproblem.hh
          // set the coupling boundary condition at the interface
          if (couplingManager().isCoupledEntity(CouplingManager::darcyIdx, scvf))
 diff -ruN exercises/exercise-coupling-ff-pm/interface/properties.hh exercises/solution/exercise-coupling-ff-pm/interface/properties.hh
---- exercises/exercise-coupling-ff-pm/interface/properties.hh	2024-07-17 13:58:18.252850955 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/properties.hh	2024-07-17 13:58:18.216850425 +0200
+--- exercises/exercise-coupling-ff-pm/interface/properties.hh	2024-07-17 14:55:41.548286394 +0200
++++ exercises/solution/exercise-coupling-ff-pm/interface/properties.hh	2024-07-17 14:21:07.400210015 +0200
 @@ -16,9 +16,9 @@
  #include <dumux/multidomain/staggeredtraits.hh>
  #include <dumux/multidomain/boundary/stokesdarcy/couplingmanager.hh>
@@ -335,16 +335,16 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/properties.hh exercises/so
  };
  
  template<class TypeTag>
-diff -ruN exercises/exercise-coupling-ff-pm/interface/readme.md exercises/solution/exercise-coupling-ff-pm/interface/readme.md
---- exercises/exercise-coupling-ff-pm/interface/readme.md	2024-07-17 14:00:29.510779420 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/interface/readme.md	1970-01-01 01:00:00.000000000 +0100
+diff -ruN exercises/exercise-coupling-ff-pm/interface/README.md exercises/solution/exercise-coupling-ff-pm/interface/README.md
+--- exercises/exercise-coupling-ff-pm/interface/README.md	2024-07-18 11:55:02.684061212 +0200
++++ exercises/solution/exercise-coupling-ff-pm/interface/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,169 +0,0 @@
 -## 1. Changing the interface
 -
 -In this part of the exercise, a simple coupled system consisting of a one-phase (1p) free flow and a one-phase flow in a porous medium is set up. Both subproblems have no-flow boundaries at the sides.
 -Currently, a velocity profile is set on the upper free flow boundary, which leads to a vertical flow into the porous medium:
 -
--![](../extradoc/ex_ff-pm-vertical-flow.png)
+-![](../../extradoc/ex_ff-pm-vertical-flow.png)
 -
 -Note that we neglect the influence of gravity and only solve for the stationary problem in this exercise.
 -
@@ -502,15 +502,15 @@ diff -ruN exercises/exercise-coupling-ff-pm/interface/readme.md exercises/soluti
 -
 -Recompile and rerun to check if the final result looks something like this:
 -
--![](../extradoc/ex_ff-pm-wave-interface.png)
+-![](../../extradoc/ex_ff-pm-wave-interface.png)
 -
 -*Extra Points:*
 -Rather than enforcing a pressure difference across the domain, an inflow velocity profile could be set.
 -What changes to the left boundary conditions in the free-flow domain would you make to introduce this? What conditions can be enforced on the right boundary?
 -Hint: A relation between velocity and position is used for the vertical velocity component in the original form of the `dirichletAtPos` method.
 diff -ruN exercises/exercise-coupling-ff-pm/models/CMakeLists.txt exercises/solution/exercise-coupling-ff-pm/models/CMakeLists.txt
---- exercises/exercise-coupling-ff-pm/models/CMakeLists.txt	2024-07-17 13:58:18.208850308 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/models/CMakeLists.txt	2024-07-17 13:58:18.216850425 +0200
+--- exercises/exercise-coupling-ff-pm/models/CMakeLists.txt	2024-07-17 14:21:07.396209997 +0200
++++ exercises/solution/exercise-coupling-ff-pm/models/CMakeLists.txt	2024-07-17 14:21:07.400210015 +0200
 @@ -1,9 +1,32 @@
  # SPDX-FileCopyrightInfo: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
  # SPDX-License-Identifier: GPL-3.0-or-later
@@ -549,8 +549,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/CMakeLists.txt exercises/solu
 +
 +dune_symlink_to_source_files(FILES "params_orig_a.input" "params_b_c.input" plotFluxes.py)
 diff -ruN exercises/exercise-coupling-ff-pm/models/main.cc exercises/solution/exercise-coupling-ff-pm/models/main.cc
---- exercises/exercise-coupling-ff-pm/models/main.cc	2024-07-17 13:58:18.208850308 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/models/main.cc	2024-07-17 13:58:18.216850425 +0200
+--- exercises/exercise-coupling-ff-pm/models/main.cc	2024-07-17 14:21:07.396209997 +0200
++++ exercises/solution/exercise-coupling-ff-pm/models/main.cc	2024-07-17 14:21:07.400210015 +0200
 @@ -127,9 +127,15 @@
      auto porousMediumGridVariables = std::make_shared<PorousMediumGridVariables>(porousMediumProblem, porousMediumFvGridGeometry);
      porousMediumGridVariables->init(sol[porousMediumIdx]);
@@ -572,7 +572,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/main.cc exercises/solution/ex
      GetPropType<FreeflowTypeTag, Properties::IOFields>::initOutputModule(freeflowVtkWriter);
 diff -ruN exercises/exercise-coupling-ff-pm/models/params_b_c.input exercises/solution/exercise-coupling-ff-pm/models/params_b_c.input
 --- exercises/exercise-coupling-ff-pm/models/params_b_c.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/models/params_b_c.input	2024-07-16 16:28:05.559708538 +0200
++++ exercises/solution/exercise-coupling-ff-pm/models/params_b_c.input	2024-07-17 10:49:57.312824738 +0200
 @@ -0,0 +1,57 @@
 +[TimeLoop]
 +DtInitial = 100 # s
@@ -632,7 +632,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/params_b_c.input exercises/so
 +[Assembly]
 +NumericDifference.BaseEpsilon = 1e-8
 diff -ruN exercises/exercise-coupling-ff-pm/models/params.input exercises/solution/exercise-coupling-ff-pm/models/params.input
---- exercises/exercise-coupling-ff-pm/models/params.input	2024-07-17 13:58:18.252850955 +0200
+--- exercises/exercise-coupling-ff-pm/models/params.input	2024-07-17 14:55:41.548286394 +0200
 +++ exercises/solution/exercise-coupling-ff-pm/models/params.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,58 +0,0 @@
 -[TimeLoop]
@@ -695,7 +695,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/params.input exercises/soluti
 -NumericDifference.BaseEpsilon = 1e-8
 diff -ruN exercises/exercise-coupling-ff-pm/models/params_orig_a.input exercises/solution/exercise-coupling-ff-pm/models/params_orig_a.input
 --- exercises/exercise-coupling-ff-pm/models/params_orig_a.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/models/params_orig_a.input	2024-07-16 16:28:05.563708580 +0200
++++ exercises/solution/exercise-coupling-ff-pm/models/params_orig_a.input	2024-07-17 10:49:57.312824738 +0200
 @@ -0,0 +1,56 @@
 +[TimeLoop]
 +DtInitial = 100 # s
@@ -754,8 +754,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/params_orig_a.input exercises
 +[Assembly]
 +NumericDifference.BaseEpsilon = 1e-8
 diff -ruN exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh exercises/solution/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh
---- exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2024-07-17 13:58:18.252850955 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2024-07-17 13:58:18.252850955 +0200
+--- exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2024-07-17 14:55:41.548286394 +0200
++++ exercises/solution/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh	2024-07-17 14:55:41.548286394 +0200
 @@ -52,10 +52,15 @@
      // primary variable indices
      static constexpr int conti0EqIdx = Indices::conti0EqIdx;
@@ -877,8 +877,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/porousmediumsubproblem.hh exe
      std::shared_ptr<CouplingManager> couplingManager_;
  
 diff -ruN exercises/exercise-coupling-ff-pm/models/properties.hh exercises/solution/exercise-coupling-ff-pm/models/properties.hh
---- exercises/exercise-coupling-ff-pm/models/properties.hh	2024-07-17 13:58:18.252850955 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/models/properties.hh	2024-07-17 13:58:18.216850425 +0200
+--- exercises/exercise-coupling-ff-pm/models/properties.hh	2024-07-17 14:55:41.548286394 +0200
++++ exercises/solution/exercise-coupling-ff-pm/models/properties.hh	2024-07-17 14:21:07.400210015 +0200
 @@ -25,12 +25,14 @@
  #include <dumux/discretization/cctpfa.hh>
  #include <dumux/material/fluidmatrixinteractions/diffusivityconstanttortuosity.hh>
@@ -960,9 +960,9 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/properties.hh exercises/solut
  
  template<class TypeTag>
  struct EnableGridGeometryCache<TypeTag, TTag::FreeflowNC> { static constexpr bool value = true; };
-diff -ruN exercises/exercise-coupling-ff-pm/models/readme.md exercises/solution/exercise-coupling-ff-pm/models/readme.md
---- exercises/exercise-coupling-ff-pm/models/readme.md	2024-07-17 14:03:33.957481940 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/models/readme.md	1970-01-01 01:00:00.000000000 +0100
+diff -ruN exercises/exercise-coupling-ff-pm/models/README.md exercises/solution/exercise-coupling-ff-pm/models/README.md
+--- exercises/exercise-coupling-ff-pm/models/README.md	2024-07-18 11:54:48.515971823 +0200
++++ exercises/solution/exercise-coupling-ff-pm/models/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,118 +0,0 @@
 -## 2. Changing the porous medium model
 -
@@ -1083,7 +1083,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/models/readme.md exercises/solution/
 -
 -Now you are able to simulate a complete drying of the porous medium. Have a look the resulting liquid saturation distribution within the porous medium (with using paraview).
 diff -ruN exercises/exercise-coupling-ff-pm/README.md exercises/solution/exercise-coupling-ff-pm/README.md
---- exercises/exercise-coupling-ff-pm/README.md	2024-07-17 14:00:29.510779420 +0200
+--- exercises/exercise-coupling-ff-pm/README.md	2024-07-18 11:54:48.515971823 +0200
 +++ exercises/solution/exercise-coupling-ff-pm/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,125 +0,0 @@
 -# Exercise Coupling free flow/porous medium flow (DuMuX Course)
@@ -1093,7 +1093,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/README.md exercises/solution/exercis
 -## Problem set-up
 -
 -> Note: The following problem setup holds for all sub-exercises 1-3.
--> 
+->
 -The model domain consists of two non-overlapping two-dimensional subdomains.
 -Free flow is modeled in the upper subdomain, while the lower subdomain models a flow within a porous medium.
 -Both single-phase flow and two-phase flow will be considered in the porous domain.
@@ -1110,18 +1110,18 @@ diff -ruN exercises/exercise-coupling-ff-pm/README.md exercises/solution/exercis
 -* one __problem file for the free-flow domain__ (`interface/freeflowsubproblem.hh`, `models/freeflowsubproblem.hh`, `turbulence/freeflowsubproblem.hh`),
 -* one __problem file for the porous medium domain__ (`interface/porousmediumsubproblem.hh`, `models/porousmediumsubproblem.hh`, `turbulence/porousmediumsubproblem.hh`),
 -* one __properties file__ (`interface/properties.hh`, `models/properties.hh`, `turbulence/properties.hh`),
--* and one __input files__ (`interface/params.input`, `models/params.input`, `turbulence/params.input`).
+-* and one __input file__ (`interface/params.input`, `models/params.input`, `turbulence/params.input`).
 -Moreover all the exercises share
 -* the __spatial parameters files__ (`1pspatialparams.hh` and `2pspatialparams.hh`)
 -
--In the [Exercise Mainfiles](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/blob/master/exercises/exercise-coupling-ff-pm/interface/main.cc) the overall structure of a main-file was already introduced. For the coupled setup we need now to define properties related to one subproblem (free-flow or porous medium flow) for each of the subproblems.
+-In the [Exercise Mainfiles](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/blob/master/exercises/exercise-mainfile/README.md) the overall structure of a main-file was already introduced. For the coupled setup we need to get properties related to each of the subproblems (free-flow or porous medium flow).
 -E.g. in the main file, `TypeTags` for both submodels are defined, `FreeflowTypeTag` and `PorousMediumTypeTag`. These `TypeTags` collect all of the properties associated with each subproblem.
 -```c++
 -    // Define the sub problem type tags
 -    using FreeflowTypeTag = Properties::TTag::FreeflowNC;
 -    using PorousMediumTypeTag = Properties::TTag::PorousMediumOnePNC;
 -```
--The same applies for types such as `GridManager`,  
+-The same applies for types such as `GridManager`,
 -```c++
 -    // try to create a grid (from the given grid file or the input file)
 -    // for both sub-domains
@@ -1175,9 +1175,9 @@ diff -ruN exercises/exercise-coupling-ff-pm/README.md exercises/solution/exercis
 -                                const SubControlVolumeFace& scvf) const
 -    {
 -        BoundaryTypes values;
--        const auto& globalPos = scvf.center();
 -
 -        //...
+-
 -        // coupling interface
 -        if(couplingManager().isCoupledEntity(CouplingManager::stokesIdx, scvf))
 -        {
@@ -1192,7 +1192,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/README.md exercises/solution/exercis
 -Note that certain checks are performed when combining different models, e.g., the fluid system has to be the same for both domains
 -and the sub-control-volume faces at the interface have to match.
 -
--We will use a staggered grid (also calles Marker-and-Cell method - MAC)to discretize the free-flow domain and a cell-centered finite volume (CCFV) method for the porous medium domain.
+-We will use a staggered grid (also calles Marker-and-Cell method - MAC) to discretize the free-flow domain and a cell-centered finite volume (CCFV) method for the porous medium domain.
 -Keep in mind that the staggered grid implementation distinguishes between face variables (velocity components) and cell center variables (all other variables).
 -For this reason one distinguishes between `CouplingManager::stokesCellCenterIdx` and `CouplingManager::stokesFaceIdx` indices (see `main.cc`), while for the porous medium all variables can be accessed with `CouplingManager::darcyIdx`.
 -
@@ -1208,12 +1208,12 @@ diff -ruN exercises/exercise-coupling-ff-pm/README.md exercises/solution/exercis
 -
 -## Sub-Exercises
 -
--* [**Exercise 1:** Changing the interface between the free- and the porous medium domain](./interface/readme.md)
--* [**Exercise 2:** Changing the porous medium model](./models/readme.md)
--* [**Exercise 3:** Introducing a turbulence model in the free flow domain](./turbulence/readme.md)
+-* [**Exercise 1:** Changing the interface between the free- and the porous medium domain](./interface/README.md)
+-* [**Exercise 2:** Changing the porous medium model](./models/README.md)
+-* [**Exercise 3:** Introducing a turbulence model in the free flow domain](./turbulence/README.md)
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/CMakeLists.txt exercises/solution/exercise-coupling-ff-pm/turbulence/CMakeLists.txt
---- exercises/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2024-07-17 13:58:18.208850308 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2024-07-17 13:58:18.216850425 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2024-07-17 14:21:07.396209997 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/CMakeLists.txt	2024-07-17 14:21:07.400210015 +0200
 @@ -1,10 +1,33 @@
  # SPDX-FileCopyrightInfo: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
  # SPDX-License-Identifier: GPL-3.0-or-later
@@ -1252,8 +1252,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/CMakeLists.txt exercises/
  # add a symlink for each input file
  add_input_file_links()
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh exercises/solution/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh
---- exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2024-07-17 13:58:18.252850955 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2024-07-17 13:58:18.252850955 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2024-07-17 14:55:41.548286394 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh	2024-07-17 14:55:41.548286394 +0200
 @@ -8,8 +8,8 @@
   * \file
   * \brief The free-flow sub problem
@@ -1469,8 +1469,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh exe
          return values;
      }
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/main.cc exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc
---- exercises/exercise-coupling-ff-pm/turbulence/main.cc	2024-07-17 13:58:18.208850308 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc	2024-07-17 13:58:18.256851014 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/main.cc	2024-07-17 14:21:07.396209997 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/main.cc	2024-07-17 14:55:41.548286394 +0200
 @@ -122,11 +122,12 @@
  
      couplingManager->init(freeflowProblem, porousMediumProblem, sol);
@@ -1501,7 +1501,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/main.cc exercises/solutio
          porousMediumProblem->postTimeStep(sol[porousMediumIdx], *porousMediumGridVariables, timeLoop->timeStepSize());
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_b.input exercises/solution/exercise-coupling-ff-pm/turbulence/params_b.input
 --- exercises/exercise-coupling-ff-pm/turbulence/params_b.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_b.input	2024-07-16 16:28:05.563708580 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_b.input	2024-07-17 10:49:57.312824738 +0200
 @@ -0,0 +1,72 @@
 +[TimeLoop]
 +DtInitial =  1e-1 # [s]
@@ -1577,7 +1577,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_b.input exercises/
 +IsFlatWallBounded = True
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_c_d.input exercises/solution/exercise-coupling-ff-pm/turbulence/params_c_d.input
 --- exercises/exercise-coupling-ff-pm/turbulence/params_c_d.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_c_d.input	2024-07-16 16:28:05.563708580 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_c_d.input	2024-07-17 10:49:57.312824738 +0200
 @@ -0,0 +1,72 @@
 +[TimeLoop]
 +DtInitial =  1e-1 # [s]
@@ -1652,7 +1652,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_c_d.input exercise
 +[RANS]
 +IsFlatWallBounded = True
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params.input exercises/solution/exercise-coupling-ff-pm/turbulence/params.input
---- exercises/exercise-coupling-ff-pm/turbulence/params.input	2024-07-16 16:28:05.559708538 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/params.input	2024-07-17 10:49:57.308824748 +0200
 +++ exercises/solution/exercise-coupling-ff-pm/turbulence/params.input	1970-01-01 01:00:00.000000000 +0100
 @@ -1,73 +0,0 @@
 -[TimeLoop]
@@ -1730,7 +1730,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params.input exercises/so
 -SolidHeatCapacity = 790
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_orig_a.input exercises/solution/exercise-coupling-ff-pm/turbulence/params_orig_a.input
 --- exercises/exercise-coupling-ff-pm/turbulence/params_orig_a.input	1970-01-01 01:00:00.000000000 +0100
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_orig_a.input	2024-07-16 16:28:05.563708580 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/params_orig_a.input	2024-07-17 10:49:57.312824738 +0200
 @@ -0,0 +1,72 @@
 +[TimeLoop]
 +DtInitial =  1e-1 # [s]
@@ -1805,8 +1805,8 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/params_orig_a.input exerc
 +[RANS]
 +IsFlatWallBounded = True
 diff -ruN exercises/exercise-coupling-ff-pm/turbulence/properties.hh exercises/solution/exercise-coupling-ff-pm/turbulence/properties.hh
---- exercises/exercise-coupling-ff-pm/turbulence/properties.hh	2024-07-17 13:58:18.252850955 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/properties.hh	2024-07-17 13:58:18.216850425 +0200
+--- exercises/exercise-coupling-ff-pm/turbulence/properties.hh	2024-07-17 14:55:41.548286394 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/properties.hh	2024-07-17 14:21:07.404210034 +0200
 @@ -8,8 +8,8 @@
   * \file
   * \brief The coupled exercise properties file or the turbulent case.
@@ -1847,9 +1847,9 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/properties.hh exercises/s
  } // end namespace TTag
  
  // Set the coupling manager
-diff -ruN exercises/exercise-coupling-ff-pm/turbulence/readme.md exercises/solution/exercise-coupling-ff-pm/turbulence/readme.md
---- exercises/exercise-coupling-ff-pm/turbulence/readme.md	2024-07-16 16:28:05.559708538 +0200
-+++ exercises/solution/exercise-coupling-ff-pm/turbulence/readme.md	1970-01-01 01:00:00.000000000 +0100
+diff -ruN exercises/exercise-coupling-ff-pm/turbulence/README.md exercises/solution/exercise-coupling-ff-pm/turbulence/README.md
+--- exercises/exercise-coupling-ff-pm/turbulence/README.md	2024-07-18 11:55:02.684061212 +0200
++++ exercises/solution/exercise-coupling-ff-pm/turbulence/README.md	1970-01-01 01:00:00.000000000 +0100
 @@ -1,126 +0,0 @@
 -## 3. Use a turbulence model in the free flow domain
 -As in the previous exercise, we account for the gravity effect as well as solving for the transient problem hereafter.
@@ -1911,11 +1911,11 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/readme.md exercises/solut
 -In addition to designating the locations of walls,
 -additional boundary conditions and initial conditions need to be set for the two new primary variables, the turbulent kinetic energy $k$ and the  specific tubulent dissipation rate/turbulence frequency $\omega$.
 -
--In the `boundaryTypes` function, set both variables ($k$ and $\omega$) on all free-flow domain boundaries to be dirichlet, except for the right boundary, which should have outflow conditions. The name of the indices for those two variables that have to be used for setting the boundary conditions types can be found in `dumux/freeflow/rans/twoeq/indices.hh`.
+-In the `boundaryTypes` function, set both variables ($k$ and $\omega$) on all free-flow domain boundaries to be Dirichlet, except for the right boundary, which should have outflow conditions. The name of the indices for those two variables that have to be used for setting the boundary conditions types can be found in `dumux/freeflow/rans/twoeq/indices.hh`.
 -
--Within the dirichlet function for cell faces (`dirichlet(element, scvf)`),
+-Within the Dirichlet function for cell faces (`dirichlet(element, scvf)`),
 -we also need to specify that these variables ($k$ and $\omega$) should be fixed to 0 at the wall.
--In addition, dirichlet cell constraints for the dissipation or $\omega$ variable will be set for all wall adjacent cells.
+-In addition, Dirichlet cell constraints for the dissipation or $\omega$ variable will be set for all wall adjacent cells.
 -This is done in the `isDirichletCell` function, as well as the `dirichlet` function already, and requires no further changes.
 -
 -For the initial conditions, Reynolds number specific base conditions should be applied everywhere.
@@ -1930,7 +1930,7 @@ diff -ruN exercises/exercise-coupling-ff-pm/turbulence/readme.md exercises/solut
 -In paraview you may compare the magnitude of $`D`$ and $`D_\textrm{t}`$ to see where the transport is affected by turbulence.
 -The result for the turbulent diffusivity should look like this:
 -
--![](../extradoc/ex_ff-pm-turb_diffusivity.png)
+-![](../../extradoc/ex_ff-pm-turb_diffusivity.png)
 -
 -### Task B: Use symmetry boundary conditions
 -
diff --git a/exercises/exercise-coupling-ff-pm/README.md b/exercises/exercise-coupling-ff-pm/README.md
index 1243b30e534636046628c1907de5c9ec832cf4c8..13840c408f85119025dccb9d09156975a07ccee5 100644
--- a/exercises/exercise-coupling-ff-pm/README.md
+++ b/exercises/exercise-coupling-ff-pm/README.md
@@ -5,7 +5,7 @@ The aim of this exercise is to get familiar with setting up coupled free flow/po
 ## Problem set-up
 
 > Note: The following problem setup holds for all sub-exercises 1-3.
-> 
+>
 The model domain consists of two non-overlapping two-dimensional subdomains.
 Free flow is modeled in the upper subdomain, while the lower subdomain models a flow within a porous medium.
 Both single-phase flow and two-phase flow will be considered in the porous domain.
@@ -22,18 +22,18 @@ The folders of the three exercises contain the following files:
 * one __problem file for the free-flow domain__ (`interface/freeflowsubproblem.hh`, `models/freeflowsubproblem.hh`, `turbulence/freeflowsubproblem.hh`),
 * one __problem file for the porous medium domain__ (`interface/porousmediumsubproblem.hh`, `models/porousmediumsubproblem.hh`, `turbulence/porousmediumsubproblem.hh`),
 * one __properties file__ (`interface/properties.hh`, `models/properties.hh`, `turbulence/properties.hh`),
-* and one __input files__ (`interface/params.input`, `models/params.input`, `turbulence/params.input`).
+* and one __input file__ (`interface/params.input`, `models/params.input`, `turbulence/params.input`).
 Moreover all the exercises share
 * the __spatial parameters files__ (`1pspatialparams.hh` and `2pspatialparams.hh`)
 
-In the [Exercise Mainfiles](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/blob/master/exercises/exercise-coupling-ff-pm/interface/main.cc) the overall structure of a main-file was already introduced. For the coupled setup we need now to define properties related to one subproblem (free-flow or porous medium flow) for each of the subproblems.
+In the [Exercise Mainfiles](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/blob/master/exercises/exercise-mainfile/README.md) the overall structure of a main-file was already introduced. For the coupled setup we need to get properties related to each of the subproblems (free-flow or porous medium flow).
 E.g. in the main file, `TypeTags` for both submodels are defined, `FreeflowTypeTag` and `PorousMediumTypeTag`. These `TypeTags` collect all of the properties associated with each subproblem.
 ```c++
     // Define the sub problem type tags
     using FreeflowTypeTag = Properties::TTag::FreeflowNC;
     using PorousMediumTypeTag = Properties::TTag::PorousMediumOnePNC;
 ```
-The same applies for types such as `GridManager`,  
+The same applies for types such as `GridManager`,
 ```c++
     // try to create a grid (from the given grid file or the input file)
     // for both sub-domains
@@ -87,9 +87,9 @@ mass and momentum fluxes coming from the porous domain and uses these values as
                                 const SubControlVolumeFace& scvf) const
     {
         BoundaryTypes values;
-        const auto& globalPos = scvf.center();
 
         //...
+
         // coupling interface
         if(couplingManager().isCoupledEntity(CouplingManager::stokesIdx, scvf))
         {
@@ -104,7 +104,7 @@ mass and momentum fluxes coming from the porous domain and uses these values as
 Note that certain checks are performed when combining different models, e.g., the fluid system has to be the same for both domains
 and the sub-control-volume faces at the interface have to match.
 
-We will use a staggered grid (also calles Marker-and-Cell method - MAC)to discretize the free-flow domain and a cell-centered finite volume (CCFV) method for the porous medium domain.
+We will use a staggered grid (also calles Marker-and-Cell method - MAC) to discretize the free-flow domain and a cell-centered finite volume (CCFV) method for the porous medium domain.
 Keep in mind that the staggered grid implementation distinguishes between face variables (velocity components) and cell center variables (all other variables).
 For this reason one distinguishes between `CouplingManager::stokesCellCenterIdx` and `CouplingManager::stokesFaceIdx` indices (see `main.cc`), while for the porous medium all variables can be accessed with `CouplingManager::darcyIdx`.
 
@@ -120,6 +120,6 @@ Take a closer look at the above listed files before moving to the three exercise
 
 ## Sub-Exercises
 
-* [**Exercise 1:** Changing the interface between the free- and the porous medium domain](./interface/readme.md)
-* [**Exercise 2:** Changing the porous medium model](./models/readme.md)
-* [**Exercise 3:** Introducing a turbulence model in the free flow domain](./turbulence/readme.md)
+* [**Exercise 1:** Changing the interface between the free- and the porous medium domain](./interface/README.md)
+* [**Exercise 2:** Changing the porous medium model](./models/README.md)
+* [**Exercise 3:** Introducing a turbulence model in the free flow domain](./turbulence/README.md)
diff --git a/exercises/exercise-coupling-ff-pm/interface/readme.md b/exercises/exercise-coupling-ff-pm/interface/README.md
similarity index 98%
rename from exercises/exercise-coupling-ff-pm/interface/readme.md
rename to exercises/exercise-coupling-ff-pm/interface/README.md
index c0e08a5353cc77e17b36325ac497b0ba82385e40..212e0ac1948249294df50a807b3199207253443d 100644
--- a/exercises/exercise-coupling-ff-pm/interface/readme.md
+++ b/exercises/exercise-coupling-ff-pm/interface/README.md
@@ -3,7 +3,7 @@
 In this part of the exercise, a simple coupled system consisting of a one-phase (1p) free flow and a one-phase flow in a porous medium is set up. Both subproblems have no-flow boundaries at the sides.
 Currently, a velocity profile is set on the upper free flow boundary, which leads to a vertical flow into the porous medium:
 
-![](../extradoc/ex_ff-pm-vertical-flow.png)
+![](../../extradoc/ex_ff-pm-vertical-flow.png)
 
 Note that we neglect the influence of gravity and only solve for the stationary problem in this exercise.
 
@@ -161,7 +161,7 @@ values.setBeaversJoseph(1 - scvf.directionIndex());
 
 Recompile and rerun to check if the final result looks something like this:
 
-![](../extradoc/ex_ff-pm-wave-interface.png)
+![](../../extradoc/ex_ff-pm-wave-interface.png)
 
 *Extra Points:*
 Rather than enforcing a pressure difference across the domain, an inflow velocity profile could be set.
diff --git a/exercises/exercise-coupling-ff-pm/models/readme.md b/exercises/exercise-coupling-ff-pm/models/README.md
similarity index 100%
rename from exercises/exercise-coupling-ff-pm/models/readme.md
rename to exercises/exercise-coupling-ff-pm/models/README.md
diff --git a/exercises/exercise-coupling-ff-pm/turbulence/readme.md b/exercises/exercise-coupling-ff-pm/turbulence/README.md
similarity index 97%
rename from exercises/exercise-coupling-ff-pm/turbulence/readme.md
rename to exercises/exercise-coupling-ff-pm/turbulence/README.md
index 23b2106dd724fcdb5fdea9c2c7994c943f5bafec..fc67882984c49f0547f4aff822ea329899b9dd0c 100644
--- a/exercises/exercise-coupling-ff-pm/turbulence/readme.md
+++ b/exercises/exercise-coupling-ff-pm/turbulence/README.md
@@ -58,11 +58,11 @@ freeflowProblem->updateDynamicWallProperties(freeflowSol);
 In addition to designating the locations of walls,
 additional boundary conditions and initial conditions need to be set for the two new primary variables, the turbulent kinetic energy $k$ and the  specific tubulent dissipation rate/turbulence frequency $\omega$.
 
-In the `boundaryTypes` function, set both variables ($k$ and $\omega$) on all free-flow domain boundaries to be dirichlet, except for the right boundary, which should have outflow conditions. The name of the indices for those two variables that have to be used for setting the boundary conditions types can be found in `dumux/freeflow/rans/twoeq/indices.hh`.
+In the `boundaryTypes` function, set both variables ($k$ and $\omega$) on all free-flow domain boundaries to be Dirichlet, except for the right boundary, which should have outflow conditions. The name of the indices for those two variables that have to be used for setting the boundary conditions types can be found in `dumux/freeflow/rans/twoeq/indices.hh`.
 
-Within the dirichlet function for cell faces (`dirichlet(element, scvf)`),
+Within the Dirichlet function for cell faces (`dirichlet(element, scvf)`),
 we also need to specify that these variables ($k$ and $\omega$) should be fixed to 0 at the wall.
-In addition, dirichlet cell constraints for the dissipation or $\omega$ variable will be set for all wall adjacent cells.
+In addition, Dirichlet cell constraints for the dissipation or $\omega$ variable will be set for all wall adjacent cells.
 This is done in the `isDirichletCell` function, as well as the `dirichlet` function already, and requires no further changes.
 
 For the initial conditions, Reynolds number specific base conditions should be applied everywhere.
@@ -77,7 +77,7 @@ In addition to the standard variables and parameters, you can now analyze turbul
 In paraview you may compare the magnitude of $`D`$ and $`D_\textrm{t}`$ to see where the transport is affected by turbulence.
 The result for the turbulent diffusivity should look like this:
 
-![](../extradoc/ex_ff-pm-turb_diffusivity.png)
+![](../../extradoc/ex_ff-pm-turb_diffusivity.png)
 
 ### Task B: Use symmetry boundary conditions