From 8065f08d9b11e0f173cdd7fef6a7202e83393f48 Mon Sep 17 00:00:00 2001
From: Timo Koch <timo.koch@iws.uni-stuttgart.de>
Date: Mon, 9 Jul 2018 15:04:56 +0200
Subject: [PATCH] [exercises] Add exercises from last year's course

---
 exercises/CMakeLists.txt                      |   7 +
 exercises/exercise-basic/CMakeLists.txt       |  17 +
 exercises/exercise-basic/README.md            | 151 ++++++
 exercises/exercise-basic/exercise1.cc         | 197 +++++++
 exercises/exercise-basic/exercise1.input      |  29 ++
 exercises/exercise-basic/exercise1_2p.cc      | 200 +++++++
 exercises/exercise-basic/exercise1_2p2c.cc    | 201 +++++++
 .../exercise-basic/injection2p2cproblem.hh    | 275 ++++++++++
 .../exercise-basic/injection2pniproblem.hh    | 266 ++++++++++
 .../exercise-basic/injection2pproblem.hh      | 260 ++++++++++
 .../injection2pspatialparams.hh               | 171 ++++++
 exercises/exercise-dunemodule/README.md       |  92 ++++
 exercises/exercise-fluidsystem/2p2cproblem.hh | 269 ++++++++++
 exercises/exercise-fluidsystem/2pproblem.hh   | 308 +++++++++++
 exercises/exercise-fluidsystem/CMakeLists.txt |  20 +
 exercises/exercise-fluidsystem/README.md      | 216 ++++++++
 .../h2omycompressiblecomponent.hh             |  74 +++
 .../components/mycompressiblecomponent.hh     | 126 +++++
 .../components/myincompressiblecomponent.hh   | 112 ++++
 .../components/plotdensityfunction.py         |  19 +
 exercises/exercise-fluidsystem/exercise3.cc   | 236 +++++++++
 .../exercise-fluidsystem/exercise3_a.input    |  10 +
 .../exercise-fluidsystem/exercise3_b.input    |  10 +
 .../h2omycompressiblecomponent.hh             | 485 +++++++++++++++++
 .../exercise-fluidsystem/spatialparams.hh     | 163 ++++++
 exercises/exercise-properties/CMakeLists.txt  |  11 +
 exercises/exercise-properties/README.md       | 151 ++++++
 exercises/exercise-properties/exercise2.cc    | 200 +++++++
 exercises/exercise-properties/exercise2.input |  25 +
 .../injection2p2cproblem.hh                   | 279 ++++++++++
 .../injection2p2cspatialparams.hh             | 193 +++++++
 .../exercise-properties/mylocalresidual.hh    | 163 ++++++
 .../exercise-properties/mymateriallaw.hh      | 116 +++++
 .../extradoc/exercise1_nonisothermal.png      | Bin 0 -> 44121 bytes
 exercises/extradoc/exercise1_setup.png        | Bin 0 -> 58149 bytes
 exercises/extradoc/exercise2_properties.png   | Bin 0 -> 27453 bytes
 exercises/extradoc/exercise3_a_solution.png   | Bin 0 -> 142019 bytes
 exercises/extradoc/exercise3_a_solution2.png  | Bin 0 -> 60853 bytes
 exercises/extradoc/exercise3_setup.png        | Bin 0 -> 45832 bytes
 exercises/solution/CMakeLists.txt             |   2 +
 exercises/solution/ex1/CMakeLists.txt         |  21 +
 exercises/solution/ex1/exercise1.input        |  27 +
 exercises/solution/ex1/exercise1_2p2c.cc      | 198 +++++++
 .../solution/ex1/exercise1_2pni_solution.cc   | 198 +++++++
 .../solution/ex1/injection2p2cproblem.hh      | 271 ++++++++++
 .../solution/ex1/injection2pniproblem.hh      | 252 +++++++++
 .../solution/ex1/injection2pspatialparams.hh  | 164 ++++++
 exercises/solution/ex2/CMakeLists.txt         |  10 +
 exercises/solution/ex2/exercise2.input        |  24 +
 exercises/solution/ex2/exercise2_solution.cc  | 200 +++++++
 .../solution/ex2/injection2p2cproblem.hh      | 278 ++++++++++
 .../ex2/injection2p2cspatialparams.hh         | 190 +++++++
 exercises/solution/ex2/mylocalresidual.hh     | 163 ++++++
 exercises/solution/ex2/mymateriallaw.hh       | 114 ++++
 .../ex3/h2omycompressiblecomponent.hh         | 489 ++++++++++++++++++
 .../solution/ex3/mycompressiblecomponent.hh   | 124 +++++
 .../solution/ex3/myincompressiblecomponent.hh | 101 ++++
 57 files changed, 7878 insertions(+)
 create mode 100644 exercises/exercise-basic/CMakeLists.txt
 create mode 100644 exercises/exercise-basic/README.md
 create mode 100644 exercises/exercise-basic/exercise1.cc
 create mode 100644 exercises/exercise-basic/exercise1.input
 create mode 100644 exercises/exercise-basic/exercise1_2p.cc
 create mode 100644 exercises/exercise-basic/exercise1_2p2c.cc
 create mode 100644 exercises/exercise-basic/injection2p2cproblem.hh
 create mode 100644 exercises/exercise-basic/injection2pniproblem.hh
 create mode 100644 exercises/exercise-basic/injection2pproblem.hh
 create mode 100644 exercises/exercise-basic/injection2pspatialparams.hh
 create mode 100644 exercises/exercise-dunemodule/README.md
 create mode 100644 exercises/exercise-fluidsystem/2p2cproblem.hh
 create mode 100644 exercises/exercise-fluidsystem/2pproblem.hh
 create mode 100644 exercises/exercise-fluidsystem/CMakeLists.txt
 create mode 100644 exercises/exercise-fluidsystem/README.md
 create mode 100644 exercises/exercise-fluidsystem/binarycoefficients/h2omycompressiblecomponent.hh
 create mode 100644 exercises/exercise-fluidsystem/components/mycompressiblecomponent.hh
 create mode 100644 exercises/exercise-fluidsystem/components/myincompressiblecomponent.hh
 create mode 100644 exercises/exercise-fluidsystem/components/plotdensityfunction.py
 create mode 100644 exercises/exercise-fluidsystem/exercise3.cc
 create mode 100644 exercises/exercise-fluidsystem/exercise3_a.input
 create mode 100644 exercises/exercise-fluidsystem/exercise3_b.input
 create mode 100644 exercises/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh
 create mode 100644 exercises/exercise-fluidsystem/spatialparams.hh
 create mode 100644 exercises/exercise-properties/CMakeLists.txt
 create mode 100644 exercises/exercise-properties/README.md
 create mode 100644 exercises/exercise-properties/exercise2.cc
 create mode 100644 exercises/exercise-properties/exercise2.input
 create mode 100644 exercises/exercise-properties/injection2p2cproblem.hh
 create mode 100644 exercises/exercise-properties/injection2p2cspatialparams.hh
 create mode 100644 exercises/exercise-properties/mylocalresidual.hh
 create mode 100644 exercises/exercise-properties/mymateriallaw.hh
 create mode 100644 exercises/extradoc/exercise1_nonisothermal.png
 create mode 100644 exercises/extradoc/exercise1_setup.png
 create mode 100644 exercises/extradoc/exercise2_properties.png
 create mode 100644 exercises/extradoc/exercise3_a_solution.png
 create mode 100644 exercises/extradoc/exercise3_a_solution2.png
 create mode 100644 exercises/extradoc/exercise3_setup.png
 create mode 100644 exercises/solution/CMakeLists.txt
 create mode 100644 exercises/solution/ex1/CMakeLists.txt
 create mode 100644 exercises/solution/ex1/exercise1.input
 create mode 100644 exercises/solution/ex1/exercise1_2p2c.cc
 create mode 100644 exercises/solution/ex1/exercise1_2pni_solution.cc
 create mode 100644 exercises/solution/ex1/injection2p2cproblem.hh
 create mode 100644 exercises/solution/ex1/injection2pniproblem.hh
 create mode 100644 exercises/solution/ex1/injection2pspatialparams.hh
 create mode 100644 exercises/solution/ex2/CMakeLists.txt
 create mode 100644 exercises/solution/ex2/exercise2.input
 create mode 100644 exercises/solution/ex2/exercise2_solution.cc
 create mode 100644 exercises/solution/ex2/injection2p2cproblem.hh
 create mode 100644 exercises/solution/ex2/injection2p2cspatialparams.hh
 create mode 100644 exercises/solution/ex2/mylocalresidual.hh
 create mode 100644 exercises/solution/ex2/mymateriallaw.hh
 create mode 100644 exercises/solution/ex3/h2omycompressiblecomponent.hh
 create mode 100644 exercises/solution/ex3/mycompressiblecomponent.hh
 create mode 100644 exercises/solution/ex3/myincompressiblecomponent.hh

diff --git a/exercises/CMakeLists.txt b/exercises/CMakeLists.txt
index e69de29b..13f2f3a1 100644
--- a/exercises/CMakeLists.txt
+++ b/exercises/CMakeLists.txt
@@ -0,0 +1,7 @@
+# add a target that builds all exercise solutions
+add_custom_target(test_exercises)
+
+add_subdirectory(exercise-basic)
+add_subdirectory(exercise-properties)
+add_subdirectory(exercise-fluidsystem)
+add_subdirectory(solution)
diff --git a/exercises/exercise-basic/CMakeLists.txt b/exercises/exercise-basic/CMakeLists.txt
new file mode 100644
index 00000000..4b6f8569
--- /dev/null
+++ b/exercises/exercise-basic/CMakeLists.txt
@@ -0,0 +1,17 @@
+# the immiscible two-phase simulation program
+dune_add_test(NAME exercise1_2p
+              SOURCES exercise1_2p.cc
+              CMD_ARGS exercise1.input)
+
+# the compositional two-phase two-component simulation program
+dune_add_test(NAME exercise1_2p2c
+              SOURCES exercise1_2p2c.cc
+              CMD_ARGS exercise1.input)
+
+# here, add the two-phase non-isothermal simulation program
+
+# add tutorial to the common target
+add_dependencies(test_exercises exercise1_2p exercise1_2p2c)
+
+# add a symlink for the input file
+dune_symlink_to_source_files(FILES "exercise1.input")
diff --git a/exercises/exercise-basic/README.md b/exercises/exercise-basic/README.md
new file mode 100644
index 00000000..e81ca628
--- /dev/null
+++ b/exercises/exercise-basic/README.md
@@ -0,0 +1,151 @@
+# Exercise #1 (DuMuX course)
+<br>
+## Problem set-up
+
+N$`_2`$ is injected in an aquifer previously saturated with water with an injection rate of 0.0001 kg/(s*m$`^2`$).
+The aquifer is situated 2700 m below sea level and the domain size is 60 m x 40 m. It consists of two layers, a moderately permeable one ($`\Omega_1`$) and a lower permeable one ($`\Omega_2`$).
+
+<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/raw/master/tutorial/extradoc/exercise1_setup.png" width="1000">
+
+## Preparing the exercise
+
+* Navigate to the directory `dumux/tutorial/ex1`
+
+_Exercise 1_ deals with two problems: a two-phase immiscible problem (__2p__) and a two-phase compositional problem (__2p2c__). They both set up the same scenario with the difference that the 2p2c assumes a miscible fluid state for the two fluids (water and gaseous N$`_2`$) and the 2p model assumes an immiscible fluid state.
+
+<br><br>
+### Task 1: Getting familiar with the code
+<hr>
+
+Locate all the files you will need for this exercise
+* The __main file__ for the __2p__ problem : `exercise1_2p.cc`
+* The __main file__ for the __2p2c__ problem : `exercise1_2p2c.cc`
+* The __problem file__ for the __2p__ problem: `injection2pproblem.hh`
+* The __problem file__ for the __2p2c__ problem: `injection2p2cproblem.hh`
+* The shared __spatial parameters file__: `injection2pspatialparams.hh`
+* The shared __input file__: `exercise1.input`
+
+<hr><br><br>
+### Task 2: Compiling and running an executable
+<hr>
+
+* Change to the build-directory
+
+```bash
+cd ../../build-cmake/tutorial/ex1
+```
+
+* Compile both executables `exercise1_2p` and `exercise1_2p2c`
+
+```bash
+make exercise1_2p exercise1_2p2c
+```
+
+* Execute the two problems and inspect the result
+
+```bash
+./exercise1_2p exercise1.input
+./exercise1_2p2c exercise1.input
+```
+
+* you can look at the results with paraview
+
+```bash
+paraview injection-2p2c.pvd
+```
+
+<hr><br><br>
+### Task 3: Changing input parameters
+<hr>
+
+In the input file `exercise1.input` you can find the following section
+
+```ini
+[SpatialParams]
+EntryPressureAquitard = 4.5e4
+EntryPressureAquifer = 1e4
+```
+
+* Change the values for the aquitard entry pressure in the input file to a lower value and compare the results with the previous solution. You don't need to recompile the executable.
+
+<hr><br><br>
+### Task 4: Runtime parameters
+<hr>
+
+The injection rate is currently hard-coded in `injection2p2cproblem.hh` to $`1e-4 kg/(s m^2)`$.
+
+```c++
+ // set the Neumann values for the Nitrogen component balance
+ // convert from units kg/(s*m^2) to mole/(s*m^2)
+values[Indices::contiNEqIdx] = -1e-4/FluidSystem::molarMass(FluidSystem::nCompIdx);
+values[Indices::contiWEqIdx] = 0.0;
+```
+
+We want to be able to set it at runtime. To this end,
+* use the following DuMuX macro to read a runtime parameter from the input file
+
+```c++
+// read the injection rate from the input file at run time
+totalAreaSpecificInflow_ = getParam<TYPE>("GROUPNAME.PARAMNAME");
+```
+
+* Replace
+`<TYPE>`,`<GROUPNAME>`,`<PARAMNAME>` by what is appropriate for your case:
+  * `<TYPE>` is the type of the parameter to read
+  * `<GROUPNAME>` is the group in the input file
+  * `<PARAMNAME>` is the name of the parameter in the input file
+
+Note that due to the way the macro works, the names are specified as plain text within the "quotation marks".`<GROUPNAME>` and `<PARAMNAME>` need to be separated by a dot (.).
+Follow the instructions given as a
+
+```c++
+// TODO: dumux-course-task
+```
+in the `injection2p2cproblem.hh` file and also remember to also set the parameter totalAreaSpecificInflow in the input file.
+
+* Check the influence of that parameter on the simulation result by rerunning the simulation with different injection rates. Remember to also set the parameter totalAreaSpecificInflow in the input file.
+
+Since you have changed your header file, you have to recompile the program.
+
+<hr><br><br>
+### 5. Setting up a new executable (for a non-isothermal simulation)
+<hr>
+
+* Copy the main file `exercise1_2p.cc` and rename it to `exercise1_2pni.cc`
+* In  `exercise1_2pni.cc`, include the header `injection2pniproblem.hh` instead of `injection2pproblem.hh`.
+* In  `exercise1_2pni.cc`, change `Injection2pCCTypeTag` to `Injection2pNICCTypeTag` in the line `using TypeTag = TTAG(Injection2pCCTypeTag);`
+* Add a new executable in `CMakeLists.txt` by adding the lines
+
+```cmake
+# the two-phase non-isothermal simulation program
+dune_add_test(NAME exercise1_2pni
+              SOURCES exercise1_2pni.cc
+              CMD_ARGS exercise1.input)
+```
+
+* Test that everything compiles without error
+
+```bash
+make # should rerun cmake
+make exercise1_2pni # builds new executable
+```
+
+<hr><br><br>
+### 6. Setting up a non-isothermal __2pni__ test problem
+<hr>
+
+* Open the file `injection2pniproblem.hh`. It is a copy of the `injection2pproblem.hh` with some useful comments on how to implement a non-isothermal model. Look for comments containing
+
+```c++
+// TODO: dumux-course-task
+```
+
+* The following set-up should be realized:
+
+  __Boundary conditions:__ Dirichlet conditions for the temperature with a temperature gradient of 0.03 K/m and a starting temperature of 283 K.
+
+  __Initial conditions:__ The same temperature gradient as in the boundary conditions with an additional lens (with position: 20 < x < 30, 5 < y < 35), which has an initial temperature of 380 K.
+
+<img src="https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/raw/master/tutorial/extradoc/exercise1_nonisothermal.png" width="800">
+
+The non-isothermal model requires additional parameters like the thermal conductivity of the solid component. They are already implemented and set in `exercise1.input`, you just need to _uncomment_ them.
diff --git a/exercises/exercise-basic/exercise1.cc b/exercises/exercise-basic/exercise1.cc
new file mode 100644
index 00000000..3bf3e8d8
--- /dev/null
+++ b/exercises/exercise-basic/exercise1.cc
@@ -0,0 +1,197 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \brief The main file for the two-phase porousmediumflow problem of exercise 1
+ */
+#include <config.h>
+
+#include <ctime>
+#include <iostream>
+
+#include <dune/common/parallel/mpihelper.hh>
+#include <dune/common/timer.hh>
+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
+#include <dune/grid/io/file/vtk.hh>
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/dumuxmessage.hh>
+#include <dumux/common/defaultusagemessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/newtonsolver.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
+#include <dumux/io/grid/gridmanager.hh>
+
+#include "injection2pproblem.hh"
+
+////////////////////////
+// the main function
+////////////////////////
+int main(int argc, char** argv) try
+{
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = TTAG(Injection2pCCTypeTag);
+
+    // initialize MPI, finalize is done automatically on exit
+    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+
+    // print dumux start message
+    if (mpiHelper.rank() == 0)
+        DumuxMessage::print(/*firstCall=*/true);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv);
+
+    // try to create a grid (from the given grid file or the input file)
+    GridManager<typename GET_PROP_TYPE(TypeTag, Grid)> gridManager;
+    gridManager.init();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = gridManager.grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+
+    // get some time loop parameters
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(0.0, dt, tEnd);
+    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);
+
+    // the linear solver
+    using LinearSolver = AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using NewtonSolver = Dumux::NewtonSolver<Assembler, LinearSolver>;
+    NewtonSolver nonLinearSolver(assembler, linearSolver);
+
+    // time loop
+    timeLoop->start();
+    while (!timeLoop->finished())
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        //set time in problem (is used in time-dependent Neumann boundary condition)
+        problem->setTime(timeLoop->time()+timeLoop->timeStepSize());
+
+        // solve the non-linear system with time step control
+        nonLinearSolver.solve(x, *timeLoop);
+
+        // make the new solution the old solution
+        xOld = x;
+        gridVariables->advanceTimeStep();
+
+        // advance to the time loop to the next step
+        timeLoop->advanceTimeStep();
+
+        // report statistics of this time step
+        timeLoop->reportTimeStep();
+
+        // set new dt as suggested by the newton solver
+        timeLoop->setTimeStepSize(nonLinearSolver.suggestTimeStepSize(timeLoop->timeStepSize()));
+
+        // output to vtk
+        vtkWriter.write(timeLoop->time());
+    }
+
+    timeLoop->finalize(leafGridView.comm());
+
+    ////////////////////////////////////////////////////////////
+    // finalize, print dumux message to say goodbye
+    ////////////////////////////////////////////////////////////
+
+    // print dumux end message
+    if (mpiHelper.rank() == 0)
+    {
+        Parameters::print();
+        DumuxMessage::print(/*firstCall=*/false);
+    }
+
+    return 0;
+} // end main
+catch (Dumux::ParameterException &e)
+{
+    std::cerr << std::endl << e << " ---> Abort!" << std::endl;
+    return 1;
+}
+catch (Dune::DGFException & e)
+{
+    std::cerr << "DGF exception thrown (" << e <<
+                 "). Most likely, the DGF file name is wrong "
+                 "or the DGF file is corrupted, "
+                 "e.g. missing hash at end of file or wrong number (dimensions) of entries."
+                 << " ---> Abort!" << std::endl;
+    return 2;
+}
+catch (Dune::Exception &e)
+{
+    std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl;
+    return 3;
+}
+catch (...)
+{
+    std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl;
+    return 4;
+}
diff --git a/exercises/exercise-basic/exercise1.input b/exercises/exercise-basic/exercise1.input
new file mode 100644
index 00000000..792afb3c
--- /dev/null
+++ b/exercises/exercise-basic/exercise1.input
@@ -0,0 +1,29 @@
+[TimeLoop]
+DtInitial = 3600 # in seconds
+TEnd = 3.154e9 # in seconds, i.e ten years
+
+[Grid]
+LowerLeft = 0 0
+UpperRight = 60 40
+Cells = 24 16
+
+[Problem]
+Name = injection
+OnlyPlotMaterialLaws = true
+AquiferDepth = 2700.0 # m
+InjectionDuration = 2.628e6 # in seconds, i.e. one month
+
+#TODO: dumux-course-task:
+#set totalAreaSpecificInflow
+
+[SpatialParams]
+PermeabilityAquitard = 1e-15 # m^2
+EntryPressureAquitard = 4.5e4 # Pa
+PermeabilityAquifer = 1e-12 # m^2
+EntryPressureAquifer = 1e4 # Pa
+
+# these parameters are only used in the nonisothermal model. Uncomment them for that
+#[Component]
+#SolidDensity = 2700 # solid density of granite
+#SolidThermalConductivity = 2.8 # solid thermal conducitivity of granite
+#SolidHeatCapacity = 790 # solid heat capacity of granite
diff --git a/exercises/exercise-basic/exercise1_2p.cc b/exercises/exercise-basic/exercise1_2p.cc
new file mode 100644
index 00000000..558f2d0f
--- /dev/null
+++ b/exercises/exercise-basic/exercise1_2p.cc
@@ -0,0 +1,200 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \brief The main file for the two-phase porousmediumflow problem of exercise 1
+ */
+#include <config.h>
+
+#include <ctime>
+#include <iostream>
+
+#include <dune/common/parallel/mpihelper.hh>
+#include <dune/common/timer.hh>
+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
+#include <dune/grid/io/file/vtk.hh>
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/dumuxmessage.hh>
+#include <dumux/common/defaultusagemessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/newtonsolver.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
+#include <dumux/io/grid/gridmanager.hh>
+
+// The problem file, where setup-specific boundary and initial conditions are defined.
+#include "injection2pproblem.hh"
+
+////////////////////////
+// the main function
+////////////////////////
+int main(int argc, char** argv) try
+{
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = TTAG(Injection2pCCTypeTag);
+
+    // initialize MPI, finalize is done automatically on exit
+    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+
+    // print dumux start message
+    if (mpiHelper.rank() == 0)
+        DumuxMessage::print(/*firstCall=*/true);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv);
+
+    // try to create a grid (from the given grid file or the input file)
+    GridManager<typename GET_PROP_TYPE(TypeTag, Grid)> gridManager;
+    gridManager.init();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = gridManager.grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+
+    // get some time loop parameters
+    // getParam<TYPE>("GROUPNAME.PARAMNAME") reads and sets parameter PARAMNAME
+    // of type TYPE given in the group GROUPNAME from the input file
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(0.0, dt, tEnd);
+    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);
+
+    // the linear solver
+    using LinearSolver = AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using NewtonSolver = Dumux::NewtonSolver<Assembler, LinearSolver>;
+    NewtonSolver nonLinearSolver(assembler, linearSolver);
+
+    // time loop
+    timeLoop->start();
+    while (!timeLoop->finished())
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        //set time in problem (is used in time-dependent Neumann boundary condition)
+        problem->setTime(timeLoop->time()+timeLoop->timeStepSize());
+
+        // solve the non-linear system with time step control
+        nonLinearSolver.solve(x, *timeLoop);
+
+        // make the new solution the old solution
+        xOld = x;
+        gridVariables->advanceTimeStep();
+
+        // advance to the time loop to the next step
+        timeLoop->advanceTimeStep();
+
+        // report statistics of this time step
+        timeLoop->reportTimeStep();
+
+        // set new dt as suggested by the newton solver
+        timeLoop->setTimeStepSize(nonLinearSolver.suggestTimeStepSize(timeLoop->timeStepSize()));
+
+        // output to vtk
+        vtkWriter.write(timeLoop->time());
+    }
+
+    timeLoop->finalize(leafGridView.comm());
+
+    ////////////////////////////////////////////////////////////
+    // finalize, print dumux message to say goodbye
+    ////////////////////////////////////////////////////////////
+
+    // print dumux end message
+    if (mpiHelper.rank() == 0)
+    {
+        Parameters::print();
+        DumuxMessage::print(/*firstCall=*/false);
+    }
+
+    return 0;
+} // end main
+catch (Dumux::ParameterException &e)
+{
+    std::cerr << std::endl << e << " ---> Abort!" << std::endl;
+    return 1;
+}
+catch (Dune::DGFException & e)
+{
+    std::cerr << "DGF exception thrown (" << e <<
+                 "). Most likely, the DGF file name is wrong "
+                 "or the DGF file is corrupted, "
+                 "e.g. missing hash at end of file or wrong number (dimensions) of entries."
+                 << " ---> Abort!" << std::endl;
+    return 2;
+}
+catch (Dune::Exception &e)
+{
+    std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl;
+    return 3;
+}
+catch (...)
+{
+    std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl;
+    return 4;
+}
diff --git a/exercises/exercise-basic/exercise1_2p2c.cc b/exercises/exercise-basic/exercise1_2p2c.cc
new file mode 100644
index 00000000..c2b46ea1
--- /dev/null
+++ b/exercises/exercise-basic/exercise1_2p2c.cc
@@ -0,0 +1,201 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \brief The main file for the 2p2c porousmediumflow problem in exercise1
+ */
+#include <config.h>
+
+#include <ctime>
+#include <iostream>
+
+#include <dune/common/parallel/mpihelper.hh>
+#include <dune/common/timer.hh>
+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
+#include <dune/grid/io/file/vtk.hh>
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/valgrind.hh>
+#include <dumux/common/dumuxmessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/privarswitchnewtonsolver.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
+#include <dumux/io/grid/gridmanager.hh>
+
+// The problem file, where setup-specific boundary and initial conditions are defined.
+#include "injection2p2cproblem.hh"
+
+////////////////////////
+// the main function
+////////////////////////
+int main(int argc, char** argv) try
+{
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = TTAG(Injection2p2cCCTypeTag);
+
+    // initialize MPI, finalize is done automatically on exit
+    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+
+    // print dumux start message
+    if (mpiHelper.rank() == 0)
+        DumuxMessage::print(/*firstCall=*/true);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv);
+
+    // try to create a grid (from the given grid file or the input file)
+    GridManager<typename GET_PROP_TYPE(TypeTag, Grid)> gridManager;
+    gridManager.init();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = gridManager.grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+
+    // get some time loop parameters
+    // getParam<TYPE>("GROUPNAME.PARAMNAME") reads and sets parameter PARAMNAME
+    // of type TYPE given in the group GROUPNAME from the input file
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(0.0, dt, tEnd);
+    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);
+
+    // the linear solver
+    using LinearSolver = AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using PrimaryVariableSwitch = typename GET_PROP_TYPE(TypeTag, PrimaryVariableSwitch);
+    using NewtonSolver = Dumux::PriVarSwitchNewtonSolver<Assembler, LinearSolver, PrimaryVariableSwitch>;
+    NewtonSolver nonLinearSolver(assembler, linearSolver);
+
+    // time loop
+    timeLoop->start();
+    while (!timeLoop->finished())
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        //set time in problem (is used in time-dependent Neumann boundary condition)
+        problem->setTime(timeLoop->time()+timeLoop->timeStepSize());
+
+        // solve the non-linear system with time step control
+        nonLinearSolver.solve(x, *timeLoop);
+
+        // make the new solution the old solution
+        xOld = x;
+        gridVariables->advanceTimeStep();
+
+        // advance to the time loop to the next step
+        timeLoop->advanceTimeStep();
+
+        // report statistics of this time step
+        timeLoop->reportTimeStep();
+
+        // set new dt as suggested by the newton solver
+        timeLoop->setTimeStepSize(nonLinearSolver.suggestTimeStepSize(timeLoop->timeStepSize()));
+
+        // output to vtk
+        vtkWriter.write(timeLoop->time());
+    }
+
+    timeLoop->finalize(leafGridView.comm());
+
+    ////////////////////////////////////////////////////////////
+    // finalize, print dumux message to say goodbye
+    ////////////////////////////////////////////////////////////
+
+    // print dumux end message
+    if (mpiHelper.rank() == 0)
+    {
+        Parameters::print();
+        DumuxMessage::print(/*firstCall=*/false);
+    }
+
+    return 0;
+} // end main
+catch (Dumux::ParameterException &e)
+{
+    std::cerr << std::endl << e << " ---> Abort!" << std::endl;
+    return 1;
+}
+catch (Dune::DGFException & e)
+{
+    std::cerr << "DGF exception thrown (" << e <<
+                 "). Most likely, the DGF file name is wrong "
+                 "or the DGF file is corrupted, "
+                 "e.g. missing hash at end of file or wrong number (dimensions) of entries."
+                 << " ---> Abort!" << std::endl;
+    return 2;
+}
+catch (Dune::Exception &e)
+{
+    std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl;
+    return 3;
+}
+catch (...)
+{
+    std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl;
+    return 4;
+}
diff --git a/exercises/exercise-basic/injection2p2cproblem.hh b/exercises/exercise-basic/injection2p2cproblem.hh
new file mode 100644
index 00000000..3c30c2a2
--- /dev/null
+++ b/exercises/exercise-basic/injection2p2cproblem.hh
@@ -0,0 +1,275 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief The two-phase porousmediumflow problem for exercise 1
+ */
+#ifndef DUMUX_EX1_INJECTION_2P2C_PROBLEM_HH
+#define DUMUX_EX1_INJECTION_2P2C_PROBLEM_HH
+
+#include <dumux/discretization/cellcentered/tpfa/properties.hh>
+#include <dumux/porousmediumflow/2p2c/model.hh>
+#include <dumux/porousmediumflow/problem.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+
+#include "injection2pspatialparams.hh"
+
+namespace Dumux {
+
+// forward declare problem
+template <class TypeTag>
+class Injection2p2cProblem;
+
+namespace Properties {
+NEW_TYPE_TAG(Injection2p2cTypeTag, INHERITS_FROM(TwoPTwoC));
+NEW_TYPE_TAG(Injection2p2cCCTypeTag, INHERITS_FROM(CCTpfaModel, Injection2p2cTypeTag));
+
+// Set the grid type
+SET_TYPE_PROP(Injection2p2cTypeTag, Grid, Dune::YaspGrid<2>);
+
+// Set the problem property
+SET_TYPE_PROP(Injection2p2cTypeTag, Problem, Injection2p2cProblem<TypeTag>);
+
+// Set the spatial parameters
+SET_TYPE_PROP(Injection2p2cTypeTag, SpatialParams,
+              InjectionSpatialParams<typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
+                                     typename GET_PROP_TYPE(TypeTag, Scalar)>);
+
+// Set fluid configuration
+SET_TYPE_PROP(Injection2p2cTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/ false>);
+
+// Define whether mole(true) or mass (false) fractions are used
+SET_BOOL_PROP(Injection2p2cTypeTag, UseMoles, true);
+} // end namespace Properties
+
+/*!
+ * \ingroup TwoPTwoCModel
+ * \ingroup ImplicitTestProblems
+ * \brief Gas injection problem where a gas (here  nitrogen) is injected into a fully
+ *        water saturated medium. During buoyancy driven upward migration the gas
+ *        passes a high temperature area.
+ *
+ * The domain is sized 60 m times 40 m.
+ *
+ * For the mass conservation equation neumann boundary conditions are used on
+ * the top, on the bottom and on the right of the domain, while dirichlet conditions
+ * apply on the left boundary.
+ *
+ * Gas is injected at the right boundary from 7 m to 15 m at a rate of
+ * 0.001 kg/(s m), the remaining neumann boundaries are no-flow
+ * boundaries.
+ *
+ * At the dirichlet boundaries a hydrostatic pressure and a gas saturation of zero a
+ *
+ * This problem uses the \ref TwoPModel model.
+ */
+template<class TypeTag>
+class Injection2p2cProblem : public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+    enum { dimWorld = GridView::dimensionworld };
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    Injection2p2cProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        // initialize the tables of the fluid system
+        FluidSystem::init(/*tempMin=*/273.15,
+                /*tempMax=*/423.15,
+                /*numTemp=*/50,
+                /*pMin=*/0.0,
+                /*pMax=*/30e6,
+                /*numP=*/300);
+
+        // name of the problem and output file
+        // getParam<TYPE>("GROUPNAME.PARAMNAME") reads and sets parameter PARAMNAME
+        // of type TYPE given in the group GROUPNAME from the input file
+        name_ = getParam<std::string>("Problem.Name");
+        // depth of the aquifer, units: m
+        aquiferDepth_ = getParam<Scalar>("Problem.AquiferDepth");
+        // the duration of the injection, units: second
+        injectionDuration_ = getParam<Scalar>("Problem.InjectionDuration");
+
+        // TODO: dumux-course-task
+        // Get the specific inflow of 1e-4 kg/(s m^2) from the input file (totalAreaSpecificInflow_) here as it is done for the injectionDuration_.
+
+    }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    /*!
+     * \brief Returns the problem name
+     *
+     * This is used as a prefix for files generated by the simulation.
+     */
+    std::string name() const
+    { return name_+"-2p2c"; }
+
+    /*!
+     * \brief Returns the temperature \f$ K \f$
+     */
+    Scalar temperature() const
+    {
+        return 273.15 + 30; // [K]
+    }
+
+    // \}
+
+    /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param bcTypes The boundary types for the conservation equations
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+         BoundaryTypes bcTypes;
+        if (globalPos[0] < eps_)
+            bcTypes.setAllDirichlet();
+        else
+            bcTypes.setAllNeumann();
+
+        return bcTypes;
+    }
+
+    /*!
+     * \brief Evaluates the boundary conditions for a Dirichlet
+     *        boundary segment
+     *
+     * \param globalPos The global position
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        return initialAtPos(globalPos);
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a neumann
+     *        boundary segment.
+     *
+     * \param values Stores the Neumann values for the conservation equations in
+     *               \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$
+     * \param globalPos The position of the integration point of the boundary segment.
+     *
+     * For this method, the \a values parameter stores the mass flux
+     * in normal direction of each phase. Negative values mean influx.
+     */
+    PrimaryVariables neumannAtPos(const GlobalPosition &globalPos) const
+    {
+        // initialize values to zero, i.e. no-flow Neumann boundary conditions
+        PrimaryVariables values(0.0);
+
+        // if we are inside the injection zone set inflow Neumann boundary conditions
+        if (time_ < injectionDuration_
+            && globalPos[1] < 15 + eps_ && globalPos[1] > 7 - eps_ && globalPos[0] > 0.9*this->fvGridGeometry().bBoxMax()[0])
+        {
+            // TODO: dumux-course-task
+            //instead of setting -1e-4 here directly use totalAreaSpecificInflow_ in the computation
+
+            // inject nitrogen. negative values mean injection
+            // convert from units kg/(s*m^2) to mole/(s*m^2)
+            values[Indices::conti0EqIdx + FluidSystem::N2Idx] = -1e-4/FluidSystem::molarMass(FluidSystem::N2Idx);
+            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
+        }
+
+        return values;
+    }
+
+    // \}
+
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values(0.0);
+        values.setState(Indices::firstPhaseOnly);
+        // get the water density at atmospheric conditions
+        const Scalar densityW = FluidSystem::H2O::liquidDensity(temperature(), 1.0e5);
+
+        // assume an intially hydrostatic liquid pressure profile
+        // note: we subtract rho_w*g*h because g is defined negative
+        const Scalar pw = 1.0e5 - densityW*this->gravity()[dimWorld-1]*(aquiferDepth_ - globalPos[dimWorld-1]);
+
+        // initially we have some nitrogen dissolved
+        // saturation mole fraction would be
+        // moleFracLiquidN2 = (pw + pc + p_vap^sat)/henry;
+        const Scalar moleFracLiquidN2 = pw*0.95/BinaryCoeff::H2O_N2::henry(temperature());
+
+        // note that because we start with a single phase system the primary variables
+        // are pl and x^w_N2. This will switch as soon after we start injecting to a two
+        // phase system so the primary variables will be pl and Sn (non-wetting saturation).
+        values[Indices::pressureIdx] = pw;
+        values[Indices::switchIdx] = moleFracLiquidN2;
+
+        return values;
+    }
+
+    // \}
+
+    //! set the time for the time dependent boundary conditions (called from main)
+    void setTime(Scalar time)
+    { time_ = time; }
+
+private:
+    static constexpr Scalar eps_ = 1e-6;
+    std::string name_; //! Problem name
+    Scalar aquiferDepth_; //! Depth of the aquifer in m
+    Scalar injectionDuration_; //! Duration of the injection in seconds
+    Scalar time_;
+    //TODO: dumux-course-task
+    //define the Scalar totalAreaSpecificInflow_ here
+
+};
+
+} //end namespace Dumux
+
+#endif
diff --git a/exercises/exercise-basic/injection2pniproblem.hh b/exercises/exercise-basic/injection2pniproblem.hh
new file mode 100644
index 00000000..ad241c88
--- /dev/null
+++ b/exercises/exercise-basic/injection2pniproblem.hh
@@ -0,0 +1,266 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief The two-phase nonisothermal porousmediumflow problem for exercise 1
+ */
+
+#ifndef DUMUX_EX1_INJECTION_PROBLEM_2PNI_HH
+#define DUMUX_EX1_INJECTION_PROBLEM_2PNI_HH
+
+#include <dumux/discretization/cellcentered/tpfa/properties.hh>
+#include <dumux/porousmediumflow/2p/model.hh>
+#include <dumux/porousmediumflow/problem.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+
+#include "injection2pspatialparams.hh"
+
+namespace Dumux {
+
+// forward declare problem
+template <class TypeTag>
+class InjectionProblem2PNI;
+
+namespace Properties
+{
+ /*!
+* TODO:dumux-course-task:
+* inherit from the TwoPNI model instead of TwoP here
+*/
+NEW_TYPE_TAG(Injection2pNITypeTag, INHERITS_FROM(TwoP));
+NEW_TYPE_TAG(Injection2pNICCTypeTag, INHERITS_FROM(CCTpfaModel, Injection2pNITypeTag));
+
+// Set the grid type
+SET_TYPE_PROP(Injection2pNITypeTag, Grid, Dune::YaspGrid<2>);
+
+// Set the problem property
+SET_TYPE_PROP(Injection2pNITypeTag, Problem, InjectionProblem2PNI<TypeTag>);
+
+// Set the spatial parameters
+SET_TYPE_PROP(Injection2pNITypeTag, SpatialParams,
+              InjectionSpatialParams<typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
+                                     typename GET_PROP_TYPE(TypeTag, Scalar)>);
+
+// Set fluid configuration
+SET_TYPE_PROP(Injection2pNITypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false>);
+} // end namespace Properties
+
+/*!
+ * \ingroup TwoPModel
+ * \ingroup ImplicitTestProblems
+ * \brief Gas injection problem where a gas (here  nitrogen) is injected into a fully
+ *        water saturated medium. During buoyancy driven upward migration the gas
+ *        passes a high temperature area.
+ *
+ * The domain is sized 60 m times 40 m.
+ *
+ * For the mass conservation equation neumann boundary conditions are used on
+ * the top, on the bottom and on the right of the domain, while dirichlet conditions
+ * apply on the left boundary.
+ *
+ * Gas is injected at the right boundary from 7 m to 15 m at a rate of
+ * 0.001 kg/(s m), the remaining neumann boundaries are no-flow
+ * boundaries.
+ *
+ * At the dirichlet boundaries a hydrostatic pressure and a gas saturation of zero a
+ *
+ * This problem uses the \ref TwoPModel model.
+ */
+template<class TypeTag>
+class InjectionProblem2PNI : public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+    enum { dimWorld = GridView::dimensionworld };
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    InjectionProblem2PNI(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        // initialize the tables of the fluid system
+        FluidSystem::init(/*tempMin=*/273.15,
+                /*tempMax=*/423.15,
+                /*numTemp=*/50,
+                /*pMin=*/0.0,
+                /*pMax=*/30e6,
+                /*numP=*/300);
+
+        // name of the problem and output file
+        // getParam<TYPE>("GROUPNAME.PARAMNAME") reads and sets parameter PARAMNAME
+        // of type TYPE given in the group GROUPNAME from the input file
+        name_ = getParam<std::string>("Problem.Name");
+        // depth of the aquifer, units: m
+        aquiferDepth_ = getParam<Scalar>("Problem.AquiferDepth");
+        // the duration of the injection, units: second
+        injectionDuration_ = getParam<Scalar>("Problem.InjectionDuration");
+    }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    /*!
+     * \brief Returns the problem name
+     *
+     * This is used as a prefix for files generated by the simulation.
+     */
+    std::string name() const
+    { return "injection-2pni"; }
+
+    // \}
+
+    /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param bcTypes The boundary types for the conservation equations
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+         BoundaryTypes bcTypes;
+        if (globalPos[0] < eps_)
+            bcTypes.setAllDirichlet();
+        else
+            bcTypes.setAllNeumann();
+
+        return bcTypes;
+    }
+
+    /*!
+     * \brief Evaluates the boundary conditions for a Dirichlet
+     *        boundary segment
+     *
+     * \param globalPos The global position
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        return initialAtPos(globalPos);
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a neumann
+     *        boundary segment.
+     *
+     * \param values Stores the Neumann values for the conservation equations in
+     *               \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$
+     * \param globalPos The position of the integration point of the boundary segment.
+     *
+     * For this method, the \a values parameter stores the mass flux
+     * in normal direction of each phase. Negative values mean influx.
+     */
+    PrimaryVariables neumannAtPos(const GlobalPosition &globalPos) const
+    {
+        // initialize values to zero, i.e. no-flow Neumann boundary conditions
+        PrimaryVariables values(0.0);
+
+        // if we are inside the injection zone set inflow Neumann boundary conditions
+        if (time_ < injectionDuration_
+            && globalPos[1] < 15 + eps_ && globalPos[1] > 7 - eps_ && globalPos[0] > 0.9*this->fvGridGeometry().bBoxMax()[0])
+        {
+            // inject nitrogen. negative values mean injection
+            // units kg/(s*m^2)
+            values[Indices::conti0EqIdx + FluidSystem::N2Idx] = -1e-4;
+            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
+
+         /*!
+          * TODO:dumux-course-task:
+          * dumux-course-task:
+          * set Neumann noflow conditions for the energy equation everywhere
+          * hint: use Indices::energyEqIdx) for that
+          */
+        }
+
+        return values;
+    }
+
+    // \}
+
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values(0.0);
+
+        // get the water density at atmospheric conditions
+        const Scalar densityW = FluidSystem::H2O::liquidDensity(283.15, 1.0e5);
+
+        // assume an intially hydrostatic liquid pressure profile
+        // note: we subtract rho_w*g*h because g is defined negative
+        const Scalar pw = 1.0e5 - densityW*this->gravity()[dimWorld-1]*(aquiferDepth_ - globalPos[dimWorld-1]);
+
+        values[Indices::pressureIdx] = pw;
+        values[Indices::saturationIdx] = 0.0;
+
+        /*!
+        *  TODO:dumux-course-task:
+        * set a temperature gradient of 0.03 K per m beginning at 283 K here.
+        * Hint: you can use aquiferDepth_ and the globalPos similar to the pressure gradient
+        * use globalPos[0] and globalPos[1] to implement the high temperature lens with 380 K
+        * Hint : use Indices::temperatureIdx to address the initial values for temperature
+        */
+        return values;
+    }
+
+    // \}
+
+    //! set the time for the time dependent boundary conditions (called from main)
+    void setTime(Scalar time)
+    { time_ = time; }
+
+private:
+    static constexpr Scalar eps_ = 1e-6;
+    std::string name_; //! Problem name
+    Scalar aquiferDepth_; //! Depth of the aquifer in m
+    Scalar injectionDuration_; //! Duration of the injection in seconds
+    Scalar time_;
+};
+
+} //end namespace Dumux
+
+#endif
diff --git a/exercises/exercise-basic/injection2pproblem.hh b/exercises/exercise-basic/injection2pproblem.hh
new file mode 100644
index 00000000..46b5d389
--- /dev/null
+++ b/exercises/exercise-basic/injection2pproblem.hh
@@ -0,0 +1,260 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief The two-phase porousmediumflow problem for exercise 1
+ */
+
+#ifndef DUMUX_EX1_INJECTION_PROBLEM_2P_HH
+#define DUMUX_EX1_INJECTION_PROBLEM_2P_HH
+
+#include <dumux/discretization/cellcentered/tpfa/properties.hh>
+#include <dumux/porousmediumflow/2p/model.hh>
+#include <dumux/porousmediumflow/problem.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+
+#include "injection2pspatialparams.hh"
+
+namespace Dumux {
+
+// forward declare problem
+template <class TypeTag>
+class InjectionProblem2P;
+
+namespace Properties {
+// define the TypeTag for this problem with a cell-centered two-point flux approximation spatial discretization.
+NEW_TYPE_TAG(Injection2pTypeTag, INHERITS_FROM(TwoP));
+NEW_TYPE_TAG(Injection2pCCTypeTag, INHERITS_FROM(CCTpfaModel, Injection2pTypeTag));
+
+// Set the grid type
+SET_TYPE_PROP(Injection2pTypeTag, Grid, Dune::YaspGrid<2>);
+
+// Set the problem property
+SET_TYPE_PROP(Injection2pTypeTag, Problem, InjectionProblem2P<TypeTag>);
+
+// Set the spatial parameters
+SET_TYPE_PROP(Injection2pTypeTag, SpatialParams,
+              InjectionSpatialParams<typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
+                                     typename GET_PROP_TYPE(TypeTag, Scalar)>);
+
+// Set fluid configuration
+SET_TYPE_PROP(Injection2pTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/ false>);
+} // end namespace Properties
+
+/*!
+ * \ingroup TwoPModel
+ * \ingroup ImplicitTestProblems
+ * \brief Gas injection problem where a gas (here  nitrogen) is injected into a fully
+ *        water saturated medium. During buoyancy driven upward migration the gas
+ *        passes a high temperature area.
+ *
+ * The domain is sized 60 m times 40 m.
+ *
+ * For the mass conservation equation neumann boundary conditions are used on
+ * the top, on the bottom and on the right of the domain, while dirichlet conditions
+ * apply on the left boundary.
+ *
+ * Gas is injected at the right boundary from 7 m to 15 m at a rate of
+ * 0.001 kg/(s m), the remaining neumann boundaries are no-flow
+ * boundaries.
+ *
+ * At the dirichlet boundaries a hydrostatic pressure and a gas saturation of zero a
+ *
+ * This problem uses the \ref TwoPModel model.
+ */
+template<class TypeTag>
+class InjectionProblem2P : public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+    enum { dimWorld = GridView::dimensionworld };
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    InjectionProblem2P(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        // initialize the tables of the fluid system
+        FluidSystem::init(/*tempMin=*/273.15,
+                /*tempMax=*/423.15,
+                /*numTemp=*/50,
+                /*pMin=*/0.0,
+                /*pMax=*/30e6,
+                /*numP=*/300);
+
+        // name of the problem and output file
+        // getParam<TYPE>("GROUPNAME.PARAMNAME") reads and sets parameter PARAMNAME
+        // of type TYPE given in the group GROUPNAME from the input file
+        name_ = getParam<std::string>("Problem.Name");
+        // depth of the aquifer, units: m
+        aquiferDepth_ = getParam<Scalar>("Problem.AquiferDepth");
+        // the duration of the injection, units: second
+        injectionDuration_ = getParam<Scalar>("Problem.InjectionDuration");
+    }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    /*!
+     * \brief Returns the problem name
+     *
+     * This is used as a prefix for files generated by the simulation.
+     */
+    std::string name() const
+    { return name_+"-2p"; }
+
+    /*!
+     * \brief Returns the temperature \f$ K \f$
+     */
+    Scalar temperature() const
+    {
+        return 273.15 + 30; // [K]
+    }
+
+    // \}
+
+    /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param bcTypes The boundary types for the conservation equations
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+        BoundaryTypes bcTypes;
+        // set the left of the domain (with the global position in "0 = x" direction as a Dirichlet boundary
+        if (globalPos[0] < eps_)
+            bcTypes.setAllDirichlet();
+        // set all other as Neumann boundaries
+        else
+            bcTypes.setAllNeumann();
+
+        return bcTypes;
+    }
+
+    /*!
+     * \brief Evaluates the boundary conditions for a Dirichlet
+     *        boundary segment
+     *
+     * \param globalPos The global position
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        return initialAtPos(globalPos);
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a neumann
+     *        boundary segment.
+     *
+     * \param values Stores the Neumann values for the conservation equations in
+     *               \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$
+     * \param globalPos The position of the integration point of the boundary segment.
+     *
+     * For this method, the \a values parameter stores the mass flux
+     * in normal direction of each phase. Negative values mean influx.
+     */
+    PrimaryVariables neumannAtPos(const GlobalPosition &globalPos) const
+    {
+        // initialize values to zero, i.e. no-flow Neumann boundary conditions
+        PrimaryVariables values(0.0);
+
+        // if we are inside the injection zone set inflow Neumann boundary conditions
+        // using < boundary + eps_ or > boundary - eps_ is safer for floating point comparisons
+        // than using <= or >= as it is robust with regard to imprecision introduced by rounding errors.
+        if (time_ < injectionDuration_
+            && globalPos[1] < 15 + eps_ && globalPos[1] > 7 - eps_ && globalPos[0] > 0.9*this->fvGridGeometry().bBoxMax()[0])
+        {
+            // inject nitrogen. negative values mean injection
+            // units kg/(s*m^2)
+            values[Indices::conti0EqIdx + FluidSystem::N2Idx] = -1e-4;
+            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
+        }
+
+        return values;
+    }
+
+    // \}
+
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values(0.0);
+
+        // get the water density at atmospheric conditions
+        const Scalar densityW = FluidSystem::H2O::liquidDensity(temperature(), 1.0e5);
+
+        // assume an intially hydrostatic liquid pressure profile
+        // note: we subtract rho_w*g*h because g is defined negative
+        const Scalar pw = 1.0e5 - densityW*this->gravity()[dimWorld-1]*(aquiferDepth_ - globalPos[dimWorld-1]);
+
+        values[Indices::pressureIdx] = pw;
+        values[Indices::saturationIdx] = 0.0;
+
+        return values;
+    }
+
+    // \}
+
+    //! set the time for the time dependent boundary conditions (called from main)
+    void setTime(Scalar time)
+    { time_ = time; }
+
+private:
+    static constexpr Scalar eps_ = 1e-6;
+    std::string name_; //! Problem name
+    Scalar aquiferDepth_; //! Depth of the aquifer in m
+    Scalar injectionDuration_; //! Duration of the injection in seconds
+    Scalar time_;
+};
+
+} //end namespace Dumux
+
+#endif
diff --git a/exercises/exercise-basic/injection2pspatialparams.hh b/exercises/exercise-basic/injection2pspatialparams.hh
new file mode 100644
index 00000000..fac5a1da
--- /dev/null
+++ b/exercises/exercise-basic/injection2pspatialparams.hh
@@ -0,0 +1,171 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Definition of the spatial parameters for the injection problem
+ *        which uses the isothermal two-phase two-component
+ *        fully implicit model.
+ */
+
+#ifndef DUMUX_EX1_INJECTION_SPATIAL_PARAMS_HH
+#define DUMUX_EX1_INJECTION_SPATIAL_PARAMS_HH
+
+#include <dumux/material/spatialparams/fv.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
+
+#include <dumux/io/gnuplotinterface.hh>
+#include <dumux/io/plotmateriallaw.hh>
+
+namespace Dumux {
+
+/*!
+ * \ingroup TwoPTwoCModel
+ * \brief Definition of the spatial parameters for the injection problem
+ *        which uses the isothermal two-phase two-component
+ *        fully implicit model.
+ */
+template<class FVGridGeometry, class Scalar>
+class InjectionSpatialParams
+: public FVSpatialParams<FVGridGeometry, Scalar, InjectionSpatialParams<FVGridGeometry, Scalar>>
+{
+    using ThisType = InjectionSpatialParams<FVGridGeometry, Scalar>;
+    using ParentType = FVSpatialParams<FVGridGeometry, Scalar, ThisType>;
+    using GridView = typename FVGridGeometry::GridView;
+
+    // get the dimensions of the simulation domain from GridView
+    static const int dimWorld = GridView::dimensionworld;
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    // export permeability type
+    using PermeabilityType = Scalar;
+
+    using MaterialLaw = EffToAbsLaw<RegularizedBrooksCorey<Scalar>>;
+    using MaterialLawParams = typename MaterialLaw::Params;
+
+    /*!
+     * \brief The constructor
+     *
+     * \param fvGridGeometry The finite volume grid geometry
+     */
+    InjectionSpatialParams(std::shared_ptr<const FVGridGeometry>& fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        aquiferHeightFromBottom_ = 30.0;
+
+        // intrinsic permeabilities
+        aquitardK_ = getParam<Scalar>("SpatialParams.PermeabilityAquitard");
+        aquiferK_ = getParam<Scalar>("SpatialParams.PermeabilityAquifer");
+
+        // porosities
+        aquitardPorosity_ = 0.2;
+        aquiferPorosity_ = 0.4;
+
+        // residual saturations
+        aquitardMaterialParams_.setSwr(0.2);
+        aquitardMaterialParams_.setSnr(0.0);
+        aquiferMaterialParams_.setSwr(0.2);
+        aquiferMaterialParams_.setSnr(0.0);
+
+        // parameters for the Brooks-Corey law
+        aquitardMaterialParams_.setPe(getParam<Scalar>("SpatialParams.EntryPressureAquitard"));
+        aquiferMaterialParams_.setPe(getParam<Scalar>("SpatialParams.EntryPressureAquifer"));
+        aquitardMaterialParams_.setLambda(2.0);
+        aquiferMaterialParams_.setLambda(2.0);
+    }
+
+    /*!
+     * \brief Define the intrinsic permeability \f$\mathrm{[m^2]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    PermeabilityType permeabilityAtPos(const GlobalPosition& globalPos) const
+    {
+        // here, either aquitard or aquifer permeability are returned, depending on the global position
+        if (isInAquitard_(globalPos))
+            return aquitardK_;
+        return aquiferK_;
+    }
+
+    /*!
+     * \brief Define the porosity \f$\mathrm{[-]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    Scalar porosityAtPos(const GlobalPosition& globalPos) const
+    {
+        // here, either aquitard or aquifer porosity are returned, depending on the global position
+        if (isInAquitard_(globalPos))
+            return aquitardPorosity_;
+        return aquiferPorosity_;
+    }
+
+    /*!
+     * \brief Function for defining the parameters needed by constitutive relationships (kr-sw, pc-sw, etc.).
+     *
+     * \param globalPos The global position
+     *
+     * \return the material parameters object
+     */
+     const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const
+    {
+        if (isInAquitard_(globalPos))
+            return aquitardMaterialParams_;
+        return aquiferMaterialParams_;
+    }
+
+    /*!
+     * \brief Function for defining which phase is to be considered as the wetting phase.
+     *
+     * \return the wetting phase index
+     * \param globalPos The position of the center of the element
+     */
+    template<class FluidSystem>
+    int wettingPhaseAtPos(const GlobalPosition& globalPos) const
+    { return FluidSystem::H2OIdx; }
+
+private:
+
+    static constexpr Scalar eps_ = 1e-6;
+
+    // provides a convenient way distinguishing whether a given location is inside the aquitard
+    bool isInAquitard_(const GlobalPosition &globalPos) const
+    {
+        // globalPos[dimWorld-1] is the y direction for 2D grids or the z direction for 3D grids
+        return globalPos[dimWorld-1] > aquiferHeightFromBottom_ + eps_;
+    }
+
+    Scalar aquitardK_;
+    Scalar aquiferK_;
+    Scalar aquiferHeightFromBottom_;
+
+
+    Scalar aquitardPorosity_;
+    Scalar aquiferPorosity_;
+
+    MaterialLawParams aquitardMaterialParams_;
+    MaterialLawParams aquiferMaterialParams_;
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/exercise-dunemodule/README.md b/exercises/exercise-dunemodule/README.md
new file mode 100644
index 00000000..dff7efc9
--- /dev/null
+++ b/exercises/exercise-dunemodule/README.md
@@ -0,0 +1,92 @@
+# Exercise #4 (DuMuX course)
+
+This exercise describes how to create a new DuMuX module
+and how to create a corresponding GitLab project.
+
+This is the suggested
+workflow to develop code on top of DuMuX.
+
+### Task 1: Create new dune module
+<hr>
+
+* Execute the following command (bash environment) in the top-folder, i.e. above the dumux folder
+
+```bash
+./dune-common/bin/duneproject
+```
+
+* Follow the introductions and specify
+    * as name of the new module: `dumux-example`
+    * as module dependencies: `dumux`
+    * a version at your choice
+    * your email address
+
+<hr><br><br>
+### Task 2: Rerun dunecontrol to configure your new project
+<hr>
+
+The following command will configure your new module
+
+```bash
+./dune-common/bin/dunecontrol --opts=<opts file> --only=dumux-example all
+```
+
+<hr><br><br>
+### Task 3: Create a new test case within your new DuMuX module
+<hr>
+
+* Create a new folder (in your module folder), e.g. `appl`
+
+```bash
+mkdir appl
+```
+
+* Copy some test case from the dumux module, e.g. test_box1p
+    * Copy the problem, spatialparams, cc source file, input file
+
+* Adjust the CMakeLists.txt file to include your new subdirectory
+
+* Add a new CMakeLists.txt in the folder `appl` with the content
+
+```cmake
+# add a new box 1p test
+add_dumux_test(test_box1p test_box1p test_box1p.cc test_box1p)
+
+# link the input file to the build folder
+dune_symlink_to_source_files(FILES test_box1p.input)
+```
+
+* Reconfigure your module by running in the topmost directory of your new module
+
+```bash
+cmake build-cmake
+```
+
+* Build and execute the test problem
+
+```bash
+cd build-cmake
+make build_tests
+cd appl
+./test_box1p
+```
+
+<hr><br><br>
+### Task 4: Create a new GitLab project
+<hr>
+
+* Login with your username and password at https://git.iws.uni-stuttgart.de/
+
+Note: If you don't have an account create one. We allow anyone to host repositories
+on our GitLab instance as long as it is DuMuX related.
+
+* Click the **New project** button
+
+* Specify your project name and click the **Create project** button
+
+* Follow the given instructions for an *existing folder*
+
+**Important**: Before executing the `git add .` command, you should add your cmake build folder to `.gitignore`.
+The easiest way to do so is to copy the `.gitignore` file from the dumux module into your module path. If everything
+worked, executing `git status` should not show `build-cmake` anymore. Never put your executables or other build files
+under version control. Only source files (`*.hh`, `*.cc`, `*.input`, `CMakeLists.txt`) should be under version control.
\ No newline at end of file
diff --git a/exercises/exercise-fluidsystem/2p2cproblem.hh b/exercises/exercise-fluidsystem/2p2cproblem.hh
new file mode 100644
index 00000000..0553b406
--- /dev/null
+++ b/exercises/exercise-fluidsystem/2p2cproblem.hh
@@ -0,0 +1,269 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Tutorial problem for a fully coupled twophase box model.
+ */
+#ifndef DUMUX_EXERCISE_THREE_B_PROBLEM_HH
+#define DUMUX_EXERCISE_THREE_B_PROBLEM_HH
+
+// The numerical model
+#include <dumux/porousmediumflow/2p2c/model.hh>
+
+//The box discretization
+#include <dumux/discretization/box/properties.hh>
+
+// The base porous media box problem
+#include <dumux/porousmediumflow/problem.hh>
+
+// Spatially dependent parameters
+#include "spatialparams.hh"
+
+// The fluid system that is created in this exercise
+#include "fluidsystems/h2omycompressiblecomponent.hh"
+
+namespace Dumux{
+// Forward declaration of the problem class
+template <class TypeTag> class ExerciseThreeProblemTwoPTwoC;
+
+namespace Properties {
+// Create a new type tag for the problem
+NEW_TYPE_TAG(ExerciseThreeTwoPTwoCTypeTag, INHERITS_FROM(TwoPTwoC));
+NEW_TYPE_TAG(ExerciseThreeBoxTwoPTwoCTypeTag, INHERITS_FROM(BoxModel, ExerciseThreeTwoPTwoCTypeTag));
+
+// Set the "Problem" property
+SET_TYPE_PROP(ExerciseThreeTwoPTwoCTypeTag, Problem, ExerciseThreeProblemTwoPTwoC<TypeTag>);
+
+// Set the spatial parameters
+SET_TYPE_PROP(ExerciseThreeTwoPTwoCTypeTag, SpatialParams,
+              ExerciseThreeSpatialParams<typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
+                                         typename GET_PROP_TYPE(TypeTag, Scalar)>);
+
+// Set grid and the grid creator to be used
+#if HAVE_DUNE_ALUGRID
+SET_TYPE_PROP(ExerciseThreeTwoPTwoCTypeTag, Grid, Dune::ALUGrid</*dim=*/2, 2, Dune::cube, Dune::nonconforming>);
+#elif HAVE_UG
+SET_TYPE_PROP(ExerciseThreeTwoPTwoCTypeTag, Grid, Dune::UGGrid<2>);
+#else
+SET_TYPE_PROP(ExerciseThreeTwoPTwoCTypeTag, Grid, Dune::YaspGrid<2>);
+#endif // HAVE_DUNE_ALUGRID
+
+ // The fluid system property
+SET_PROP(ExerciseThreeTwoPTwoCTypeTag, FluidSystem)
+{
+private:
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+public:
+    using type = FluidSystems::H2OMyCompressibleComponent<Scalar>;
+};
+
+}
+
+/*!
+ * \ingroup TwoPBoxModel
+ *
+ * \brief  Tutorial problem for a fully coupled twophase box model.
+ */
+template <class TypeTag>
+class ExerciseThreeProblemTwoPTwoC : public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+
+    // Grid dimension
+    enum { dim = GridView::dimension,
+           dimWorld = GridView::dimensionworld
+    };
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+    // Dumux specific types
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+public:
+    ExerciseThreeProblemTwoPTwoC(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+        , eps_(3e-6)
+    {
+#if !(HAVE_DUNE_ALUGRID || HAVE_UG)
+      std::cout << "If you want to use simplices instead of cubes, install and use dune-ALUGrid or UGGrid." << std::endl;
+#endif // !(HAVE_DUNE_ALUGRID || HAVE_UG)
+
+        // initialize the fluid system
+        FluidSystem::init();
+
+        // set the depth of the bottom of the reservoir
+        depthBOR_ = this->fvGridGeometry().bBoxMax()[dimWorld-1];
+
+        // name of the problem and output file
+        name_ = getParam<std::string>("Problem.Name");
+    }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    /*!
+     * \brief Returns the problem name
+     *
+     * This is used as a prefix for files generated by the simulation.
+     */
+    const std::string name() const
+    { return name_; }
+
+
+    /*!
+     * \brief Returns the temperature \f$ K \f$
+     */
+    Scalar temperature() const
+    { return 283.15; }
+
+     /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param bcTypes The boundary types for the conservation equations
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+         BoundaryTypes bcTypes;
+
+        if (globalPos[0] < eps_ || globalPos[0] > this->fvGridGeometry().bBoxMax()[0] - eps_)
+           bcTypes.setAllDirichlet();
+        else
+            bcTypes.setAllNeumann();
+
+        return bcTypes;
+    }
+
+    /*!
+     * \brief Evaluates the boundary conditions for a Dirichlet
+     *        boundary segment
+     *
+     * \param globalPos The global position
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables priVars;
+        priVars.setState(Indices::firstPhaseOnly);
+        priVars[Indices::pressureIdx] = 200.0e3 + 9.81*1000*(depthBOR_ - globalPos[dimWorld-1]);
+        priVars[Indices::switchIdx] = 0.0; // 0 % oil saturation on left boundary
+       return priVars;
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a neumann
+     *        boundary segment.
+     *
+     * \param values Stores the Neumann values for the conservation equations in
+     *               \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$
+     * \param globalPos The position of the integration point of the boundary segment.
+     *
+     * For this method, the \a values parameter stores the mass flux
+     * in normal direction of each phase. Negative values mean influx.
+     */
+    PrimaryVariables neumannAtPos(const GlobalPosition &globalPos) const
+    {
+        // initialize values to zero, i.e. no-flow Neumann boundary conditions
+        PrimaryVariables values(0.0);
+        Scalar up = this->fvGridGeometry().bBoxMax()[dimWorld-1];
+        // extraction of oil on the right boundary for approx. 1.e6 seconds
+        if (globalPos[dimWorld-1] > up - eps_ && globalPos[0] > 20 && globalPos[0] < 40) {
+            // oil outflux of 30 g/(m * s) on the right boundary.
+            // we solve for the mole balance, so we have to divide by the molar mass
+            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0;
+            values[Indices::conti0EqIdx + FluidSystem::NAPLIdx] = -3e-2/FluidSystem::MyCompressibleComponent::molarMass();
+        } else {
+            // no-flow on the remaining Neumann-boundaries.
+            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0;
+            values[Indices::conti0EqIdx + FluidSystem::NAPLIdx] = 0;
+        }
+
+        return values;
+    }
+
+    // \}
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+
+    {
+        PrimaryVariables values(0.0);
+        values.setState(Indices::firstPhaseOnly);
+
+        values[Indices::pressureIdx] = 200.0e3 + 9.81*1000*(depthBOR_ - globalPos[dimWorld-1]); // 200 kPa = 2 bar
+        values[Indices::switchIdx] = 0.0;
+
+        return values;
+    }
+
+    // \}
+
+    /*!
+     * \brief Returns the source term
+     *
+     * \param values Stores the source values for the conservation equations in
+     *               \f$ [ \textnormal{unit of primary variable} / (m^\textrm{dim} \cdot s )] \f$
+     * \param globalPos The global position
+     */
+    PrimaryVariables sourceAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values(0.0);
+
+        return values;
+    }
+
+
+private:
+    // small epsilon value
+    Scalar eps_;
+
+    // depth at the bottom of the reservoir
+    Scalar depthBOR_;
+    std::string name_;
+};
+}
+
+#endif
diff --git a/exercises/exercise-fluidsystem/2pproblem.hh b/exercises/exercise-fluidsystem/2pproblem.hh
new file mode 100644
index 00000000..fd3e3767
--- /dev/null
+++ b/exercises/exercise-fluidsystem/2pproblem.hh
@@ -0,0 +1,308 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Tutorial problem for a fully coupled twophase box model.
+ */
+#ifndef DUMUX_EXERCISE_THREE_A_PROBLEM_HH
+#define DUMUX_EXERCISE_THREE_A_PROBLEM_HH
+
+// The numerical model
+#include <dumux/porousmediumflow/2p/model.hh>
+
+//The box discretization
+#include <dumux/discretization/box/properties.hh>
+
+//The grid managers
+#if HAVE_DUNE_ALUGRID
+#include <dune/alugrid/grid.hh>
+#elif HAVE_UG
+#include <dune/grid/uggrid.hh>
+#else
+#include <dune/grid/yaspgrid.hh>
+#endif
+
+// The base porous media box problem
+#include <dumux/porousmediumflow/problem.hh>
+
+// Spatially dependent parameters
+#include "spatialparams.hh"
+
+// The water component
+#include <dumux/material/components/tabulatedcomponent.hh>
+#include <dumux/material/components/h2o.hh>
+
+// The components that will be created in this exercise
+#include "components/myincompressiblecomponent.hh"
+// #include "components/mycompressiblecomponent.hh"
+
+// We will only have liquid phases here
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+// The two-phase immiscible fluid system
+#include <dumux/material/fluidsystems/2pimmiscible.hh>
+
+namespace Dumux{
+// Forward declaration of the problem class
+template <class TypeTag> class ExerciseThreeProblemTwoP;
+
+namespace Properties {
+// Create a new type tag for the problem
+NEW_TYPE_TAG(ExerciseThreeTwoPTypeTag, INHERITS_FROM(TwoP));
+NEW_TYPE_TAG(ExerciseThreeBoxTwoPTypeTag, INHERITS_FROM(BoxModel, ExerciseThreeTwoPTypeTag));
+
+// Set the "Problem" property
+SET_TYPE_PROP(ExerciseThreeTwoPTypeTag, Problem, ExerciseThreeProblemTwoP<TypeTag>);
+
+// Set the spatial parameters
+SET_TYPE_PROP(ExerciseThreeTwoPTypeTag, SpatialParams,
+              ExerciseThreeSpatialParams<typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
+                                         typename GET_PROP_TYPE(TypeTag, Scalar)>);
+
+// Set grid and the grid creator to be used
+#if HAVE_DUNE_ALUGRID
+SET_TYPE_PROP(ExerciseThreeTwoPTypeTag, Grid, Dune::ALUGrid</*dim=*/2, 2, Dune::cube, Dune::nonconforming>);
+#elif HAVE_UG
+SET_TYPE_PROP(ExerciseThreeTwoPTypeTag, Grid, Dune::UGGrid<2>);
+#else
+SET_TYPE_PROP(ExerciseThreeTwoPTypeTag, Grid, Dune::YaspGrid<2>);
+#endif // HAVE_DUNE_ALUGRID
+
+// we use the immiscible fluid system here
+SET_PROP(ExerciseThreeTwoPTypeTag, FluidSystem)
+{
+private:
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using TabulatedH2O = Components::TabulatedComponent<Components::H2O<Scalar>>;
+    using WettingPhase = typename FluidSystems::OnePLiquid<Scalar, TabulatedH2O>;
+    /*!
+     * Uncomment first line and comment second line for using the incompressible component
+     * Uncomment second line and comment first line for using the compressible component
+     */
+    using NonWettingPhase = typename FluidSystems::OnePLiquid<Scalar, MyIncompressibleComponent<Scalar> >;
+    // using NonWettingPhase = typename FluidSystems::OnePLiquid<Scalar, MyCompressibleComponent<Scalar> >;
+
+public:
+    using type = typename FluidSystems::TwoPImmiscible<Scalar, WettingPhase, NonWettingPhase>;
+};
+
+}
+
+/*!
+ * \ingroup TwoPBoxModel
+ *
+ * \brief  Tutorial problem for a fully coupled twophase box model.
+ */
+template <class TypeTag>
+class ExerciseThreeProblemTwoP : public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+
+    // Grid dimension
+    enum { dim = GridView::dimension,
+           dimWorld = GridView::dimensionworld
+    };
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+    // Dumux specific types
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+    enum {
+        waterPressureIdx = Indices::pressureIdx,
+        naplSaturationIdx = Indices::saturationIdx,
+        contiWEqIdx = Indices::conti0EqIdx + FluidSystem::comp0Idx, // water transport equation index
+        contiNEqIdx = Indices::conti0EqIdx + FluidSystem::comp1Idx // napl transport equation index
+    };
+
+public:
+    ExerciseThreeProblemTwoP(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+        , eps_(3e-6)
+    {
+#if !(HAVE_DUNE_ALUGRID || HAVE_UG)
+      std::cout << "If you want to use simplices instead of cubes, install and use dune-ALUGrid or UGGrid." << std::endl;
+#endif // !(HAVE_DUNE_ALUGRID || HAVE_UG)
+
+      // initialize the tables for the water properties
+      std::cout << "Initializing the tables for the water properties" << std::endl;
+      Components::TabulatedComponent<Components::H2O<Scalar>>::init(/*tempMin=*/273.15,
+                                                    /*tempMax=*/623.15,
+                                                    /*numTemp=*/100,
+                                                    /*pMin=*/0.0,
+                                                    /*pMax=*/20e6,
+                                                    /*numP=*/200);
+
+      // set the depth of the bottom of the reservoir
+      depthBOR_ = this->fvGridGeometry().bBoxMax()[dimWorld-1];
+
+        // name of the problem and output file
+        name_ = getParam<std::string>("Problem.Name");
+    }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    /*!
+     * \brief Returns the problem name
+     *
+     * This is used as a prefix for files generated by the simulation.
+     */
+    const std::string name() const
+    { return name_; }
+
+
+    /*!
+     * \brief Returns the temperature \f$ K \f$
+     */
+    Scalar temperature() const
+    { return 283.15; }
+
+     /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param bcTypes The boundary types for the conservation equations
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+         BoundaryTypes bcTypes;
+
+        if (globalPos[0] < eps_ || globalPos[0] > this->fvGridGeometry().bBoxMax()[0] - eps_)
+           bcTypes.setAllDirichlet();
+        else
+            bcTypes.setAllNeumann();
+
+        return bcTypes;
+    }
+
+    /*!
+     * \brief Evaluates the boundary conditions for a Dirichlet
+     *        boundary segment
+     *
+     * \param globalPos The global position
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables priVars;
+
+        priVars[waterPressureIdx] = 200.0e3 + 9.81*1000*(depthBOR_ - globalPos[dimWorld-1]); // 200 kPa = 2 bar
+        priVars[naplSaturationIdx] = 0.0; // 0 % oil saturation on left boundary
+       return priVars;
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a neumann
+     *        boundary segment.
+     *
+     * \param values Stores the Neumann values for the conservation equations in
+     *               \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$
+     * \param globalPos The position of the integration point of the boundary segment.
+     *
+     * For this method, the \a values parameter stores the mass flux
+     * in normal direction of each phase. Negative values mean influx.
+     */
+    PrimaryVariables neumannAtPos(const GlobalPosition &globalPos) const
+    {
+        // initialize values to zero, i.e. no-flow Neumann boundary conditions
+        PrimaryVariables values(0.0);
+
+        Scalar up = this->fvGridGeometry().bBoxMax()[dimWorld-1];
+        // extraction of oil on the right boundary for approx. 1.e6 seconds
+        if (globalPos[dimWorld-1] > up - eps_ && globalPos[0] > 20 && globalPos[0] < 40) {
+            // oil outflux of 30 g/(m * s) on the right boundary.
+            values[contiWEqIdx] = 0;
+            values[contiNEqIdx] = -3e-2;
+        } else {
+            // no-flow on the remaining Neumann-boundaries.
+            values[contiWEqIdx] = 0;
+            values[contiNEqIdx] = 0;
+        }
+
+        return values;
+    }
+
+    // \}
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+
+    {
+        PrimaryVariables values(0.0);
+
+        values[waterPressureIdx] = 200.0e3 + 9.81*1000*(depthBOR_ - globalPos[dimWorld-1]); // 200 kPa = 2 bar (pw)
+        values[naplSaturationIdx] = 0.0; // (sn)
+
+        return values;
+    }
+    // \}
+
+    /*!
+     * \brief Returns the source term
+     *
+     * \param values Stores the source values for the conservation equations in
+     *               \f$ [ \textnormal{unit of primary variable} / (m^\textrm{dim} \cdot s )] \f$
+     * \param globalPos The global position
+     */
+    PrimaryVariables sourceAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values(0.0);
+
+        return values;
+    }
+
+private:
+    // small epsilon value
+    Scalar eps_;
+    std::string name_; //! Problem name
+
+    // depth at the bottom of the reservoir
+    Scalar depthBOR_;
+};
+}
+
+#endif
diff --git a/exercises/exercise-fluidsystem/CMakeLists.txt b/exercises/exercise-fluidsystem/CMakeLists.txt
new file mode 100644
index 00000000..01a4fd79
--- /dev/null
+++ b/exercises/exercise-fluidsystem/CMakeLists.txt
@@ -0,0 +1,20 @@
+# executables for exercise part a & b
+#part a: 2pproblem
+dune_add_test(NAME exercise3_a
+              SOURCES exercise3.cc
+              COMPILE_DEFINITIONS TYPETAG=ExerciseThreeBoxTwoPTypeTag
+              COMPILE_ONLY # for testing purposes, ignore for the exercise
+              CMD_ARGS exercise3_a.input)
+
+#part b: 2p2cproblem
+dune_add_test(NAME exercise3_b
+              SOURCES exercise3.cc
+              COMPILE_DEFINITIONS TYPETAG=ExerciseThreeBoxTwoPTwoCTypeTag
+              COMPILE_ONLY # for testing purposes, ignore for the exercise
+              CMD_ARGS exercise3_b.input)
+
+# add tutorial to the common target
+add_dependencies(test_exercises exercise3_a exercise3_b)
+
+# add symlinks for the input files
+add_input_file_links()
diff --git a/exercises/exercise-fluidsystem/README.md b/exercises/exercise-fluidsystem/README.md
new file mode 100644
index 00000000..612e88ec
--- /dev/null
+++ b/exercises/exercise-fluidsystem/README.md
@@ -0,0 +1,216 @@
+# Exercise #3 (DuMuX course)
+
+The aim of this exercise is to get familiar with the _DuMuX_ way of implementing new components (fluids) and fluid systems (mixtures). In the scope of this exercise, a new fictitious component is implemented (exercise _3a_) as well as its mixture with water (exercise _3b_).
+
+## Problem set-up
+
+The domain has a size of 60 x 60 m and contains two low-permeable lenses. Initially, the domain is fully water saturated and the fictitious component is injected through the middle portion of the upper boundary by means of a Neumann boundary condition. The remaining parts of the upper and the entire lower boundary are Neumann no-flow while on the two lateral sides Dirichlet boundary conditions are applied (hydrostatic conditions for the pressure and zero saturation).
+
+![](../extradoc/exercise3_setup.png)
+
+
+## Preparing the exercise
+
+* Navigate to the directory `dumux/tutorial/ex3`
+
+### 1. Getting familiar with the code
+
+Locate all the files you will need for this exercise
+* The shared __main file__ : `exercise3.cc`
+* The __input file__ for part a: `exercise3_a.input`
+* The __problem file__ for part a: `2pproblem.hh`
+* The __input file__ for part b: `exercise3_b.input`
+* The __problem file__ for part b: `2p2cproblem.hh`
+* The __spatial parameters file__: `spatialparams.hh`
+
+Furthermore you will find the following folders:
+* `binarycoefficients`: Stores headers containing data/methods on binary mixtures
+* `components`: Stores headers containing data/methods on pure components
+* `fluidsystems`: Stores headers containing data/methods on mixtures of pure components. Uses methods from `binarycoefficients`.
+
+To see more components, fluidsystems and binarycoefficients implementations, have a look at the folder `dumux/material`.
+
+### 2. Implement a new component
+
+In the following, the basic steps required to set the desired fluid system are outlined. Here, this is done in the __problem file__, i.e. for this part of the exercise the code shown below is taken from the `2pproblem.hh` file.
+
+In this part of the exercise we will consider a system consisting of two immiscible phases. Therefore, the _TypeTag_ for this problem (`ExerciseThreeBoxTwoPTypeTag`) derives from a base _TypeTag_ (`ExerciseThreeTwoPTypeTag`) that itself derives from the `TwoP` _TypeTag_ (immiscible two-phase model properties).
+
+```c++
+NEW_TYPE_TAG(ExerciseThreeTwoPTypeTag, INHERITS_FROM(TwoP));
+```
+
+In order to be able to derive from this _TypeTag_, the declaration of the `TwoP` _TypeTag_ has to be included. It can be found in the `2p/model.hh` header:
+
+```c++
+// The numerical model
+#include <dumux/porousmediumflow/2p/model.hh>
+```
+
+Additionally, the _TypeTag_ for this problem (`ExerciseThreeBoxTwoPTypeTag`) derives from the `BoxModel` _TypeTag_, to specify properties of the discretization scheme. For a cell-centered scheme, you could derive from `CCTpfaModel` or `CCMpfaModel` instead. Again the corresponding header has to be included
+
+```c++
+// The discretization
+#include <dumux/discretization/box/properties.hh>
+```
+
+As wetting phase we want to use water and we want to precompute tables on which the properties are then interpolated in order to save computational time. Thus, in a first step we have to include the following headers:
+
+```c++
+// The water component
+#include <dumux/material/components/tabulatedcomponent.hh>
+#include <dumux/material/components/h2o.hh>
+```
+The non-wetting phase will be our new component, where we want to implement an incompressible and a compressible variant. The respective headers are prepared, but still incomplete. The compressible variant is still commented so that compilation does not fail when finishing the incompressible variant.
+
+```c++
+// The components that will be created in this exercise
+#include "components/myincompressiblecomponent.hh"
+// #include "components/mycompressiblecomponent.hh"
+```
+As mentioned above, we want to simulate two non-mixing components. The respective fluid system is found in:
+
+```c++
+// The two-phase immiscible fluid system
+#include <dumux/material/fluidsystems/2pimmiscible.hh>
+```
+
+This fluid system expects __phases__ as input and so far we have only included the components, which contain data on the pure component for all physical states. Thus, we need to include
+
+```c++
+// We will only have liquid phases here
+#include <dumux/material/fluidsystems/1pliquid.hh>
+```
+
+which creates a _liquid phase_ from a given component. Finally, using all of the included classes we set the fluid system property by choosing that the non-wetting phase is a one-phase liquid (OnePLiquid) consisting of the incompressible fictitious component and that the wetting-phase consists of tabulated water in the immiscible fluid system:
+
+
+```c++
+// we use the immiscible fluid system here
+SET_PROP(ExerciseThreeTwoPTypeTag, FluidSystem)
+{
+private:
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using TabulatedH2O = Components::TabulatedComponent<Components::H2O<Scalar>>;
+    using WettingPhase = typename FluidSystems::OnePLiquid<Scalar, TabulatedH2O>;
+    /*!
+     * Uncomment first line and comment second line for using the incompressible component
+     * Uncomment second line and comment first line for using the compressible component
+     */
+    using NonWettingPhase = typename FluidSystems::OnePLiquid<Scalar, MyIncompressibleComponent<Scalar> >;
+    // using NonWettingPhase = typename FluidSystems::OnePLiquid<Scalar, MyCompressibleComponent<Scalar> >;
+
+public:
+    using type = typename FluidSystems::TwoPImmiscible<Scalar, WettingPhase, NonWettingPhase>;
+};
+```
+
+### 2.1. Incompressible component
+
+Open the file `myincompressiblecomponent.hh`. You can see in line 42 that a component should always derive from the _Base_ class (see `dumux/material/components/base.hh`), which defines the interface of a _DuMuX_ component with possibly required functions to be overloaded by the actual implementation. Additionally it is required for liquids to derive from the _Liquid_ class (see `dumux/material/components/liquid.hh`), for gases to derive from the _Gas_ class (see `dumux/material/components/gas.hh`) and for solids to derive from the _Solid_ class (see `dumux/material/components/solid.hh`), with functions specific to liquid, gas or solid.
+
+```c++
+/*!
+ * \ingroup Components
+ * \brief A ficitious component to be implemented in exercise 3.
+ *
+ * \tparam Scalar The type used for scalar values
+ */
+template <class Scalar>
+class MyIncompressibleComponent
+: public Components::Base<Scalar, MyIncompressibleComponent<Scalar> >
+, public Components::Liquid<Scalar, MyIncompressibleComponent<Scalar> >
+```
+
+__Task__:
+
+Implement an incompressible component into the file `myincompressiblecomponent.hh`, which has the following specifications:
+
+| Parameter | unit | value |
+| -----| --------| -------- |
+| $`M`$ | $`Kg/mol`$   | $`131.39 \cdot 10^{-3}`$ |
+| $`\rho_{liquid}`$ | $`Kg/m^3`$   | $`1460`$   |
+| $`\mu_{liquid}`$ | $`Pa \cdot s`$   | $`5.7 \cdot 10^{-4}`$   |
+
+In order to do so, have a look at the files `dumux/material/components/base.hh` and `dumux/material/components/liquid.hh` to see how the interfaces are defined and overload them accordingly.
+
+In order to execute the program, change to the build directory and compile and execute the program by typing
+
+```bash
+cd build-cmake/tutorial/ex3
+make exercise3_a
+./exercise3_a exercise3_a.input
+```
+
+The saturation distribution of the nonwetting phase at the final simulation time should look like this:
+
+![](../extradoc/exercise3_a_solution.png)
+
+### 2.2. Compressible component
+
+We now want to implement a pressure-dependent density for our component. Open the file `mycompressiblecomponent.hh` and copy in the functions you implemented for the incompressible variant. Now substitute the method that returns the density by the following expression:
+
+$`\displaystyle \rho_{MyComp} = \rho_{min} + \frac{ \rho_{max} - \rho_{min} }{ 1 + \rho_{min}*e^{-1.0*k*(\rho_{max} - \rho_{min})*p} } `$
+
+where $`p`$ is the pressure and $`\rho_{min} = 1440 `$, $`\rho_{max} = 1480 `$ and $`k = 5 \cdot 10^{-7} `$. Also, make sure the header is included in the `2pproblem.hh` file by uncommenting line 45. Furthermore, the new component has to be set as the non-wetting phase in the fluid system, i.e. comment line 90 and uncomment line 91. The non-wetting density distribution at the final simulation time should look like this:
+
+![](../extradoc/exercise3_a_solution2.png)
+
+### 3. Implement a new fluid system
+
+The problem file for this part of the exercise is `2p2cproblem.hh`. We now want to implement a new fluid system consisting of two liquid phases, which are water and the previously implemented compressible component. We will consider compositional effects, which is why we now have to derive our _TypeTag_ (`ExerciseThreeBoxTwoPTwoCTypeTag`) from a _TypeTag_ (`ExerciseThreeTwoPTwoCTypeTag`) that derives from the `TwoPTwoC` model _TypeTag_:
+
+```c++
+// The numerical model
+#include <dumux/porousmediumflow/2p2c/model.hh>
+```
+
+```c++
+// Create a new type tag for the problem
+NEW_TYPE_TAG(ExerciseThreeTwoPTwoCTypeTag, INHERITS_FROM(TwoPTwoC));
+NEW_TYPE_TAG(ExerciseThreeBoxTwoPTwoCTypeTag, INHERITS_FROM(BoxModel, ExerciseThreeTwoPTwoCTypeTag));
+```
+
+The new fluid system is to be implemented in the file `fluidsystems/h2omycompressiblecomponent.hh`. This is already included in the problem and the fluid system property is set accordingly.
+
+```c++
+// The fluid system that is created in this exercise
+#include "fluidsystems/h2omycompressiblecomponent.hh"
+```
+
+```c++
+// The fluid system property
+SET_PROP(ExerciseThreeTwoPTwoCTypeTag, FluidSystem)
+{
+private:
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+public:
+    using type = FluidSystems::H2OMyCompressibleComponent<Scalar>;
+};
+```
+
+In the `fluidsystems/h2omycompressiblecomponent.hh` file, your implemented component and the binary coefficient files are already included.
+
+```c++
+// the ficitious component that was created in exercise 3a
+#include <tutorial/ex3/components/mycompressiblecomponent.hh>
+
+// the binary coefficients corresponding to this fluid system
+#include <tutorial/ex3/binarycoefficients/h2omycompressiblecomponent.hh>
+```
+
+__Task__:
+
+Under the assumption that one molecule of `MyCompressibleComponent` displaces exactly one molecule of water, the water phase density can be expressed as follows:
+
+$` \rho_{w} = \frac{ \rho_{w, pure} }{ M_{H_2O} }*(M_{H_2O}*x_{H_2O} + M_{MyComponent}*x_{MyComponent}) `$
+
+Implement this dependency in the `density()` method in the fluid system. In order to compile and execute the program run
+
+```bash
+cd build-cmake/tutorial/ex3
+make exercise3_b
+./exercise3_b exercise3_b.input
+```
+
+You will observe an error message and an abortion of the program. This is due to the fact that in order for the constraint solver and other mechanisms in the two-phase two-component model to work, an additional functionality in the component has to be implemented. The model has to know the vapour pressure. As in the previous exercise, check the `dumux/material/components/base.hh` file for this function and implement it into `mycompressiblecomponent.hh`. For the vapour pressure, use a value of $`3900`$  Pa.
diff --git a/exercises/exercise-fluidsystem/binarycoefficients/h2omycompressiblecomponent.hh b/exercises/exercise-fluidsystem/binarycoefficients/h2omycompressiblecomponent.hh
new file mode 100644
index 00000000..843a69a6
--- /dev/null
+++ b/exercises/exercise-fluidsystem/binarycoefficients/h2omycompressiblecomponent.hh
@@ -0,0 +1,74 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Binary coefficients for water and a ficticious component implemented in tutorial exercise 3a.
+ */
+#ifndef DUMUX_BINARY_COEFF_H2O_MYCOMPRESSIBLECOMPONENT_HH
+#define DUMUX_BINARY_COEFF_H2O_MYCOMPRESSIBLECOMPONENT_HH
+
+namespace Dumux
+{
+namespace BinaryCoeff
+{
+
+/*!
+ * \brief Binary coefficients for water and a ficticious component implemented in tutorial exercise 3a
+ *        The implementation of the missing methods in this file is part of exercise 3b.
+ */
+class H2O_MyCompressibleComponent
+{
+public:
+    /*!
+     * \brief Henry coefficient \f$[N/m^2]\f$ for the fictitous component in liquid water.
+     */
+    template <class Scalar>
+    static Scalar henryMyCompressibleComponentInWater(Scalar temperature)
+    {
+        Scalar dumuxH = 1.5e-1 / 101.325; // unit [(mol/m^3)/Pa]
+        dumuxH *= 18.02e-6;  //multiplied by molar volume of reference phase = water
+        return 1.0/dumuxH; // [Pa]
+    }
+
+    /*!
+     * \brief Henry coefficient \f$[N/m^2]\f$ for water in the ficticious component.
+     */
+    template <class Scalar>
+    static Scalar henryWaterInMyCompressibleComponent(Scalar temperature)
+    {
+        // arbitrary
+        return 1.0e8; // [Pa]
+    }
+
+    /*!
+     * \brief Diffusion coefficient [m^2/s] for my ficticious component in liquid water or vice versa.
+     */
+    template <class Scalar>
+    static Scalar liquidDiffCoeff(Scalar temperature, Scalar pressure)
+    {
+        // arbitrary
+        return 1.e-9;
+    }
+};
+
+}
+} // end namespace
+
+#endif
diff --git a/exercises/exercise-fluidsystem/components/mycompressiblecomponent.hh b/exercises/exercise-fluidsystem/components/mycompressiblecomponent.hh
new file mode 100644
index 00000000..0d18c90a
--- /dev/null
+++ b/exercises/exercise-fluidsystem/components/mycompressiblecomponent.hh
@@ -0,0 +1,126 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup Components
+ * \brief A fictitious component to be implemented in exercise 3.
+ */
+#ifndef DUMUX_MYCOMPRESSIBLECOMPONENT_HH
+#define DUMUX_MYCOMPRESSIBLECOMPONENT_HH
+
+#include <dumux/material/idealgas.hh>
+
+#include <dumux/material/components/base.hh>
+#include <dumux/material/components/liquid.hh>
+
+namespace Dumux
+{
+/*!
+ * \ingroup Components
+ * \brief A fictitious component to be implemented in exercise 3.
+ *
+ * \tparam Scalar The type used for scalar values
+ */
+template <class Scalar>
+class MyCompressibleComponent
+: public Components::Base<Scalar, MyCompressibleComponent<Scalar> >
+, public Components::Liquid<Scalar, MyCompressibleComponent<Scalar> >
+{
+
+public:
+    /*!
+     * \brief A human readable name for MyCompressibleComponent.
+     */
+    static std::string name()
+    { return "MyCompressibleComponent"; }
+
+    /*!
+     * TODO: Copy the methods implemented in MyIncompressibleComponent and substitute
+     *       the density calculation by the expression given in the exercise description.
+     */
+
+     /*!
+      * \brief Returns true if the liquid phase is assumed to be compressible
+      */
+     static constexpr bool liquidIsCompressible()
+     { return true; }
+
+     /*!
+      * \brief The molar mass in \f$\mathrm{[kg/mol]}\f$ of the component.
+      */
+     static Scalar molarMass()
+     {
+        // TODO: replace the line below by a meaningful return statement
+        DUNE_THROW(Dune::NotImplemented, "Todo: implement molar mass");
+     }
+
+     /*!
+      * \brief The density \f$\mathrm{[kg/m^3]}\f$ of the liquid component at a given pressure in
+      *          \f$\mathrm{[Pa]}\f$ and temperature in \f$\mathrm{[K]}\f$.
+      *
+      * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+      * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+      */
+     static Scalar liquidDensity(Scalar temperature, Scalar pressure)
+     {
+         // TODO: replace the line below by a meaningful return statement
+         DUNE_THROW(Dune::NotImplemented, "Todo: implement liquid density");
+     }
+
+     /*!
+      * \brief The molar density of MyCompressibleComponent in \f$\mathrm{[mol/m^3]}\f$ at a given pressure and temperature.
+      *
+      * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+      * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+      *
+      */
+     static Scalar liquidMolarDensity(Scalar temperature, Scalar pressure)
+     {
+         // TODO: replace the line below by a meaningful return statement
+         DUNE_THROW(Dune::NotImplemented, "Todo: implement liquid molar density");
+     }
+
+     /*!
+      * \brief The dynamic liquid viscosity \f$\mathrm{[Pa*s]}\f$ of the pure component.
+      *
+      * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+      * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+      */
+     static Scalar liquidViscosity(Scalar temperature, Scalar pressure)
+     {
+         // TODO: replace the line below by a meaningful return statement
+         DUNE_THROW(Dune::NotImplemented, "Todo: implement liquid viscosity");
+     }
+
+     /*!
+      * \brief The vapor pressure in \f$\mathrm{[Pa]}\f$ of the component at a given
+      *        temperature in \f$\mathrm{[K]}\f$.
+      *
+      * \param T temperature of the component in \f$\mathrm{[K]}\f$
+      */
+     static Scalar vaporPressure(Scalar t)
+     {
+         // TODO: replace the line below by a meaningful return statement
+         DUNE_THROW(Dune::NotImplemented, "Todo: implement vapour pressure");
+     }
+};
+
+} // end namespace
+
+#endif
diff --git a/exercises/exercise-fluidsystem/components/myincompressiblecomponent.hh b/exercises/exercise-fluidsystem/components/myincompressiblecomponent.hh
new file mode 100644
index 00000000..dae8fdde
--- /dev/null
+++ b/exercises/exercise-fluidsystem/components/myincompressiblecomponent.hh
@@ -0,0 +1,112 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup Components
+ * \brief A fictitious component to be implemented in tutorial exercise 3.
+ */
+#ifndef DUMUX_MYINCOMPRESSIBLECOMPONENT_HH
+#define DUMUX_MYINCOMPRESSIBLECOMPONENT_HH
+
+#include <dumux/material/idealgas.hh>
+
+#include <dumux/material/components/base.hh>
+#include <dumux/material/components/liquid.hh>
+
+namespace Dumux
+{
+/*!
+ * \ingroup Components
+ * \brief A fictitious component to be implemented in exercise 3.
+ *
+ * \tparam Scalar The type used for scalar values
+ */
+template <class Scalar>
+class MyIncompressibleComponent
+: public Components::Base<Scalar, MyIncompressibleComponent<Scalar> >
+, public Components::Liquid<Scalar, MyIncompressibleComponent<Scalar> >
+{
+public:
+    /*!
+     * \brief A human readable name for MyIncompressibleComponent.
+     */
+    static std::string name()
+    { return "MyIncompressibleComponent"; }
+
+    /*!
+     * TODO: Implement the methods for the component data given in the exercise description.
+     */
+
+    /*!
+     * \brief Returns true if the liquid phase is assumed to be compressible
+     */
+    static constexpr bool liquidIsCompressible()
+    { return false; }
+
+    /*!
+     * \brief The molar mass in \f$\mathrm{[kg/mol]}\f$ of the component.
+     */
+    static Scalar molarMass()
+    {
+        // TODO: replace the line below by a meaningful return statement
+        DUNE_THROW(Dune::NotImplemented, "Todo: implement molarMass()");
+    }
+
+    /*!
+     * \brief The density \f$\mathrm{[kg/m^3]}\f$ of the liquid component at a given pressure in
+     *          \f$\mathrm{[Pa]}\f$ and temperature in \f$\mathrm{[K]}\f$.
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     */
+    static Scalar liquidDensity(Scalar temperature, Scalar pressure)
+    {
+        // TODO: replace the line below by a meaningful return statement
+        DUNE_THROW(Dune::NotImplemented, "Todo: implement liquidDensity()");
+    }
+
+    /*!
+     * \brief The molar density of MyIncompressibleComponent in \f$\mathrm{[mol/m^3]}\f$ at a given pressure and temperature.
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     *
+     */
+    static Scalar liquidMolarDensity(Scalar temperature, Scalar pressure)
+    {
+        // TODO: replace the line below by a meaningful return statement
+        DUNE_THROW(Dune::NotImplemented, "Todo: implement liquidMolarDensity()");
+    }
+
+    /*!
+     * \brief The dynamic liquid viscosity \f$\mathrm{[Pa*s]}\f$ of the pure component.
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     */
+    static Scalar liquidViscosity(Scalar temperature, Scalar pressure)
+    {
+        // TODO: replace the line below by a meaningful return statement
+        DUNE_THROW(Dune::NotImplemented, "Todo: implement liquidViscosity()");
+    }
+};
+
+} // end namespace
+
+#endif
diff --git a/exercises/exercise-fluidsystem/components/plotdensityfunction.py b/exercises/exercise-fluidsystem/components/plotdensityfunction.py
new file mode 100644
index 00000000..2b256689
--- /dev/null
+++ b/exercises/exercise-fluidsystem/components/plotdensityfunction.py
@@ -0,0 +1,19 @@
+#!usr/bin/env python
+import numpy as np
+import matplotlib.pyplot as plt
+
+# function to calculate rho dependent on pressure
+rho_min = 1440;
+rho_max = 1480;
+k = 5e-7;
+
+def rho(p):
+    return rho_min + (rho_max - rho_min)/(1 + rho_min*np.exp(-1.0*k*(rho_max - rho_min)*p));
+
+# sample pressure in range (1e4, 1e7) and compute corresponding densities
+p = np.logspace(4, 7, 100)
+r = rho(p)
+
+# plot density vs. pressure
+plt.semilogx(p, r)
+plt.show()
diff --git a/exercises/exercise-fluidsystem/exercise3.cc b/exercises/exercise-fluidsystem/exercise3.cc
new file mode 100644
index 00000000..acfc230b
--- /dev/null
+++ b/exercises/exercise-fluidsystem/exercise3.cc
@@ -0,0 +1,236 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief DOC ME!
+ */
+#include <config.h>
+
+#include <ctime>
+#include <iostream>
+
+#include <dune/common/parallel/mpihelper.hh>
+#include <dune/common/timer.hh>
+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
+#include <dune/grid/io/file/vtk.hh>
+#include <dune/istl/io.hh>
+
+#include "2pproblem.hh"
+#include "2p2cproblem.hh"
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/valgrind.hh>
+#include <dumux/common/dumuxmessage.hh>
+#include <dumux/common/defaultusagemessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/newtonsolver.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
+#include <dumux/io/grid/gridmanager.hh>
+
+/*!
+ * \brief Provides an interface for customizing error messages associated with
+ *        reading in parameters.
+ *
+ * \param progName  The name of the program, that was tried to be started.
+ * \param errorMsg  The error message that was issued by the start function.
+ *                  Comprises the thing that went wrong and a general help message.
+ */
+void usage(const char *progName, const std::string &errorMsg)  //TODO check usage
+{
+    if (errorMsg.size() > 0) {
+        std::string errorMessageOut = "\nUsage: ";
+                    errorMessageOut += progName;
+                    errorMessageOut += " [options]\n";
+                    errorMessageOut += errorMsg;
+                    errorMessageOut += "\n\nThe list of mandatory options for this program is:\n"
+                           "\t-TimeManager.TEnd              End of the simulation [s] \n"
+                           "\t-TimeManager.DtInitial         Initial timestep size [s] \n"
+                           "\t-Grid.File                     Name of the file containing the grid \n"
+                           "\t                               definition in DGF format\n"
+                           "\t-SpatialParams.LensLowerLeft   coordinates of the lower left corner of the lens [m] \n"
+                           "\t-SpatialParams.LensUpperRight  coordinates of the upper right corner of the lens [m] \n"
+                           "\t-Problem.Name                  String for naming of the output files \n"
+                           "\n";
+        std::cout << errorMessageOut
+                  << "\n";
+    }
+}
+
+////////////////////////
+// the main function
+////////////////////////
+int main(int argc, char** argv) try
+{
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    // TYPETAG is set in CMakeLists.txt as compile time definition
+    // alternatively you could write `using TypeTag = TTAG(ExerciseThreeBoxTwoPTypeTag);`
+    // then, for the 2p2c problem you have to change this line to `using TypeTag = TTAG(ExerciseThreeBoxTwoPTypeTag);`
+    // and recompile the executable
+    using TypeTag = TTAG(TYPETAG);
+
+    // initialize MPI, finalize is done automatically on exit
+    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+
+    // print dumux start message
+    if (mpiHelper.rank() == 0)
+        DumuxMessage::print(/*firstCall=*/true);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv, usage);
+
+    // try to create a grid (from the given grid file or the input file)
+    GridManager<typename GET_PROP_TYPE(TypeTag, Grid)> gridManager;
+    gridManager.init();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = gridManager.grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+
+    // get some time loop parameters
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // check if we are about to restart a previously interrupted simulation
+    Scalar restartTime = 0;
+    if (Parameters::getTree().hasKey("Restart") || Parameters::getTree().hasKey("TimeLoop.Restart"))
+        restartTime = getParam<Scalar>("TimeLoop.Restart");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(restartTime, dt, tEnd);
+    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);
+
+    // the linear solver
+    using LinearSolver = AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using NewtonSolver = Dumux::NewtonSolver<Assembler, LinearSolver>;
+    NewtonSolver nonLinearSolver(assembler, linearSolver);
+
+    // time loop
+    timeLoop->start(); do
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        // solve the non-linear system with time step control
+        nonLinearSolver.solve(x, *timeLoop);
+
+        // make the new solution the old solution
+        xOld = x;
+        gridVariables->advanceTimeStep();
+
+        // advance to the time loop to the next step
+        timeLoop->advanceTimeStep();
+
+        // report statistics of this time step
+        timeLoop->reportTimeStep();
+
+        // set new dt as suggested by the newton solver
+        timeLoop->setTimeStepSize(nonLinearSolver.suggestTimeStepSize(timeLoop->timeStepSize()));
+
+        // write solution and grid to vtk
+        vtkWriter.write(timeLoop->time());
+
+    } while (!timeLoop->finished());
+
+    timeLoop->finalize(leafGridView.comm());
+
+    ////////////////////////////////////////////////////////////
+    // finalize, print dumux message to say goodbye
+    ////////////////////////////////////////////////////////////
+
+    // print dumux end message
+    if (mpiHelper.rank() == 0)
+    {
+        Parameters::print();
+        DumuxMessage::print(/*firstCall=*/false);
+    }
+
+    return 0;
+} // end main
+catch (Dumux::ParameterException &e)
+{
+    std::cerr << std::endl << e << " ---> Abort!" << std::endl;
+    return 1;
+}
+catch (Dune::DGFException & e)
+{
+    std::cerr << "DGF exception thrown (" << e <<
+                 "). Most likely, the DGF file name is wrong "
+                 "or the DGF file is corrupted, "
+                 "e.g. missing hash at end of file or wrong number (dimensions) of entries."
+                 << " ---> Abort!" << std::endl;
+    return 2;
+}
+catch (Dune::Exception &e)
+{
+    std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl;
+    return 3;
+}
+catch (...)
+{
+    std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl;
+    return 4;
+}
diff --git a/exercises/exercise-fluidsystem/exercise3_a.input b/exercises/exercise-fluidsystem/exercise3_a.input
new file mode 100644
index 00000000..4aa77572
--- /dev/null
+++ b/exercises/exercise-fluidsystem/exercise3_a.input
@@ -0,0 +1,10 @@
+[TimeLoop]
+TEnd = 20000 # duration of the simulation [s]
+DtInitial = 10 # initial time step size [s]
+
+[Problem]
+Name = exercise3_a
+
+[Grid]
+UpperRight = 60 60 # x-/y-coordinates of the upper-right corner of the grid [m]
+Cells = 60 60 # x-/y-resolution of the grid
diff --git a/exercises/exercise-fluidsystem/exercise3_b.input b/exercises/exercise-fluidsystem/exercise3_b.input
new file mode 100644
index 00000000..1e8340de
--- /dev/null
+++ b/exercises/exercise-fluidsystem/exercise3_b.input
@@ -0,0 +1,10 @@
+[TimeLoop]
+TEnd = 20000 # duration of the simulation [s]
+DtInitial = 10 # initial time step size [s]
+
+[Problem]
+Name = exercise3_b
+
+[Grid]
+UpperRight = 60 60 # x-/y-coordinates of the upper-right corner of the grid [m]
+Cells = 60 60 # x-/y-resolution of the grid
diff --git a/exercises/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh b/exercises/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh
new file mode 100644
index 00000000..0fd412e1
--- /dev/null
+++ b/exercises/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh
@@ -0,0 +1,485 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief A fluid system with water and a fictitious component, which is to be
+ *        implemented in tutorial exercise 3a, as phases and components. This
+ *        fluid system is to be implemented in exercise 3b.
+ */
+#ifndef DUMUX_H2O_MYCOMPRESSIBLECOMPONENT_FLUID_SYSTEM_HH
+#define DUMUX_H2O_MYCOMPRESSIBLECOMPONENT_FLUID_SYSTEM_HH
+
+#include <dumux/material/components/h2o.hh>
+#include <dumux/material/components/tabulatedcomponent.hh>
+
+#include <dumux/material/fluidsystems/base.hh>
+
+// the fictitious component that was created in exercise 3a
+#include <exercises/exercise-fluidsystem/components/mycompressiblecomponent.hh>
+
+// the binary coefficients corresponding to this fluid system
+#include <exercises/exercise-fluidsystem/binarycoefficients/h2omycompressiblecomponent.hh>
+
+namespace Dumux {
+namespace FluidSystems {
+
+/*!
+ * \brief A compositional fluid consisting of two liquid phases,
+ *        which are water and a fictitious component from tutorial exercise 3a.
+ */
+template <class Scalar,
+          class H2OType = Dumux::Components::TabulatedComponent<Dumux::Components::H2O<Scalar> > >
+class H2OMyCompressibleComponent
+    : public BaseFluidSystem< Scalar, H2OMyCompressibleComponent<Scalar, H2OType> >
+{
+    typedef H2OMyCompressibleComponent<Scalar, H2OType> ThisType;
+    typedef BaseFluidSystem<Scalar, ThisType> Base;
+
+public:
+    typedef Dumux::MyCompressibleComponent<Scalar> MyCompressibleComponent;
+    typedef H2OType H2O;
+
+    static constexpr int numPhases = 2;
+    static constexpr int numComponents = 2;
+
+    static constexpr int phase0Idx = 0; // index of the first phase
+    static constexpr int phase1Idx = 1; // index of the second phase
+
+    static constexpr int H2OIdx = 0;
+    static constexpr int NAPLIdx = 1;
+    // export component indices to indicate the main component
+    // of the corresponding phase at atmospheric pressure 1 bar
+    // and room temperature 20°C:
+    static constexpr int comp0Idx = H2OIdx;
+    static constexpr int comp1Idx = NAPLIdx;
+
+    /*!
+     * \brief Initialize the fluid system's static parameters generically
+     *
+     * If a tabulated H2O component is used, we do our best to create
+     * tables that always work.
+     */
+    static void init()
+    {
+        init(/*tempMin=*/273.15,
+             /*tempMax=*/623.15,
+             /*numTemp=*/100,
+             /*pMin=*/0.0,
+             /*pMax=*/20e6,
+             /*numP=*/200);
+    }
+
+    /*!
+     * \brief Initialize the fluid system's static parameters using
+     *        problem specific temperature and pressure ranges
+     *
+     * \param tempMin The minimum temperature used for tabulation of water [K]
+     * \param tempMax The maximum temperature used for tabulation of water [K]
+     * \param nTemp The number of ticks on the temperature axis of the  table of water
+     * \param pressMin The minimum pressure used for tabulation of water [Pa]
+     * \param pressMax The maximum pressure used for tabulation of water [Pa]
+     * \param nPress The number of ticks on the pressure axis of the  table of water
+     */
+    static void init(Scalar tempMin, Scalar tempMax, unsigned nTemp,
+                     Scalar pressMin, Scalar pressMax, unsigned nPress)
+    {
+        if (H2O::isTabulated) {
+            std::cout << "Initializing tables for the H2O fluid properties ("
+                      << nTemp*nPress
+                      << " entries).\n";
+
+            H2O::init(tempMin, tempMax, nTemp,
+                      pressMin, pressMax, nPress);
+        }
+    }
+
+
+    /*!
+     * \brief Return whether a phase is liquid
+     *
+     * \param phaseIdx The index of the fluid phase to consider
+     */
+    static constexpr bool isLiquid(int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        return true;
+    }
+
+    static constexpr bool isIdealGas(int phaseIdx)
+    { return H2O::gasIsIdeal() && MyCompressibleComponent::gasIsIdeal(); }
+
+    /*!
+     * \brief Returns true if and only if a fluid phase is assumed to
+     *        be an ideal mixture.
+     *
+     * We define an ideal mixture as a fluid phase where the fugacity
+     * coefficients of all components times the pressure of the phase
+     * are indepent on the fluid composition. This assumtion is true
+     * if Henry's law and Raoult's law apply. If you are unsure what
+     * this function should return, it is safe to return false. The
+     * only damage done will be (slightly) increased computation times
+     * in some cases.
+     *
+     * \param phaseIdx The index of the fluid phase to consider
+     */
+    static constexpr bool isIdealMixture(int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        return true;
+    }
+
+    /*!
+     * \brief Returns true if and only if a fluid phase is assumed to
+     *        be compressible.
+     *
+     * Compressible means that the partial derivative of the density
+     * to the fluid pressure is always larger than zero.
+     *
+     * \param phaseIdx The index of the fluid phase to consider
+     */
+    static constexpr bool isCompressible(int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        if (phaseIdx == phase0Idx)
+            // the water component decides for the water phase...
+            return H2O::liquidIsCompressible();
+
+        // the NAPL component decides for the napl phase...
+        return MyCompressibleComponent::liquidIsCompressible();
+    }
+
+    /*!
+     * \brief Return the human readable name of a phase (used in indices)
+     */
+    static std::string phaseName(int phaseIdx)
+    {
+        switch (phaseIdx) {
+        case phase0Idx: return "w";
+        case phase1Idx: return "n";
+        };
+        DUNE_THROW(Dune::InvalidStateException, "Invalid phase index " << phaseIdx);
+    }
+
+    /*!
+     * \brief Return the human readable name of a component (used in indices)
+     */
+    static std::string componentName(int compIdx)
+    {
+        switch (compIdx) {
+        case H2OIdx: return H2O::name();
+        case NAPLIdx: return MyCompressibleComponent::name();
+        };
+        DUNE_THROW(Dune::InvalidStateException, "Invalid component index " << compIdx);
+    }
+
+    /*!
+     * \brief Return the molar mass of a component in [kg/mol].
+     */
+    static Scalar molarMass(int compIdx)
+    {
+        switch (compIdx) {
+        case H2OIdx: return H2O::molarMass();
+        case NAPLIdx: return MyCompressibleComponent::molarMass();
+        };
+        DUNE_THROW(Dune::InvalidStateException, "Invalid component index " << compIdx);
+    }
+
+    /*!
+     * \brief Given all mole fractions in a phase, return the phase
+     *        density [kg/m^3].
+     */
+    using Base::density;
+    template <class FluidState>
+    static Scalar density(const FluidState &fluidState, int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        if (phaseIdx == phase0Idx) {
+            // See: doctoral thesis of Steffen Ochs 2007
+            // Steam injection into saturated porous media : process analysis including experimental and numerical investigations
+            // http://elib.uni-stuttgart.de/bitstream/11682/271/1/Diss_Ochs_OPUS.pdf
+
+            // Scalar rholH2O = H2O::liquidDensity(fluidState.temperature(phaseIdx), fluidState.pressure(phaseIdx));
+            // Scalar clH2O = rholH2O/H2O::molarMass();
+            // Scalar x_H2O = fluidState.moleFraction (phase0Idx, H2OIdx);
+            // Scalar x_myComp = fluidState.moleFraction (phase0Idx, NAPLIdx);
+
+            /*!
+             * TODO: implement the composition-dependent water density from the exercise sheet.
+             */
+            return /*???*/1000.0;
+        }
+        else {
+            // assume the density of the fictious component to be independent of the composition
+            Scalar pressure = MyCompressibleComponent::liquidIsCompressible()?fluidState.pressure(phaseIdx):1e100;
+            return MyCompressibleComponent::liquidDensity(fluidState.temperature(phaseIdx), pressure);
+        }
+    }
+
+    using Base::molarDensity;
+    /*!
+     * \brief The molar density \f$\rho_{mol,\alpha}\f$
+     *   of a fluid phase \f$\alpha\f$ in \f$\mathrm{[mol/m^3]}\f$
+     *
+     * The molar density for the simple relation is defined by the
+     * mass density \f$\rho_\alpha\f$ and the molar mass of the main component
+     *
+     * The molar density for the complrex relation is defined by the
+     * mass density \f$\rho_\alpha\f$ and the mean molar mass \f$\overline M_\alpha\f$:
+     *
+     * \f[\rho_{mol,\alpha} = \frac{\rho_\alpha}{\overline M_\alpha} \;.\f]
+     */
+    template <class FluidState>
+    static Scalar molarDensity(const FluidState &fluidState, int phaseIdx)
+    {
+        assert(0 <= phaseIdx  && phaseIdx < numPhases);
+
+        Scalar T = fluidState.temperature(phaseIdx);
+        Scalar p = fluidState.pressure(phaseIdx);
+
+        // liquid phase
+        if (phaseIdx == phase0Idx)
+        {
+            // assume pure water or that each gas molecule displaces exactly one
+            // molecule in the liquid.
+            return H2O::liquidMolarDensity(T, p);
+        }
+        else
+        {
+            // assume the molar density of the fictious component to be independent of the composition
+            Scalar pressure = MyCompressibleComponent::liquidIsCompressible()?fluidState.pressure(phaseIdx):1e100;
+            return MyCompressibleComponent::liquidMolarDensity(fluidState.temperature(phaseIdx), pressure);
+        }
+    }
+
+    /*!
+     * \brief Return the viscosity of a phase.
+     */
+    using Base::viscosity;
+    template <class FluidState>
+    static Scalar viscosity(const FluidState &fluidState,
+                            int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        if (phaseIdx == phase0Idx) {
+            // assume pure water viscosity
+            return H2O::liquidViscosity(fluidState.temperature(phaseIdx),
+                                        fluidState.pressure(phaseIdx));
+        }
+        else {
+            // assume pure NAPL viscosity
+            return MyCompressibleComponent::liquidViscosity(fluidState.temperature(phaseIdx), fluidState.pressure(phaseIdx));
+        }
+    }
+
+    using Base::diffusionCoefficient;
+    template <class FluidState>
+    static Scalar diffusionCoefficient(const FluidState &fluidState, int phaseIdx, int compIdx)
+    {
+        DUNE_THROW(Dune::NotImplemented, "Diffusion coefficients");
+    }
+
+    /*!
+     * \brief Given a phase's composition, temperature and pressure,
+     *        return the binary diffusion coefficient \f$\mathrm{[m^2/s]}\f$ for components
+     *        \f$\mathrm{i}\f$ and \f$\mathrm{j}\f$ in this phase.
+     * \param fluidState The fluid state
+     * \param paramCache mutable parameters
+     * \param phaseIdx Index of the fluid phase
+     * \param compIIdx Index of the component i
+     * \param compJIdx Index of the component j
+     */
+    using Base::binaryDiffusionCoefficient;
+    template <class FluidState>
+    static Scalar binaryDiffusionCoefficient(const FluidState &fluidState,
+                                             int phaseIdx,
+                                             int compIIdx,
+                                             int compJIdx)
+    {
+        assert(0 <= phaseIdx  && phaseIdx < numPhases);
+        assert(0 <= compIIdx  && compIIdx < numComponents);
+        assert(0 <= compJIdx  && compJIdx < numComponents);
+
+        const Scalar T = fluidState.temperature(phaseIdx);
+        const Scalar p = fluidState.pressure(phaseIdx);
+
+        // we assume the diffusion coefficient to be the same in both phases
+        return Dumux::BinaryCoeff::H2O_MyCompressibleComponent::liquidDiffCoeff(T, p);
+    }
+
+     /* Henry coefficients
+     */
+    template <class FluidState>
+    static Scalar henryCoefficient(const FluidState &fluidState,
+                                   int phaseIdx,
+                                   int compIdx)
+    {
+        assert(0 <= phaseIdx  && phaseIdx < numPhases);
+        assert(0 <= compIdx  && compIdx < numComponents);
+
+        const Scalar T = fluidState.temperature(phaseIdx);
+        const Scalar p = fluidState.pressure(phaseIdx);
+
+        if (compIdx == NAPLIdx && phaseIdx == phase0Idx)
+            return Dumux::BinaryCoeff::H2O_MyCompressibleComponent::henryMyCompressibleComponentInWater(T)/p;
+
+        else if (phaseIdx == phase1Idx && compIdx == H2OIdx)
+            return Dumux::BinaryCoeff::H2O_MyCompressibleComponent::henryWaterInMyCompressibleComponent(T)/p;
+
+        else
+            DUNE_THROW(Dune::InvalidStateException, "non-existent henry coefficient for phase index " << phaseIdx
+                                                     << " and component index " << compIdx);
+    }
+
+    using Base::fugacityCoefficient;
+    /*!
+     * \brief Returns the fugacity coefficient \f$\mathrm{[-]}\f$ of a component in a
+     *        phase.
+     *
+     * In this case, things are actually pretty simple. We have an ideal
+     * solution. Thus, the fugacity coefficient is 1 in the gas phase
+     * (fugacity equals the partial pressure of the component in the gas phase
+     * respectively in the liquid phases it is the inverse of the
+     * Henry coefficients scaled by pressure
+     * \param fluidState The fluid state
+     * \param phaseIdx The index of the phase
+     * \param compIdx The index of the component
+     */
+    template <class FluidState>
+    static Scalar fugacityCoefficient(const FluidState &fluidState,
+                                      int phaseIdx,
+                                      int compIdx)
+    {
+        assert(0 <= phaseIdx  && phaseIdx < numPhases);
+        assert(0 <= compIdx  && compIdx < numComponents);
+
+        Scalar T = fluidState.temperature(phaseIdx);
+        Scalar p = fluidState.pressure(phaseIdx);
+
+        if (phaseIdx == phase0Idx) {
+            if (compIdx == H2OIdx)
+                return H2O::vaporPressure(T)/p;
+            else if (compIdx == NAPLIdx)
+                return Dumux::BinaryCoeff::H2O_MyCompressibleComponent::henryMyCompressibleComponentInWater(T)/p;
+        }
+
+        // for the NAPL phase, we assume currently that nothing is
+        // dissolved. this means that the affinity of the NAPL
+        // component to the NAPL phase is much higher than for the
+        // other components, i.e. the fugacity coefficient is much
+        // smaller.
+        Scalar phiNapl = MyCompressibleComponent::vaporPressure(T)/p;
+        if (compIdx == NAPLIdx)
+            return phiNapl;
+        else
+            return 1e6*phiNapl;
+    }
+
+    template <class FluidState>
+    static Scalar kelvinVaporPressure(const FluidState &fluidState,
+                                      const int phaseIdx,
+                                      const int compIdx)
+    {
+        DUNE_THROW(Dune::NotImplemented, "FluidSystems::H2OMyCompressibleComponent::kelvinVaporPressure()");
+    }
+
+     /*  partial pressures in the gas phase, taken from saturation vapor pressures
+     */
+    template <class FluidState>
+    static Scalar partialPressureGas(const FluidState &fluidState, int phaseIdx,
+                                      int compIdx)
+    {
+        assert(0 <= compIdx  && compIdx < numComponents);
+
+        const Scalar T = fluidState.temperature(phaseIdx);
+        if (compIdx == NAPLIdx)
+            return MyCompressibleComponent::vaporPressure(T);
+        else if (compIdx == H2OIdx)
+            return H2O::vaporPressure(T);
+        else
+            DUNE_THROW(Dune::InvalidStateException, "non-existent component index " << compIdx);
+    }
+
+     /*  inverse vapor pressures, taken from inverse saturation vapor pressures
+     */
+    template <class FluidState>
+    static Scalar inverseVaporPressureCurve(const FluidState &fluidState,
+                                            int phaseIdx,
+                                            int compIdx)
+    {
+        assert(0 <= compIdx  && compIdx < numComponents);
+
+        const Scalar pressure = fluidState.pressure(phaseIdx);
+        if (compIdx == NAPLIdx)
+            return MyCompressibleComponent::vaporTemperature(pressure);
+        else if (compIdx == H2OIdx)
+            return H2O::vaporTemperature(pressure);
+        else
+            DUNE_THROW(Dune::InvalidStateException, "non-existent component index " << compIdx);
+    }
+
+
+
+    /*!
+     * \brief Given all mole fractions in a phase, return the specific
+     *        phase enthalpy [J/kg].
+     */
+    using Base::enthalpy;
+    template <class FluidState>
+    static Scalar enthalpy(const FluidState &fluidState,
+                           int phaseIdx)
+    {
+        DUNE_THROW(Dune::NotImplemented, "FluidSystems::H2OMyCompressibleComponent::enthalpy()");
+    }
+
+    using Base::heatCapacity;
+    template <class FluidState>
+    static Scalar heatCapacity(const FluidState &fluidState,
+                               int phaseIdx)
+    {
+        DUNE_THROW(Dune::NotImplemented, "FluidSystems::H2OMyCompressibleComponent::heatCapacity()");
+    }
+
+    using Base::thermalConductivity;
+    template <class FluidState>
+    static Scalar thermalConductivity(const FluidState &fluidState,
+                                      int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+
+        const Scalar temperature  = fluidState.temperature(phaseIdx) ;
+        const Scalar pressure = fluidState.pressure(phaseIdx);
+        if (phaseIdx == phase0Idx)
+        {
+            return H2O::liquidThermalConductivity(temperature, pressure);
+        }
+        else
+        {
+            return MyCompressibleComponent::liquidThermalConductivity(temperature, pressure);
+        }
+        DUNE_THROW(Dune::InvalidStateException, "Invalid phase index " << phaseIdx);
+    }
+
+private:
+
+};
+} // end namespace FluidSystems
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/exercise-fluidsystem/spatialparams.hh b/exercises/exercise-fluidsystem/spatialparams.hh
new file mode 100644
index 00000000..36297290
--- /dev/null
+++ b/exercises/exercise-fluidsystem/spatialparams.hh
@@ -0,0 +1,163 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief The spatial parameters for the fully coupled tutorial problem
+ *        which uses the twophase box model.
+ */
+#ifndef DUMUX_EXERCISE_THREE_SPATIAL_PARAMS_HH
+#define DUMUX_EXERCISE_THREE_SPATIAL_PARAMS_HH
+
+// include parent spatialparameters
+#include <dumux/material/spatialparams/fv.hh>
+
+// include material laws
+#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh>
+
+namespace Dumux {
+
+/*!
+ * \ingroup TwoPBoxModel
+ *
+ * \brief The spatial parameters for the fully coupled tutorial problem
+ *        which uses the twophase box model.
+ */
+template<class FVGridGeometry, class Scalar>
+class ExerciseThreeSpatialParams
+: public FVSpatialParams<FVGridGeometry, Scalar, ExerciseThreeSpatialParams<FVGridGeometry, Scalar>>
+{
+    using ThisType = ExerciseThreeSpatialParams<FVGridGeometry, Scalar>;
+    using ParentType = FVSpatialParams<FVGridGeometry, Scalar, ThisType>;
+    using GridView = typename FVGridGeometry::GridView;
+
+    static constexpr int dim = GridView::dimension;
+    static constexpr int dimWorld = GridView::dimensionworld;
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    // export permeability type
+    using PermeabilityType = Dune::FieldMatrix<Scalar, dim, dim>;
+
+    using MaterialLaw = EffToAbsLaw<RegularizedBrooksCorey<Scalar>>;
+    using MaterialLawParams = typename MaterialLaw::Params;
+
+    /*!
+     * \brief The constructor
+     *
+     * \param fvGridGeometry The finite volume grid geometry
+     */
+    ExerciseThreeSpatialParams(std::shared_ptr<const FVGridGeometry>& fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    , K_(0)
+    , KLens_(0)
+    {
+        //set main diagonal entries of the permeability tensor to a value
+        //setting to one value means: isotropic, homogeneous
+        for (int i = 0; i < dim; i++)
+        {
+            K_[i][i] = 1e-7;
+            KLens_[i][i] = 1e-10;
+        }
+
+        //set residual saturations
+        materialParams_.setSwr(0.0);
+        materialParamsLens_.setSwr(0.1);
+        materialParams_.setSnr(0.0);
+        materialParamsLens_.setSnr(0.1);
+
+        //parameters of Brooks & Corey Law
+        materialParams_.setPe(500.0);
+        materialParamsLens_.setPe(1000.0);
+        materialParams_.setLambda(2);
+        materialParamsLens_.setLambda(2);
+    }
+
+
+    /*!
+     * \brief Define the intrinsic permeability \f$\mathrm{[m^2]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    PermeabilityType permeabilityAtPos(const GlobalPosition& globalPos) const
+
+    {
+        if (isInLens(globalPos))
+            return KLens_;
+        return K_;
+    }
+
+    /*!
+     * \brief Define the porosity \f$\mathrm{[-]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    Scalar porosityAtPos(const GlobalPosition& globalPos) const
+    {
+        if (isInLens(globalPos))
+            return 0.1;
+        return 0.2;
+    }
+
+    /*!
+     * \brief Function for defining the parameters needed by constitutive relationships (kr-sw, pc-sw, etc.).
+     *
+     * \param globalPos The global position
+     *
+     * \return the material parameters object
+     */
+    const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const
+    {
+        if (isInLens(globalPos))
+            return materialParamsLens_;
+        return materialParams_;
+    }
+
+    /*!
+     * \brief Function for defining which phase is to be considered as the wetting phase.
+     *
+     * \return the wetting phase index
+     * \param globalPos The position of the center of the element
+     */
+    template<class FluidSystem>
+    int wettingPhaseAtPos(const GlobalPosition& globalPos) const
+    { return FluidSystem::phase0Idx; }
+
+    //! if we are in the lens
+    bool isInLens(const GlobalPosition& globalPos) const
+    {
+        const auto x = globalPos[0];
+        const auto y = globalPos[1];
+        return (x < 40 && x > 20 && y > 35 && y < 45) ||
+               (x < 50 && x > 30 && y < 30 && y > 15);
+    }
+
+private:
+
+    Dune::FieldMatrix<Scalar, dim, dim> K_;
+    Dune::FieldMatrix<Scalar, dim, dim> KLens_;
+    // Object that holds the values/parameters of the selected material law.
+    MaterialLawParams materialParams_;
+    MaterialLawParams materialParamsLens_;
+};
+} // end namespace Dumux
+#endif
diff --git a/exercises/exercise-properties/CMakeLists.txt b/exercises/exercise-properties/CMakeLists.txt
new file mode 100644
index 00000000..d700163f
--- /dev/null
+++ b/exercises/exercise-properties/CMakeLists.txt
@@ -0,0 +1,11 @@
+# the compositional two-phase simulation program
+dune_add_test(NAME exercise2
+              SOURCES exercise2.cc
+              COMPILE_DEFINITIONS TYPETAG=Injection2p2pcCCProblem
+              CMD_ARGS exercise2.input)
+
+# add tutorial to the common target
+add_dependencies(test_exercises exercise2)
+
+# add a symlink for the input file
+dune_symlink_to_source_files(FILES "exercise2.input")
diff --git a/exercises/exercise-properties/README.md b/exercises/exercise-properties/README.md
new file mode 100644
index 00000000..aff0fbef
--- /dev/null
+++ b/exercises/exercise-properties/README.md
@@ -0,0 +1,151 @@
+# Exercise #2 (DuMuX course)
+<br>
+## Problem set-up
+
+The problem setup is identical to the previous [_exercise 1_](../ex1/README.md).
+
+## Preparing the exercise
+
+* Navigate to the directory `dumux/tutorial/ex2`
+
+_Exercise 2_ deals with a two-phase compositional problem (__2p2c__). Goal is to learn how to use compile and runtime parameters and the _DuMuX property system_.
+
+<br><br>
+### Task 1: Getting familiar with the code
+<hr>
+
+Locate all the files you will need for this exercise
+* The __main file__: `exercise2.cc`
+* The __problem file__: `injection2p2cproblem.hh`
+* The __spatial parameters file__: `injection2p2cspatialparams.hh`
+* The __input file__: `exercise2.input`
+* Two header files containing:
+  * a custom __local residual__ in: `mylocalresidual.hh`
+  * a custom __material law__ in: `mymateriallaw.hh`
+
+
+<hr><br><br>
+### Task 2: Compiling and running the program
+<hr>
+
+* Change to the build-directory
+
+```bash
+cd ../../build-cmake/tutorial/ex2
+```
+
+* Compile the executable `exercise2`
+
+```bash
+make exercise2
+```
+
+* Run the problem and inspect the result
+
+```bash
+./exercise2
+```
+Note: Because the input file has the same name as the
+executable, DuMuX will find it automatically.
+
+If gnuplot is installed on your system, you should see a plot of the capillary pressure - saturation relationship.
+
+<hr><br><br>
+### Task 3: Implement and use a different material law
+<hr>
+
+DuMuX uses the term _material law_ to describe the law used to compute
+* pc-Sw relations
+* kr-Sw relations
+* their inverse relations
+
+The file `mymateriallaw.hh` contains a custom implementation of such a material law.
+
+* Implement the method `Scalar pc(const Params &params, Scalar swe)` by implementing your own capillary pressure relationship, e.g. a simple linear relationship $`p_C(S_w) = 1\cdot 10^5 \cdot (1-S_w) + p_e`$.
+
+Note: `MyMaterialLaw` uses the `BrooksCoreyParams` class as parameter input. You can get the entry pressure that is set in the spatial params as follows
+
+```c++
+const auto pe = params.pe();
+```
+
+The type (i.e. C++ type) of the material law is set in the file `injection2p2cspatialparams.hh` by declaring the following alias in the public section of the spatial parameters class:
+
+```c++
+    using MaterialLaw = EffToAbsLaw<RegularizedBrooksCorey<Scalar>>;
+```
+
+* Make DuMuX use your own material law by including the header `mymateriallaw.hh` and changing the alias `MaterialLaw`. This will make sure that your material law is used everywhere else in the code.
+
+Note: Also use the wrapper class `EffToAbsLaw`. It takes care of converting absolute to effective saturations considering residual saturations. `MyMaterialLaw`
+as other material laws (like Brooks-Corey, VanGenuchten, ...) in DuMuX only deals with effective saturations.
+
+* Verify your changes by recompiling and running the program. You should see a plot of your new function.
+
+For the next task, disable the plotting feature by changing the settings in the input file `exercise2.input`
+
+```ini
+[Problem]
+OnlyPlotMaterialLaws = false
+```
+
+<hr><br><br>
+### Task 4: Enable/Disable Gravity -> DuMuX parameters
+<hr>
+
+DuMuX has many parameters that have default values. For example, all simulations consider gravity effects by default.
+You can disable gravity for a study, simply by setting the parameter in the input file
+
+```ini
+[Problem]
+EnableGravity = false
+```
+
+Run the simulation with and without gravity. Change the `Problem.Name` parameter to create output files with different
+names. Compare the results using paraview. You should immediately see the difference.
+
+A list of parameters that can be set through the input file is given [here](http://www.dumux.org/doxygen-stable/html-2.11/a06387.php).
+
+
+<hr><br><br>
+### Task 5: Implement your own local residual
+<hr>
+
+Most types in DuMuX are properties that can be changed just like the material law. In the following task we implement our own 2p2c local residual, i.e. the class that computes the element residual  in every Newton iteration. The file `mylocalresidual.hh` contains a copy of the similar to the original local residual class used for all compositional models renamed to `template<class TypeTag> class MyCompositionalLocalResidual`.
+
+* Make DuMuX use this new local residual by inluding the header `mylocalresidual.hh` and setting the corresponding property in the `Property` namespace in the file `injection2p2cproblem.hh`
+
+```c++
+// note that every property struct knows about TypeTag
+SET_PROP(Injection2p2cTypeTag, LocalResidual)
+{
+    using type = MyCompositionalLocalResidual<TypeTag>;
+};
+
+// or using the convenience macro
+SET_TYPE_PROP(Injection2p2cTypeTag, LocalResidual,
+              MyCompositionalLocalResidual<TypeTag>);
+```
+
+You want to make the new local residual special by adding a switch enabling / disabling diffusion. We will achieve this with a DuMuX parameter which is read from the input file and defaults to a property value if the input file doesn't contain the parameter.
+
+* Modify the `computeFlux` method to only call the `diffusiveFlux` method if diffusion is enabled. You can get the new parameter by adding the lines
+
+```c++
+// ... in the computeFlux method of MyCompositionalLocalResidual
+    auto enableDiffusion = getParam<bool>("Problem.EnableDiffusion", true);
+
+```
+
+You can now enable and disable diffusion through the input file
+
+```ini
+[Problem]
+EnableDiffusion = true / false
+```
+
+* Verify the difference in the parameter $`x_w^{N2}`$, i.e. the mole fraction of nitrogen in the
+water phase, with and without diffusion.
+
+Note that due to diffusion being a slow process you
+can only see the difference in later times.
diff --git a/exercises/exercise-properties/exercise2.cc b/exercises/exercise-properties/exercise2.cc
new file mode 100644
index 00000000..2a7493e6
--- /dev/null
+++ b/exercises/exercise-properties/exercise2.cc
@@ -0,0 +1,200 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Test for the two-phase two-component CC model.
+ */
+#include <config.h>
+
+#include <ctime>
+#include <iostream>
+
+#include <dune/common/parallel/mpihelper.hh>
+#include <dune/common/timer.hh>
+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
+#include <dune/grid/io/file/vtk.hh>
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/dumuxmessage.hh>
+#include <dumux/common/defaultusagemessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/privarswitchnewtonsolver.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
+#include <dumux/io/grid/gridmanager.hh>
+
+#include "injection2p2cproblem.hh"
+
+int main(int argc, char** argv)try
+{
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = TTAG(Injection2p2pcCCTypeTag);
+
+    // initialize MPI, finalize is done automatically on exit
+    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+
+    // print dumux start message
+    if (mpiHelper.rank() == 0)
+        DumuxMessage::print(/*firstCall=*/true);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv);
+
+    // try to create a grid (from the given grid file or the input file)
+    GridManager<typename GET_PROP_TYPE(TypeTag, Grid)> gridManager;
+    gridManager.init();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = gridManager.grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+
+    // get some time loop parameters
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // check if we are about to restart a previously interrupted simulation
+    Scalar restartTime = 0;
+    if (Parameters::getTree().hasKey("Restart") || Parameters::getTree().hasKey("TimeLoop.Restart"))
+        restartTime = getParam<Scalar>("TimeLoop.Restart");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(restartTime, dt, tEnd);
+    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);
+
+    // the linear solver
+    using LinearSolver = AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using PrimaryVariableSwitch = typename GET_PROP_TYPE(TypeTag, PrimaryVariableSwitch);
+    using NewtonSolver = Dumux::PriVarSwitchNewtonSolver<Assembler, LinearSolver, PrimaryVariableSwitch>;
+    NewtonSolver nonLinearSolver(assembler, linearSolver);
+
+    // time loop
+    timeLoop->start(); do
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        //set time in problem (is used in time-dependent Neumann boundary condition)
+        problem->setTime(timeLoop->time()+timeLoop->timeStepSize());
+
+        // solve the non-linear system with time step control
+        nonLinearSolver.solve(x, *timeLoop);
+
+        // make the new solution the old solution
+        xOld = x;
+        gridVariables->advanceTimeStep();
+
+        // advance to the time loop to the next step
+        timeLoop->advanceTimeStep();
+
+        // report statistics of this time step
+        timeLoop->reportTimeStep();
+
+        // set new dt as suggested by the newton solver
+        timeLoop->setTimeStepSize(nonLinearSolver.suggestTimeStepSize(timeLoop->timeStepSize()));
+
+        vtkWriter.write(timeLoop->time());
+
+    } while (!timeLoop->finished());
+
+    timeLoop->finalize(leafGridView.comm());
+
+    ////////////////////////////////////////////////////////////
+    // finalize, print dumux message to say goodbye
+    ////////////////////////////////////////////////////////////
+
+    // print dumux end message
+    if (mpiHelper.rank() == 0)
+    {
+        Parameters::print();
+        DumuxMessage::print(/*firstCall=*/false);
+    }
+
+    return 0;
+} // end main
+catch (Dumux::ParameterException &e)
+{
+    std::cerr << std::endl << e << " ---> Abort!" << std::endl;
+    return 1;
+}
+catch (Dune::DGFException & e)
+{
+    std::cerr << "DGF exception thrown (" << e <<
+                 "). Most likely, the DGF file name is wrong "
+                 "or the DGF file is corrupted, "
+                 "e.g. missing hash at end of file or wrong number (dimensions) of entries."
+                 << " ---> Abort!" << std::endl;
+    return 2;
+}
+catch (Dune::Exception &e)
+{
+    std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl;
+    return 3;
+}
+catch (...)
+{
+    std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl;
+    return 4;
+}
diff --git a/exercises/exercise-properties/exercise2.input b/exercises/exercise-properties/exercise2.input
new file mode 100644
index 00000000..85ea9662
--- /dev/null
+++ b/exercises/exercise-properties/exercise2.input
@@ -0,0 +1,25 @@
+[TimeLoop]
+DtInitial = 3600 # in seconds
+TEnd = 3.154e9 # in seconds, i.e ten years
+
+[Grid]
+LowerLeft = 0 0
+UpperRight = 60 40
+Cells = 24 16
+
+[Problem]
+Name = infiltration
+OnlyPlotMaterialLaws = true
+AquiferDepth = 2700.0 # m
+TotalAreaSpecificInflow = 1e-4 # kg / (s*m^2)
+InjectionDuration = 2.628e6 # in seconds, i.e. one month
+
+# TODO: dumux-course-task
+# Set Problem.EnableGravity
+# Set Problem.EnableDiffusion
+
+[SpatialParams]
+PermeabilityAquitard = 1e-15 # m^2
+EntryPressureAquitard = 4.5e4 # Pa
+PermeabilityAquifer = 1e-12 # m^2
+EntryPressureAquifer = 1e4 # Pa
diff --git a/exercises/exercise-properties/injection2p2cproblem.hh b/exercises/exercise-properties/injection2p2cproblem.hh
new file mode 100644
index 00000000..a765f8bb
--- /dev/null
+++ b/exercises/exercise-properties/injection2p2cproblem.hh
@@ -0,0 +1,279 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Problem where air is injected under a low permeable layer in a depth of 2700m.
+ */
+#ifndef DUMUX_INJECTION_2P2C_PROBLEM_HH
+#define DUMUX_INJECTION_2P2C_PROBLEM_HH
+
+#include <dumux/porousmediumflow/2p2c/model.hh>
+#include <dumux/porousmediumflow/problem.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+#include <dumux/discretization/cellcentered/tpfa/properties.hh>
+
+#include "injection2p2cspatialparams.hh"
+
+// TODO: dumux-course-task
+// Include the local residual header
+
+namespace Dumux {
+
+// foward declaration
+template <class TypeTag>
+class Injection2p2cProblem;
+
+// setup property TypeTag
+namespace Properties {
+NEW_TYPE_TAG(Injection2p2cTypeTag, INHERITS_FROM(TwoPTwoC));
+NEW_TYPE_TAG(Injection2p2pcCCTypeTag, INHERITS_FROM(CCTpfaModel, Injection2p2cTypeTag));
+
+// Set the grid type
+SET_TYPE_PROP(Injection2p2cTypeTag, Grid, Dune::YaspGrid<2>);
+
+// Set the problem property
+SET_TYPE_PROP(Injection2p2cTypeTag, Problem, Injection2p2cProblem<TypeTag>);
+
+// Set the spatial parameters
+SET_TYPE_PROP(Injection2p2cTypeTag, SpatialParams,
+              InjectionSpatialParams<typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
+                                     typename GET_PROP_TYPE(TypeTag, Scalar)>);
+
+// TODO: dumux-course-task
+// change the local residual type to MyTwoPTwoCLocalResidual<TypeTag>
+
+// Set fluid configuration
+SET_TYPE_PROP(Injection2p2cTypeTag,
+              FluidSystem,
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false /*useComplexRelations*/>);
+
+// Define whether mole(true) or mass (false) fractions are used
+SET_BOOL_PROP(Injection2p2cTypeTag, UseMoles, true);
+} // end namespace Properties
+
+/*!
+ * \ingroup TwoPTwoCModel
+ * \ingroup ImplicitTestProblems
+ * \brief Problem where air is injected under a low permeable layer in a depth of 2700m.
+ *
+ * The domain is sized 60m times 40m and consists of two layers, a moderately
+ * permeable one for \f$ y<22m\f$ and one with a lower permeablility
+ * in the rest of the domain.
+ *
+ * Nitrogen is injected into a water-filled aquifer through a well. First, we inject for one month.
+ * Then, we continue simulating the development of the nitrogen plume for 10 years.
+ * This is realized with a Neumann boundary condition at the right boundary
+ * (\f$ 7m<y<15m\f$). The aquifer is situated 2700m below sea level (the depth can be changed through the input file).
+ * The injected fluid phase migrates upwards due to buoyancy.
+ * It accumulates and partially enters the top layer lower permeable aquitard.
+ *
+ * The default setting for useMoles is true, i.e. each component is balaced in units of mole.
+ * The property useMoles can be set to either true or false in the
+ * problem file. If you change this, make sure that the according units are used in the problem setup.
+ *
+ * This problem uses the \ref TwoPTwoCModel.
+ */
+template <class TypeTag>
+class Injection2p2cProblem : public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
+
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+
+    enum { dimWorld = GridView::dimensionworld };
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    Injection2p2cProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+         // initialize the tables of the fluid system
+        FluidSystem::init(/*tempMin=*/273.15,
+                          /*tempMax=*/423.15,
+                          /*numTemp=*/50,
+                          /*pMin=*/0.0,
+                          /*pMax=*/30e6,
+                          /*numP=*/300);
+
+        // name of the problem and output file
+        name_ = getParam<std::string>("Problem.Name");
+        // depth of the aquifer, units: m
+        aquiferDepth_ = getParam<Scalar>("Problem.AquiferDepth");
+        // inflow rate of nitrogen water vapor mixture, units: kg/(s m^2)
+        totalAreaSpecificInflow_ = getParam<Scalar>("Problem.TotalAreaSpecificInflow");
+        // the duration of the injection, units: second
+        injectionDuration_ = getParam<Scalar>("Problem.InjectionDuration");
+    }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    /*!
+     * \brief Returns the problem name
+     *
+     * This is used as a prefix for files generated by the simulation.
+     */
+    const std::string& name() const
+    { return name_; }
+
+    /*!
+     * \brief Returns the temperature in \f$ K \f$
+     */
+    Scalar temperature() const
+    { return 273.15 + 30; }
+
+    // \}
+
+     /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param bcTypes The boundary types for the conservation equations
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+        BoundaryTypes bcTypes;
+        if (globalPos[0] < eps_)
+            bcTypes.setAllDirichlet();
+
+        // and Neuman boundary conditions everywhere else
+        // note that we don't differentiate between Neumann and Robin boundary types
+        else
+            bcTypes.setAllNeumann();
+
+        return bcTypes;
+    }
+
+    /*!
+     * \brief Evaluates the boundary conditions for a Dirichlet
+     *        boundary segment
+     *
+     * \param globalPos The global position
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        return initialAtPos(globalPos);
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a neumann
+     *        boundary segment.
+     *
+     * \param values Stores the Neumann values for the conservation equations in
+     *               \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$
+     * \param globalPos The position of the integration point of the boundary segment.
+     *
+     * For this method, the \a values parameter stores the mass flux
+     * in normal direction of each phase. Negative values mean influx.
+     */
+    PrimaryVariables neumannAtPos(const GlobalPosition &globalPos) const
+    {
+        // initialize values to zero, i.e. no-flow Neumann boundary conditions
+        PrimaryVariables values(0.0);
+
+        //if we are inside the injection zone set inflow Neumann boundary conditions
+        if (time_ < injectionDuration_
+            && globalPos[1] < 15 + eps_ && globalPos[1] > 7 - eps_ && globalPos[0] > 0.9*this->fvGridGeometry().bBoxMax()[0])
+        {
+            // set the Neumann values for the Nitrogen component balance
+            // convert from units kg/(s*m^2) to mole/(s*m^2)
+            values[Indices::conti0EqIdx + FluidSystem::N2Idx] = -totalAreaSpecificInflow_/FluidSystem::molarMass(FluidSystem::N2Idx);
+            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
+        }
+
+        return values;
+    }
+
+    // \}
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values(0.0);
+        values.setState(Indices::firstPhaseOnly);
+
+        // get the water density at atmospheric conditions
+        const Scalar densityW = FluidSystem::H2O::liquidDensity(temperature(), 1.0e5);
+
+        // assume an intially hydrostatic liquid pressure profile
+        // note: we subtract rho_w*g*h because g is defined negative
+        const Scalar pw = 1.0e5 - densityW*this->gravity()[dimWorld-1]*(aquiferDepth_ - globalPos[dimWorld-1]);
+
+        // initially we have some nitrogen dissolved
+        // saturation mole fraction would be
+        // moleFracLiquidN2 = (pw + pc + p_vap^sat)/henry;
+        const Scalar moleFracLiquidN2 = pw*0.95/BinaryCoeff::H2O_N2::henry(temperature());
+
+        // note that because we start with a single phase system the primary variables
+        // are pl and x^w_N2. This will switch as soon after we start injecting to a two
+        // phase system so the primary variables will be pl and Sn (non-wetting saturation).
+        values[Indices::switchIdx] = moleFracLiquidN2;
+        values[Indices::pressureIdx] = pw;
+
+        return values;
+    }
+
+    // \}
+
+    void setTime(Scalar time)
+    {
+        time_ = time;
+    }
+
+private:
+    static constexpr Scalar eps_ = 1e-6;
+    std::string name_; //! Problem name
+    Scalar aquiferDepth_; //! Depth of the aquifer in m
+    Scalar totalAreaSpecificInflow_; //! Area specific inflow rate in mole/(s*m^2)
+    Scalar time_;
+    Scalar injectionDuration_; //! Duration of the injection in seconds
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/exercise-properties/injection2p2cspatialparams.hh b/exercises/exercise-properties/injection2p2cspatialparams.hh
new file mode 100644
index 00000000..ab9951e2
--- /dev/null
+++ b/exercises/exercise-properties/injection2p2cspatialparams.hh
@@ -0,0 +1,193 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Definition of the spatial parameters for the injection problem
+ *        which uses the isothermal two-phase two-component
+ *        fully implicit model.
+ */
+
+#ifndef DUMUX_INJECTION_SPATIAL_PARAMS_HH
+#define DUMUX_INJECTION_SPATIAL_PARAMS_HH
+
+#include <dumux/material/spatialparams/fv.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
+// TODO: dumux-course-task
+// Inlcude your own material law
+
+#include <dumux/io/gnuplotinterface.hh>
+#include <dumux/io/plotmateriallaw.hh>
+
+namespace Dumux {
+
+/*!
+ * \ingroup TwoPTwoCModel
+ * \ingroup ImplicitTestProblems
+ * \brief Definition of the spatial parameters for the injection problem
+ *        which uses the isothermal two-phase two-component
+ *        fully implicit model.
+ */
+template<class FVGridGeometry, class Scalar>
+class InjectionSpatialParams
+: public FVSpatialParams<FVGridGeometry, Scalar, InjectionSpatialParams<FVGridGeometry, Scalar>>
+{
+    using ThisType = InjectionSpatialParams<FVGridGeometry, Scalar>;
+    using ParentType = FVSpatialParams<FVGridGeometry, Scalar, ThisType>;
+    using GridView = typename FVGridGeometry::GridView;
+
+    static const int dimWorld = GridView::dimensionworld;
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    // export permeability type
+    using PermeabilityType = Scalar;
+
+    // TODO: dumux-course-task
+    // Use your own material law instead
+    // Set the material law parameterized by absolute saturations
+    using MaterialLaw = EffToAbsLaw<RegularizedBrooksCorey<Scalar>>;
+    using MaterialLawParams = typename MaterialLaw::Params;
+
+public:
+
+    /*!
+     * \brief The constructor
+     *
+     * \param fvGridGeometry The finite volume grid geometry
+     */
+    InjectionSpatialParams(std::shared_ptr<const FVGridGeometry>& fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        aquiferHeightFromBottom_ = 30.0;
+
+        // intrinsic permeabilities
+        aquitardK_ = getParam<Scalar>("SpatialParams.PermeabilityAquitard");
+        aquiferK_ = getParam<Scalar>("SpatialParams.PermeabilityAquifer");
+
+        // porosities
+        aquitardPorosity_ = 0.2;
+        aquiferPorosity_ = 0.4;
+
+        // residual saturations
+        aquitardMaterialParams_.setSwr(0.2);
+        aquitardMaterialParams_.setSnr(0.0);
+        aquiferMaterialParams_.setSwr(0.2);
+        aquiferMaterialParams_.setSnr(0.0);
+
+        // parameters for the Brooks-Corey law
+        aquitardMaterialParams_.setPe(getParam<Scalar>("SpatialParams.EntryPressureAquitard"));
+        aquiferMaterialParams_.setPe(getParam<Scalar>("SpatialParams.EntryPressureAquifer"));
+        aquitardMaterialParams_.setLambda(2.0);
+        aquiferMaterialParams_.setLambda(2.0);
+
+        // plot the material laws using gnuplot and exit
+        if (getParam<bool>("Problem.OnlyPlotMaterialLaws"))
+        {
+            plotMaterialLaws();
+            exit(0);
+        }
+    }
+
+    /*!
+     * \brief Define the intrinsic permeability \f$\mathrm{[m^2]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    PermeabilityType permeabilityAtPos(const GlobalPosition& globalPos) const
+
+    {
+        if (isInAquitard_(globalPos))
+            return aquitardK_;
+        return aquiferK_;
+    }
+
+    /*!
+     * \brief Define the porosity \f$\mathrm{[-]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    Scalar porosityAtPos(const GlobalPosition& globalPos) const
+    {
+        if (isInAquitard_(globalPos))
+            return aquitardPorosity_;
+        return aquiferPorosity_;
+    }
+
+    /*!
+     * \brief Function for defining the parameters needed by constitutive relationships (kr-sw, pc-sw, etc.).
+     *
+     * \param globalPos The global position
+     *
+     * \return the material parameters object
+     */
+    const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const
+    {
+        if (isInAquitard_(globalPos))
+            return aquitardMaterialParams_;
+        return aquiferMaterialParams_;
+    }
+
+    /*!
+     * \brief Function for defining which phase is to be considered as the wetting phase.
+     *
+     * \return the wetting phase index
+     * \param globalPos The position of the center of the element
+     */
+    template<class FluidSystem>
+    int wettingPhaseAtPos(const GlobalPosition& globalPos) const
+    { return FluidSystem::H2OIdx; }
+
+    /*!
+     * \brief Creates a gnuplot output of the pc-Sw curve
+     */
+    void plotMaterialLaws()
+    {
+        PlotMaterialLaw<Scalar, MaterialLaw> plotMaterialLaw;
+        GnuplotInterface<Scalar> gnuplot;
+        plotMaterialLaw.addpcswcurve(gnuplot, aquitardMaterialParams_, 0.2, 1.0, "upper layer (fine, aquitard)", "w lp");
+        plotMaterialLaw.addpcswcurve(gnuplot, aquiferMaterialParams_, 0.2, 1.0, "lower layer (coarse, aquifer)", "w l");
+        gnuplot.setOption("set xrange [0:1]");
+        gnuplot.setOption("set label \"residual\\nsaturation\" at 0.1,100000 center");
+        gnuplot.plot("pc-Sw");
+    }
+
+private:
+
+    static constexpr Scalar eps_ = 1e-6;
+
+    bool isInAquitard_(const GlobalPosition &globalPos) const
+    { return globalPos[dimWorld-1] > aquiferHeightFromBottom_ + eps_; }
+
+    Scalar aquitardK_;
+    Scalar aquiferK_;
+    Scalar aquiferHeightFromBottom_;
+
+    Scalar aquitardPorosity_;
+    Scalar aquiferPorosity_;
+
+    MaterialLawParams aquitardMaterialParams_;
+    MaterialLawParams aquiferMaterialParams_;
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/exercise-properties/mylocalresidual.hh b/exercises/exercise-properties/mylocalresidual.hh
new file mode 100644
index 00000000..5c79e24b
--- /dev/null
+++ b/exercises/exercise-properties/mylocalresidual.hh
@@ -0,0 +1,163 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Element-wise calculation of the local residual for problems
+ *        using compositional fully implicit model.
+ */
+#ifndef DUMUX_MY_COMPOSITIONAL_LOCAL_RESIDUAL_HH
+#define DUMUX_MY_COMPOSITIONAL_LOCAL_RESIDUAL_HH
+
+#include <dumux/common/properties.hh>
+
+namespace Dumux {
+
+/*!
+ * \ingroup Implicit
+ * \ingroup ImplicitLocalResidual
+ * \brief Element-wise calculation of the local residual for problems
+ *        using compositional fully implicit model.
+ *
+ */
+template<class TypeTag>
+class MyCompositionalLocalResidual: public GET_PROP_TYPE(TypeTag, BaseLocalResidual)
+{
+    using ParentType = typename GET_PROP_TYPE(TypeTag, BaseLocalResidual);
+    using Implementation = typename GET_PROP_TYPE(TypeTag, LocalResidual);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+    using SubControlVolume = typename FVElementGeometry::SubControlVolume;
+    using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace;
+    using ResidualVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
+    using ElementFluxVariablesCache = typename GET_PROP_TYPE(TypeTag, GridFluxVariablesCache)::LocalView;
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, GridVolumeVariables)::LocalView;
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using EnergyLocalResidual = typename GET_PROP_TYPE(TypeTag, EnergyLocalResidual);
+
+    static constexpr int numPhases = GET_PROP_TYPE(TypeTag, ModelTraits)::numPhases();
+    static constexpr int numComponents = GET_PROP_TYPE(TypeTag, ModelTraits)::numComponents();
+
+    enum { conti0EqIdx = Indices::conti0EqIdx };
+
+public:
+    using ParentType::ParentType;
+
+    /*!
+     * \brief Evaluate the amount of all conservation quantities
+     *        (e.g. phase mass) within a sub-control volume.
+     *
+     * The result should be averaged over the volume (e.g. phase mass
+     * inside a sub control volume divided by the volume)
+     *
+     *  \param storage The mass of the component within the sub-control volume
+     *  \param scvIdx The SCV (sub-control-volume) index
+     *  \param usePrevSol Evaluate function with solution of current or previous time step
+     */
+    ResidualVector computeStorage(const Problem& problem,
+                                  const SubControlVolume& scv,
+                                  const VolumeVariables& volVars) const
+    {
+        ResidualVector storage(0.0);
+
+        // compute storage term of all components within all phases
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+        {
+            for (int compIdx = 0; compIdx < numComponents; ++compIdx)
+            {
+                auto eqIdx = conti0EqIdx + compIdx;
+                    storage[eqIdx] += volVars.porosity()
+                                      * volVars.saturation(phaseIdx)
+                                      * volVars.molarDensity(phaseIdx)
+                                      * volVars.moleFraction(phaseIdx, compIdx);
+            }
+        }
+
+        return storage;
+    }
+
+    /*!
+     * \brief Evaluates the total flux of all conservation quantities
+     *        over a face of a sub-control volume.
+     *
+     * \param flux The flux over the SCV (sub-control-volume) face for each component
+     * \param fIdx The index of the SCV face
+     * \param onBoundary A boolean variable to specify whether the flux variables
+     *        are calculated for interior SCV faces or boundary faces, default=false
+     */
+    ResidualVector computeFlux(const Problem& problem,
+                               const Element& element,
+                               const FVElementGeometry& fvGeometry,
+                               const ElementVolumeVariables& elemVolVars,
+                               const SubControlVolumeFace& scvf,
+                               const ElementFluxVariablesCache& elemFluxVarsCache) const
+    {
+        FluxVariables fluxVars;
+        fluxVars.init(problem, element, fvGeometry, elemVolVars, scvf, elemFluxVarsCache);
+        // get upwind weights into local scope
+        ResidualVector flux(0.0);
+
+        // TODO: dumux-course-task
+        // get parameter Problem.EnableDiffusion
+
+        // advective fluxes
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+        {
+            const auto diffusiveFluxes = fluxVars.molecularDiffusionFlux(phaseIdx);
+            for (int compIdx = 0; compIdx < numComponents; ++compIdx)
+            {
+                // get equation index
+                const auto eqIdx = conti0EqIdx + compIdx;
+
+                // the physical quantities for which we perform upwinding
+                const auto upwindTerm = [phaseIdx,compIdx] (const auto& volVars)
+                { return volVars.molarDensity(phaseIdx)*volVars.moleFraction(phaseIdx, compIdx)*volVars.mobility(phaseIdx); };
+                 flux[eqIdx] += fluxVars.advectiveFlux(phaseIdx, upwindTerm);
+
+                // TODO: dumux-course-task
+                // same here: only add diffusive fluxes if diffusion is enabled
+                flux[eqIdx] +=  diffusiveFluxes[compIdx];
+            }
+
+            //! Add advective phase energy fluxes. For isothermal model the contribution is zero.
+            EnergyLocalResidual::heatConvectionFlux(flux, fluxVars, phaseIdx);
+        }
+
+        //! Add diffusive energy fluxes. For isothermal model the contribution is zero.
+        EnergyLocalResidual::heatConductionFlux(flux, fluxVars);
+
+        return flux;
+    }
+
+protected:
+    Implementation *asImp_()
+    { return static_cast<Implementation *> (this); }
+
+    const Implementation *asImp_() const
+    { return static_cast<const Implementation *> (this); }
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/exercise-properties/mymateriallaw.hh b/exercises/exercise-properties/mymateriallaw.hh
new file mode 100644
index 00000000..e49c39a8
--- /dev/null
+++ b/exercises/exercise-properties/mymateriallaw.hh
@@ -0,0 +1,116 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Implementation of the capillary pressure and
+ * relative permeability <-> saturation relations.
+ *
+ */
+#ifndef DUMUX_MY_MATERIAL_LAW_HH
+#define DUMUX_MY_MATERIAL_LAW_HH
+
+#include <dumux/material/fluidmatrixinteractions/2p/brookscoreyparams.hh>
+#include <cmath>
+#include <algorithm>
+
+namespace Dumux
+{
+/*!
+ * \ingroup fluidmatrixinteractionslaws
+ * \note a simple material law using the BrooksCoreyParams
+ */
+template <class ScalarT, class ParamsT = BrooksCoreyParams<ScalarT> >
+class MyMaterialLaw
+{
+public:
+    typedef ParamsT     Params;
+    typedef typename    Params::Scalar Scalar;
+
+    /*!
+     * \brief The capillary pressure-saturation curve
+     * \param swe saturation of the wetting phase \f$\mathrm{[\overline{S}_w]}\f$
+     * \param params A container object that is populated with the appropriate coefficients for the respective law.
+     *                  Therefore, in the (problem specific) spatialParameters  first, the material law is chosen,
+                        and then the params container is constructed accordingly. Afterwards the values are set there, too.
+     * \return capillary pressure
+     * TODO: dumux-course-task
+     * Implement the pc(swe) function
+     */
+    static Scalar pc(const Params &params, Scalar swe)
+    {
+        return 0.0;
+    }
+
+    /*!
+     * \brief The relative permeability for the wetting phase of
+     *        the medium implied by the Brooks-Corey
+     *        parameterization.
+     *
+     * \param swe The mobile saturation of the wetting phase.
+     * \param params A container object that is populated with the appropriate coefficients for the respective law.
+     *                  Therefore, in the (problem specific) spatialParameters  first, the material law is chosen,
+     *                  and then the params container is constructed accordingly. Afterwards the values are set there, too.
+     * \return Relative permeability of the wetting phase calculated as implied by Brooks & Corey.
+     *
+     * \note Instead of undefined behaviour if pc is not in the valid range, we return a valid number,
+     *       by clamping the input.
+     */
+    static Scalar krw(const Params &params, Scalar swe)
+    {
+        using std::pow;
+        using std::min;
+        using std::max;
+
+        swe = min(max(swe, 0.0), 1.0); // the equation below is only defined for 0.0 <= swe <= 1.0
+
+        return pow(swe, 2.0/params.lambda() + 3);
+    }
+
+    /*!
+     * \brief The relative permeability for the non-wetting phase of
+     *        the medium as implied by the Brooks-Corey
+     *        parameterization.
+     *
+     * \param swe The mobile saturation of the wetting phase.
+     * \param params A container object that is populated with the appropriate coefficients for the respective law.
+     *                  Therefore, in the (problem specific) spatialParameters  first, the material law is chosen, and then the params container
+     *                  is constructed accordingly. Afterwards the values are set there, too.
+     * \return Relative permeability of the non-wetting phase calculated as implied by Brooks & Corey.
+     *
+     * \note Instead of undefined behaviour if pc is not in the valid range, we return a valid number,
+     *       by clamping the input.
+     */
+    static Scalar krn(const Params &params, Scalar swe)
+    {
+        using std::pow;
+        using std::min;
+        using std::max;
+
+        swe = min(max(swe, 0.0), 1.0); // the equation below is only defined for 0.0 <= swe <= 1.0
+
+        const Scalar exponent = 2.0/params.lambda() + 1;
+        const Scalar tmp = 1.0 - swe;
+        return tmp*tmp*(1.0 - pow(swe, exponent));
+    }
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/extradoc/exercise1_nonisothermal.png b/exercises/extradoc/exercise1_nonisothermal.png
new file mode 100644
index 0000000000000000000000000000000000000000..938ba158eb97e83d1ae80145161b94d2ab6137cf
GIT binary patch
literal 44121
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

literal 0
HcmV?d00001

diff --git a/exercises/extradoc/exercise1_setup.png b/exercises/extradoc/exercise1_setup.png
new file mode 100644
index 0000000000000000000000000000000000000000..db9c1b4acdfe9368781cd7593b0def3963146844
GIT binary patch
literal 58149
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
Y^z0%1vhN><IFWs-te`HBmo@kQA7%r*5dZ)H

literal 0
HcmV?d00001

diff --git a/exercises/extradoc/exercise2_properties.png b/exercises/extradoc/exercise2_properties.png
new file mode 100644
index 0000000000000000000000000000000000000000..28c700ed18443d78995d890cb7fb085a84146ff7
GIT binary patch
literal 27453
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
A#sB~S

literal 0
HcmV?d00001

diff --git a/exercises/extradoc/exercise3_a_solution.png b/exercises/extradoc/exercise3_a_solution.png
new file mode 100644
index 0000000000000000000000000000000000000000..fdf3ef23c81a0bc414554a9bc2e4f1e784e134c4
GIT binary patch
literal 142019
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
WT#8}~zLf14Ul}R+-!dd_KmI=~+vHaO

literal 0
HcmV?d00001

diff --git a/exercises/extradoc/exercise3_a_solution2.png b/exercises/extradoc/exercise3_a_solution2.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba90e6fcfa783fcc5a4eaf1c5fbe252dc46ea8d9
GIT binary patch
literal 60853
zcmeEud038J`|h2njAf`4&6yfRgJ_;mFG*-n6dIL^(m<m`5gI5eiljjjY1Aa7jFsk@
ziZn~JrhTrb-uLtU_V@ek{r5iha~$7yc%Pp8zSq6hwXW;D&g;C^rM-K0E?&U7fTF0y
z8tQ8MD2nMaMKK&;nuBi^zU*F3QM{Cfn(_gcy6(m^E(g9fDo#mU_nEtFIoqpcbEV$#
z3+aRkt^c`RWqZMMr3=wYtVyf(S$7o<*x2ZtDBGEot-mlNy2?PUlVPL&W!<Mj-rmK!
z+e7avy=3DJH1qKMpvBFt<Tu|TT*D|?_~y;XZ4wtp+_p-zPu(6@2+|i}!x->k35{o(
z`Pa)BdHR{JgnBq=|M1#-ykzEYK7Y9~(Ei1HpiW}ut9zd#>1h9A3K?ER`-f6|s>RIT
zR37~QTVZYg|6CDs_<z9|qz>=cv7^npr#>TjV!7|)Rcy6UH;vA2NHw1F7t32IWpyCi
zsfSb2vh>N(R~rvMpBT=_7u~qA$vVTPKE2VU^=c81=fqK8E~n0fIEB$K=UG`<o6cG#
zs*A8)C!T;((sZiS(F+L)nWwzzRLg6po;p#ZoXlXY?uvx+%dEm1bAG<eO%LFd>XdCB
z+ryMU_FgPs?&Oyj!NI{36BD2A$g;Dt=8iPE8fMta|0))+_;mYB_tT;`&h=Ri7S)dr
zvy14LChU*HPq#UIe{}HK_m>OB+=go{1cLnL+#N2P*~RLdLFzHTdcuDF`t|71qi3IF
zx(eBiCjutYFI>2=lgItEhQ?c;`O7!v4t{pI{~$H>^x%)O)}jEr^4O2-qTGT*L)qpQ
z+;MK&X8z$;y<Ps~^kn`t`z5t>n|i0FGwqX;eV$R`X765{qtETDP+*g$xtaJo3gg|+
z@D8olWP25d7B;w#G~x|%zl9pMSU)P1j(zZeyp7^$0duIR;qV8ElGoDY3eAWuxgD_)
zE!k$~=1r%HxRhDsrY8oPc3Q2O@mgMW9oMxK=6ioptceVhvesppE3o5A&B#6L$60Hc
zyhlY(9(!7Y8=f8R=7`c*&OV*SE^5%`9-}+!&f@Q|Z9KH{z;k&CyQZ9bs=nz~l|u6J
zxn}P}-N%RBf4yDj+*9ZH#UjnFd5RjjcreXMXV0EJMn+9}%!Pe2&#-j7O#DH`!E1KK
z?hZ?7U()|(_w}`!IRO=a&HBx>{cgh_u&9{fM{701O)V^(`<mQ;wY_z140bEJ#-%u3
zTk`yL2d3+W`Nwd~=^5D2<j+^kVwn5#J+eK|N)!@*i9NxSc3kD`8M)`uY&Q9OXxx1e
zmguLI%(2ZrW+cc!1OD2p&ZI8&_(+3832fv%?|LyYPb_<s$M25ZPjcsZU4|<4c3$Ol
zER9IW``wwyKab)~D6}Y9#39~xRl3Qq@YsU~4;;RK;81WIy})jidAvM!RN<+9ckr%_
zS?!Uo49wg)Zezcg6-JM|yRqS!`A37?vqJ&_aw#XjzJ&QC#>dB7<tvG>?b6a}?o;L9
z;812caNt09n)~R_uj?XRjzw&-`Ho>Zb=UArd|~{1`K$u++{ZmIuoAg}-LSdmj$LeG
zMsDvm#C4~ARylKK%sM$&*T6u=rY_Z8R@&7d-(xbx?0w7vN-0=KRP=C)sRqkjc4N2x
zmlqaFpQw4_*i}{g%)<Fc=~p|?@%qKm4J^$zofQcs@*@p?O9dj`e!Z<qGVJp>yJN?j
zN<HIAY>Y?xPg~j*r_WgCI~f=l{PovgIcFqXhr7k{Mqe6gB#{WI)DsjIHg=z9((-Na
z8Xk|)ubHP>G0o4~JIoqj`-io)%QEbm7q8lKq9Jp0-l;cNIJD&Y)s7$UxW*;BcK5AK
zj-3@ru=AQHN1Jlakkz(*-VvKWJ=xcS1;~1R>}huI^RCC)y=Q-S#04l$jao{Ehlkfa
zvncVL>@wcT<yaA;aoxNml51|k{Qw1nWTRZ!z8r`AjKGfaxRSB<sOiCSt-eT`>z2#$
zFhx%fW#xioTp1=|5qai&SXWijfbG8V7{Cy(y0#jV0QuiP?qkCa4-O7Gl*mg<NjWAj
zuYfN}hE+B`cQk}wOH9s_F)a?{WqR(^^Bb3l>OVQs+mM9?eBKtkOI%zW588``=t|Dd
zJNV3e-n@A!<V`9P_3Yp!#%)X9z2lU&Z3yI3H9Fhzz$o`@?)22SGRt6h?LdT)MeCcZ
zFarI|lV3aHqPXW4Xz%1o>$?(~Yak2rb9HB(PEScmvCaAx`uX$c=BeQfY>0L&U+dxr
zp~Q9F)z#RwOSUJqoEs~#$~N<!$K-EU`R6cJ4heHf>naghSy=%Alg}|4?1xS&!-?a0
zhN+hQ#R360Zrr%Cax;Hk;7gbgwp<GK8?5hpTU#+3?pxP)BS>xQ&v(!Hx|(ubS>_J3
zmjo0ZD=aL8_wF|<UGfE9_{#MA%|)x1PrqC}f{hgt8k%lhZJS^6mxe~|Q<EYO9-$2z
zE_t3)d@(&38)1t{I5fe1-72Kc>1TpA<2;IrkG&)7OnexeEIuR6p3`4_dGgxtXEdGd
z!l1U;)E&^*zjgh3Io4bPTjJMyF=p?(PoDhrUbu1Vw;TK4T;p1$Sl?ZCzi7?PLuC9g
z_`@d)<~5Hujl5n+?N!aWUA6I)n1^jgaQK8pfEs^KU7BHzOaD1%?9a@p-(B@-*3woL
z@$Ni_^F7?lV>M+RJ0+ca8+4Nl9>m6az+32a9e}IzfT=f2e!6}0W(H;!QLt}(ud=f8
z`%uyG!H$7A#mVCp@!I5}k26~?yF1Ia_z7&WZOF8#-(sdE+S&xfSiy~H+aJ4o!^Vwy
zzupOBOT50cd>zclVdTE7bFavT4IOo9UD!(BKZH3HaXF`2Ra$j?e(>$vH(cjA_TIQI
z-6s3!tBcZ2E&_R;_jg<km$G&$WYs&}Rn_z0rqMDniqa6|yb2@m&Hr7Q{MW8sBkreh
zdu5hXjDpEq!TmSc+T~h`jeT9%WJTPrCniSwb+SwI;o6A>K0Q{L$1G})x}M29Cnu-7
zyBjf+#GCQnXYl-K*40iwN()x~B|5Q72tnKG>dTieAMCn0^<$@EXX(9HY1KyAm>PB?
zmwVCC{8K+*9Jj;6&-SEMN4m6JQf9e*`m;v<)KId&zkl=Dt|V`7@2jh%uW`#iw<w8>
za{Hy>Hg>^M^0(sjfMQ?nh!M-&4I4JVAKYE*Z+tbiJ=EdTHVdo{_GO=uYv|3J<QB>-
zi@0PYnY_#H@7&2B^!1f*-_T&@{N-yWMvD}u-~<x4WPG0(C}H;gG6L_C$2|E>%yYi?
zUAyMIu&}T=M1fUyIZxribBDtukMG;QeY@L+E%9aq!N<#Epq^>Ajn5Hl%Pb{@g{_MN
z`QWn}-GdKmYoCH+>O156`S(y))Y;Ai?29NEY8g;M!>OXh9O8nqvhbL-Sk>;P-0>e}
z_nSS&d*I13^^%Qf?==3&IqzBZM|Qi+uNQ$zj3-*yndJvdd;LRUG+R&qD0OajcmDaM
zU~+sUK(YUOgx%Da^UR;Nwq7|i@V&?5?5R`zHBU`ECt7);PQIL<(dcAY>5=$;WA-EM
z`#YQ)9jjXd6!ToCG`DXre8sFN2R!xtV}$YPvhB(&6Tfcei-?IS0x#SYHB2AR+8?)v
zU<rE%2V!DpJrmp;X7U_$afy_=b-jh-tYVMfdJfw?ANk<XNB7M1ZSd6OxR`NX4mKLu
zyQ#;^8F}1DoPqarMieKj+Q;T!Xq(-WZfKV)#pa)8Q$IY~8qkbTHr|(?k9UAO(F&LB
z@DsQ;8r$6dVkC0D_mQec2iXswE_-uzRfOd6&#<;vOJutN>c(6A#ZsO<Gd}Yz1nW`g
zoZXi<ZkyBpMqk9~<@|N2Kp_A-2U9JzZEbsvr+(dpm)QSt|G4E$-lnm`H8!{>jF&0>
zMC~tM#fh&8aghdjZf5{l;`ZEOSj;Jj*>-0aHiY}7XO`Q9a1YC56E!&9UDJ;zbBmi6
zpSvklpLxmzu@}C{!^?faf(6_zU(O-Qp8EDK1RFHTAWf$Iwu8siKves;Z#`M{cuh}O
zao*VX2$&U@%;_JngOAe9w<97Fza)grB#B;v`)}4uDD?yi&9TY|5!TBauCq?gpZXoW
z-T&9XKnd0eo?ObV>5zCOK`@$;a#?rp9zjUL7PTyk-hOlAVS+~CsphvEW?@#0-1-ZX
z^L{_v8Ndx>s`u)iS>naS*!cJ#>GigTz$P%)2r28Te9vjJn@ap+R@k(p=%nhTV@0H!
z-39;v+}rOs?~xy>zygi*)Q>!QwPb(Br6sy$+{@ths}DJR4BE-P4X$E)#E&DaHZ7l)
z&~A}YsjaI!T&l|aF-p<1tvCpK>$$^b3hA_}O}hQJcfyY|kG;CM7(*wKJyhhNxW~k3
zT;$nKEzjTk;X=Rd*Cg->{^!<a6WwGZE@KaDIed1BH|ydx!=>$}fPQa;hCcjSnxgYc
zXTQF_OTj$$ZaB<aCf7LRTz=j(_89vCI55_BT}yHDG!W+s8<l4|sg?Z!o)ac7edZ5!
zR%UlTO#EIFrRe^95DP!pRb5iB<z9hMooe)>M}R7)2);aMap&7AmFV+2sh4DB_omL5
zAJ~^sxmwx<c?-j$m8EIcdhN$F*6kDHpUazYyku|0$1sVwoSccN@xBs#-oF=KzkcPW
zBQNYc1|kr`tg(lGC0x6F`7!|%aCFU+z0Tu9T{o{^7q~7YJ2_YmEIougL&PwB_hR4B
zB+kd-$f^=zV%jdQvi$*QW@~GU-HuT?j`w8bBW|erF40My|53M0_n-)yE717+ckgU-
zhpP76k@*-QZ3k>ez)bH(@8_C(pIjae9EArocKLb%q0y!xvrO7YjWN-3xwF$<%jGwd
zo+km4IW@rB0M@<}PTsAhrI$+ih`=KIGim@d;!KLJHD)^pG@HU}B*U;^%Pttn`}gm+
zAK-#bbX6xSBG$oR?@$MfH8eDwoQ84Fij!MwAAS{DrRd@2;V}j9>{6k<6Y0tp>#FY8
z%eCYNK1g6gvu=+lJ;7?@c%nYN2XJJyf}0CAr8n<Ztm61cU;dGTIgIr_42hP^mC}z%
z_98DonLpK)@20AL`pM-jrz{vRZ@Fh-)R``Go?-dAJrj6UUuGV-r2X3$DvhRE#HVe+
z_Bn8%0)fnO(6dWUN-E8v{S&sNtI?XBtRjapH_6Io!}|T%M1yw>J;1cLwXI-hPyBk4
zSlM#_!cT~Q5}&r3l<ZmvIP3C;!-C|E2*{VWDAx+rSv@q)pMuS9%>3d#>dCfZMb1!_
z;Zyw&Gj`Pp3(m&EpXXhP@cMRLRL=N5`t1>S|K2$&B{>x~A*^g{Q&S`PT3T9mWzmI^
zg$b5)Ojm~&rB%UQDgc`zvUI2A9?o`J$R@I0L}Z1wquWG((V8`Duw^)rnH-P1vjsqZ
z!~WP4b*UQSI&y3~@7LDW)~DO-fA!TA9^k}>Tbs%DFp5hP%lWAS0F2dRweiN*ue=c)
zY!ARtWN3_Fbz9zb816i8B)4x{&00zQ?S}4&x=ClhUSJ0{{0ztrQ~(<jt|Ln_V?t-Y
zKd?=V#Rj;vE^@t)&~F4<cjOj>ot0e$j64lbj-HR!OexPzRd4Zlz0l{>>g9B4IwA-T
z$KW#StX(mdR_06bGHgiDf%YyeWRG+ouFW5B>_a{=fGFPod6$?YhjwL5ObqhGKB-r#
zi`Q*5lsY68q%J5RARsj~-H>TJKHP&<<=T4kNVhdC-U9X#g8Zx(SaJHTmPg8w0`ESz
zcG)HA^A}^=lp`nK5x|Ws<rG3C)?CuANsh^TsH<AI?)5yp*lDM|+S>Olm($+O9DXA}
z;kPBs8p(TK{`3@ZRL*FNzrfCGhkzIl9t?|~$GbX#|E`mN@-o*iq6d_b2mpK`k&Orq
ztpc9I^OnGPfDb*V$D75T|KJ~UGwf%3nI|Dv@sscEmUZhanom^z<a>%OisWt!j1;NI
z@#Dv5Y)timb@gKe8N^kOZy|af2-6DKKAPc@+8LLa(vfdmPM3N2{yj;=kSHKwe>2W_
zimdX-kMLp(b<5VabRT))MK`-wtjs^%4vUBwuh_5kt*uScs$zX)y^h}Dq0Yo)5<o7q
zd7Zo^uPUmyckjtkyv_8~B#&!18JiTK36nQc?lh~)&Kvvpgo&H|wSD^qx4a~hM_jq`
z;lpmJ+kPj?%gaYT>MrI9rtfCeJEX0x-4DME3*EHr()zl&W@K>?vJiNG0L!_LeY?4T
z|9)8Kw?@7EhxMwf9z`cjDSrvGh}`!5mdWGioeyzyUZ%W>U+<3uXmDdn;IP$hb8Y>+
z_V<Tfjk?N+%2zlfJ|Q83w*-<0c)hrI6*vnL28q3&Ig>?Js7|7yspZ-ZfuQ1dA;Ked
zc?e6ElAMY>t)&bKm>t-)p>M`JOyG>`>LdX(z+><}FH>*ccyFv`1RhH)>mJ4f)`GA<
zA$mra)c8BMEX9yI0mzEL->}au0CiAvSNS|I69|el3wGtQwd)Zt?>;*Zz_q^a^_??4
zwu15Xc4ml(*j_SyIRnvU(_C!+YW#qE###2?@URs&DSk0KmW>D)@m>jVT)Nkg3#$uP
zeF&+GQ9Ynr6&^PlzUsh7lCzThMbEzuWS0or`{H62?aJ<dc8aF3-s9DqkEsbRBb<dn
znpK+XL5b}Vnee+ItnBOoT(ZLeCJhcINDE80wckc+v-7^TV}#!k0CoH(7cr+iPD`;P
z<~qp*qG_M8f%ase;eqcTt*ahw5EIi&y~N~%oigi_m1`N4f5I6j)(fd?X_2V7VMDF;
z_~XObAlER(D@3WUrIGil-o1T$ydkqc=gh#ncki6+t`r`F5g)}sgdH}>Hw%i1*-cH1
zA(Yoi)WiR2-jNwX?6_eQ(!+X(bI+l4t4tXM09gQkz<<}i+zfzF*YvzuR8xgDKn6@g
zjq8$v6(9&f@c_TMNOJ06<7^QX)hyGk?W{};*xKT^-Jk6+kTcdCUsM+d3Gke03(`r{
z1^l=9J=l?ukO0TRI1VhKTDJB_H?M?5c@W|cLXQ=&DL#l>U`w96njAb>3m=LvSw*RP
zWq3)X!W~sf_1^Oq63)Vyhgbzr<`@vM*0ygq<l{CC*xUgRv+nlEmu+vaTYL;pqj6}!
z!vg?>0DJMkf!TeE1sQ48i<qTuXP&4$86s+&=l12rIpoY4%^t4i=HGj>xGrxgLri+;
zS$lPd=jbb*Jdg~?H^+ct(}9w|AqEVV?S#2~B3{}NaR^%#D-6)R9VFHlWDQfmnetPk
ztyqHWuNPM_ELmLxw~VB7sJm7IaIB2`*AYg*pr<A~w@3IrJ3so@-pgB-)>b7OHy5P8
zi#m3mVexOgm$B#M5P;@uYkTq%?Ik>tmU{)4X#-gZq>OKI-#ZQt)*SSYVfu*<ByaHF
zihx4+PRgck5E$FGJoc*FL&OQugDIx3{g#@UnE{U~4A+>jZ#*=LJj=|~ba$BeH^9^7
z+N>f*Ipn*mVwWCYTz-c@C~RhC02Mr(Tn5WUdV^0ZGaMdZpH|u0jfUF|xqw}!5qWw1
z3$KA?f^|N|_CVf-Pyn*_uRVLN&0?taqU6(vEe8k<2ObUkFLKSmt7GT;L~_ymnr-4h
zk9Fx?Ws>y)aQH6aBBX6^cHbL^fg#>YIZeMtU+20+NkyrzRF~}Gu*wq4pRk8*5uo2v
z=sz$p0AT3+X<IwM{jua-9b@S*108++(KoB?c1LVU0-cCF9p;dUtO6EyVZW3=yO_sF
zqw~%yEAL%=^;UPWUcs+#?~4L>@=w&JU=G;vVPhk-5Q4?qj~`)pT}Vb*XMpk3Q>|~n
zCA5NcGJ1acIL7-4BLTOXjVy8|R&v*sq<~bL9*k22=0xyZJJ_uRcV_5lXoj`R>PfFB
zyeVEpTv~br8@{hT!wznZ)n?h5*5c*MMp|<7_17QeE&Ds+xi3#IDEr=wM)^~JRMZmq
zNfCew-X$nSfOXg(wX@F4$R-S!yhB7&SRb8O`sjq2{}D4`!?_EUH1Eo*9`64n+sCB*
zBxQR#e&HRGH2Vv>`1uX47dhh|J?g&a%N?%hIfXrq#9&aK#{eD{VRra;SF#wm4n@2)
z240<P3~wepkg`hJ_J$2VlWuy-_9rQ<A}JwBM}m@0blE?d&sp^4ZuEx7vW&qKTi4F9
z3P;MOFjTRBY-|k9snL2I(QY&Hnudl3LSB-*MA2hnhLz$pHoU`J%vQTVH+}ZbA)?bk
zN0v)oqf<(<7+xgx9+(-Xl82-gF+Mgfu5YaL_BIEEbpkm+5deB2FQubrnD{Q8f2J!b
z1MG9Rb>aYBEx%#GJGO#%Gk0Foc4WEq-#1kU0RWDPydZp}v`yXVWM6QHcL?V1Ymyfe
z6QdD5-129U1ApzwXx<2B;HNPAiWS{c>wE)g(=2RQz;9T)fUWjj`X`2n%u|b~&N(pN
zKyW|J*gPE_9k58h9n)H;Y@2ejV51-uTy3>9HG4p8fe2O>J8=*UYOkj~)BOKBrzf6V
zT2*vcoPR^m>q$R$rgNBw?Fi>c53~;)80-UD0*LE?KR(Z_kO?O=dLO7}9B6`&&DGE9
z(yTK8?JyGh{LIA5%haBv&`f}=*F66dW`@$|HGgbnpd8P+mh9dC$SC(Wyu`;(pSS@O
zqZHhYTzk?8QI2p8XE{|GuYDgSVgEuBBCDSnWY}_f{&*pl2OxnbXeo@D!YKk*9|YnH
z3j=(KH_rC}n|k)_+1z9hwP(bfgyAEG(m;xY-nh{XJOIB26fTT1Sc=&$W#w~ZLJMF5
z#7xbE^=q+aX(Ba<GLsfXo2mGPNLV)fS8x`O+6Q(NNnMTHhbmFw*qW#1mR2R-)3i@l
zH#GeD^x2IfBDXi2y!rfK7iw(%z$SjbS%i=%%x)EZ)0s7_N;zWj;nu1CLUx|5^;XwR
zC@;)6DJc94J{9Si*}yG>8wuc+H$u{Qj-K(2Gg8``F4qszn$jEBuh-9ZvH_v~P$v<E
zt{~6dz5)iK+wPBSFLK^0BO&21QmEG7bqPc@KKu6XFUSAy+n>WVJ)U<X<Ys7SC@OrR
zp>L8m0jsq4zV`<-9)25LvdbyAV9n1Je`^6w?&uqsD-5gC#SX+<VEmY>lq9YK+vffg
zQ=7SVTv=I`Y@81m30#~;+~rq4zzS8_Ys##ds*3^#i#9*okT9S4rh!kgb}g?jk>DCx
zk2>H<Fs2hdcAoW!YXI~F+V0nqcP!y*0(j$@9xVcMVhj%qE-$s;I@{ULc-USoaf?m9
zL(j#ltkFaQu;k0n9c2%A<a5qerr-s7x1EbEt0ox|vdkcXow{dMw}J|997&gSGqj65
zY2RX$)Bf_zGKOUzyE&|UP-ehhM$s=fy{|4!7@JU7I1wd*zrmfcHNpl#cgy!|y$6gH
zR6K1Y`P6mz16f~;R^qI&WV=Z&ktclN-E!j5){N;F2kmwfm<D6Z?&}WI7a@dB=M@u>
z|GPg?YTK1G1MiTJJPI#Zm&R3~41h61@fA!N+&YpJT!FRe8FT*u%8-yDy1G@7x!}!!
z*kqi0<p7c4*kD|%o4;D}k@988DL3Eypz4AnB4qJbRI>Wglnx3mOPJbvF^~@M&V0o&
zNg2!1yQG9ORBdeh%v_UYE^?VWfCdv|1B{C~S6outw{IWv+;r??l&OlUkHeMr!0{;n
zgzVq5ZB5>XE)O#c3r6L@u&@oLc<Np8mRC&ud>1DFYS_vU!mfEquy<#U5|fDS4ox75
z07ejVhzS24fXz)!Z=>Yb&xMNTwxch7uvq}#?}O7Ol|W#TaOBt^9O-jTOnBcwh~Kpm
zPl~@Xy6NS)_Dn&`)%0G^Rb4NJ^RHXij+M=w4SR&l&dSQFKJ0wBInUj}-o8aP6(l1F
z#&G0_gup`r+TPx7>{M$8c5n|!h9y5!`WG6ZU?fQNA_sQ3t^E38*QtM=zzO1b9AQA=
z#S(<?{O%NRy4@-7^38#(ym<ko*+KGCdpY`#`ius?q!T<wM)vBjn-%u`W5u-Us?wT5
z-=&XkEKyPkLk`Ct6>vK=bS+We+!Y6~W!K-3`^G;;&4&_{dS(&-t%W`3b-o_au&h2X
zA*8kI6cxA^d6Iqqn=7?M<3hXJp|1H#DxkXF7v}GJ5NlAxj6cNR7~SLz&C8|9%%yZ`
z^}V$cL4M|f_`}JQ<|Tp`;$2Iqw;o9L9lx#$`PZFj<N6PJ8eKOUAPC+q*!kRnH*4GF
z8CA_6_+YkjOx?5Zqv>*Z->U87SD}K#X*b7n|B&JoevB99*OoA%-6VeL-_T>Z<C=|u
z-9?+1;@9~2kn%A3{2@{K<K`g2)osmZDC9qZ%0C17NBX1lkSSh(|J-;Xd0xe`p!j>-
zyjgz&7}`_*&=I}MrAdUm1ea@`YTOps_J28~=%sv=hNkPq=l$onE{%R5gBKE5w)rBZ
z^zvZCjQZ%0S4qjF%~PQ1BNJvp*=PTQC@E`%c5$F7d1a@6Uin=&N9Tf@2WW%et9t7X
zKsNh6vkz4lFI!Q4hhBrMHtjD;w`OMi-&8LnGZG7|Fz3=affWdJ5>d71N>0$Ou$t>1
z@xQJ3tVAOC3NfWm-T#9ct5;sN@yKQ<%c#4-iv$D<v)h^^l!D76?|pJhx*RS{CTjI<
zZBI(&$O}%|^ZwH`@mD=%48DDz?0cB~e^POcMBcmRrv{_LN9Yx=ig=EOw%zi;h7U8Z
zM*WW(u!jd`%<k=)@MV~QhJUU3Tg>xCb(Tw3JIEdgIikxzU9$LRptH-N@kV8XQi{Wh
z8FAWwdeS#iVZ_LTFR2NTeKEYqv6WtyDSByCExvwHz@bd>&iz|<(g6p=Z)^>xWfm#!
z^7BisQywHI{LO?YbX9N%0vK;3CB<J(N<*`jytn-7%FUq3MVP!%wA3}9ZjbVu0!dSA
zZGy~qWB$Z1cW0wKx3TWpXA<J#!wsmWyaZEp7#PB}r{STFupQ%ps2P!5plRoqTnldZ
z!Lrf(1F`bYP%}h*oz$y=?&=-J0Z>VWyC-}4OTl?irzpVmiXzSvUkx5y>gdb4LkyRW
zoT9z3m%%rrM~4tJfD!e>?&u{M40S&%8AfV{NRlm03b>$3QBJ+RiBEafGOYrj1(-r%
zKn}?;Dgg(=CP})FNQV&8m(@=b&nUSvEGud;uiyysqivA*#>@Wx$tdokF1nNZjNraY
zbWg#RC?Y8()nG^ufG?n%u`E&IhwtUON7MKm2tMj#>T*50?DeFeqj>&kp_uL?{Zj}T
zX-Lt;#}z?zgN?2>_H-Ydo+@a4W<ma3b<jfU_-Dj|Y}b+A>+7_x6&`!Xyk!30;+`*L
zets4(x(;<p*|!zH>qY|Gi!1@O7vUL`eOsPcTwKKQ3loDfF9JS9Pm6dICZO$TNIiZ%
z{@(A|c?dRwz67*DWMt$NN@IKmS=*E(EIu6q{6V%PAt5o+U<6JBB|l!Kjd`Ojpl69_
z1Iq+0MlVXfM2!H&fpXnm_ud%~5jco~e6~w}3nUptrxfD$j*wzkcOc=a%S|t$X*&{A
zQwK4)E6p#~a$ZHgJzzZjyBY-Y*5jXJmI~|udA#fUUalEeODwvP|Ht$#X}c!8cP%hh
z)YM=c?h8B=rxoP^cADF<LfcjT0E8f9{l;%VzJ=Ttb=Wo-@#n~MR-dtV-HwgVIL#s!
z6)uOt*X+YhlAHOqv-lS-8{CNmKNr!~oA=hHqbgQbX1;DbDDd$z4cA}X=GEJn&8WP|
zbIL7*zH(L|T5&ka*rUnF@LKp!H~Yz@gdqea5Wpev9p$ITZTo>IP{WM5zDFhjEF{JT
zvUzf-Is@7W(7@vgPr>LYvw)LISREfbt3C~`25WGhHxpto{&6PnBM=+}skh<I^#dDF
z+-LyQ1ZZg;@80n5MgB?8k9TCHnY{7$%UloPPpq;=<J6I*tjEsxdgsS1fVvr^WE$sV
zPPPT@WMgOV8@ab;S7^+G2jAM;!5vzTyn*Taa-Ur<ElrBf<L*`90bvNY!KsZvwo&Kc
ziZmf9qlt5FLFql!!X=mnRZ+amV_v3r!_}RPcu<X=+sdPm+SN%&h1D<W+o0fTKCQf+
zAIULDiYA9vz@hwOg_k4j^0q;Yl3(&1^b$AH6;k>}GL`u~+&a3<l4UN^?;ODPW>`(Z
zdB%~xX5;R?;QxS0hIb!7SerK>NkYZ2j)5-pcA#v;B_tjwC!L<29Ep4I;4m_z=2TU%
zVS^pzC?F|<7)8Y~5!C_0<DrJ0ZrgaaH>+J?;^!-IpH7E94y$dn;OJ#%Hqy<Zy;m5x
zs}FqWL;<r$DGIUl-Box9k`<C3fJF(zUP9(TO7W0zwV-kbto(H4z26@q?=hUgo!4qb
z9@@M22`bg7A(JxguA3WC(K`;NS19XMo>Ol_$0}C5!QM03f9*P-?7LzK@6y(ldpVx!
zKa!D!4B~Bw+XZ+SC=>dzMQ&^p1k92u21bQr*o>5`GEtA`)a#|nET$mE%*=E=eBDEk
zZB7|MOhcXA+n*@cs=9zN(C^eDA+cp?A}oOoB&!q>5(3$t8!7MVF_PWf1F~b!o=+K#
zNAn>*TY8|yn;jQ>WsYuAaZ~>q@edpgkIu|=fwFGr>QibS9v+oWHOX*wjLJ_2j<Dz8
z3hFh$W{c{AW<llFl~e_GY{iO&>>EFP`UEau46}#2_udO!!`4Vllv%phZvb1aLd&46
zc4}z+9146Xtx-x6bYHw<ArzvA_U#h~p-l7y$cTzoJACk>qX$J+4pHe}y-$o$Z!9SI
zE<nOyHyh6mKjsZ?*XLd}*?T4^Uij3xw(m;}FaS0Y%i5H0kiV6HuO{_YDCNdld8S=D
z9^8Z?=V`EPcQsNh@AHR$l92nv&}}83Ld;LiWrU1r46=VOnxTF!oR`f%2?;(5$8mR@
z3}8Jnm@4=iFv_SAzK)}KPW#HUu2>;*_&E{TV0nK-G#A$R(@#uVYMD50d~$EXH(|Do
zF4Nf2!XhG9O73mze)4L#uD$e{$=-Q}MpM=;Msn>9{%aNq8VIuaYn%&Dh>kvn%nNTY
zIuJFz`sxnmC$G4i8wkbq0THXU+NlqP?@VNx6DC?#ry7R%$)Yc@>WO1^OLz0YEF&FD
zaW%Q0><B?61S{jvNw%(RPNi>t_t1LdUk&~lXH6gaoKquq|JYJe25FloGz%b+QC!-i
zp)nTAh5f|H%sl}@<m8AdglyR4S4-{@HSO=)@<*oHm(d>ixOp4Bk*C=>Dj>D+J4k3@
z?QP$_aSa{};VD9u^25iEAr4Z&mVw={zop=DvOw=PLg<Bz)77>ar3yFiYB&W?FD{^w
z;pd%T`|(M}Rz<|Kg<8#bc&EqU1sX>D@<k?9@z<-7h_>(Fm!Q0!FMGgqwQ4bSYp2H5
zz?(OvJ*Or#uCFEeYf~l$j2J;AM__6g8^1;vZG!-g$(vz%<UI?f>xJ|sW`WnfD~5$n
z{cW^N5b*w*zwY*?Gr!s}%A~{DkV_#+&4C~TNgHasaMwf3IjVxcu1c7+G`nzCB#Zr%
zj51nA3)<2WF`xw|)DKq4pB;p@a%wz(Iva&N=&ZV7jfyDcqDU4sJ<%Rg`!(YAx}_Es
z$vksceIw{%^?@CezYD5W7mSC1V#CgLL}t*ix-g!DCq76W6?BvoJbqn|5;4x3DDj+f
zIC_-$T13r!Zl{`~<bF_I^D=o~89Y6cn=hs9j&8k{Hz1Z|`TNI1lx@;rI0&y-vRj>{
zo3qsj7=EFAHTPblXTVqo<aN-O318*3{y3zl4oh+Sk~~XUWMSC6OrJX|my@;M%Q5u1
zoH#Cu7kDcE+voD~^StWSG!!fp2fToNJ%<uhM_Tl)Ili-Up*OFTs3y1_O3CcC@6yh!
zs%Pf@G>|&px?^sIZGYcBlsbd_W*7Q1u!*{ye}wk?$?2Z319#MM;oW`6`2hz6Z=ftb
zxk|^tfMsq14IU_c!!1A4@=8TpHT;yK1jGEgKEW5PpGogngpla2;#WrELEOg4lNVWV
z|9=u9v%fK^$c;JwF;BuscB=8O&7q<5V=Q!DKIOBy%uHs|VorPNp9$zcy&zzqW%!oO
z4f30(fuQAeUcx(YwcY*-$95(A{{xn<V4cmUl|+|bdaeO4zDR!t{QoyeF>;76RkW1-
zL1x^1>QdYc91{#vuXvF8A0G$C<nYo<`devDFkYO>7^|`cnX`DoS4?mDI<L+Np4haO
zyf%iu>7T6q9gKWwZ1z-KGc_`Ww~7ze7g_7`v*g%zN+}vFfkmGFal#OMabvS8F<$(B
z4&B?2+B5+DXQus6_8bCgR$9$ly}}?D7b&e-siJ<_`R!ijz_$O8S7FF^mTqn(;gcdG
zrme8Lcu>6AIj=t!{GZmHgAG^6{A<r-pF#y_I^rvxT|LbMJd4$Ty}I>x=a1>|qQLb_
zZ$8DX52!riUptqIw}yGI;$NCX=D_O5wnT|4&XG`;os|04fAUpi$z(8~Bce%NAOdOE
zcL~F}<U6WjQTPYiKmN3h!jI%DFVp2ugXL+Vc~w-kGRvjkG-$fy6B*%?nbiHyEY$3j
zMCauhE26CY)&H+7XmOAqQfGWZjxFNb(DWcaWBz|+G}xr?e=7B-4f(G5KeO}t->s%r
zqGEm!uip-SdveDm@5nee{qF<{SO>@LuV=PI+IB&!c*g(kk+y#NG}0n|wJH-O7&*HO
zPeg~#`yb5CmS)rkf|ch|%l7=e`Wp-91>c#OR!|Pu&yFgBOoy}yN<46pZ!XgQfA-_7
zNd;@tCJ+pPt>4_B_=LCkDX~0?w_h@hTsKQyO!K&o@R&L3^aXfE(Oa00it-mP;&<QK
zRxQq2ux!`Iy$k6dYs5Uh!Bpyh@hD$Hm~OQ2hvuX4OtDSY!V_n7Qs&$+40qpXb$8jE
z(3WHlwsKw}#fxK(d7i8Je8Rq7k#KN{a^Mb-N}Si8)1F!*(L2(V+}<?4m^_{1+ewLE
z+dq6FA;#;_*VV4P^|iAEOrW+?NuZcW0{I!m%ild?%~bLF>={z&#PVmotBY-0IDWNy
zaH)K#CEiJi^9Bo5O!3hYW=d(tC5z%yQc_ZUK6P~ln&f?B1ax+&hpeFPUftSoWwqYn
z!(1xy2}zDLI}E%QURTGW;^^qeA5_Xor7rDXw5_+*<qZuo^2#TOlRtq1NZnyt*b>?@
zr&d!=)khAo4pMGU)WRX>gpL3o2(vtp)(`d6OFI^zOCT3XBC-&aWu7A)ydv?5^bqwm
z<wlI|?kE1DR3y74ELP0gUxtAiQ^idokvoAfOq5J0l(`o3`TDScnMRqZ{jf<mp<78B
ziNFhLo0Lvvdox?lF>+@@7)c;xjYV(GQvsj7x%XwhpC(hmyI88S@~DNzz4<oUMHH{6
zpM~G$-@ku<dw(+u;2~<fp&bN9B~(xH8%Mj0rw#P<oa=2eP`*HQ=SE1#RU~`pQg8*q
zK!D~Oh4hCHg?#oN-k)><bLw@vJO1$!*<A~+9=|{P0tb-sKZuTQ2~=IOK~&V{Wa$9v
zj)Zpr@O6{pX6D0fk@^y$F_GfF3E*i)>cODsgfbG})p=q{%Wt<Yq<$u>>AKEIm$K*K
zl|Z2llCf7iS4yhNJznhfXl*2)5Go>-AhMy}L^6C9cXG`chYkzEunuA4vA^6h4DE0?
zbZ@0&_KDd3?)fEFKTXi2#ikPf@ZmmVxK#0y-E&j4t(tc~j48df<)H}`sOa-Stxz~Q
zXP=G^p)KstNMbztk{wMCKcV@wY0B9))Qfc{A|4bE+yeSIx1Rh0PR9W2UsHrsNUGbq
zU?Hab#YWi6zi!)&5tE`8QKlQDbtW25b|S-NN4E=UPw_-f2OEOsI{2-rcvv?`7Vc)p
zANPD?o2<G`GEUSkQ>jU}F_b%9R!nZK@L>33%wIF}EqO0K-m;o*ik@-FA*kdO^1p!-
zG6E;n%T8+9leHxtRW(C54?ER@uX3IoLTdXQ=@y<m0j#}Z#frhc=4l8{Cz?j`ssU9M
zmsoD=U!=Vm=_EQ)01?+Ly9BZDNr<Y@W0DCqSQI)-P*#X}4ApvVYqnGFK10L$Ja_v1
z5~64sbt&+7A<?QPqarWtfX2PeqK`~U7aTj|e6|e*T5D@-RVJW*_4ePy7QVi`;F{y|
zVRO;$NVzk8{?kOk+M(r%9IkHYT^|xSJGa(VIyyQiI-=r11lXwhC+GZnhZ>IP;peHI
z(^DRd_b$AaP%FfAf`7>EN`{8B59}IJlrbdwmepOz9bK=OKz749k&4n82mt&)bgKBK
zdV0*3DOZZ*Fi*6Srw1DG9sUB4oB|mhQo=s{2aa7U1FwPOkr?tl-4ceRnMh2bo~c7A
zsW%y-B4kTXU5!b%l`ji44Yw<dA%-OSqUX<_lM)A1C{O|N`CvYwFla_%Km_@uq^!pO
z)pw34UnJl2mi|#_D@pFatT?fWI{@qv5xWE&{RscT6;MPf+C*gyZCGDlYL_?02?fyP
z)QHw%c^j9X>U;18caOjQIo_;Dr2Lqkp&w-?)$bdfIiW{Gy>|&zFY<X}lQKI%AWBNu
z*q~JjOe1nwxvodghR^il4F}M8hQ>oHh;0(|i0&L}z#rK75u1*_eEfddrPpvkcr_lk
zp9Ms|h{4uz7^ujp3KAy>y+(w*s}uaAlczfrfp1MyAjih0lR;l!^`nCh=ojemC_vwk
z2dEitB=*4Pem&`Nj@7+k6(?bD<<b?_#EBm<K6VuUWu2~Pgzgr4hD9~5BOj1@P5ty$
zOpUqr)H#(t$r|k<L@7?BXaPJ?d*meG9x>mT;J&kFwJBzNKBVKsy?;CV;X#lg8x2y`
z<>*CMRL@mY1``Nf9A>krf-ZbRWo2c6+^=E_G-p9qj7jZzLC<^$`s`kI!Rv4HCwuHr
zXgkvW>5fU1oLwrknV<zt-dyQG4G)#$C5qiFSBVdgY5n<X2~qfzM9LST%nX^TyweLP
z>z{seTy(X;{;5k&PhQG%GidYer^ebzUm^VYQ_0BEXDEAPy@*N>I>p8z!Y7u)7c)eK
z-Z<O28=5|26-&Ns3qK#|9m%{AX9lw18nj$3EiDk;+7(`AP1H*!3fk6w7p9|-5kclW
zLdZi9OE=+cZ{Ey@l7?&?$gWziHcP<>I8}Z$B<%n2b|!AhICrja3SGfj;pDi;G7BEi
z9svk4F+Io!K4(qkPmkvl8$^ps?^MJ=Bcmo1r5Td7xPI$FK$<|?f+{GMBl@h{bK3=#
z=PRqXrC@u4EjSC|qyOd0q}>1fJ5+7A6+LMREwnT&!b_u>2I1}?y!bWw;hNYT2kyxF
zvVek!526K^n0HK?-KUOc%P^#tBJwGMs{_|~9BqglhoW|`wL|L#{gSOmMl3$W7>S99
zocL*o4Xna6G{h}PiLQy{TXyWJKKk*{{5Fg}8Ny+|zbQsIY|<5kMqI~^&ubht@s^~|
zfe7{ci+H9R`#ki}cnDq-m*i$<W?s_T!!@TK3*hp|K$fH@;}!UiC(mL^@1`f3DD66+
zqeGe&(5!_GzsKQv6)0PDz_^2m+0ws|nP3TR?Y(>V9y;U(=4?y<fu}QlA<IT|We}ff
z=K|nq8XcY|tO|BPNy^kh;P#Q`eG&BG3YYJb*mwSX_Xy#Pkggws>Wt|7!kg`(k9pJD
zPkf~Tvv`Td&9=-6@0%~9`TvAFyoRJ53MwE)2u(eHp67`f69u*H3Z*}x_e$KpOK`G?
zm-KSjAHvg>m0t#vIw~(Z)#d>;oO3HZ{!7X=FLgvXi7#w-dYR(A*x0pcTGmi3_SDB2
z{vypr94faE+nVeUl8H!pv4<YqHWOcv`sl}VY|Bal2Lv9zWKlV)d@mMvrao&2u4e*d
zXgi;@@NrXX$hGSpp@*k^Kn0RE6M}m{zLrmf!rL~3%!5K<5TwPEk!<+ghX{B-SHT!p
zsQg^9hD56@g=nGmOnib1mi1>g61?*wZ_R>bWaK|CyIQ@<C!NK7KG?9>o34G%pc7W1
zX9rz|Xl^yF_D49XL17-IYqFSY8w8+H2oVs*^||*F&7>+5sw&}J2I_LE*T%O-K5blv
zC#Y*ZyuusF=MRaU9X#LSJR)RN<JUGYsDlpguvk@PWg{A)pfZ<(l62L?V<_ueL80bA
zFGYH1`ueK~wqSV)NqcN9**<MsXR%-lN6H?nk=^HK?3Q%CdG^C52{Qxja%GJ~D5MFe
z%QdANPrh0V?|5tLsbf~Yn(pqCAkdydT>#4p0LS%Abs^xd|56<+2bT>A$uR;$rjFL~
zZ;z5TD*m9%pD!1#%D$VKISPNwfu>E;YdX_T?$q(wZ0y%JyWAmN%ob)}o7uuU)Im)E
zccGN>Nc$XNcS!38h)T^vPSA8F1J|I6FN>D<D1-*cOd<C-vVXgV)I)$(B?VG%H%hem
z-|C^E^DO?*qO?d;@!DX2=<&k8uY;TVfb~I<#H0DHXw5%a0Bs`xW?r$+<T%5}c5L%O
zK@1}BqW(!08Omml9E~h6jmShA=d>Id!y`8W^pP?6%;uyVYyL?cd?SLyj(yrfE-B{N
z4DzHqmR&&0wkDihp&lSUhqA#g_+@U&DxFT_19+GHnRgT~++0Gt*XR2_fn2L^%rSM9
zj-5}g1(tk^3oooE#zA@c?M)#Qj;H*ct%xl5Kj^%~RJwoBnEm_VoUQm9ue=o#mAZ{j
z;-U`uX}0zb>TXZ1ylT^xM~jlkH<Ta4Os<2wzx(Izyv{BkHU;)H-dfAclX;lD%JF?W
zC|>&4GfB^EO0}DfHZCPezu9cbWW&b5Z!ohGdBf$jo3qSUA+DdyY>MkeH@?fX#F&?V
z<~~a4mt>2%Y3Y@!$m@m_nlFy$qe_QYkJ5ff1#177l~I{_W=uh?`N3Zf`?}~-B8*6A
z#GBp+{?&SYY_qj7dERMqpYQ)RvFufZ6rtLdV183>|9P3Q%izpSmL8oc-y^NVBzgGF
z<cTpm7xM|fp1kcP()Wf|FM)lo#ovwm4$>0in4R<KycRwAJAo$yG1ecWt*w&U-*dCv
z0o8*>OwQtr6J!`vv~uBW0iAZiYk4=?a(Y>^%;+R)*P3HGaYd#HS%B_6taM&m+W%H)
zaF~rO8sjtnO7eg}ZmGFcU8D=cD<S-sm*@T+#Y;{V&7mX7V^c%Q)xQ_|pOh72&zpTW
z>OZWWsBFSaecf-)j4968STXx>HtnTYmd>mSZ~g1l3+EDhJLB*^-Tm+3i_>-sWqJcU
z@q+$`UJ_(@MPY}gUNqEB6>s@_ba_vH5fT)}%<|_|3nOL}7Jf|sW}9jvw&P@-0@=3v
zJR03FwwbQ>Bkk_QzLw3ZOH6OfJOl<I2a{Xszeb7-TIre}ZExhxY7)r$8u?vd2{=xM
zeWaO|)BoGkV3H#4WSf7!cQKGlajoJy-t2$l4HScETblA(&jOcl!iDxGf7rIG6+Lai
zKZ@3Wo!JFy=L2a3*Nm~+xy({2WxO-aBW1Vv?2@-FoHY{um(TutdZ9*M^;+WN$9t~E
zs|Ar)l-XCX`(Mn$8f*K8qW;}!^Tf#C4ECA%8~|@x=hrBqR)K=eM(D1=!=n$yy4s(B
zaHNOEy1MBo^#bwX1C47GD&vrK*>pQN^+qOKyAY#G-f=h~HdaPbBJy~W48up3S%M@w
zK0SSy<U^=a?ST%z(byO;l<2!5W*|rrdHQ@lQrkgELes5+h-N3nD4R_JpXX9RrZ&rz
z7RGpo4f@Yd(w}7yqDc=WDPzOg1C351;8j<nQ+5LIZla-GfwXBL4S6u24HUo=khp?{
zjw<Hakxz*RE->G>=ECXJV_fuJ6Ucn*_tl?UxNsqn3rwMMRWmsR_@=sKTTE)I<fInz
zN>`?PRy%b>%<1^>dQa?hWFNl#6#P;l&6eEYtKW|32Y9(qL)-a$A23}%O7CR{`1~6;
zAT!B~g0dmg(eYs+8?q&5IiT>WPRB*zd~9~F#JtiiMi!O*LPCsA_2qH5?cX6@b#``=
z<692f5xpT^gCsZ-7JC44ak$GC)F&aP9P*-HV%b8E#GO;6CeOyOVQdLmP|kF_dN!bG
z+9Rl6zUyx>)y^P{uCA^)%?MIxMU?hsL87~_k7zg1r-{==D)rFLj=J#}60v-=uwXzr
zjU|qa^{@#QCc|=lS{aYUDRe33Fm|K$dBV56>g9-ze*Cx>*Xr2V^kn1>B~^H>HG_l~
z!E_Pd6;7##v9ac85V)k)g4AX;S~khyE)Y53kO*@W;jX%O152({sY&^Ezclaq4zlTn
zkG~HMz(lK<)WxG#IK@)J!iqeaq>GR%BFU@6D<I#($rnD2x_7QXSPh+F_G7SGu9yvl
z>9G>U!BSO=+owprIXs&BXV#t3yrFAsdZ=oK%*dVGa}c+NfSWWoLnL|V5Q?KIMN*;(
zCT=(dBcO=uc=@r-?KSkoX9}KZ&YP?<v|G#v1<!r7Z1VYFq2w=0x%wBiA}=F_Y0`;-
zX1ZM98<H%C&m_w@Wv8uSdiBFQB$T-u<hYRYM$j!@4c_3em{ap{oK=EOw-Xv%_ft~D
z(_S%nxq)X|MzT&hXy3`HKES7C0JtnKA)y3b8U^2!L)!GATmUbDR;4X~FMIANoZ3-~
zJrw-54T5}fng$y6yU)7Q^4!kU@;#NsRF)`PFehEHm+6ze?7Sm)oaz#$>-3$_=er0s
zzrIEZG#A(%<+>jquP#6joVkqD<gqJEQFBZ1?YO|w+10h*B%IXSkYRT==TFaOw9^wM
z(<hpzTAS-JE70z=J&T$=K}%j6N)0f#s5&DvC9UZoOMHh#Yww+4q?G*UpQrm(aL;`g
zSwz5O&^z6ewt!^@Mn$E?6zD=9xSl&_JBwBwg6BwqKphKDh%9ulM1mavcL91}DXQmS
zvY1zH`hs@%^&2;OAjw8C|0!CH(6200HG1@Zf|LkU<F(ok!srYRHY~9Bnv65rGq=<n
z^yad^^Uu#WublB<4s1O3Hbz;#4BBdZ$gvFY3>Zezp)7H<L|%W3mDqE8>(lgfC-h;H
zellzzoWy`8SXdr2^1264wG1IvCWpPW@)!^Gj(b$n)?PNowY$#R;;_R<DYDlU#B3X7
z7&_{Q+ZpS7U&%&}YKksOl|sUOTa6zNLMp1St-ToqQ#JmjDl;eLAepQ|W;jU>NWu94
zT2TsQDF{3tytUTxjWzg>SL24MqQqrs!J95Xt}|Zo+;I_{fy>1o<nSo8Y&lJ)-Mvfj
zH)%xzn-L)q-MLa_eP=1(Tv{&h#18%RK6ln!7)<+X)?F4k{wU@1*?ZtXo4y`y&dUW!
z6)n*raO<|q#hjJetZXYR7kCwG#(Kwj({-zgua~3iW<=c^KO-S#_BU)obLLQij*E`b
z4f|IJmCS@6my4^>3(2CQE`O8RtLmEwo!1qO%f~74^*TG&pIpI6*=Wq<KpWKK`EYga
z6>~cA4cfesZyEYCw@@kJxc(;RE>^)S@sz>q4jF3c*W;2DN1%`ZfR^R{7Lr~n+9Mrd
zWuuE0V=LFA9}^DSE$qDc(Y#_WG!QVZdq7`Wm9a`w$;fZR7#+pZvox_^NXbXWOp{WI
zSPl?jo=lbT$J0?>x7Pv3t>>CU9qC>`Z4=;dcr`aA0^q`uJ3yW)z7-P#CuV=c<)YiY
zTTCyE8aTZ!UcAbHikDKozx5pIuEyJj$vMT*dzh(WXUyPJayr6|PZ_t-k*jG;I^5At
z#B;h-8FhBod|BwI^;JpLzlcs0f#Qr*IRh^|QlpsC_45^`;p2{{<ESS^rUHFcceH2*
zxy9!R^03p7A^ItTP_AZB3KAo92)}|B+;#BB(~)e@BAqxV0kXoZqAr;B&_X8BbwC<U
z5nt5zQ_+q6v0UvGmGvDFVD}{79T#(S?4Yy!C|D94n^99Eh4W!PpwAAcX=RdzU)Ov?
zJ-re1(A}|rw*hTv)uW|sz_Ud$dId}G+H76RdN-{iZd;1fqj{FD!6)rsfT2Re4aVj|
z6nHKLpw~!aw~L$tcr=%sb6Jh>bqL;4E<cZ4oo}Nir<%7{X)g7`g_SC1gw7`y(FyW5
zSu_E?X$gy(Xj_MLP*Ds)1+>T(mjc3WvUs~N)Lp}(sOx>W&P<8(A8*`3b-Q{Tvr&EZ
zUuZD>SLZL21{ECtL1J!l*7xu?3Ko?Qb(H1kiO~TmhpeFEZ`AC1aBd>7>AK04!*pI+
zJ!s=cWAY^087q;sGl<0}CEY<co4dO^4iW%^faY&z+3qK3jOar=uxXxZ{?<~_8;0B-
z-4BXJPmgWa)cgpqwHe(4_)+rH3PwvdAo0=|eevbSl#EWJ09AU7bge<BzelDc2A$`U
zP9Moh9nib`vgkfOlm+Tejh}cpocz$T%lP*`=*J$v-<NGcs9+GiGGV)`Dk>&$#>ylP
zigW)SW&y>}!TqZ50df^S`p^}hthOGKR%-n$Q}BV8jZ!z%(WwMU2TVl5ic8K{$1$`<
zkcLiGCPGhvz?XrL)l@tS8Z*d0ra-=g$vAeRrI8!8tb~K;T4DN%L*39%oQTe;L&nCW
z>x+=qIB#a!;RPMz1jH0oUrJSwDSTOODnyla+sOwqPzt9kPUlq_q5U}x{{vAw1sG!2
z9S$8B2*iNZ+kTPrB|5L9=!=jpe2Xae;rRR4&bC}y=YeK#5XVAcyPLpCpx`E9{z3gP
zTR@Q(@D!NC>G5t0MWV2SzwU=r@bmZ5Wi1>ZJm@TsGA>l|kJ+|I>h3%${0ZKOJQn?A
zV?>npn&6E^d<{7N##K&{obCZKdKEg&Nb?Fh_n=AI4dSlPuCF0$09ug&a@Ge<3u)o7
z<U^jVG6WHffDXmGuCk(HcevyRA1E6qhI=A}#vU7HJcbpkUR+c=o&*)*MxVg5BAUxd
zZzRi0gi<Nl)Ij1*wg_j^)%h*|K=BSdUoE{wRr<H7;l~(4jiV#Z2t^<qQDO7@9lEB_
zPi6hXG7~MsEGmZ&9|jvUg2M&SR74uhU5%@-Em&TnTsQGuiO@3aLYJsBRefE<=OzVf
zqumPQS*g!?)^7~Et}Fb`-|m|8dCbB1{o^+-pvqO4W{9idraoY<Eo}ac&~4p3Wd9Zh
zPHHg#@Hm1j&-KtSwu2ALHKYqJa#I;#u2B-aCF5wtA5_ztLJlzW0raEt&zGv4(gX_L
zJfLA-%dWKK^eu|&=%`L^ezC)c1yLNWLa3l{tE}8+Z_4yF-1>2C>vEK(gz7X7pTuE6
zI4ExnaJ#lO1@JFwvfF~s$IiXW5CmB<D2n5ei(Yv2T}fKNs6IVcLO>rRM?#~-V&?TU
zbuO68m?;^cv}UyS!AtcuW{)5`->F+o!aES#X(&OB$Lp%eQCBLXXjq*_Ir2B&3p{!&
zsQeWHMXF4sO%TUyj80EAPs@T`1CmLiQD~Hss({P31xlvB^_gSnD1%)`kA78UmOl*_
zcNiUTaG|Sk?1p&QAsmWhX7&w?;z_iW#&Pc|$3DW|vI6=cUI<6WZGwS=e9T9^3+z`}
zb>46qN_Kh%%MA9&o!_>JN~$cMQ+lFf(Z0oIbY8lW*pTExa`;S&>Dz^3IV=H11S0@Q
z?Y<);m9}fG8Hy_8(3M8#=1HJ%Xz5b1t%(|Iw7)ffD9P>t|LVJ-0VyS>m#khQ9Uk+f
zsGt4vn*)}6gCl$Czi`0<aC6v-A7b-~92GkZpzC6@wB<tVBv-o8io=Qgd`gKL19K%_
z8Gsa6jKcT@PJXI)Kg+2zQ$DPdfD3J`z!iZTAE+v=yUw8zfucKa^(Bi<^^8aI%eT{y
zNs350&GV|tN_dk-7g$Ngvb=(kZrC;7YTaU7%-g@n{3VsD(3MB`d1d6A&$-xM#oLGz
zX?`t41@+hyCqmg@a$$I8Or3s0jUSXL^PggaUm3Y_Fq5Kj5q#!b7E($vMTrcFR8VIq
z-QACuEGVz<dvq&V=;|(GqfxwCe%KzDFHu?L57s$$D8;0;Jz~ADi$^WTqmJ;r=A**;
zw%mzhrpBMQ&JOgJAbp_5Sre~Rd-hj=Ma4Gw<z3}>-c(t~kserr*CBz(0?CzLRY&hh
zD?Qs8-w}Bv_WV5B*L0K$%VWw^qq!?gl1zA6?>^r5n3JJ-U&@`5bRFnZg9jJxzL*AP
zV-*7GLMb&W+QoIB`I^4kg~y(NCLhxP0~xa`l=`7x7oLMJe)+gCNO)2yK}KA~-b>@P
zg{jo9H+b2qnUr)1gc-jzWI4xcvcj`Y16<6uU2^9;Hd8k1**c}>yjZvMLBIJS<fv`y
zu~0wf&tdgqa(ec0z9TXg5nkFWu#G$ob*7gzPT98eCdbD);7*o;;JC4bj@qO&&ujJb
zkUE0}WTvUoi8Fykd{pW~Q@`UN?23hnJ^aN_jprQ{yu&s3%sP&%7c#I4RG=MMX#+KO
zuTP>9!Pl%XU2;e{v;=in>FlFrtLG|hv8+`#V|Yxxxf3&_dU+e?3PKA~FK(~keK;BS
z9Bd*P?%KChYOMZ~AFJ+m96g?MP>;MEnHsm<DRWr*Kc$~3Lu$-&w1s2$c{<C3j1j4+
ztG?{F>b*DiCY5?pZ&UGb9&a{rj1PS&YUO><LQDC8hZMNhZ1<{KR*p9y<7{I#Q=`HQ
zf}M&J&K(hH8S`DjhzX}*jGM3Ll)9%S6c?#eED5V}#@7;l=hk)lK$Fv>N^5uAy!Z&{
zZx?{5m;1hrbBj+FSz;SggmsTCrA+mlA1gAZ6vZi?-foOrZX>j^qzcQNC(W|^;yUS-
zOfqU&W>zq8o%D(AJG>@&LmyQ$QBf;zz6n35F77w4MyxSyEeKrL&XYM`n&*-oVIINN
zL;dU+KQx11kE~s!<Ug*jNtN!7ite>g!a`@!kd+LO)sGdF{f^Je>%2q=4pbO&E0(eK
zVskJBDb=<HES~D(rCx)t<@{FJJIby6D3yK@!kECDWa%XQHd6BXt4^s9!@&+e!=Dhz
z6v%u`*^b%N%B{98AYil6JU?A&X3AzaUaLEzhMw1i%OsIekqW#oZBk-KPoVRF1(gyg
z^<7Dg@lI0Uqm`L3Ed|1MUcK&3br;!|ms?_QI^*qh7<fN7W~`-Bn&UJNUO7TX`<C*O
zk7t;p_QW{tI)KC(&$N##itXW;F4I|t7^NGnqGG=7S178ngapt2G9qh@#%p2~!~1v0
zVp-b!EH*7>xV!yWl>@!o<${hl*=vQj$WJd21b>!^@+#XvwOuiNk}zX>U-p;yinK6T
z(ya@jqm;P8`b$@UVZsg|)GaYO&ZjXBXD9<@akg^E-U5Be)+MIXwuSDDw4CJbd0ySz
z1%@q@DauDwY4@4HwbW^|q`w?Nn!}tfPK3D&ubtC&bh<BViIRU|OBhGe9F_-1W3a$9
zhcy_N@Og<+b+x&85Is^#Z4g;S02w|kR@T-xR?z)Y{vfmS?$tH*y{pArb-ap!OXu@d
zR8$Bqo1e7wYeY)OVp^%9^<g4FU8R&%_?)|IUUO3%KbWsaD$}zprb&&`To}C41tR&X
zcOIy$gnFRU>cV!f+h)1jp5&(vM;}(z_413?NE&+dxVIwVdKDB+NYmqS?#dyYae>+`
zIsWW1J2{Q75N!!KTmsYqWE5az-arm;cBHrQb-UZ@64Y6KCd^l)#2Zv)9?m=BnOK|U
zx^~iz@P{-l(u&HeswqHw(kQ$k?sm%fEppD_banoe)Unro=wyO~co<m-il>aEs~<%`
z$zg41B1T6&L)hu;cYo%0;1xfXbXF+robZdO(EmdJU2bw4_(<9dP^0$%ci@~mid(0F
z&O$6jles8FCc?t25bYeR5060FLJm#3>W*@&j^%d<v!*oX&Uuo5_Wdo!GOAlT;mBH@
zed;@ft2SG{>5<OVqe-;dV$$hxHiSpNzwrc)SqeJ)G%pVo_$WnG1xdfIiyXJgdYnj!
z=6jr4ic|ISuka}5p`~iEM;($<MQ-hcO><21Z+%+rmt$&OD0EiNYjPdy2MBQf&gfOI
zUJ9+Nt24CCTH~_`1zKReUe5XM=vyLUdX!xEnS|fKt(eiWgo7Qk#rD*`Lc;Z#N1N`+
zE|IV+Uv5S%478h!8=hMuMx%oHUeTBWu)*(%EQ8d{k=8*k5ucbij+xq*Y=^UCNIMg{
zZ@8<OS8x4^-j#=s9?3y)!8!2)>Vb<a={C(xZ`;^-T{~W#J5j+|Zz(8AjTct+)V~6)
zS8k9yOY1!-E2&CC(K9(YIckfI0oXd&22^oC+o+g|hwWZ_9oVd~)o=+;ZLBc7>i(TZ
zM%Jg>_Qbf;eU4ed#FExq;b2LLTh~`5fn=bG%<ghH8;tBEk<{-pa3aA@X=!QAzpFC#
z(TCrF1RrHSiJ^A%hRf$!R}15B5X=1>p8%f(1%UiwcPiyX%7bPGd-a7~JD;n0efVph
zL;~1I12E833B*+3^l)^uOU+SVoRuRr<d#F2NW!N&<(v2QS#_6_<7bJE2Z$VUpY9~-
z)J-T0UtjurPH92sO1fdat1U^=LXfiv36Z0L$x(C#Evj8ro2g<|rxKR=VBqp`!kH=)
zZ0`qTCQSF9KR-KiR8x){2g8zc=eXbRZo=+zk;}s_Aju6mb;dL9F#7>rUE~+GZ(9nD
zx3(YXSycL_Q;P0IUh0txw|y9R_lJrYrTih$@rOhQN1LGwt)zG7|6=dW!*X2Lu<<8j
zLW&I0Oo=9hG$%!fl&CbJsFc#6L8W(*A~YgNrDO<=5@|A5hDxRe358Hns5E}(^_F4n
zwZ6UAcO3ip{qx)JJ`TIp@Vw7^KlgB5=XIXvwGewOn+srSP^fcTk*UY_6b1m2?d7Nh
z<h2(5;>ZF5cnCrU7)E9`NJr0~Kd+2O9}FT3mc4+-bLSktx__nGxLa#MC*bAfg@3m!
z*#5!p%%1i0N2ckuj%V#{&n!`Aiu_mWDL3Wa9Yat6{5MdMg+p9(Yz8pbygl0wknV8m
zWwSYNvp6Zl2qUh8kV}y$xF;)Bb>;k5Sz5+Texw451>DaomQIgx!={h|<^k}nnr{c9
ztmk~Ev;^UABT5a85rtmFO*wRE)Rg&+z+9Tao>^K@p7v&Y)2LAKN78>Ng`QmZYQ!BE
zH<qsCdk;_0ZAjIQz&Ee9iL(2TlP2>sxQ|)Tx~$gg>G+(E?GJ%F!IQ*0f!o`3-J{!(
zphAn}^`BTVEsG<UCq7L>8AQ?H;eE!A=OCk%6|!}Y+i+H9;_C=d*%od!8mNExKi(Yq
zIL>~{7Kjfsusr0jyDUE<9R*39SQw}1aj+_p-k`d2PjA61|Ao7Up#*M^0>VdZGT@!$
zl=7|tL^xi6BSSZD=ai!HEo+0;jI!mJBmQkcltkN=O!FVrk+IMbh0*i_JPuR<m@kj!
zf99%ugq3`X^LWNCY(IlD`Czru;7~<2A2CfY*|bo^xA^5-_9J{aj}1f)YwBGF<bFC-
zUm&5p4L%E`)&1=JLDuh&j}$SzwB<pO?F5nC#H;!8Y)96gu*i8SRq-;+v4y-mA_l%m
zPp&ikhl6Yk#D|L9Z7b4xlnLLy6-)RK(SwHoTM&b(8WX-;L8NzUo$88*qX$_VLf%nf
zV!$Lgz_DlYAC2Rm4XMAmcjmVOX6~Xn{PA)upHG?`MOSw18g$!V`bzDc*IV09d0n)r
zIDCXEP(<|PjEC?9q`5Trso)5U$}KkBr*-501d-u)YO0vMna0%u3s1KXF1iBn7Wgvj
z!dfFE1#pOn;RF>CnMU1~+xalh+v9;I>cK_MN$G|Q#o}i$$5t%lSzq80JzFn^qhbu#
zE&0%K7Vu>S0tAEpk${`yAk&1=;e{1@`PdYc4DVqgg$<>DaBj)r(LOUgO&v#TWy-m8
zTTqUm@)pVgn<CBIBI3Feff^j!a~6U7#Hr`n+)EiBCFCky>6bIN4_mLk^f2$(pb@+U
zJ;M~1O>P5)^F0n+@O_?zz$OmTOV~XbM)N$ZJ}4n#=~y}Q0F(Xn(lh(P>(%W)z8f~>
z`k=;w^wSb7hfDxd@KkVs?>PLS@cuhn;LKm(>pgT^!ab+yOxf4_hFpWv)OQqRmFz^Q
zb&n8w=*Li~kpn3g$uf|$o0%hcfwbyvF1fp(QG8x(TFq%~HY`|B-e+h<+*I8aOl2bc
zMB!0G$u7rm0fIdVj+`BMD||F!(`#xrXHK7CqM9a+hb*QX8w9vt-4J+@bu;Wo`T$;4
z=6E<g(9Gf~UC%XIL-yc<Z*3Y=_S;NbFdMn3?+Y2hA<NjJCE}YPxafZ7*YgbPVIF6t
zHUhoGg^e7c>AkZYKaN5ULxIW}pjN_EwCUb(tQJ64|NNU3HcVvt`?f!x9==|5>)Lqc
zgd)l|ss}aZQ)$``3BlJt_}9}lsus;%awGf!;>A+ybvC0zn{T>r#awjoyFE=wip6<A
zVBSLa?xPp%7&hFj<2T4UfvcgV%0M@YLPv^Mqb#Im3@Vch@nYqU4>1<lSj5E>C1f&A
zW34HmN}zxr0iCAcR03>4H6@SyFEOwgw&xe4&oehpWpG*arGzUhz~)Gv3P26<k$UID
z5QK_|jfjRvb7^Piqc}374ysJmwZ^QC2sRPtWmsqD7!2JzS<rQD_aVMYyCP78<^nLl
zdx6L6`$o!=A9V+kTY?D3CI`2K_?dz04F`UEaWPH2edek>3C8yH6$ys1-OfgIv4??_
zLw0yz80+Sdw<%od^=musD6GWRMjS)>8v9^E@+>KY-zR$??ZhLIHA)@Hl$`}&@wlG~
zm6H)=P9X#UYkaJdDETFeczMC_H*#IiWCXsm8eDmPYw0?a0vOv0G*lqIYD-<ALdPdE
z?J_WE1xMLdl6{kn+H(i-Bw0MJ>}1l~d!D9iG`;~S+IeGQK99XmqZ{rJ$AB)bj$AXG
zqiCJb>Cx84KI*rp1!Mr}y3hOZBhL17ug#5&B6X(C<zwfW$An&-8!@OcM0U1gA!fms
zuW$qgGPU*fE*J%00{3ci&|b_?+0l&Xkjo=P{CQ4k-TI7a6qVooMy?h*e!}A;3%cLr
z)tcveIs*e%DEPi&w6@lQ1YXAWh;{Hzjv<1)jP;|f$`kB!<Q_zy%7^o30MF@_F=Pjz
z`U1gQZbQO;w5tHLbvB;Z6-DQZ=QEkJ&qKR<@3s7OHxY)BaY2#I3??g((f5G0<pqCQ
z0J9muGRYH@bmA+b*IHOmDcuu@6Z@|5XCeogughg#anPjt01&krrB9e(k@L6eg#GYF
zj68h!)Qe66+)yyo9mgvOv_Q*%19Pfq_Tr&?C41zp&x7Fx3t$^mj6qHALdgo$PkjRe
zm-404A%Aaz8QwEBElTc+?vJ{Rl+T|>^ZqyujuZ1XPg)wi%I<Mw{?}7-zVDY;{jryT
zkes&)WBFK|9$7AefG0%phSuB{-g1UU#;9x9@4L}zHh3K~bt&Vr_l*&wQ5R8up?6Tx
zAF{Zk%{#t4P=MX#4Xa?q)8O=_2iS^<-5~IB@n|OQ$~@yh?na4YO9J_C4Pxe!QKbUf
zYal-7xdA|Q0U%JXQDH<0E1!Cw`RWq&ieH`yElF1H3m!_mbNKyzDE(J9{f2Q90XlX8
zFNQrLA?%1n+C1C;1DXDv?fi$}B%n7)xUPgBG>t&3!4CY?yIk}xHkjhkrfYavZ_i$~
z5OmR3Sw3Oq<ST<3+hdK#@hpW1UUw^(N!t2_O3#p@)By)~=sbqOCsP8@F1>B!$vHN^
z<)9N%AqX{KF24h*1*olLoc!)V^kpa@v8^mg+vf;tZhU$I*0CwZTTV*QqYQcGpivry
zPl8^TJV&+v)jzH?<*q>piP8qGY9P-ru(0^xllFJicHT=8>(HVDBL(Yjg8~`rp=@a4
z04Jm2#(!au)_%vR3ktx3ao`Y}eEU<A(H3doLXVWaA|e!08l$WrRQo0I3hh@ony$i4
z8!C*nkGHkNW}`-h_#fJ7Sa0mXcIx=J_X#Kjgr>ge6WA+3IsLlT#u3IWx7)j#<}hV9
zM(mBYJ9$Lbd<P1x2T+hjH-Lk;<<-9z>-Byw^&^ZPXL3zf4QvPZ@JOsYex==%9NNi^
z4Z?QLJM#FO3n?jWBQ<bPVeXc0(~@R*o1DazK<)W+F)L|Naa$XVC~4=$Eq<Q&%<R$2
zp-AIaf*64wBW*jSzCEVaJDk1MPzv=@z6(C>uHmWIUjVUU28Y^wP<5SRt5ZMb`Ye=1
z%AH}8mjd%;IPHBvqPBbD<EKyINP8+jKOYJOFkZmpr+}N>M8G%Ba_V!=z5<;xcCFEn
z5D2Mia>B)#xBIdl(os~!$q5k#ey<e%XrOiYK5PrKBm4fgbxO=<J5|(*aAYXLND|Yw
zykZ{F8&Fgi&@_gZAWryDooR3__XWXQdR-<IDnc`5Ww}LBjYkb+SV7*|vy%R+gp2uK
z`*j!k-9N7QWeE;1FpaP+wMCWsoCd+@;8xLHJu6if?bJCpb5Pk45B~K9_f9Rn{D%~a
zL&&b@(BtRrn9}o5ZpRe?C@8-u+7*I?meez%NKjOflsO5icy0rZ4;m_rB>IrD17-gP
zl5FYe+3Tl1ya$(6B6c*$>6QD{YoQFu%<>reRl95Vv9V0qx&Kh$npuq+KQaiCJB28H
zI7{dR_Qf8cCK+$y(27Yz-6JCs7_U3SMw~LL(cmWqX7<>Q-VRsqSU4_H25#H_+rZ5J
zl-`{9=dzV_kPYI&x+QvT6nQAhM!D(ogr*qZceP|#jo>-RBLL^QfjTjrQS~`U6wzV|
zU3#pWFH^0TNApAaT!hL*jM^QyYR#JQnmW_Q@;U@U?SOJDHBR~}wQw!X(G_7^8Kt})
z%~eB~t}FJJUns`!?rMMVSm$K&{8G$-gD}g@MS=pBN7dKE;0M5#;rfy+7<GVM^5KIf
z=MSp&IA9EXnqYGTzjV4yba=Z*SYVZ!D!ZfRGl}!Q56;k=um1ctPQy8GFZtzOER@>K
ztvoHKcLZb=I-DDj=%ar1qN@gUjXN9D0g}8yQz3r%B~XtOWRPu5IX05te%7wo`3-8*
zFmC9>jM*G=k6iKzq1m@y`8eubm_ojA_QTToG%>p2qR2?5BQyN_*P#uk-Q*YzLlk$N
z)=$;s+^4k>2Oz{iV?-fEnB%|g!MtaUijK=9RzF<%VHfDwQ~kHWoTjO#?^|_k?|lDl
zRd#2z(*#qHslk=e8Qvwxq6<OBGBGv%=&@V!qIW=U)UoK!K@3mvA2XR9Hn#C7B@es(
zZwp&H{O<$zp}G(Be?Cq2mQ$479XL0D=&w-Y_K50C@Fl>bJI%f5d}?X|Dv@Llj`AB)
zd)y3q@Eq&BiMrS0$9}Jt_8lBI0=T<~(PL#!&b_QFQ@I$Cap5Mu2j2I>E1?6Nml$lK
z&tUe5`5!PwI9698QqIx>`!$pn)Nm_l+Ub8p_I`+!$JzVQAZL$=DFNmIdzBcma=*LY
z3~Mb20spqtm0x|W4#qGR;NnmkL0dA+n1N3q=xT;T=p5`WwrZXd{%Q6RJnSPuG|JFs
zh)7RPfbXYJdxQNN7Y{p2U)wo}XUkw0o09UEx8ck{1}%!Nn;+Ghg1-cc)nj=()>?we
ztF{4=ty{LleYg%_<S#&{rvts;4L-HVNrJ{d>RSx4J!Xy*U`xapk2O?bU|4#(&Y2t<
zS~(_Ek*MckSG8Umix!PE>GPSWI==sVAhL1{J0X0JbyNoGuux%kLSVKA;fM63tSv)W
zl3xptiA>q4^K>o)S{fo}<GlA$8m_kvN8r6{>1}v+?HwvI<*HdWy$e^%sJGXcw26Tu
z7s?i&I+H!=5%BdCa8reKtvJ>tFL`omkW$Kgo{KWWL=4)wSA>pN7x&Pk+npuzrw=5g
z^AxFG?MCOVDCb!RP>ni#{ot~?O|d6{bGyU<x;|<<{EarlWY~6ZY2-??%-OJl7_!8x
zW)o!cMufYFY1BFF18(iki+!R`!jfa}W?`u+6n+GNH(S2F!4=F{cfYNBF*sRkZu}CC
zBF}>JBN$tIOum<o9vH9T;t*VUZ*L59LVU1)qD?6cz-|*&lx<F+Y{O>T+s0a#Z<xrV
zoqkk26A$Jo?MGb*LfzK#i&zX|Sh-?IDkVN{+0QUq-nX{oa`D8kG#O`oTd(-;u>Obi
zJSOc)wDI84dvC9CMfIzPUAb6#j-%m?m}WStLD|bxb}t2szE9n|T}XV*b_p&Yqi<7=
zy?vNjbx@<6>n!hRk>EK~N3A~~GU@ije9n=J;J-9EoZltp{w<Zoqc<Nvuy4}F$D)%r
znc+9o7VQn%7r?3#+n6FM8Co&_#H)v;O6?(BzN5=lshl%-@~ta*oowghPrG~8JiJue
z9^>SsyAgwRzyLFld&CGWmSIBxMpJWDtf-S#YXBZhVJ;t2kfJzbtm6*G<#_8T=34Ei
ztF;;0^-`wi@Zh{wdZ7g36vV}{oEjLkjHcZ5H_$P6TB3f)YCN8F?DQb(S8_I@j7ZNR
z8>rA{M6J~kJ}ALlTd8lok*S}LU#=f#%E@pK-81}}Q+%d@-=Lzgr}LP^xYkj!Z#kH2
zhj7gz$v6BAOLyPcjZB}Vv@B|~8ZYRU+X4p-e%ZcMNpda6wceHDyR;Yn@%*&P?vH*r
z&rDE3nX?Rc_tL4^>FCkz_ww71UdBynyq!Uhuu$-Y#j4yj3;Z90t}miKqcn87*a-Yd
zhI8zeV_cz!3u5<(47W%uf-Rk+>lsvV@X}cPp5D}y?|I|sZJf8B&%%WMzRW9NWy+~j
z;{Ih-<ufA?5@yX_GPG!AvP`n5KV-+~s`QW%S#ijwq5fEO^vx16)Sm$+h(F?d@ZiB+
z`ATW7wpb3A=+;p&&n@rDC*PH40@vMePhy6P%AOn&nip>8|Mu-$Af!RV7`p_OMH9SG
zS|Fvd8tA=%;gtKkX?df^1zJia`(6W+3jOJ*<rJ|g09aqW+6kV@Rh*BYt5rW#>@$e9
za|~NNgb~?)G-i->`jNK<hiux^qy@c*($_l5q<$juauAW$n3;8Fm-;$F#so~n7#&?8
z7k;Kj7FVd+#~>dDqVEb?M*t5FIlS6kN=~0X&7-;6HG<9VO|o^g<5phH<sBBRLM0fl
z00&;}huFQJRaNb%JE*`7GzWS=z>9vUVpN}*2U;(LMFNU0^+2Ok0ENQD>x@g)ojZ4U
zG+i&kE};BdwJ8tNwp@C%i9E~U+2h9o?x*?M=8RjpL}+(U_N10DE}Bpow^5SlY;X2M
zIyV}<ru=7txQaWAcD$P8dkqZ-KwT!GBvOgTdO0B8;+9vR93sXrmDh6lM7qHG35c1o
zCpd9N2>8NS3Z_twKRB*<(Ra^NVDlt{63%x|#z}DYER>5=!O`B11NM|>6^xbwc_w?z
z4MIJZ2@SHIEE;9dpmVHs5>r10_oa>AV*n>3{2aGzSqC~N>8>fv9pj0(c=D7fk<unE
zNP~&72Ver3Q}?auY9t2EJMIpIPt+fw`>j2bL{>C9jt)&gddRpe%5akS(|eR)0^sER
z3<2g=@QYD!aZv9?mxwm#Nl}YJRCOFISMZa)Ko~)4LRx&1Dm6F&=pQXg__$dc55p>u
zkvCuogf&Jl#R$JIdy8U%@K7SOX#H`)z=B>c5Xu75)1#OG0%FX8MV$J4Po6!iMS;t&
zuiZ}_5dr*gUyY0FxCO6t!~*$|La&Hj0z~1#2w~-v?lI?Y(bB3o^I+cKBdI=KFftRC
zz3f(x_tUAVZl1S9^vLPLu)O73lXMg?fGbh!Q*TQTiE+NePnN&HCm@JKtxJ;=dG2w@
z$NFmmobhmzgKD3GT_7;jXTq~Pb*)@A0Cl9XN8~Jf+p3+^K~xoPsyVsYKCfa>;?hHV
zHTl}wdH0*t4`)~oUl*@#G?KDZL<wNZ<jLWxbDO;HH-2JTC!w>!9DX&==G<q8@*|{5
z8Ge`=W*Fkhf`<bM9QDki>?FhrLTJduNk9hsFH#i1*RCpeb=T2=fB=*>q}K@q#8wy?
za%3#C4im=4Q=V{pKh(t(As{7e+pX%M1hO`v12=9I+&$N1By=)9KK|UfWyd*Mu@Re)
zr61&P)rjU72Mbj0OoK`jgW^Xs%CV*sp^L0ZMm>0lpWq-LSdgBSG$V+#7|_-^11z>v
z&&MW#`jv#YEj6!0(~}L0Viu69rppcg5xwpvDT%@R0_o4t$Ox+~Q+<l|L#!=si4e#G
zXBIKH_OKkv&`l0?+0tl*)b#Z9o|j;Tk&hGD^JwpiO7aD>>{eu6Tk#Sud;VMns3}Q#
zBO{y3`OJ_dpvr-;aV^TA=tjlwc|e5jAgMwA^HGe#xpU|6LvB=6ZeEJw(UhK`+@TU6
zBAhF^tZuN#V7JoH@fc-_#W0OYA`kjB$uuDA21t+(em7=4Dl^m@6wf6NvmKl;DwQHH
zKzN-B`5&m6M8a#&SZ@#hEN6V~d9N|oI4r+hnafc$B$|h@4q-3jij!a8&>FZaZ@qs%
zR4vnyag$0B-~=QrD56yZxsqWQcy&4B5u6f(6=X)E{MN%zc9U}^L^F`7xM0Sz;k5^6
z?_$MlGQXQR5t5S4Z_hK8Coe2Fsra>=_eY1xU<AO|oeOjUBrd;Z?^<s_MyX&#A~A$v
zn5sX#5K*cp%!~}|JpiWY!E_3947b(S+}G=bT)oYus(x}Ra0M|EHYJKhEw0#9ebl^v
zgWC&%V@VTAe$?R5rl(Nha`#Kq1VjN$<LVH<tFP|$y|V;1<%{A|(Bh}-+B)MNd9?Bt
zo=f1cvvHPJ%B~+RcS>AbUsId}gB6#{!^79l;AYD2zuxTD#=pkSjuXBP#*+9M%aCtk
zq<_qep^VPBH~dQ3D4DkPk!q@OwX?Hxs4gS&0A@iJ_ffOSeZs+g^tLDmck)p@fo%2@
z5b>5X6cbL;aE!QkI%0XrDX#rN?2+Ssdy1({NjobkS;~ZNhBHn?*YbAV4PmQrWhP1I
zG%w-~9VxtF*MW1C(;J`Fr%}*ZI_F@h?hHobs+yxeONCclT8ut(*;1`6*TF8we=5Ex
z&Y%}N2B9w?G6ZvaD*mDWVoVl#1*pWcg_wytlSPM5%Uz}seDQ}J5F!RqbuCdBJ%koa
zDA$Z3Ou61q@gGGKc)95EZQRAw&t(gK@!$NXkf8Al?Kc9N5e5@j%yjxigky*L?@Odm
zD=g23_5ActH6Yf4Ttd-ZvO>bI4TUIf#3i;QPP?3wNsRgNXU5Zq7Hz+ZK#X2<mXW%T
zOY~JN;vz<5r~!U6?&k+D@7Jx?AJy7BVo>O#-*2H+o6lsxgX+SG-)@0@RYi%QM%BUf
z^Z)#D_V9?~yZD91=uv|h{$GDZQ6atNz@&=)Un6**wC3>o1qck^j8krnr+6t*lbeI}
z_1B<M1V=CHLj%@K0^{}^6=4)t{5G_rmRcjKJJ|yqI{x>Yr#}=a{L4UiP3?b3^hAHV
z%#SB@dk9C7-LHW|T*<!9Nt&^H6C@u_*he2OO;3MXAWAO-H>kLncXZMA0SDjTXV9-n
z<xQf#j|e20GP`M-x;(7ozn<y9&}5jyYt7*dKpBa{PEjgetwO`~qUMNaO(zW#Ys0la
z()(wdMpiU9vhXG0d<CpZe`X!|)L@%vYDq#Ah}y?W6h$NJP~=smztX3fsedSq{b54~
zbv+9|{0Rmh^}+@-O0jdI0br^M>Sm<ZF^|P%y-~QMW*qS5w3oBdah|m8nzSQ(80wE=
zKR!7QEY3R!5s6Vy69=aAWrQ>#s!{@?ofvR77oe>oFHZFKhHD(F`)7WGN-X?=0gWM~
zD$RenYoxnh8%z{NiZ)*S6#jbFOV+?Rx{XC}5~Jq31GQspy1e^uy9=)}GMZ>`HYahx
zs0Hg0HPb8R7H|maFpVP7xA%{1LI#I#osC#k6@6+zj{rXcJqQSLZAgvWzMMV)*B<sC
z7Rl)Ijq|TTv854lf$+R7k8RYxL<QfOR=ttbWjvaY+ncUiN6i%=U3dj*M?SDxNQ}}g
zZ?XoTR#_zEYrCI4Q)1RwSrH_OYC<cDce4QeW-JBy2hi_g&Q}ThWjj9@73_d9qr}*K
zKxoZThou+_QVM6_xru6{7EBuWFpAAnP>zCX-wE=5P#E0iN(52$>r!SW__9;8<-y+&
zMyO16I2@>CE`Tl`g79Msx_L{0JD}gNoN*ycj~oI(<sstG^LuGfT~aF*V)$n?l&7E%
z971C*QEIIBZNs(eWdrMe(!B~l<K@fm!Ky}+ll(I_yy7_RgSIuiYy?%5e^_G#@<F^p
z3rZ9f7b%uYZk=}u%|o{%V?Y!m01s%30GRH``MeqlFZ`=;i*@(Qf*rMg8VW^xfnM*f
zEi^!#TT4`HL_6EGyh~ztsMF5QjUQ!~sLjh2xxCXKRpLM%!u<hXd9~XRX$0L?VCh7S
zpUBdLDAc9CpImWv=ZrE19h!3kz_J!kmBSleC~gbw-*cGIo5%;$&kh##M+p%m2I`FD
zKMRr%Jo4wbT+Z?M<m4uJw~i7u1KTEP%wX<-Ut8vzo8dL`-hAwX7C}}_cPk7iNY&_w
zPOtzq&9*;TgLm{#!(u}<zLm6(pg4fB5!yNH<$9b;^s3*3G>+OKk^2zFf||1-_`w}e
zcbM-m5A^}P+ZO_a+EhG-0Y^EF{7EQvLX!svgQtjy$Z!W%w*pWpLc>r;9WQW8UCLMm
z1G|&UVm|HRis0{WgfR{%KNVf=r?E(8-9??|%+p?9N1CYLmvf0uw>Tv!!KtzG@AlRH
z2aAmN=T>VN&l4(~aP~nyO6-ir%zB<&9mej=&&~hmHclxwy`Yr;ae(+guwe=O`c)iN
z6BBq6iU^>B!9}qM6Uxy)>9O}G&_4d4|0tlN5P%fDLiGoh1;f8-pql`Wz)4K@3Y@;*
zZ%r7)ygV_TZ=YL?;)G@gb>2|Zg3+uRwW)g;R_1B|K@w{-#xNRfC5F0&Ou=Z8d%cQW
z9L)Q-B?3y>$kBN;?d_v~h6~~B0HsFW%>@~{sQ=To@-uM*BI3n!HPMbrUq8&&I@w=n
zx=0}~1ML@(3{(GFl83-zm^8_V_F|Er)Lh+eFHDxg1RSEh1Ul4^sFh5bk=afSUa(Q_
zo$e8v=j>EDQ8H?=En49sQnv^=HI?#CJpcYw9C#swQXNReW&J->>vKw5Vjq!S1c)@k
zUDS2Ip_V-lSsc+Mz?k$_d{@${d%iylM+6i;V^5yW5+TTp<GufF5?*+4N~8ctA#$0Q
zF8RWAI2o^`q)MbsNM(rIuZo=-R<EBLGFPlvAqs3lf|nk*!Nc-$%Egsju6a?rV_)nv
zeAdh%o1zIwTt7n92@VxC?d7?FYz;LwY93#I5y&<Sj;PHGRLZYm_yaqZx9AT>E^x5`
z1yDePtZ;qEnXL{EqeL_3Ue*d559uF>&-RX62wD(Se5rDWOubO}N7}sq%fj&Y94>Gc
z)LA1Ic2wEJ5dxO3FqDa`kme!-$vNPIFg69EEaYU(J^u9A0t=+2q@n?50Nsu5c0s)a
z)^HBqE8ak=UW?5S{HzGqV~NPZkS~E&Vuy;1V2=!lp`2Y;Ur}6l!kisSy4AD3P|wgS
zsIOL!5vn3RpO#m^p<1aHPd;tH9D1KZo|Tukg7%2r-@Ixq00<)NVFr=|PV;D~Z{NN_
zGQGJg5=b%1tFkj@EM2)9wZ2Zsm)KQTHFDu1>n!q;dNU2X>JEHzB&bTArddw4LYlS?
zTfTBpOih6=9(%CBHX$oaMeIt;j%7#zB;FsLE=;O?Y}DT{Eh)!@+;=VPue(mmK_KQM
z76v07c^ZCX9PJ;TNcpFc?;OmT&?g%6f&ATY9+u*_1{|BzJFbsG9!BjSL20Y!2mV0x
z8PcHub3)Z=W9xc8ZGAr22zo>opa8hD_>5Ag-wU>uy^tH&-oW~rb1F@*E4t9u&dvmt
z>8lr|7;E(!`Nlxl;bW{IOmzVDm%u1IN~BSN!?pCkqCQC~e^fb$dO14lX5bh<fGAiK
zPcT?ccvxt|yB0|h%C0FmKVy)b(k2SsZ<XF0pN`LZz8_YjLaM)g`!{M++Y8sWEnBy)
zP+J43?!CV9PfOg>;ibiMBUrFH&j)v^F%zJi^|B3dZ3-dquv+5t^`x-*m2Df=v2XVc
ze_JWam(Nfm!skDS!xb@A^_xm;^JsbJiQ7R16YOOgI+rPVF#KC%WJFGCNFN2~SnIe{
zk#rD#?{KB+1$v``GG?`2IdoB23@=HRgQnR~1Hk~HD%#3D&L&g%y{$(S*pnjuX<LCK
z;toT@`%~64JrAthV9$jE5rtK|2PyTtwGQ1Gt}#rqG|dn7TMA&XL80J2?U_+eT3>H-
zUrI_!EZAV+a0>5eh({7XT_Fc@bW+FxI01F1@0D<`sA31uh1fZp?gCNl>#6PQ0UbeS
z<-97$*gzSLb+58Rj_rxQT!nS%#txW%Io$_=R^UG|u~DGQ(e)q<22H_WwxBR~?gj7U
z68qsyW8_(xu;3-ryPQ>2R9spn4ocJeXmQ@&*7j^_svo)_q6QSZ%xKvMuLJ0+MmGIO
zO9NGMGTh!9qzY<qr?-#lYC=UW3gjv}g3W^!0Oie}&n>LxgOF+W@G%ys{8AwtM{ibE
zma%jjmLfMO$KaiML(W*D^zi~a)&mLeGblSm8?wYqCbKROFVH3`EABUx1sfL7JfcNn
zGl>JOS-5vOsC*BAd2IkElFZE@1k3a~)5bA+^k}fDzni!|+OC?jqY3bu;s}##azl!C
zs+;C|KB!WMRrnc@dwbTG#tfVxMEnv!B+5}g8<Na<+g@J7>F?Kh#!o4;@-S!y<ShNQ
zm7|^uGtLzKUg1lI7^mP~i}jdha>%frdXHN1BG>^@#c~IgfT5?ulD33^4EUQ9wNgXG
z4s7#wU5gVeoDeH;isET~!*HM}HBkbe=fD2&3(zU7YXKsQEx{hJEsPjVyie-#X;T!2
zt`^&&5T?fV1TFQ&(UE~%Kmh>`1{<5}aaDKSjwf<?C^ZBAj!|`d-e$A27oLvpn4Ne`
zFt5vL6pPTAHUWN)bmM^9@NLXntQS0FgH@|uUK(5^I)Fj;JOPvhSl67J8n9zGoU~xu
z`mQiUcOdY<Ot8QY0P~hDTY6iB`&z7oyDEq@0%k7yqkCY7Cz&tlNP&@ipoEEimyj8N
zhu|2XV+b}>07NLfdlZXD3ZQ=%qPy&`TflllkKi11zCuxxPF=Vr0Cap!hF<sjbg{?a
z9jQrqPHm4PaHW%l!3R@24o)N|jfyjlaRLRM9(^9zsYw5f^AmsI&JX;CY!|V`4lc4H
z**0!(q+L-8O1-T(?H|NNzJH^BOH=1r-L2kULB?*PeeH!&y#bRaPo@V5BF$p`ujwJa
z4)A=S%nQURGzt^K;>Dv1<Ux~9nz}@;hFya)82lC>V4{R801NV3NSmoK=))*Ku<&+v
zp?ZA7=8Qs5d-7}AMjBTaPt5;X>$<a}6lM(63~PxM+#1xsCFu#astil&a#nh_G}|YU
z8B9P>h9&?|>>Cqh)_n!atn&HV;M%Si?NsVNkB-3jmTrliCMWDcvT;6AQ#6pitf6tm
zwhg`y#IQctfh|hREG(d6kdm?=y9xIoG8CxQ2AgH^QxWLAFCt%41QlZBMn+m-^}g=l
zVFK8NaRq>`>pr|gcX@ljznKpEJLnjkAt@y@@=rC0l_ZxH^$#x}8;{FxpYTTs%UE|5
zOZu?x)M=}^I?{&qgHzV(E=!m0BY*RvnWq~xp3a;xV+5|lgi1Jzo^XYpW3(s;1|!+9
zP7pGxH2G7YU!p=YJu>&zsYGLT6s)t<S>G9e9>bc896iQ&@ftG$O-bq2wUqB0gzHY_
z%XucBBQ702qJ9AdoW<FO`hNplWyjRWv%_DFW#M*1a9ozNi%x8Yim|Z>+oqikC9(D$
zgF>H%Oc6y$;<~>|T9-RiF?|;T>Zqf2QLi}^SF&T}Baw)pii+T5D5rF@%b1hVQT}0#
zZGGrx+&|DMs%SQqrv~7ofkGkf9askaO{j;M{RXD70B+)_*#-u+LaICg@!+*J;~9-3
ztA4;+n#GffoN*oc!~Yu!!v2|}#In5{q1AszYgk`{#_GT8Sh%s}sL?o75JynFpj5Cj
zLST5`p`x){wlmD|rCtHuR}LHyGYZFb0vpBdjh_(HB`D+-`0m!dX~Q%eFaAVye&#d3
zK5Auu5`&L=ZP4F-RCa(e0Q{lkIW0p+@!G<@x2<+D*7tHtGP#SKky|~m$uh&LVU3hR
z-E*MP(VqtF&sV`IZRHR!v|i~KO!j|Cby$NV8*-&;3+ra5$}uKVz#T*DDBEf{J~nIr
z(7wGo(}$|Sr#>D$q`hL#j?e&v?w3}Q_vHtgH-G}Lp*|YoP^*Nm^A$}Bcy*Nj;~Qgn
z6i!3Q^>--m=RLAPtqQ%Z`ZitrxHej>!GoQ~elRCXB2|a?Sr?5B^3rhM>*LOzcHJG<
z+^>UHyiMmyme?52$ibl;e={F`^gpv2J0bo*K(Idnw6mI+?RdE?=iB#}sng&vcEoI!
zz&MXD(-@6dHsBSG)uPena(z(c?Q<sVDl`2xhDB@LJ=@v5!^&55&86@Bp8EdHRC!;s
zW0*+KuZj9|-Tazg{X>s;$NVaC{(I;!wyc?pX`HXFb5xXRTqG?tZb+-^F_9rmA_6%t
z`Sfr<teI`%Lpz2J4HX;!+kQ`l2eRYPCLBvv%7U)<XD9jG1M<+mz!R>b>8d7hPYw+1
zc{Rq500*2*k5Q~axOd#Gd}$v}Mg+ENQ-=zS9e5Tlx<Zbs@^FxN`V{dl^-(vxL)tO~
zt<`m_QNF;odmOq7*+MEM_r8NMVhqxRg9i^{4+pAIfouuAPCajqRzN)S4s>TSa?Km@
zN@QSEtaDH@mj51Tcvl|smTc4;$kc)k;m9)x@abqGFB+l;HdNyfCh!e`THp7$zHB5t
zR_Vr^@o0cVr4`%?<mMF1pu#T4B`|7W4|AJIkO%6KAO+`lttQ_`AabNsiDavwD5moR
zeQCMu?jtJ3hK6qFGG>NIfby;-zKR+j27nBu5K0n|Z4qHy4l1IWIA2)CYI1tZl}ejr
zO!J?GajJ<UYYI)yoJNDe0!;q`XRX|bP?uzAXU|ewsH!QJYT#SSHlA1c0&o!$k35)I
zwVw&kDM1$^{j)y@2e^58N0FVv^KCbAhM}W4If1Bh>$sO*fG`n6_f!-$&z_w$dn36Q
zpB&RukG4yoq`ea=$b-!jX_lH-aAGTD<1Z)VjX~zbAgIB>jBHT_4=!~tH3K~qTs1^(
zz$B@(NTLjMVcA-lA&&P?AQjtAZ@|suce;1J0DDPeQ#<~wqJpe&A#v(PTza6e{dfm5
zFfRmInw*q8nVZ*;a14Q`7kHT%)8~4KDG+p7OcJ#kKv_ke`PNOTH3l0`=JNA7C=LhT
z(b7k|(+fy|0aQ)%IK8j14!%|7Fro@_7B1-V;c?Q*#Rtdg7O_XS)$q{XAsp+QaTJI!
zl`}TTwm+lRYiRy6N>J%5RFSVO0zd($S&<`*#xw=*Pe;=nLbyD$RAaLwfF~cb!5Y)M
zeLNO&hmI_881GqB?2*q?ALW;mX?uC<doO$K_d8qxv7&dk44YLqeuB{YyB<(niTcAR
zBY=mCi;Kdw!VQ@9geHnL3oOvV_J8lzvSB#YUpj4@_jcWZ<34p<3wM6+?2*Y4`2Im$
z@yI-&ccw-uW{8CEi!KUi++-{k1~>NnSx_z6r(|z#w?WjV$%z<-OO!%0M5Nv-OI<X!
zZ@=WhEs%JHhrK7&r~Jf2D;zaB2~?Jz(3RTPnF^l_L~m`iy-l_2)~$0_F9u?`h>GH)
zMBxT&gLDKqc#UrbS^#TuBCfu{{bQmO&DKA3XGzI>U^FMV{dpjbqJ08HN1hv4U~p`A
z0ovN+5`c9G0`qMDZKy8?u-(CVZj6BgZ%tncxWOQaf`Z~X?#4oF;xT5e7ObaPYvbvr
z4Z?J%W@ctqnC~_VYmBW#yXLi~ra4Gy>LZEzPiPkQ3zSjcoI9TqR9GkKPdN&3ab$3*
zXw0Po&mx{1*jb=1X(nSl<O=}0SGd2LHg+EfnSBtCD1n6m-nYtzz}<=7pyOm`EBcpR
zJrl43@6W0M*QWT;Ah$UX!ukSvS8ELmF@s^2a8JV$(uo1G0KFXb>t<NZkZ>SQV6C~i
zD(ci23joy!JdwzJ0w{JNIhovRP)7j5vC6<e?C7>oBKCy4CLLMJK28S$G^O)MyI`l)
z4T5j-g$q6~8==GyR1Q>{)psJ5MZ)w%%>gbQ*j4*l<@#KpA|gHlN;=XrW@H1apv@2*
z;Wd+9y+lhC=?vTnLH)$Oh9wJ15Na40B&nc8<opBL&vrHl-6ekeQ<Pi%Y#sAM`%Q0k
z%j|4Z<xV+!mMS;EiraegFf~Yy286k>XW07_DvPpgZEY9e#-gL6i9!rio2>1DX(%@X
ziGrc{3G6+JoBs_ds0!4ZmjTqQOk`8>L5GMxF>6qCNJ~#|0iLc7AnN?NbJXh%!{zrS
zy4D97C6P;bphWZpPj*SLfEV0(;Ru`p=|R%*Ebt9{*)7!4^ony-{(NB=@aDiz4ar^c
z!P{V;!ZL0So^+etgTEmFrKL`>pt)Mbo+_G4$`6q`@)p<)JlYQl)&f#ee_Vpv0)maR
z6Q!+iOZXzMF*Kyy0|L!uJ@>(K9wRz;CVQBZma@S&)n%4KyB~{>wew-DS)ag5!l^iN
zWZ#F;m1Sk0p-#C#NSGYWbx@p;lRYPi`|aB#O9I@g-m*^*6U0jHObr2L@y<(5auOK+
z1KI1Z-j}H^THEjBmZNJA2oUW&TM4iD{sz4qs&Im!^hfk$byy}L*CU%4YWYC<{k<q8
zpp)C4gix|qCL6U_2UH(PUp5a6cl#J*ci;%6P@Dr`o9|@}xeQJX(nw)p3}6xv5z<<s
z-z&x09$fMTIk7(vZbTvxR~^90M70BF4sfZaP_J^d_Gt0!CWg6pX)`PwA%`eaBLNIZ
z&V4xrT{+-#G#qy=nSmzeZ${ymgX7pDcwsGCbhFCHBAItBBjSHnX6z8w;BitYPJ3-^
zl1iOFckbh7&!}NnKbkOap7%YeMkk><NOlhv%GeDKZARv(g!NNG^|@86h}BMwxV-uK
zLkeN_PTqCNz~kT+O|$N8OjY4rKvO0c--d0iR-ZV2p9~Tkj@7Ru{8U;y>g=Bu{KnLo
zj6)gJwdXs#0b2m<!JhHjC#~R+SivC_=~WiFn_#H1hjGCl6x$dyS(nc?$jv)UT&>?o
zI)wnNwDlhY`a|I0h!C!+usVlW_ViX4^``JoP@hUY`~aZ9e(OPLZ!2a|BPcEHFH~LE
zdmTXI_JzYVgvCwjiTOlldw;PERF~$P@<)NY;|v2CCl4@g({L>5ccpRaIB6l_Fm6n}
z+DI~BFx;G9-vaFfa8n4kkTkuY#!NLO&uz%W;pl~#iB=>}^|!uV-#Tg6C|2vJ%Gbm?
zfe%3~ru74-ofmP`G_^-hqh6i^tQ(N9P{Wv{X$%Mj+_UU0PtF1DGT$OEyjEYISF@q~
z(*D1h+f)L11r)vj+aaj)syKKNa$;;RrCuj<a-c8+r#%jYp1Vf*bMPCaumRBxd=^<5
znH~r#awFxZJL$lCp<4PbeHJc!up1?ZZU~){3t9NV0aOJgP|Gy2slvz*Fg96ALMa0V
z4Z)vXdqK}vL&b)DZgl~OSO0Qfo&Z8by3|_`G#kHf=PjGisKcV<c%wAlb(}TcM`V2Q
z+#9mhcYKUHfAIfqph104OtX(ovlT!l@CW5`*xkaVzsY;RyWfA+Is>sH_Hg$j%pv8G
zv=3F_NRzD$F}uJ{z7i$a3l*GFx6-m=2&Mvfg8FvsR>R-1f+2Db1i>a_t=NVy{34g%
z$HqrU&6r^q$8HzixVlxgbS(7?UwK!axH-<wobhQo?Ec9F8DGzfWfBjAiE8E|yT;I#
z-K&?%Ub~Ro*qu7XTDg*)MW<Q1mDc-9QXYy-y{s7c+#VjTk%y6zGOR<>*oQ5XxbJT=
zqVZo<zJ15Yu(<$n_;t{<BXs^X<8NIwZ3t*M>h;w=_Xk^RUJ#Mstba5L9jA1Z!3o*4
zPTT{#;I@}WYh;s(&MV~dFrhntRu9Ft&lR~mkk6w6`8P$$pWiyS3Xlcv;Q3hbTku)>
zoBZtOuihQ#(;U21E9_4!lV8c+&rkakOwhkU)Zs_{HPF9F+VHKPX%`=*h`-$ejq|o5
zt*xJ|PPqn+zcmCD?L|6(IC!+@0C2kYho!-l6Rhq|h2}UF)L{E_a`1FCN3ou7?yrvi
zJ@W8(S+n+^sYgE({J*KUjsPVo`xnRN-+lUhY~u7k`}9OX`5pB6IhMcP;8!la<L`6n
z-=9_e9!W0!=z&7v#iXSxb*AO6{11=f=cipG2}(Y83CDd2I)6vT>F1Qwul!cvmfX<H
zUTw(M@%oJ^_H)1```KKKq6F{1JnNt3^4~uKT?WN)O3YoNe=@RuUG1+}5{m8r087GM
z|AjgB^L>9+?tgyk=OPK$(fa4}q@S7wqfH;{>Fb8lpy=$$Rc8n#);&)jO-*Yu_*?@d
zAU2lxuoy{~KhL^q>Hhu>(@+n$vqKBqu?H`V7k5+Spm`T#h5|fi{3Y!HaCLydcT5ty
zkoY?TnPeGFdNblT0(%rm1~+R$B~D%F62HM?{0!W3uz$ya|BTEAA!Lo(deo-$)V|jv
z(1y(C954tnUPPb+|KD2{CEp`IMg0ow{e6$vl!wud+yG8EVgp1dij<|Gl!ipb2e}1$
zrNzL|aOt8&i@J_)Mwo*<3dRXnku^~CjC92kl4lT4Ywy`bA3L^-9d@z~U7C9tyht|V
zeBp<&`y_qGyc#-3qkUB6MyNuOXi}m?6at)lC`A%P5)I!$_+;*6Cu77*LV8A>Qvk#u
z{DC{qQPd^KKpT}ichqeKV-PLR_Ae{nIIyihka@s{)$Q&QrVdJm%;wTqb5m1gsP;m9
z>Zc-EQboUIw3Sss*bI5Uia!LCFwAj>1Pd&x1PDF-SFK*{3b7foeP^m1o0^&~Ia34K
zamBOIa`c>=*ymXM)c!X?_{F8q7X#rNf@svX?bIvq1(G6irvdl>SG~QirLXU_jI^`>
z+&Kx@cY5*sVH8TBLhOmjI>Zjs*$4OlL7()QK~gClpTlr$la(V#5Fo;N4@A45Pc^oh
z4^+#mpKY%}L|uI&zmxj%{2ug+Y}Y@eQ#)1JuO1cWik0YPtUI%I4g{Qr!#w6X{D9Qr
zJwyalz}p+&-`7NTIGI)=>?V}u;YzX?+N6s(CtPp4+gtK4^8Lncew^9m*I480X80|p
zqa}LDpndyzc2C=z92RKHyPw51v)3$BO<Lc`{_yxiyEl%hIdwH-N5eX!Wb@l~bw|v%
zPo4QODeLL3dkL{MYoqI)-c1Qo31SHiJ-5_;rN&&HqHFh?LrlNaP1KpRsI|u0GcVY$
z;eO1>o$`m@zf-OCuA8l?Vo;I#DcVY7_-Vbke9U~wAZp|77HkQR$BU(E-m?N>ewF3d
z*GrQ(y0G2XX>g24Y1txQq+ovEjQkEqN7KZB6u0Ag$ChModtYlTpX}@|FLmk`rqAb_
zUN>?%u}BlA3QfH=b<bSiCyK+|ZXg(&+_yr>>n-MN3`p+?Rn@=ON0bO=A=n4*M?P2<
zY3u*E9r)?x>&;)akPRc$g;5jLD#?-i@Zl$&9r;VLJObcKE(fbgP~ed--duA&nOHfY
z!DEb)9UUATY;BDpr~v3uJw+{3sRQqw4X6bP0Rr5DM}g#E1vU?GspGf(9XGa*QY`^<
z$_+wF^o4$o8v#;sKo~u+OYYvS%Gk6#IyDLuNO5IlZ(w=I$<44kWXW9;Dytx9@s4<0
z^HKgc#-_M~m#ib*AJi3|`hm;78a;D5*Z0Y-I67+sCQEXN$Hw5W2&=^l+o^FBH7JCi
z=4W)4$pM(D>`{S)X`FVL%HWzMvGFz_!rVg+?&9i7lr~^QnU2HNfNP+i;U%#4u|sWd
zt|OKo=>7+xk%8_z*>dH+gtI8wLqDC8;s~F7to?}x)m7JZXS|`x6n8^{Q%sI`r9I@K
zHJ@MI1abkHMs<#)$-B3cP<~6)R`X0sH0@}#T)p}cl2deiBqDiU;U>#(X<#rcZXM+|
zeWJq2;bh~V3U_}XkR$|0;a(OEs(jC(i5S}HNv*xG*NFv#mw?qt)awo30v&H_FJBVi
zO8L#yEdoYOAZ*N@9-P6>CzOH}oecpq;@c?t0e+~mmme-)m{#N#2U+bVRP#`gZ+>}w
z_n5b7p6&Os2b2JZ#iB%|4e27e*e4yDHOzcbZ2TEdD59tatuTLnFVGdbv7Y>;($lBg
zV2FS&dVwKR_c4>&IskMA?gFRuW$x}d&GopLWKie$wu?6~RvJpLX`R^WDLk0{QY5dp
z^CK8L6zfydpWQ0bFI44GNHwzX5<k2Qq(&ldf?`7MwE&8@B)xi>eT85325@mFkOGl#
z=^dN<9w{NXMR@IxL;X+@70Z*7$FMQ?i?m3z1%Y@TXe!vYF#`n@9L<K?1Q&#Y?qRu~
zvT|BYZfS+5y53IOHVgVOvXch8fsCmH4X?RzFP}CRd;Q*o2ADY0E*gSrE4--yr<5L>
z_mR**Ze%K8pq1~sxiH+Offr?CaA3n?V)C$0L5c$ir3DW6d)s*dtH|~m%Oe{k;2T;M
zSRNE3$1yfBQ3N_fR4gq2-SUOX<lrg|DJfQ;=Yh2L+jpxP@)d`@cWsXHt-<++(~Y>1
zNF?1u15X(wVah6m>0owE&p)H#?%sw3vhST=?>ql-D~(Z~06a;Ev_1E5Jj^ANpr*z-
z;CJmNP)Jfe02og6dy55ty!ecs@Xt}f9@FyyZ|hbCek(d9#DWj<9t2L6j+?DtzM$CO
z=_@QZb0)PdJfj=c3iPf>ep_fg{~WViVH0*KvYao3*K9^lSxaM&W$n8#$M1U#l0H?n
zfP(Ov=L+ac&!0cvt#X0bntKy$L1`sAY5(76KNt;4Gfs|(xJcn_gU<N+R>kNlmDVp^
z`A>6t#}h>hd3FiJRlskC`x(!P>IST+4wpd$0L@(vX0kv7KEw<jKBIbUXyt3U-1>L#
zOlk8J5%l`*6}H^@t7oy{xvt(1+s~&X6O{}C6Cv_ah-46s!_dQrzd;{;%F7r-iH?d;
z1NOCpM^|fU58y(dZ?v%5^JpG!5LT_PEV%Es1NN54CC=_E<jnuLRIc?>sxJtAb_IHX
zVMNin9a%VbeLJBE+7E|LG)u##N9!95q!(RjD6v4+CaBLxEafAD+-)IKmTPR@ufF`v
zo2&h8W{*IwQ(CtFR`td<O!D&?8PsYIzmJ9SUI3S@?S4?Jg8lyTbC=~f5n&_UyvfF9
ziGC)`F+jy)-#fq<bR@982S7Sj^k$D;yKd}dCERl;`{LUqrKF`vBu7Xv2#!<}0G9_d
z^gR*S06I`{=sTfXreY1d)E%WcqGW*l2PHfga6)AmErD7li3-gqvpN+%V}DsPCVx7P
zYU*)-@)Uru$mPqH5$^|^aw8b;2b$Lm7HAY!pfW0|=$Ca)8JO?<ymO3{tZXcSFp91h
z6x{+Hma~7%@PrSfOFV}L%1?Q^Govy&HBvYKC^)bBk<I-2;!}T4_;pT_;axE%@7Rw*
z?84%H8awkhU%XjIYzF3p$5M&a6F3^4{AfAFxon`U{_Bgo1Idzw#2aLwa??w<*>?XC
zv+UH^-u`~o(ue0PVop?JyJCL`jbAq=+fV1G8!P`0H<sQ1`O5AkVpy54TVVagehm@-
z%NMu{`jLiQgj+NJiO7pTD8rIJGM`^x^!NN`c0?J@wBu!2{A{~)qQ3uLS%33|iwryK
zD$DtQxRW{zj1&4Fuy6Ud0r>f>emx@Ve>@V?R{!&nSSBGesO<cYK2JP{eomvmd|{X(
z&c4eXk%n_N{f9Am-aoVrn+%E*wV54g{K5WHW>@%MzHsS>2~I>VJ!SBZ=hI=`bwf@V
z{i6qH{r_;YNx$Fhj;rAIU62FFx4l!v$jtfn!r1t6NC0T@qt7b36gDFk5eCf`Ar0h(
zkKd+&{Ym9!l1reUkvp}5j8j*Sdi<)$xc`A_=qZ49gfbh7;3<knBM5S>w22$tt?Y-g
z0*Vg3@8f#y5YU3zEQBkQhy{uX@cr^ZRZ0$oONl*Vi7_glHPAB&M_fCAJR<5B0KPLw
zIuxhIUp&yve8*M%WNvRX5~f^Nn+{ZMQOG6o9<t176;3(n>CT7@@mao;`x|OH09Cb-
zbW9`L73y-cYox3v+;4!$CP;$B6$tS63oNiYntMMrW3vXp=?oEyEU2WQPNCv=Igg`A
zWnlGL=l_g()$8SUAiVa4u$nBc(9dQ3<tWJ@TviAH9vR!AT5IvqF_y^d2t9J4u&BEU
zcp8RF6SW@#ukCIu(&-;QTI5Nex}>HWHIgwX2-LEu9Am?ju1`hE2Tdr>@OIx1-nCs8
zeA<X`HTkrY3_l>Rh=w9JH$uW4$B4FmCVJC2dCnQwGDC}jM#Bf*1S)ep(94b+DxZ=2
z3>v#4_NAI7w7}%DN(OORnVD`rt-z$YOTKs2_T{6aG2{)kX9BndCu{4YFu<pcND`5d
zCnAA1H4$!kFl=}3vYytz#fU^uqXE=buOg~MMw?qZ7&e;UFZ*>}hWgtVe?xYoh|RYR
zkm!IJtW<8w1Z(cZqXIWvAN<PpF2m>M2%p-z8gU%gHO+%PNphSB|BPp(dxRG49I|v@
zI9gFJD({%7hnK<5b$iR}+kW38{k)KflKXy39kLJt91en$j>L&#Hjoz^Zl%U9J4J9o
z?HLr96C{^OL~Io*0BS(4$3Wy!>O`{eMY;BSu&@|E`ZLlyV)2Sc)U+E($QZi1ej#%v
zz|lC_q?Nt<9=!xojy_SIxF`vXOsi4z2l*C_wL2+dKvE6cmKE1`mV)%CsHo_iOJOpK
zLXD&K77uI}a~{QbyvRoAg`m<3RhuTkF9`hKzI#^-$F#1zJ@=tyaK!@ZLraV<%=DYx
zu@k}kc6oCbHK%IF9MY8bUR3Y8h!1=#B>aBe>&@0=Ua9>MwK*BePbh!{s(@K}VOZY3
z1agfp(@=?&4@!UlILqT25_UYZY>2y%N~#7WP%X6UldWBZJB&pgKP?;`2Lh}k2#{K0
z&Xny?AEH{n0%1x1#Rw|^E<x(1Q$#0`#ySN0%a`w0aoyWdGqUf@gQ;EBi^_)@BpFtC
zxR7Q>pHId(?Zj?_@MWhkM`3n}P*zC|yywq>9ZuBQx8tr=IuWkJbO3~GEJ(duTwIBU
zb35a<I64L=oUQANuR#fw(pyyG<Vr)mC~Q1#<KBFPjge>GvLa`Q8#gr1KeWor`g%V_
z*<|L_$Obe?F$F;x<POvsYp!p=lm@n*ot=${Y~k7+8$KL1vZ(A5#(qUjOYmHJgjBGz
z0P*NiBV0%_2+1A14Uk&XoJO#6@xg3#e8oke6cWyRSFG|$bx~<6!bh@4g;pA~p{l(S
z>TPK9Z<9`ikTTSiEz#=~`l@HmetlisD?8qNit@ii&#Rm_g!grrX5m$zU=DLcrr`9W
zSTAQUtj|aBq?FW0*k}bMQ0b0vH^jj?Fg`O#!Z1>{>6+t*HZHl;nh!2}<T?E@K@v@H
z;mBkGQ*LtE@eTP7LO)ohL?BmRH7BG-{;M<=sUSp9*idq6PoPJ84)#qNZ`9FID>dXp
zvPmz&<J-{U75OyoG*N~PLj-UCE-;w;4un^DydO6eqWMKCa^$A=A}p%<H*ZLD-dw95
zlmMp6PGD_B>Ln_4Uh29DreJ<kVGA+4&GruoPBcgqbIPG!Pn4zTGt~ZeiT>AQC*SjE
zmy8wQ2OozQetkV;o9%o5#-5Q8#q}s}cKZ~ow2o4}hluk<d3gr(G1!MvAFM96ZpA)8
zNFAuwKG>=uRZn!i(J}Uj%)SZsBN=|V!#XBIShA6aBRBCbc#LV|nOK%C8)tRx`U2R0
zfLvX6wNU(p>czgkESpXEELj%8jnE9_Vps8lDuGOtP^sGX@pc)WfDlyiSe0Ax+{uPh
zsXgZy%KnsW;V2-EJhlqwx~0Hguo(hdR0A~y{Pnp(2{iL@CcQv9+YQn!%)c*uvwVdl
zK~_qt3*@qfcgx>~*)%vKK?Q=)o@ZqYECjV$h?3y37u8$&`b%abHWiV<Xb>UVXLbJ3
zwuZfhoJ}?Na}TD(SY7Kof<#7DS-A^j;RWz(gX2^0K_{O&tR6p55dg2L0ek|9ht94T
zWmkAoLjC|RzH(%T&#{dG`5=o|@&dzrgb+y1BKHbfnE`F2KJ*|zBXB3}r%QbiP7z?i
zHUNHc^s1w74dPArfg*Z9EAc{0^?Xw~%p+4XGZl;g*3~J$>|*qT66-x{?L(!fS=|LQ
zxdmJDqdXJ0X_zY)vifAORLP0~S#u{`aqH=rM9zZch}8BzQga_1`hu2EkzQ@W+5i3}
z>tczLJ;DmI?IV2;7;R0MXGNi+ME`=@siD69!yOfnvyz#YDjG@keY5QQhAdV9xE(;{
zd_3Yy{BsVgEDDK;i7_`b%f%v@AA+V@SFvG$_<(~5FOtjvV8KTH$oXnWX++6RDowH)
z?#;fDe{x^XhbqNki6_6cZrYk@apA%v8)}q;K2k<KJ+~Cn-Wx-0JK#UpvH?R(5{d4;
zidxpDgLWJ{e*8G#6W@aE8Q}Lrf0_!88cOTl@X5w@*@jsN3Ki14t%Ap8)bw0;bg{8k
z?7ZIXhE6B#-%Vl!lp15>3-_r%ZR|>pAj(3R&U3_8IFE?V4<m5|Eu?9q4m&NQZ?%2I
z`rn^myX4oUR16lJ!2DshHH2dJxwyFC>_iAtt)d3V7EG1Py;eB5k>HV}0+7TfY%L|&
ztGiy}fa>h*#J|`)!Mzw`bisY!GK`Ffpm2(DO+`gTSy>t=N#Hr)Y|3*AdANA`+ev;c
z6aB(sn!@KZfl6KhLfE((ScTR$HbzE91rQ+s_pk&E454av)AHoPx${x+zT#ZmcG}+j
z?igHK=VrKN-@7~NPZ6~qI&vgSt)g!^F(1(8D>~BWl;UD5tCOZNg9&!M^!+J3*Y^X#
zMmYBDZ41D704V@dJ5f(B0OfF<uv3ldMIez_*ZWth$#hnxvhmPu8WUq&KgBBSq}>}(
zKsPJLW}~HDFz62J!#L97SVHF>TwV!tQ0n&u%SrGpE~`~wPr_yn*$SK*z`Q^IpasB7
z5;%)U>Sbh9H-DAvhj#0ZK0FDgDHaTbK!peRU9Zg_=le}DKzo=*Y<%FBFHPZORs-Dv
zY8B@|F-T1fNoc@M()%QJ=OqY@@_oCq?Bu<XOXHMGvsC{bFm|&n*LEGna0|*hE*|rw
zxo^x&Okb*dAQbdNpLcY<vV%b+s0HQ_QX&k;B6)n>>$O}W-`6I4wkXgI8)Rx`;i>a)
z2PRiwCxo@x?dqFBTv)qS4e%SSF4Xt?phm#+2?ni;%#M&XJjJD)Qm>qq!h;Gu?RlVV
z^CI2Ct6PFOuEnD(>5c^K8hFhggXjm=C3@uS@i^&y+|1s#Wzb<>=*Ob*XL3zar#xN>
z3}!6~Bm@SZ7#J#DGYda_cDS6QVP)$me%Tix$0H+cX5a@bxB7Q)mZTiw)=-GBDcaUD
z(c*O}$kgDp^ZDI-bZP<9u$KNnT^)zibCt^`1Ot?hrDJ#y<2KGKVAMpvBX{rh7vB+B
z4DlMqauhEOebt-kE%A(v1h9Vp_Un7M;U{I>4>qxp5k^BH>@VrzUlYdv`gcBS1;Q=2
zp9}C`zxe+y$oyT_|G#1RuMSJmHuN+IN`NHpFAJ(@8>n*nd`&N!#*N2{B`}jGgpWB9
zU4&hs<D%ilcE{!HS~UQEWF>A=UIDRh5Ikd-D~E^*puwf)izru^APA*s0!3HqhC`_%
zMPtEw9cOCfNA%ahm#Zw+nO^FKNEf?~%A!(YK|vP=*CdD9k-3hDIpFU^7N#a9l?Wm%
zNqa>x9t>y6k(qnt73`{#LF>lm_iNF`g_Z$bXNS(LMN3k|Pb^V{fd>390K;^nEOW_g
zOMe{my%65GU{m3k#8C>xoL@(vUq_RZpEs!DnI1Q=(-hTo<Kwe3Z`ZaSSi&Xvu~l&x
z6Ud$OGgu`1vG&~vgugwrB;O50%Q&6bSplh#sf}T6&nFLr0d~y}Enel{Z;ZtCG`_x>
z6#u|BK^4&#^Ri5|w5$$wJdo4pBDU{&i6RUD_8qW)+ho&Mps*FfdX$*JEWL_=q^+b4
zaje$QT^Wys`)q$aQqRBRMf4oy9C#5U<M3ARpr#1W?IZWy$}I$nAK1t6G^tiL^@(+B
zV;6O`EQ5Kg4oFlzy2L)b27*Y~8AUtAAn`GrIS(Sm`NP?{|LUfgKZiom54F6ny3-kh
z(g!;dYL}YX@?>3mR}twfy|W-hmkvr0eBZQ$IQ<BjTXbHrloSfl?`^q;UPMI1>Q$>&
z85>_|CUM4AwL(}~H?>d0*PxH%Ul0*N9zaB6zIhWS8*8r5m5tl2tgH~4Lnhc?3{)<f
zX+8&o$TJOb2QtN`o{-AQO2o66e0E>bH^XBP{|);UbJS|U9?$Yk`o==Y1WL4Q<qNmu
zyp8lcCLihUR9EOtPXX5#Wbbd+do7QFW^ri7>Z;s&sRy$Wo1tQa(J{oh5N8%O%yp;;
zAW*p4UWfeSMZb%gA}l#jV|-d@>QM@HL^|vM5+d~W?`*R_Pe+zOnfANmIqweEBEjDd
zp||?WPf-;{$E*ZkbTfgU=^D`xU*+===+Hn_vZ6~!9!L~a5JI!oYapb4u@xc*Ojjg6
zurz~JJos}$@;eTRv$I?0`wjX4j*u5XjfxOx>AQg0mfM3jgmECgq$^MRr$t4su5TCF
z{MY`XqE5TG`COW*uTbP()zda&Cd~cJu(Xlula3yt1v1LZ2-`t!N2LAnrAo_01Fp`t
zOFu4h!>FpRe9ezJ_LvOx=7)?DQt6;722zb9(k88lZr83|TXJ-E9Y91$Ik{$B<+2e%
zVrdFA2y6K*s=<t#&W>r$Rkf2y_(4Ah{NIN(Qs&{WI@_A2unQF$Rfy&-jg}2Rp<Ikj
z%~RdQ!Xow*-iav>W7ox$m>OMRFSji{_o=f9hyts+W%MFnGbc>x54yX%C4*ePJl_mm
z7^8ztZ0`~-rfdaaCEX@7<&64^bO?0-{$E9+6VUbOQ<PbMiGU)YAK%_DHxW!$tNvh$
zog*_$jn-evB7ZHE{O>yq^Q&z1ztQ;r>u8AH1fM}N$i4Z+Ul!2-a+>LVS&s~w*wCp8
z<jjuY_9Gg!NvaQ@QEZmJ&}BfXj~8Hw7}%`C<)zAdDb{hi_vI%9$Psi1WfIbJ<pmeU
zS#dG8;-zKLP#QYIQ3XK&oshtb#%rS!2fc>NeaCY5?+5e5g{BH@YuBBAhmR>+790Oe
zM<N2+r#oO0P(TFipdc}ET8t3@6{(<vBmO;X67{;*IVFf=+T0v<IhbUe?FVr<A>Th4
ztOWA;oF1cj3JOa;y&aC5OO)w7Vnf`Ick~W3tH+j^LUWgeH~`J<!2nv`w+7ac2e`lP
zAsGv6Ejw|_JmX3qV^jO6JhJJ+9z^+iX&hdDpaP;hQyln#<m@s$wG(@@Sbwx;%HHUj
z-akJ&h*^iu*{SLO2|&r+f@tL7AN>JGW)MXI@v1RXRx=t>2&CqfKm-ra8vxzgH*ZEy
znzbH93?uXHPaq8>6%F}WHRYXSyMMmrZttg}{pBJkuY<ruZob@;W{CtPKoK<t^!-Dt
zS9$?TM$=^P)J|}<5+ti0zUs%2{xk^mENk;CD=`(IgK+{O>&rvf%{qdT0JZ&AXowsf
zy0_ila*xj0#JZc~&riW?@?>CNS5b~f^yp@Bsr~4U$%D3O003wv#~F|@fs~G)FyT{A
zM?ZjzxP_WA;K@&^&VRf^1Hw+kA(0MFSJxgO)^2%P{j<L8mXPg$cyW#=k7?^GhkFk>
zbi9l6%g>t)1KvO84SC7JWC%nQ0Fs8R*_F@a*5LRl?!{$<>?oQjz49N2laWGC;LMkV
zEP?M>TH@c!f5Ka2rs5s{6>rIf0R>nx`1e~Sda2{1ao-_$`Y8`<a7G;K#Rd>Upm6j-
zjS`M}!0Jy*5~M={0x$(rz$2`z+*(VN`hP`W?1`<O_^$}eMUUux2{`Ig>t<`OU3-K+
z8$dOWqS8{76F;IH)Vo`_dp$%@=m`Q4sR;ob;sG*W;<hk0GZWC(-%zk~#ROhlTW1lz
zd>Bczny&*>vl(O)0Jz_Q`PQNvI`PsVC3;j*u>i;x#Fi6LZ8aV)cR+z}A~2ZI6k-wv
z!=0l4^!@CiOlF36fW=gG^@7}7AD|^9+Ur}>qT2cV5E~9#{Vxk4fB-Z;ZB%O0*^UPN
zp%eBRF~AxB?Wn`$XZ`6<X_-aJ&kbiFD;w30L@T?W50Hp`=*PDwTFTB>P$)FO$T9EP
zkvRu*bszh$(H!{S6!ic1qyLQ$O`8AKB<Zeg`!x5;xz6Az9mNu+qe6K^{y4GNc_GI_
zeT^gQq{mLU&2=*QZo+!O!|7QuM<%)-zj`1hYi;t#ryEbnT7?Z7Tx4--FRN<p5o4`Y
z{1?;xr}+=dc&8@!$?ERzgroJbXA<K|_uu#Yl$YO8;vxI4uP??`mWiM9Be*_{_C)m3
zID23KLe$*!V+qWx8{q7$;vb*{`QJs82YQJZ-Wgyz{eO3<MN&qfDhyd@Zk{KJTVO@-
z)-2xZ2>agylS<3(0+JuHaFx-!1C(VhnDKC{f5VYM%&omGqms?Onw`r^SxH;cwc@>w
zQzw-&JgfJKz2pmzjJ%Aa8#LKZ73ot!6@GndA1di2VGIiCuFbL8a*$o_jTl?AxTC5?
zcU;yC=0sSI&4NuRJi<=i6$RS&@846I7-SSxkjtoafI^~_+8T3n!66G*B#$IjDl1}a
z&y%QzBRBTV-5NcJnVjt%u=)-t2sk~6Qry_sc>g|i#v@)Vs1!hbuHb;w`<jG9>{{w~
zLYbz^>^N-Ww)~aWv8)vw%)#fXH<Q4l-T;~{_<B>6+-x^*-pn&3Dk=&&b@QV$r8re_
zb-l0G0q(r~DC<eru;pV9m`{>~6C#hPb^I$wBizF=OVsI*K0Ui}<HpHl*N20o3!ch2
z-_H#XPyWH4AKS_ksyQFZ?2&s?zZC(KwaU$;S0I9uF(6P5=Ry*Wf@}%z0sIxfuj|ih
z`X#B7R}b>k7<3q{cyXFxExsdve6m;=dIS~Uy{q)e6Q!;MxtNCCI4c+O7{+w;M<rI;
zmw6LRxh&5WS0j=u@(ftL^s94<<&H#10+*}1AT$!;3_kuZzx?>h(3bJ|{m+-iYG0c{
zZH}&ti@}JF%X5WW1CDQqa#2V3&T`P32&Z;t+t@aTN_6rwK-mo?Jq-VW0|(?{a*lV;
zAIkWIwTwCw(9zLx<qEZ~sw?qE3F&oR-SXwjshJrNsEpEi`SHLgP|6s2x6jw3^nSpu
z9_j?b<ZJqrI*xpr(rMlI0`)3L36onq-<5uAt|hahzM!o^{{BN|5BhxRfX#w=s85}O
zfEa<PfQskm^g=jG)Id23b8=hM5dlFRES%CDTU=UdneDPE&ca6Z(r3Ad0)@91IC_*a
zoocfX;NoTw;-DCRMm**S;IpIjKfDedZQ%Q$4nXhYhb{IWKYZBok!*#xkpCOKFtKJz
zg$Sr#wYk?OZf|7S6?1;5lxZc`+O&-E7aTT8nO?uUHY;PR;B{H!oDZEJr#BT<1FMPv
zbM<zP4IUwINF#^U=vT4gG2<gcGYJ$f-4!cpK!Jzy{P@wM6`pEe;nsBqB9rOUg_Wa6
z>=Kcu*B98kjo9@vV2a~WBpK7Y+GTe*SyfF}-cz{?A{_T7xpNb71N+x+k}|f&ZHSpx
zW*u3tURmI=<V7rkNkQ+A_tR0f%y*C03?F#w5hF&R8Qyo8^%A9mTDHl{(_;tZSc&q@
z*2^^$goXRY$E{etoP@}TM4_RG#ah99J%0Q-O8o>kc6GNVJW@mbep=IF(%{7Hx6n02
zzoPzl&k#a!HJ>Y(Snv<#p&>HH5T#`tPIjPyyPGv{Xmmt`YeJ>&m&-F4k-M0-ci@PL
zMjpzz4Jb_GV6#HZd@v@UWmiI7I<=?K#3lyt)qEIfK<d3Ne7YPujL-N#?VWpE&-Wh3
zJ6oHEO)e*rCQ-Dx9Hd-Ysg+B`T;?aG%cFA1{Q5~3ou=}L!)VD*C8=Cy!iuP$UoEPK
z(@IH}wn!1lrA=5{lrf#>TOQjvf9;?1$NA%YAN#|@e!iE_=kvb5-mkaCQCz)|5hX+<
zOze2C&dvWcN0gkLz?=TL>8)EkkFh%4JM?n18veGiiWKe-99>;R%z;+-Hh{2MP~+3o
zPt(P>7cWY+nHVHht!_KDPYTt|-tIem{6_w|w7EITzaKlV)nmt#xOMF6E|(bP#aDN8
zFIe|T+T|OegTB$e@lvJN+`G31>OS)}jc|CR@zTaPX=9Sc$f;33h*q9>Dd;A8Ha+{_
zELOWT`O7Z4T{Y!x4X*Yy*r2!&zPaly>Vk36eOr%y0gl9B$1xxE%cruA{8q=^tl99z
z$N>WeSiW#Nu}im{MRsDH$HcJIeMjqbMH_zmlU)-n$WtIA1*A86+b$INarP2^PuM&H
z-1?Op$ljDI<mGbyI$9^~OUJ&|1?alM&Rekzpl>XW?vic{bP3Z1kUGx^RUPml+M;})
z!N3Qb^}EcFC$bUnI(Q-gVHs<R)I4oHd2@aO)}j;rKRBM|s(i>`ZWKk*r?3S7oJRYc
z++3Q`cPAtqEUCH>M#+=0W-=yHAUfzIw5|WkOX51gRpa)z6gkjb0SzkI;CV}zUL%wM
z#1n5kO-u0QZ1mmgBy9><gd1!EOob`}Zm@M^U<X4YO#aZ8r6}wFW})(|Pm*>Sqy|!k
zUy&A6232B9rB&G3_mmUIFe1<8U}bsvy!yIjnR!*jL>)3>1Q-Qh2xVQa!RscjLF!qK
zJv9nS_+X_`N;gRZ;JH5oE?LNg1Wu<A&2hqp?ORSR{W3@a={lP?uNp{$iQdkHgzWrV
zJ+Bx>E(F*fMv<54ao^R{AO{WMXF!)z%@?lGko?lz+9q>4n}sL?&OK=kft(dNRFMOy
zsHmV<WtF@8o|>|;9*2|}P%B(WpVk2Z-f19plm^`4_W)6nmNsN$@9}Rd0z4eyuK@{T
zhY=RCIylIKH|wAFNwNydeEm?|<MS@6)MjvJg-x4{sMx>cZa`~Z_SM-`aebm@Icy5Y
zp{N8I$?l=1fTGFIz%{DsPBhV#koZwB{eowJ{S2S+c|NF765><CT1O?AW3JtRT+pVc
zr7z1bJ`Z<-ag?=9ZvL4ibDq%2v3SuU;nqP(&Hm^msSx#l;rCmVsSpUCv(ahxcZ#XH
z9GnR=a66#Ek$G`aJR)U}DK|Q-H+PWlfUFwrXF&Q#(?mr&pCtE1ec!=ZHD!UJ`!(Y|
z|NetA817D63PS2xx9KcUrB#g@qjR9GVWQ@4ZXI7sPm7A<h~~4`_g}so#LyWaHt58x
z?CgQ_gVAwxpLam4J#AXUYx|#KB(RW-r4OB)wmLMwf*KS^mEW$@rAYO?mAIUZki#MM
zBFGZE&*_xyv^LQf!xTiJEw$J0O+o|gEufa7)qcFL_ItxCK#{Iy%t=*6-uK`ejQ`^s
ztlk#pTE3Gzh-5qWn%?>Oij}80|5#vpYz7VO+P8P4xw#h@H@uf~US>1<gN*9I;ly>j
zanf&#<(_fFh8-Z0g=;Z&$XxBzYnJL+{&XGC{B!4IvO(C7-~WJyd=B7?6h@-ejH?I;
z&kDq106p|<w`2c-=v8-a@Ggv-f5N!|X2VdSt<~2REYgO*ygqo`q<Qs&-pJIP^e`T!
zbY1Kf(cq7V0cpdd22DVMS{<}{N|M2bYJAgG#xPsrE5UbQ`>+$qOioQ@c%11Mck7s(
z2q6PDf!Vtel-yiXCM-J}^9BlIr)&S>*yiSi3l^}RUz9Y-S+c^E2r4sw*#oLS5YR00
z_RiLfKd%T#wcvYE6_+k8rgQ}D2l%P=z(Jqo#0ALPqjCAaz^z=i^fug?lCs3h>$pbb
z#xHN`y!ze8&$Md;fb4mrk?{T`C5ONp!%dG;WTcP%p*Kui%O+~v#d+K6zigTDx-)Q=
zUrKiTehB-D61vy=^<^EMw@1x(wEq~aQy)~yFVGojQLchq1dMHv+;`F(2L}gd=kr19
z!dup~=F~Q2Y>kcmgq88V)%8nBD45CLpr4w8T$kTV)RyKhs^2BB7Wrfup&b|)i28`U
zT4w2nN+1aX-Ny%1$OOvAjX{5JGy#aHsIOyN#=9FMudjB-65Om%Li6k|XD7&T8^KRg
z7)u@RHv>P*(=)y1HT~^kC7ky4dsaJhWen&j(pSQZ#Ic$*=`qhrhb|W~5t*ebv{<$`
zJ`UORQ|UCDkbI|{2X!Z#2cpsp=DWFtbA-&y&9@JpM9bLh0KddzHQGc9Gz?b49XjrQ
z>PK**sdmv(=(ol)(>kh}7Rq3uKA}j<Ib$5-!jLF^k)HPUkVA2vC!CF9YtK?xO|;5*
ze_Ww*4;asE0uP~t#;A+`SoHwpoe*;YINPt$*;Im3TZ`Z8{plw2L3UBkS*a@+70~u3
zdQ;auOiM}%rE_K+DA@xC?D-PbkA0XH(z3tgWVsey;eA1|#p8CbFod2Zmc=_fHyy{T
zTUcE1;P)`c0xokcDY9?A`G)3BYp>tF${S;pRb$oV;v+C>D2Hh*R`1xMuX`3pEXFVJ
z=T|c0X55+4t(5l{6-CjSB_%T~+r5kF8%<isG$|C9>2}2bahD^`_k?f0?D6n-mwfxZ
zJ9kRYott^ZPqX?a5G)dC9YY$;UFOcc+_Z*+b@%;IqjocGLSI*Sa&fr6(ww}Am6*qO
z(&EXj7awzndE{{3Nj;?JU{21@Ol<8Fa}(a$AgJ*+njATLbV}GZ^lDFpL^E~r`py$5
z+B>zAXH_?-ZqwH&;HIU)bJjnP)|Rp^W${DzB`2?IsUC)`d>MV&Y5FI%Q1#)EKDhSv
zFZs>P&U#38tUblZvI^)UVdvx0!%i?q&oouz#cw+ju>Ew&hg<xTkG*5P(95e4@GW<h
zp+i(t%g*hwP`2hQsyAm~Svaar909*RWW(A0CxmHjZEX=ou|5=p6SWmgGdty5x{c1i
zPAncNQ7)|feFj0HLwoh=MP!&{WpLJDz<^Q8Rz(kIql2qAnz-foZ*8=)2l6*z;zR<3
z?bEy#E=<5yq@`tbZ-62bjmpev?9$Q9%uj3vZFLl=EN3d=>%_hND=u8P##6u>Zm-hf
z69LAhLorF2U_3DWopWP7j03lKEA>fZ$3BG4kNv)K^58hmx7NAAAIndaa|d@J{(6kX
zm@%G(5ut29Vb^0`)!fX?LYV+Lb$jd8V2-?m+{BsiNl9lT?wPrrT{K92`dDYVx_(@5
z(B}yt;MAJ3m7$oa9yid^n8)v^D|3y8v5IE<HXmFDFnXxi#8-;iY{Uo#O^vX&UPn}Y
z>0Svn{B=T|n5Sa&d}Vy$KT=eyXpNO=%&cxcf{RXn(_RYrY$zd+27A@kF|sq`kIlS_
z*Jy)E!$E};=?K1kTu0a_Wfs~kV_$38IRM%><i8>s77?>nc2l?+ITIL2CcwIj0fMxC
ze!cl=GQvQ-D};O)=(e!`4Ue~3OYxn#FhXqwbF<-iU&pm;b858VCy<MlE7|*M%6voh
zBl{)Rl$kaFzJHpd{JGedKAA>DlC~Jm!@=~WSaMjkMt-z+2tvVj4?o_v;@AC;Ek=({
zL+cU0z@ZZbzBw9}Gs-FV8FRqdVtG_gEtibw_ms8*UYClAHDrYpP43}&)<Js3chFI=
z20pOZBX3E|1|^6YL$@9;K^(WFW^_+3ap&ov2ZZOZ{pHo-!dhOasF*LVs-|lG(xvNR
zZk%DNmJo=74zfq8Sp^>+eYkjGNAg5WJsf33nNo>k6cp439HkiOZ%Zrk+ZP8TM4Y7a
z3RP<G6B+1CXpB5CQ*Q-!LnzrStq=Fm*;E$3SrLdg&p|>UDhS_lb8~~&t}S~RI|W@k
z)V_WpwFxY}l&?5FxFn2zQ4?1&{=>%1%xUtRT*4XwDC4DfJ0H43f&3CKP@nT;>>jnT
z1q(3X$;5PgE|x)h9bS1)<ZA>34U9dM>;kFu6u{+F_EFlcl~x&e@|7<<w1~Hm-|=to
za5Kciov+0Kkxc@=3n0FjLIn4w^MYyY1tjkAqE`N%;=2=+Lau`APqTN^?+dRr9Z{Ns
zf~k5jKyHhl-x(*)`G|f~9x5{zXYVBnV3~@4?b1d(UInI6N57XO2Q@;pCXp5*jXHs(
z{RHcRhiilQ*L7g-vX|s$0GL2*z0<A@$)r}tRxF^tw7*mmj@1!FH9|Bdg++mUmJg3_
zM<Q`N&K0h}U|^Scgl+gwK7d`?Z=O$jU;G!WHfu<8ffR;rz>f{I84g6a)}P-NJ}pvo
z7Lt^6-zKT8W9Ov>hN&$dv{!$~vEsHauC6vuYUybKC>1w&(kjsQ;Ai6E#~E3!oEH@p
zMWspnbcI6D!3aSlwNEj~goV+yix%T@Rv3`;+vQ6hb$aH`#KaIByH@gKOfNt^To1~A
zmwX*Ik8_G|K?Wz?TIEH%oW3r~)zHvT5a+mX!t0F|Fwx`KM1mowj>g7DQwqwFH9ABZ
zlL6v@U<A5M+Rqz}*_>NB7_e0_Vcu@L=oe%lWQH?GO}gIoV#sL;RV4?D#}M+x7CnW_
zAQcG*_AA99B8196UjF_iK-8!u3T?pq3prB45rT)(oJpCGHx@n)3XXy*tMq;`0m^S~
z4RVQ{iKerH2A*qh_7{=Nywo8$F`^d2N*ODJ12y*Fc3~!<{qDR>BPB29Q{6{x<FQhA
z{H#doi+C9PZ6>c^uP+p+^gKk9)g%1m<=AgZoO@|5e16}%>#MA+-Z3V&wl8FY0Abfa
zU3&+I7|DRHwAgCO%GHL`%O&)U*ko1&+}WeZN1qC>BN0!1o@%JBJ#|Xx@B8)d3VuiO
zMI0g3^#ZER9S}?wFy$(u<KYLY#xpFJaQ~sxKLF|`{AdFQTCcr5s|_irUU17){h1`4
zxg46CmUsW@PbE%%rvE>ddYAJ5|KIArSMliT5t>tYXhuQ#Vp-SOPIDcPJNU%>3*c=Q
A?f?J)

literal 0
HcmV?d00001

diff --git a/exercises/extradoc/exercise3_setup.png b/exercises/extradoc/exercise3_setup.png
new file mode 100644
index 0000000000000000000000000000000000000000..eed8371e6a96f9b4d4eee22849f4b3bbbcd83fa1
GIT binary patch
literal 45832
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

literal 0
HcmV?d00001

diff --git a/exercises/solution/CMakeLists.txt b/exercises/solution/CMakeLists.txt
new file mode 100644
index 00000000..ac5b07f6
--- /dev/null
+++ b/exercises/solution/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_subdirectory(ex1)
+add_subdirectory(ex2)
diff --git a/exercises/solution/ex1/CMakeLists.txt b/exercises/solution/ex1/CMakeLists.txt
new file mode 100644
index 00000000..bf559fc2
--- /dev/null
+++ b/exercises/solution/ex1/CMakeLists.txt
@@ -0,0 +1,21 @@
+# the immiscible two-phase simulation program
+#dune_add_test(NAME exercise1_2p_solution
+#              SOURCES exercise1_2p_solution.cc
+#              CMD_ARGS exercise1.input)
+
+# the compositional two-phase two-component simulation program
+dune_add_test(NAME exercise1_2p2c_solution
+              SOURCES exercise1_2p2c.cc
+              CMD_ARGS exercise1.input)
+
+# the two-phase non-isothermal simulation program
+dune_add_test(NAME exercise1_2pni_solution
+              SOURCES exercise1_2pni_solution.cc
+              CMD_ARGS exercise1.input)
+
+
+# add tutorial to the common target
+add_dependencies(test_exercises exercise1_2p2c_solution exercise1_2pni_solution)
+
+# add a symlink for the input file
+dune_symlink_to_source_files(FILES "exercise1.input")
diff --git a/exercises/solution/ex1/exercise1.input b/exercises/solution/ex1/exercise1.input
new file mode 100644
index 00000000..545a170f
--- /dev/null
+++ b/exercises/solution/ex1/exercise1.input
@@ -0,0 +1,27 @@
+[TimeLoop]
+DtInitial = 3600 # in seconds
+TEnd = 3.154e9 # in seconds, i.e ten years
+
+[Grid]
+LowerLeft = 0 0
+UpperRight = 60 40
+Cells = 24 16
+
+[Problem]
+Name = injection
+OnlyPlotMaterialLaws = true
+AquiferDepth = 2700.0 # m
+InjectionDuration = 2.628e6 # in seconds, i.e. one month
+TotalAreaSpecificInflow = -1e-4 # kg/(s*m^2)
+
+[SpatialParams]
+PermeabilityAquitard = 1e-15 # m^2
+EntryPressureAquitard = 4.5e4 # Pa
+PermeabilityAquifer = 1e-12 # m^2
+EntryPressureAquifer = 1e4 # Pa
+
+# these parameters are only used in the nonisothermal model. Uncomment them for that
+[Component]
+SolidDensity = 2700 # solid density of granite
+SolidThermalConductivity = 2.8 # solid thermal conducitivity of granite
+SolidHeatCapacity = 790 # solid heat capacity of granite
diff --git a/exercises/solution/ex1/exercise1_2p2c.cc b/exercises/solution/ex1/exercise1_2p2c.cc
new file mode 100644
index 00000000..55496aad
--- /dev/null
+++ b/exercises/solution/ex1/exercise1_2p2c.cc
@@ -0,0 +1,198 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \brief The main file for the 2p2c porousmediumflow problem in exercise1
+ */
+#include <config.h>
+
+#include <ctime>
+#include <iostream>
+
+#include <dune/common/parallel/mpihelper.hh>
+#include <dune/common/timer.hh>
+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
+#include <dune/grid/io/file/vtk.hh>
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/valgrind.hh>
+#include <dumux/common/dumuxmessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/privarswitchnewtonsolver.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
+#include <dumux/io/grid/gridmanager.hh>
+
+#include "injection2p2cproblem.hh"
+
+////////////////////////
+// the main function
+////////////////////////
+int main(int argc, char** argv) try
+{
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = TTAG(Injection2p2cCCTypeTag);
+
+    // initialize MPI, finalize is done automatically on exit
+    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+
+    // print dumux start message
+    if (mpiHelper.rank() == 0)
+        DumuxMessage::print(/*firstCall=*/true);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv);
+
+    // try to create a grid (from the given grid file or the input file)
+    GridManager<typename GET_PROP_TYPE(TypeTag, Grid)> gridManager;
+    gridManager.init();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = gridManager.grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+
+    // get some time loop parameters
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(0.0, dt, tEnd);
+    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);
+
+    // the linear solver
+    using LinearSolver = AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using PrimaryVariableSwitch = typename GET_PROP_TYPE(TypeTag, PrimaryVariableSwitch);
+    using NewtonSolver = Dumux::PriVarSwitchNewtonSolver<Assembler, LinearSolver, PrimaryVariableSwitch>;
+    NewtonSolver nonLinearSolver(assembler, linearSolver);
+
+    // time loop
+    timeLoop->start();
+    while (!timeLoop->finished())
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        //set time in problem (is used in time-dependent Neumann boundary condition)
+        problem->setTime(timeLoop->time()+timeLoop->timeStepSize());
+
+        // solve the non-linear system with time step control
+        nonLinearSolver.solve(x, *timeLoop);
+
+        // make the new solution the old solution
+        xOld = x;
+        gridVariables->advanceTimeStep();
+
+        // advance to the time loop to the next step
+        timeLoop->advanceTimeStep();
+
+        // report statistics of this time step
+        timeLoop->reportTimeStep();
+
+        // set new dt as suggested by the newton solver
+        timeLoop->setTimeStepSize(nonLinearSolver.suggestTimeStepSize(timeLoop->timeStepSize()));
+
+        // output to vtk
+        vtkWriter.write(timeLoop->time());
+    }
+
+    timeLoop->finalize(leafGridView.comm());
+
+    ////////////////////////////////////////////////////////////
+    // finalize, print dumux message to say goodbye
+    ////////////////////////////////////////////////////////////
+
+    // print dumux end message
+    if (mpiHelper.rank() == 0)
+    {
+        Parameters::print();
+        DumuxMessage::print(/*firstCall=*/false);
+    }
+
+    return 0;
+} // end main
+catch (Dumux::ParameterException &e)
+{
+    std::cerr << std::endl << e << " ---> Abort!" << std::endl;
+    return 1;
+}
+catch (Dune::DGFException & e)
+{
+    std::cerr << "DGF exception thrown (" << e <<
+                 "). Most likely, the DGF file name is wrong "
+                 "or the DGF file is corrupted, "
+                 "e.g. missing hash at end of file or wrong number (dimensions) of entries."
+                 << " ---> Abort!" << std::endl;
+    return 2;
+}
+catch (Dune::Exception &e)
+{
+    std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl;
+    return 3;
+}
+catch (...)
+{
+    std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl;
+    return 4;
+}
diff --git a/exercises/solution/ex1/exercise1_2pni_solution.cc b/exercises/solution/ex1/exercise1_2pni_solution.cc
new file mode 100644
index 00000000..68f9d3b5
--- /dev/null
+++ b/exercises/solution/ex1/exercise1_2pni_solution.cc
@@ -0,0 +1,198 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \brief The solution main file for the two-phase porousmediumflow problem of exercise 1
+ */
+#include <config.h>
+
+#include <ctime>
+#include <iostream>
+
+#include <dune/common/parallel/mpihelper.hh>
+#include <dune/common/timer.hh>
+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
+#include <dune/grid/io/file/vtk.hh>
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/dumuxmessage.hh>
+#include <dumux/common/defaultusagemessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/newtonsolver.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
+#include <dumux/io/grid/gridmanager.hh>
+
+// The problem file, where setup-specific boundary and initial conditions are defined.
+#include "injection2pniproblem.hh"
+
+////////////////////////
+// the main function
+////////////////////////
+int main(int argc, char** argv) try
+{
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = TTAG(Injection2pNICCTypeTag);
+
+    // initialize MPI, finalize is done automatically on exit
+    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+
+    // print dumux start message
+    if (mpiHelper.rank() == 0)
+        DumuxMessage::print(/*firstCall=*/true);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv);
+
+    // try to create a grid (from the given grid file or the input file)
+    GridManager<typename GET_PROP_TYPE(TypeTag, Grid)> gridManager;
+    gridManager.init();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = gridManager.grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+
+    // get some time loop parameters
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(0.0, dt, tEnd);
+    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);
+
+    // the linear solver
+    using LinearSolver = AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using NewtonSolver = Dumux::NewtonSolver<Assembler, LinearSolver>;
+    NewtonSolver nonLinearSolver(assembler, linearSolver);
+
+    // time loop
+    timeLoop->start();
+    while (!timeLoop->finished())
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        //set time in problem (is used in time-dependent Neumann boundary condition)
+        problem->setTime(timeLoop->time()+timeLoop->timeStepSize());
+
+        // solve the non-linear system with time step control
+        nonLinearSolver.solve(x, *timeLoop);
+
+        // make the new solution the old solution
+        xOld = x;
+        gridVariables->advanceTimeStep();
+
+        // advance to the time loop to the next step
+        timeLoop->advanceTimeStep();
+
+        // report statistics of this time step
+        timeLoop->reportTimeStep();
+
+        // set new dt as suggested by the newton solver
+        timeLoop->setTimeStepSize(nonLinearSolver.suggestTimeStepSize(timeLoop->timeStepSize()));
+
+        // output to vtk
+        vtkWriter.write(timeLoop->time());
+    }
+
+    timeLoop->finalize(leafGridView.comm());
+
+    ////////////////////////////////////////////////////////////
+    // finalize, print dumux message to say goodbye
+    ////////////////////////////////////////////////////////////
+
+    // print dumux end message
+    if (mpiHelper.rank() == 0)
+    {
+        Parameters::print();
+        DumuxMessage::print(/*firstCall=*/false);
+    }
+
+    return 0;
+} // end main
+catch (Dumux::ParameterException &e)
+{
+    std::cerr << std::endl << e << " ---> Abort!" << std::endl;
+    return 1;
+}
+catch (Dune::DGFException & e)
+{
+    std::cerr << "DGF exception thrown (" << e <<
+                 "). Most likely, the DGF file name is wrong "
+                 "or the DGF file is corrupted, "
+                 "e.g. missing hash at end of file or wrong number (dimensions) of entries."
+                 << " ---> Abort!" << std::endl;
+    return 2;
+}
+catch (Dune::Exception &e)
+{
+    std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl;
+    return 3;
+}
+catch (...)
+{
+    std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl;
+    return 4;
+}
diff --git a/exercises/solution/ex1/injection2p2cproblem.hh b/exercises/solution/ex1/injection2p2cproblem.hh
new file mode 100644
index 00000000..d33e5a46
--- /dev/null
+++ b/exercises/solution/ex1/injection2p2cproblem.hh
@@ -0,0 +1,271 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief The two-phase porousmediumflow problem for exercise 1
+ */
+#ifndef DUMUX_EX1_INJECTION_2P2C_PROBLEM_HH
+#define DUMUX_EX1_INJECTION_2P2C_PROBLEM_HH
+
+#include <dumux/discretization/cellcentered/tpfa/properties.hh>
+#include <dumux/porousmediumflow/2p2c/model.hh>
+#include <dumux/porousmediumflow/problem.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+
+#include "injection2pspatialparams.hh"
+
+namespace Dumux {
+
+// forward declare problem
+template <class TypeTag>
+class Injection2p2cProblem;
+
+namespace Properties {
+NEW_TYPE_TAG(Injection2p2cTypeTag, INHERITS_FROM(TwoPTwoC));
+NEW_TYPE_TAG(Injection2p2cCCTypeTag, INHERITS_FROM(CCTpfaModel, Injection2p2cTypeTag));
+
+// Set the grid type
+SET_TYPE_PROP(Injection2p2cTypeTag, Grid, Dune::YaspGrid<2>);
+
+// Set the problem property
+SET_TYPE_PROP(Injection2p2cTypeTag, Problem, Injection2p2cProblem<TypeTag>);
+
+// Set the spatial parameters
+SET_TYPE_PROP(Injection2p2cTypeTag, SpatialParams,
+              InjectionSpatialParams<typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
+                                     typename GET_PROP_TYPE(TypeTag, Scalar)>);
+
+// Set fluid configuration
+SET_TYPE_PROP(Injection2p2cTypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), /*useComplexRelations=*/ false>);
+
+// Define whether mole(true) or mass (false) fractions are used
+SET_BOOL_PROP(Injection2p2cTypeTag, UseMoles, true);
+} // end namespace Properties
+
+/*!
+ * \ingroup TwoPTwoCModel
+ * \ingroup ImplicitTestProblems
+ * \brief Gas injection problem where a gas (here  nitrogen) is injected into a fully
+ *        water saturated medium. During buoyancy driven upward migration the gas
+ *        passes a high temperature area.
+ *
+ * The domain is sized 60 m times 40 m.
+ *
+ * For the mass conservation equation neumann boundary conditions are used on
+ * the top, on the bottom and on the right of the domain, while dirichlet conditions
+ * apply on the left boundary.
+ *
+ * Gas is injected at the right boundary from 7 m to 15 m at a rate of
+ * 0.001 kg/(s m), the remaining neumann boundaries are no-flow
+ * boundaries.
+ *
+ * At the dirichlet boundaries a hydrostatic pressure and a gas saturation of zero a
+ *
+ * This problem uses the \ref TwoPModel model.
+ */
+template<class TypeTag>
+class Injection2p2cProblem : public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+    enum { dimWorld = GridView::dimensionworld };
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    Injection2p2cProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        // initialize the tables of the fluid system
+        FluidSystem::init(/*tempMin=*/273.15,
+                /*tempMax=*/423.15,
+                /*numTemp=*/50,
+                /*pMin=*/0.0,
+                /*pMax=*/30e6,
+                /*numP=*/300);
+
+        // name of the problem and output file
+        // getParam<TYPE>("GROUPNAME.PARAMNAME") reads and sets parameter PARAMNAME
+        // of type TYPE given in the group GROUPNAME from the input file
+        name_ = getParam<std::string>("Problem.Name");
+        // depth of the aquifer, units: m
+        aquiferDepth_ = getParam<Scalar>("Problem.AquiferDepth");
+        // the duration of the injection, units: second
+        injectionDuration_ = getParam<Scalar>("Problem.InjectionDuration");
+        totalAreaSpecificInflow_ = getParam<Scalar>("Problem.TotalAreaSpecificInflow");
+    }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    /*!
+     * \brief Returns the problem name
+     *
+     * This is used as a prefix for files generated by the simulation.
+     */
+    std::string name() const
+    { return name_+"-2p2c"; }
+
+    /*!
+     * \brief Returns the temperature \f$ K \f$
+     */
+    Scalar temperature() const
+    {
+        return 273.15 + 30; // [K]
+    }
+
+    // \}
+
+    /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param bcTypes The boundary types for the conservation equations
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+         BoundaryTypes bcTypes;
+        if (globalPos[0] < eps_)
+            bcTypes.setAllDirichlet();
+        else
+            bcTypes.setAllNeumann();
+
+        return bcTypes;
+    }
+
+    /*!
+     * \brief Evaluates the boundary conditions for a Dirichlet
+     *        boundary segment
+     *
+     * \param globalPos The global position
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        return initialAtPos(globalPos);
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a neumann
+     *        boundary segment.
+     *
+     * \param values Stores the Neumann values for the conservation equations in
+     *               \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$
+     * \param globalPos The position of the integration point of the boundary segment.
+     *
+     * For this method, the \a values parameter stores the mass flux
+     * in normal direction of each phase. Negative values mean influx.
+     */
+    PrimaryVariables neumannAtPos(const GlobalPosition &globalPos) const
+    {
+        // initialize values to zero, i.e. no-flow Neumann boundary conditions
+        PrimaryVariables values(0.0);
+
+        // if we are inside the injection zone set inflow Neumann boundary conditions
+        if (time_ < injectionDuration_
+            && globalPos[1] < 15 + eps_ && globalPos[1] > 7 - eps_ && globalPos[0] > 0.9*this->fvGridGeometry().bBoxMax()[0])
+        {
+            // TODO: dumux-course-task
+            //instead of setting -1e-4 here directly use totalAreaSpecificInflow_ in the computation
+
+            // inject nitrogen. negative values mean injection
+            // convert from units kg/(s*m^2) to mole/(s*m^2)
+            values[Indices::conti0EqIdx + FluidSystem::N2Idx] = totalAreaSpecificInflow_/FluidSystem::molarMass(FluidSystem::N2Idx);
+            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
+        }
+
+        return values;
+    }
+
+    // \}
+
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values(0.0);
+        values.setState(Indices::firstPhaseOnly);
+        // get the water density at atmospheric conditions
+        const Scalar densityW = FluidSystem::H2O::liquidDensity(temperature(), 1.0e5);
+
+        // assume an intially hydrostatic liquid pressure profile
+        // note: we subtract rho_w*g*h because g is defined negative
+        const Scalar pw = 1.0e5 - densityW*this->gravity()[dimWorld-1]*(aquiferDepth_ - globalPos[dimWorld-1]);
+
+        // initially we have some nitrogen dissolved
+        // saturation mole fraction would be
+        // moleFracLiquidN2 = (pw + pc + p_vap^sat)/henry;
+        const Scalar moleFracLiquidN2 = pw*0.95/BinaryCoeff::H2O_N2::henry(temperature());
+
+        // note that because we start with a single phase system the primary variables
+        // are pl and x^w_N2. This will switch as soon after we start injecting to a two
+        // phase system so the primary variables will be pl and Sn (non-wetting saturation).
+        values[Indices::pressureIdx] = pw;
+        values[Indices::switchIdx] = moleFracLiquidN2;
+
+        return values;
+    }
+
+    // \}
+
+    //! set the time for the time dependent boundary conditions (called from main)
+    void setTime(Scalar time)
+    { time_ = time; }
+
+private:
+    static constexpr Scalar eps_ = 1e-6;
+    std::string name_; //! Problem name
+    Scalar aquiferDepth_; //! Depth of the aquifer in m
+    Scalar injectionDuration_; //! Duration of the injection in seconds
+    Scalar time_;
+    Scalar totalAreaSpecificInflow_;
+
+};
+
+} //end namespace Dumux
+
+#endif
diff --git a/exercises/solution/ex1/injection2pniproblem.hh b/exercises/solution/ex1/injection2pniproblem.hh
new file mode 100644
index 00000000..70135414
--- /dev/null
+++ b/exercises/solution/ex1/injection2pniproblem.hh
@@ -0,0 +1,252 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief The two-phase nonisothermal porousmediumflow problem for exercise 1
+ */
+
+#ifndef DUMUX_EX1_INJECTION_PROBLEM_2PNI_HH
+#define DUMUX_EX1_INJECTION_PROBLEM_2PNI_HH
+
+#include <dumux/discretization/cellcentered/tpfa/properties.hh>
+#include <dumux/porousmediumflow/2p/model.hh>
+#include <dumux/porousmediumflow/problem.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+
+#include "injection2pspatialparams.hh"
+
+namespace Dumux {
+
+// forward declare problem
+template <class TypeTag>
+class InjectionProblem2PNI;
+
+namespace Properties {
+NEW_TYPE_TAG(Injection2pNITypeTag, INHERITS_FROM(TwoPNI));
+NEW_TYPE_TAG(Injection2pNICCTypeTag, INHERITS_FROM(CCTpfaModel, Injection2pNITypeTag));
+
+// Set the grid type
+SET_TYPE_PROP(Injection2pNITypeTag, Grid, Dune::YaspGrid<2>);
+
+// Set the problem property
+SET_TYPE_PROP(Injection2pNITypeTag, Problem, InjectionProblem2PNI<TypeTag>);
+
+// Set the spatial parameters
+SET_TYPE_PROP(Injection2pNITypeTag, SpatialParams,
+              InjectionSpatialParams<typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
+                                     typename GET_PROP_TYPE(TypeTag, Scalar)>);
+
+// Set fluid configuration
+SET_TYPE_PROP(Injection2pNITypeTag, FluidSystem, FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false>);
+} // end namespace Properties
+
+/*!
+ * \ingroup TwoPModel
+ * \ingroup ImplicitTestProblems
+ * \brief Gas injection problem where a gas (here  nitrogen) is injected into a fully
+ *        water saturated medium. During buoyancy driven upward migration the gas
+ *        passes a high temperature area.
+ *
+ * The domain is sized 60 m times 40 m.
+ *
+ * For the mass conservation equation neumann boundary conditions are used on
+ * the top, on the bottom and on the right of the domain, while dirichlet conditions
+ * apply on the left boundary.
+ *
+ * Gas is injected at the right boundary from 7 m to 15 m at a rate of
+ * 0.001 kg/(s m), the remaining neumann boundaries are no-flow
+ * boundaries.
+ *
+ * At the dirichlet boundaries a hydrostatic pressure and a gas saturation of zero a
+ *
+ * This problem uses the \ref TwoPModel model.
+ */
+template<class TypeTag>
+class InjectionProblem2PNI : public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+
+    enum { dimWorld = GridView::dimensionworld };
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    InjectionProblem2PNI(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        // initialize the tables of the fluid system
+        FluidSystem::init(/*tempMin=*/273.15,
+                /*tempMax=*/423.15,
+                /*numTemp=*/50,
+                /*pMin=*/0.0,
+                /*pMax=*/30e6,
+                /*numP=*/300);
+
+        // name of the problem and output file
+        // getParam<TYPE>("GROUPNAME.PARAMNAME") reads and sets parameter PARAMNAME
+        // of type TYPE given in the group GROUPNAME from the input file
+        name_ = getParam<std::string>("Problem.Name");
+        // depth of the aquifer, units: m
+        aquiferDepth_ = getParam<Scalar>("Problem.AquiferDepth");
+        // the duration of the injection, units: second
+        injectionDuration_ = getParam<Scalar>("Problem.InjectionDuration");
+    }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    /*!
+     * \brief Returns the problem name
+     *
+     * This is used as a prefix for files generated by the simulation.
+     */
+    std::string name() const
+    { return "injection-2pni"; }
+
+    // \}
+
+    /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param bcTypes The boundary types for the conservation equations
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+         BoundaryTypes bcTypes;
+        if (globalPos[0] < eps_)
+            bcTypes.setAllDirichlet();
+        else
+            bcTypes.setAllNeumann();
+
+        return bcTypes;
+    }
+
+    /*!
+     * \brief Evaluates the boundary conditions for a Dirichlet
+     *        boundary segment
+     *
+     * \param globalPos The global position
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        return initialAtPos(globalPos);
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a neumann
+     *        boundary segment.
+     *
+     * \param values Stores the Neumann values for the conservation equations in
+     *               \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$
+     * \param globalPos The position of the integration point of the boundary segment.
+     *
+     * For this method, the \a values parameter stores the mass flux
+     * in normal direction of each phase. Negative values mean influx.
+     */
+    PrimaryVariables neumannAtPos(const GlobalPosition &globalPos) const
+    {
+        // initialize values to zero, i.e. no-flow Neumann boundary conditions
+        PrimaryVariables values(0.0);
+
+        // if we are inside the injection zone set inflow Neumann boundary conditions
+        if (time_ < injectionDuration_
+            && globalPos[1] < 15 + eps_ && globalPos[1] > 7 - eps_ && globalPos[0] > 0.9*this->fvGridGeometry().bBoxMax()[0])
+        {
+            // inject nitrogen. negative values mean injection
+            // units kg/(s*m^2)
+            values[Indices::conti0EqIdx + FluidSystem::N2Idx] = -1e-4;
+            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
+            values[Indices::energyEqIdx] = 0.0;
+        }
+
+        return values;
+    }
+
+    // \}
+
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values(0.0);
+
+        // get the water density at atmospheric conditions
+        const Scalar densityW = FluidSystem::H2O::liquidDensity(283.15, 1.0e5);
+
+        // assume an intially hydrostatic liquid pressure profile
+        // note: we subtract rho_w*g*h because g is defined negative
+        const Scalar pw = 1.0e5 - densityW*this->gravity()[dimWorld-1]*(aquiferDepth_ - globalPos[dimWorld-1]);
+
+        values[Indices::pressureIdx] = pw;
+        values[Indices::saturationIdx] = 0.0;
+
+        values[Indices::temperatureIdx] = 283.0 + (aquiferDepth_ - globalPos[1])*0.03;
+        if (globalPos[0] > 20 - eps_ && globalPos[0] < 30 + eps_ && globalPos[1] > 5 - eps_ && globalPos[1] < 35 + eps_)
+            values[Indices::temperatureIdx] = 380;
+
+        return values;
+    }
+
+    // \}
+
+    //! set the time for the time dependent boundary conditions (called from main)
+    void setTime(Scalar time)
+    { time_ = time; }
+
+private:
+    static constexpr Scalar eps_ = 1e-6;
+    std::string name_; //! Problem name
+    Scalar aquiferDepth_; //! Depth of the aquifer in m
+    Scalar injectionDuration_; //! Duration of the injection in seconds
+    Scalar time_;
+};
+
+} //end namespace Dumux
+
+#endif
diff --git a/exercises/solution/ex1/injection2pspatialparams.hh b/exercises/solution/ex1/injection2pspatialparams.hh
new file mode 100644
index 00000000..979f14ce
--- /dev/null
+++ b/exercises/solution/ex1/injection2pspatialparams.hh
@@ -0,0 +1,164 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Definition of the spatial parameters for the injection problem
+ *        which uses the isothermal two-phase two-component
+ *        fully implicit model.
+ */
+
+#ifndef DUMUX_EX1_INJECTION_SPATIAL_PARAMS_HH
+#define DUMUX_EX1_INJECTION_SPATIAL_PARAMS_HH
+
+#include <dumux/material/spatialparams/fv.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
+
+#include <dumux/io/gnuplotinterface.hh>
+#include <dumux/io/plotmateriallaw.hh>
+
+namespace Dumux {
+
+/*!
+ * \ingroup TwoPTwoCModel
+ * \brief Definition of the spatial parameters for the injection problem
+ *        which uses the isothermal two-phase two-component
+ *        fully implicit model.
+ */
+template<class FVGridGeometry, class Scalar>
+class InjectionSpatialParams
+: public FVSpatialParams<FVGridGeometry, Scalar, InjectionSpatialParams<FVGridGeometry, Scalar>>
+{
+    using ThisType = InjectionSpatialParams<FVGridGeometry, Scalar>;
+    using ParentType = FVSpatialParams<FVGridGeometry, Scalar, ThisType>;
+    using GridView = typename FVGridGeometry::GridView;
+    static const int dimWorld = GridView::dimensionworld;
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    // export permeability type
+    using PermeabilityType = Scalar;
+
+    using MaterialLaw = EffToAbsLaw<RegularizedBrooksCorey<Scalar>>;
+    using MaterialLawParams = typename MaterialLaw::Params;
+
+    /*!
+     * \brief The constructor
+     *
+     * \param fvGridGeometry The finite volume grid geometry
+     */
+    InjectionSpatialParams(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        aquiferHeightFromBottom_ = 30.0;
+
+        // intrinsic permeabilities
+        aquitardK_ = getParam<Scalar>("SpatialParams.PermeabilityAquitard");
+        aquiferK_ = getParam<Scalar>("SpatialParams.PermeabilityAquifer");
+
+        // porosities
+        aquitardPorosity_ = 0.2;
+        aquiferPorosity_ = 0.4;
+
+        // residual saturations
+        aquitardMaterialParams_.setSwr(0.2);
+        aquitardMaterialParams_.setSnr(0.0);
+        aquiferMaterialParams_.setSwr(0.2);
+        aquiferMaterialParams_.setSnr(0.0);
+
+        // parameters for the Brooks-Corey law
+        aquitardMaterialParams_.setPe(getParam<Scalar>("SpatialParams.EntryPressureAquitard"));
+        aquiferMaterialParams_.setPe(getParam<Scalar>("SpatialParams.EntryPressureAquifer"));
+        aquitardMaterialParams_.setLambda(2.0);
+        aquiferMaterialParams_.setLambda(2.0);
+    }
+
+    /*!
+     * \brief Define the intrinsic permeability \f$\mathrm{[m^2]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    PermeabilityType permeabilityAtPos(const GlobalPosition& globalPos) const
+
+    {
+        if (isInAquitard_(globalPos))
+            return aquitardK_;
+        return aquiferK_;
+    }
+
+    /*!
+     * \brief Define the porosity \f$\mathrm{[-]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    Scalar porosityAtPos(const GlobalPosition& globalPos) const
+    {
+        if (isInAquitard_(globalPos))
+            return aquitardPorosity_;
+        return aquiferPorosity_;
+    }
+
+    /*!
+     * \brief Function for defining the parameters needed by constitutive relationships (kr-sw, pc-sw, etc.).
+     *
+     * \param globalPos The global position
+     *
+     * \return the material parameters object
+     */
+    const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const
+    {
+        if (isInAquitard_(globalPos))
+            return aquitardMaterialParams_;
+        return aquiferMaterialParams_;
+    }
+
+    /*!
+     * \brief Function for defining which phase is to be considered as the wetting phase.
+     *
+     * \return the wetting phase index
+     * \param globalPos The position of the center of the element
+     */
+    template<class FluidSystem>
+    int wettingPhaseAtPos(const GlobalPosition& globalPos) const
+    { return FluidSystem::H2OIdx; }
+
+private:
+
+    static constexpr Scalar eps_ = 1e-6;
+
+    bool isInAquitard_(const GlobalPosition &globalPos) const
+    { return globalPos[dimWorld-1] > aquiferHeightFromBottom_ + eps_; }
+
+    Scalar aquitardK_;
+    Scalar aquiferK_;
+    Scalar aquiferHeightFromBottom_;
+
+
+    Scalar aquitardPorosity_;
+    Scalar aquiferPorosity_;
+
+    MaterialLawParams aquitardMaterialParams_;
+    MaterialLawParams aquiferMaterialParams_;
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/solution/ex2/CMakeLists.txt b/exercises/solution/ex2/CMakeLists.txt
new file mode 100644
index 00000000..fe1e8746
--- /dev/null
+++ b/exercises/solution/ex2/CMakeLists.txt
@@ -0,0 +1,10 @@
+# the compositional two-phase simulation program
+dune_add_test(NAME exercise2_solution
+              SOURCES exercise2_solution.cc
+              CMD_ARGS exercise2.input -Problem.OnlyPlotMaterialLaws false)
+
+# add tutorial to the common target
+add_dependencies(test_exercises exercise2_solution)
+
+# add a symlink for the input file
+dune_symlink_to_source_files(FILES "exercise2.input")
diff --git a/exercises/solution/ex2/exercise2.input b/exercises/solution/ex2/exercise2.input
new file mode 100644
index 00000000..df7737b8
--- /dev/null
+++ b/exercises/solution/ex2/exercise2.input
@@ -0,0 +1,24 @@
+[TimeLoop]
+DtInitial = 3600 # in seconds
+TEnd = 3.154e9 # in seconds, i.e ten years
+
+[Grid]
+LowerLeft = 0 0
+UpperRight = 60 40
+Cells = 24 16
+
+[Problem]
+Name = infiltration
+OnlyPlotMaterialLaws = true
+AquiferDepth = 2700.0 # m
+TotalAreaSpecificInflow = 1e-4 # kg / (s*m^2)
+InjectionDuration = 2.628e6 # in seconds, i.e. one month
+
+EnableGravity = true
+EnableDiffusion = true
+
+[SpatialParams]
+PermeabilityAquitard = 1e-15 # m^2
+EntryPressureAquitard = 4.5e4 # Pa
+PermeabilityAquifer = 1e-12 # m^2
+EntryPressureAquifer = 1e4 # Pa
diff --git a/exercises/solution/ex2/exercise2_solution.cc b/exercises/solution/ex2/exercise2_solution.cc
new file mode 100644
index 00000000..2a7493e6
--- /dev/null
+++ b/exercises/solution/ex2/exercise2_solution.cc
@@ -0,0 +1,200 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Test for the two-phase two-component CC model.
+ */
+#include <config.h>
+
+#include <ctime>
+#include <iostream>
+
+#include <dune/common/parallel/mpihelper.hh>
+#include <dune/common/timer.hh>
+#include <dune/grid/io/file/dgfparser/dgfexception.hh>
+#include <dune/grid/io/file/vtk.hh>
+
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/dumuxmessage.hh>
+#include <dumux/common/defaultusagemessage.hh>
+
+#include <dumux/linear/amgbackend.hh>
+#include <dumux/nonlinear/privarswitchnewtonsolver.hh>
+
+#include <dumux/assembly/fvassembler.hh>
+#include <dumux/assembly/diffmethod.hh>
+
+#include <dumux/discretization/methods.hh>
+
+#include <dumux/io/vtkoutputmodule.hh>
+#include <dumux/io/grid/gridmanager.hh>
+
+#include "injection2p2cproblem.hh"
+
+int main(int argc, char** argv)try
+{
+    using namespace Dumux;
+
+    // define the type tag for this problem
+    using TypeTag = TTAG(Injection2p2pcCCTypeTag);
+
+    // initialize MPI, finalize is done automatically on exit
+    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+
+    // print dumux start message
+    if (mpiHelper.rank() == 0)
+        DumuxMessage::print(/*firstCall=*/true);
+
+    // parse command line arguments and input file
+    Parameters::init(argc, argv);
+
+    // try to create a grid (from the given grid file or the input file)
+    GridManager<typename GET_PROP_TYPE(TypeTag, Grid)> gridManager;
+    gridManager.init();
+
+    ////////////////////////////////////////////////////////////
+    // run instationary non-linear problem on this grid
+    ////////////////////////////////////////////////////////////
+
+    // we compute on the leaf grid view
+    const auto& leafGridView = gridManager.grid().leafGridView();
+
+    // create the finite volume grid geometry
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    auto fvGridGeometry = std::make_shared<FVGridGeometry>(leafGridView);
+    fvGridGeometry->update();
+
+    // the problem (initial and boundary conditions)
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    auto problem = std::make_shared<Problem>(fvGridGeometry);
+
+    // the solution vector
+    using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector);
+    SolutionVector x(fvGridGeometry->numDofs());
+    problem->applyInitialSolution(x);
+    auto xOld = x;
+
+    // the grid variables
+    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
+    gridVariables->init(x, xOld);
+
+    // get some time loop parameters
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    const auto tEnd = getParam<Scalar>("TimeLoop.TEnd");
+    const auto maxDt = getParam<Scalar>("TimeLoop.MaxTimeStepSize");
+    auto dt = getParam<Scalar>("TimeLoop.DtInitial");
+
+    // check if we are about to restart a previously interrupted simulation
+    Scalar restartTime = 0;
+    if (Parameters::getTree().hasKey("Restart") || Parameters::getTree().hasKey("TimeLoop.Restart"))
+        restartTime = getParam<Scalar>("TimeLoop.Restart");
+
+    // intialize the vtk output module
+    using VtkOutputFields = typename GET_PROP_TYPE(TypeTag, VtkOutputFields);
+    VtkOutputModule<TypeTag> vtkWriter(*problem, *fvGridGeometry, *gridVariables, x, problem->name());
+    VtkOutputFields::init(vtkWriter); //! Add model specific output fields
+
+    // instantiate time loop
+    auto timeLoop = std::make_shared<TimeLoop<Scalar>>(restartTime, dt, tEnd);
+    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);
+
+    // the linear solver
+    using LinearSolver = AMGBackend<TypeTag>;
+    auto linearSolver = std::make_shared<LinearSolver>(leafGridView, fvGridGeometry->dofMapper());
+
+    // the non-linear solver
+    using PrimaryVariableSwitch = typename GET_PROP_TYPE(TypeTag, PrimaryVariableSwitch);
+    using NewtonSolver = Dumux::PriVarSwitchNewtonSolver<Assembler, LinearSolver, PrimaryVariableSwitch>;
+    NewtonSolver nonLinearSolver(assembler, linearSolver);
+
+    // time loop
+    timeLoop->start(); do
+    {
+        // set previous solution for storage evaluations
+        assembler->setPreviousSolution(xOld);
+
+        //set time in problem (is used in time-dependent Neumann boundary condition)
+        problem->setTime(timeLoop->time()+timeLoop->timeStepSize());
+
+        // solve the non-linear system with time step control
+        nonLinearSolver.solve(x, *timeLoop);
+
+        // make the new solution the old solution
+        xOld = x;
+        gridVariables->advanceTimeStep();
+
+        // advance to the time loop to the next step
+        timeLoop->advanceTimeStep();
+
+        // report statistics of this time step
+        timeLoop->reportTimeStep();
+
+        // set new dt as suggested by the newton solver
+        timeLoop->setTimeStepSize(nonLinearSolver.suggestTimeStepSize(timeLoop->timeStepSize()));
+
+        vtkWriter.write(timeLoop->time());
+
+    } while (!timeLoop->finished());
+
+    timeLoop->finalize(leafGridView.comm());
+
+    ////////////////////////////////////////////////////////////
+    // finalize, print dumux message to say goodbye
+    ////////////////////////////////////////////////////////////
+
+    // print dumux end message
+    if (mpiHelper.rank() == 0)
+    {
+        Parameters::print();
+        DumuxMessage::print(/*firstCall=*/false);
+    }
+
+    return 0;
+} // end main
+catch (Dumux::ParameterException &e)
+{
+    std::cerr << std::endl << e << " ---> Abort!" << std::endl;
+    return 1;
+}
+catch (Dune::DGFException & e)
+{
+    std::cerr << "DGF exception thrown (" << e <<
+                 "). Most likely, the DGF file name is wrong "
+                 "or the DGF file is corrupted, "
+                 "e.g. missing hash at end of file or wrong number (dimensions) of entries."
+                 << " ---> Abort!" << std::endl;
+    return 2;
+}
+catch (Dune::Exception &e)
+{
+    std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl;
+    return 3;
+}
+catch (...)
+{
+    std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl;
+    return 4;
+}
diff --git a/exercises/solution/ex2/injection2p2cproblem.hh b/exercises/solution/ex2/injection2p2cproblem.hh
new file mode 100644
index 00000000..8c62fdf5
--- /dev/null
+++ b/exercises/solution/ex2/injection2p2cproblem.hh
@@ -0,0 +1,278 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Problem where air is injected under a low permeable layer in a depth of 2700m.
+ */
+#ifndef DUMUX_INJECTION_2P2C_PROBLEM_HH
+#define DUMUX_INJECTION_2P2C_PROBLEM_HH
+
+#include <dumux/porousmediumflow/2p2c/model.hh>
+#include <dumux/porousmediumflow/problem.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+#include <dumux/discretization/cellcentered/tpfa/properties.hh>
+
+#include "injection2p2cspatialparams.hh"
+
+#include "mylocalresidual.hh"
+
+namespace Dumux {
+
+// foward declaration
+template <class TypeTag>
+class Injection2p2cProblem;
+
+// setup property TypeTag
+namespace Properties {
+NEW_TYPE_TAG(Injection2p2cTypeTag, INHERITS_FROM(TwoPTwoC));
+NEW_TYPE_TAG(Injection2p2pcCCTypeTag, INHERITS_FROM(CCTpfaModel, Injection2p2cTypeTag));
+
+// Set the grid type
+SET_TYPE_PROP(Injection2p2cTypeTag, Grid, Dune::YaspGrid<2>);
+
+// Set the problem property
+SET_TYPE_PROP(Injection2p2cTypeTag, Problem, Injection2p2cProblem<TypeTag>);
+
+// Set the spatial parameters
+SET_TYPE_PROP(Injection2p2cTypeTag, SpatialParams,
+              InjectionSpatialParams<typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
+                                     typename GET_PROP_TYPE(TypeTag, Scalar)>);
+
+SET_TYPE_PROP(Injection2p2cTypeTag, LocalResidual, MyCompositionalLocalResidual<TypeTag>);
+
+// Set fluid configuration
+SET_TYPE_PROP(Injection2p2cTypeTag,
+              FluidSystem,
+              FluidSystems::H2ON2<typename GET_PROP_TYPE(TypeTag, Scalar), false /*useComplexRelations*/>);
+
+// Define whether mole(true) or mass (false) fractions are used
+SET_BOOL_PROP(Injection2p2cTypeTag, UseMoles, true);
+} // end namespace Properties
+
+/*!
+ * \ingroup TwoPTwoCModel
+ * \ingroup ImplicitTestProblems
+ * \brief Problem where air is injected under a low permeable layer in a depth of 2700m.
+ *
+ * The domain is sized 60m times 40m and consists of two layers, a moderately
+ * permeable one for \f$ y<22m\f$ and one with a lower permeablility
+ * in the rest of the domain.
+ *
+ * Nitrogen is injected into a water-filled aquifer through a well. First, we inject for one month.
+ * Then, we continue simulating the development of the nitrogen plume for 10 years.
+ * This is realized with a Neumann boundary condition at the right boundary
+ * (\f$ 7m<y<15m\f$). The aquifer is situated 2700m below sea level (the depth can be changed through the input file).
+ * The injected fluid phase migrates upwards due to buoyancy.
+ * It accumulates and partially enters the top layer lower permeable aquitard.
+ *
+ * The default setting for useMoles is true, i.e. each component is balaced in units of mole.
+ * The property useMoles can be set to either true or false in the
+ * problem file. If you change this, make sure that the according units are used in the problem setup.
+ *
+ * This problem uses the \ref TwoPTwoCModel.
+ */
+template <class TypeTag>
+class Injection2p2cProblem : public PorousMediumFlowProblem<TypeTag>
+{
+    using ParentType = PorousMediumFlowProblem<TypeTag>;
+
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
+    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
+    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+
+    enum { dimWorld = GridView::dimensionworld };
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    Injection2p2cProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+         // initialize the tables of the fluid system
+        FluidSystem::init(/*tempMin=*/273.15,
+                          /*tempMax=*/423.15,
+                          /*numTemp=*/50,
+                          /*pMin=*/0.0,
+                          /*pMax=*/30e6,
+                          /*numP=*/300);
+
+        // name of the problem and output file
+        name_ = getParam<std::string>("Problem.Name");
+        // depth of the aquifer, units: m
+        aquiferDepth_ = getParam<Scalar>("Problem.AquiferDepth");
+        // inflow rate of nitrogen water vapor mixture, units: kg/(s m^2)
+        totalAreaSpecificInflow_ = getParam<Scalar>("Problem.TotalAreaSpecificInflow");
+        // the duration of the injection, units: second
+        injectionDuration_ = getParam<Scalar>("Problem.InjectionDuration");
+    }
+
+    /*!
+     * \name Problem parameters
+     */
+    // \{
+
+    /*!
+     * \brief Returns the problem name
+     *
+     * This is used as a prefix for files generated by the simulation.
+     */
+    const std::string& name() const
+    { return name_; }
+
+    /*!
+     * \brief Returns the temperature in \f$ K \f$
+     */
+    Scalar temperature() const
+    { return 273.15 + 30; }
+
+    // \}
+
+     /*!
+     * \name Boundary conditions
+     */
+    // \{
+
+    /*!
+     * \brief Specifies which kind of boundary condition should be
+     *        used for which equation on a given boundary segment.
+     *
+     * \param bcTypes The boundary types for the conservation equations
+     * \param globalPos The position for which the bc type should be evaluated
+     */
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
+    {
+        BoundaryTypes bcTypes;
+        if (globalPos[0] < eps_)
+            bcTypes.setAllDirichlet();
+
+        // and Neuman boundary conditions everywhere else
+        // note that we don't differentiate between Neumann and Robin boundary types
+        else
+            bcTypes.setAllNeumann();
+
+        return bcTypes;
+    }
+
+    /*!
+     * \brief Evaluates the boundary conditions for a Dirichlet
+     *        boundary segment
+     *
+     * \param globalPos The global position
+     */
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        return initialAtPos(globalPos);
+    }
+
+    /*!
+     * \brief Evaluate the boundary conditions for a neumann
+     *        boundary segment.
+     *
+     * \param values Stores the Neumann values for the conservation equations in
+     *               \f$ [ \textnormal{unit of conserved quantity} / (m^(dim-1) \cdot s )] \f$
+     * \param globalPos The position of the integration point of the boundary segment.
+     *
+     * For this method, the \a values parameter stores the mass flux
+     * in normal direction of each phase. Negative values mean influx.
+     */
+    NumEqVector neumannAtPos(const GlobalPosition &globalPos) const
+    {
+        // initialize values to zero, i.e. no-flow Neumann boundary conditions
+        NumEqVector values(0.0);
+
+        //if we are inside the injection zone set inflow Neumann boundary conditions
+        if (time_ < injectionDuration_
+            && globalPos[1] < 15 + eps_ && globalPos[1] > 7 - eps_ && globalPos[0] > 0.9*this->fvGridGeometry().bBoxMax()[0])
+        {
+            // set the Neumann values for the Nitrogen component balance
+            // convert from units kg/(s*m^2) to mole/(s*m^2)
+            values[Indices::conti0EqIdx + FluidSystem::N2Idx] = -totalAreaSpecificInflow_/FluidSystem::molarMass(FluidSystem::N2Idx);
+            values[Indices::conti0EqIdx + FluidSystem::H2OIdx] = 0.0;
+        }
+
+        return values;
+    }
+
+    // \}
+
+    /*!
+     * \name Volume terms
+     */
+    // \{
+
+    /*!
+     * \brief Evaluate the initial value for a control volume.
+     *
+     * \param globalPos The position for which the initial condition should be evaluated
+     *
+     * For this method, the \a values parameter stores primary
+     * variables.
+     */
+    PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const
+    {
+        PrimaryVariables values(0.0);
+        values.setState(Indices::firstPhaseOnly);
+
+        // get the water density at atmospheric conditions
+        const Scalar densityW = FluidSystem::H2O::liquidDensity(temperature(), 1.0e5);
+
+        // assume an intially hydrostatic liquid pressure profile
+        // note: we subtract rho_w*g*h because g is defined negative
+        const Scalar pw = 1.0e5 - densityW*this->gravity()[dimWorld-1]*(aquiferDepth_ - globalPos[dimWorld-1]);
+
+        // initially we have some nitrogen dissolved
+        // saturation mole fraction would be
+        // moleFracLiquidN2 = (pw + pc + p_vap^sat)/henry;
+        const Scalar moleFracLiquidN2 = pw*0.95/BinaryCoeff::H2O_N2::henry(temperature());
+
+        // note that because we start with a single phase system the primary variables
+        // are pl and x^w_N2. This will switch as soon after we start injecting to a two
+        // phase system so the primary variables will be pl and Sn (non-wetting saturation).
+        values[Indices::switchIdx] = moleFracLiquidN2;
+        values[Indices::pressureIdx] = pw;
+
+        return values;
+    }
+
+    // \}
+
+    void setTime(Scalar time)
+    {
+        time_ = time;
+    }
+
+private:
+    static constexpr Scalar eps_ = 1e-6;
+    std::string name_; //! Problem name
+    Scalar aquiferDepth_; //! Depth of the aquifer in m
+    Scalar totalAreaSpecificInflow_; //! Area specific inflow rate in mole/(s*m^2)
+    Scalar time_;
+    Scalar injectionDuration_; //! Duration of the injection in seconds
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/solution/ex2/injection2p2cspatialparams.hh b/exercises/solution/ex2/injection2p2cspatialparams.hh
new file mode 100644
index 00000000..4c89071a
--- /dev/null
+++ b/exercises/solution/ex2/injection2p2cspatialparams.hh
@@ -0,0 +1,190 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Definition of the spatial parameters for the injection problem
+ *        which uses the isothermal two-phase two-component
+ *        fully implicit model.
+ */
+
+#ifndef DUMUX_INJECTION_SPATIAL_PARAMS_HH
+#define DUMUX_INJECTION_SPATIAL_PARAMS_HH
+
+#include <dumux/material/spatialparams/fv.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
+// TODO: dumux-course-task
+// Inlcude your own material law
+#include "mymateriallaw.hh"
+
+#include <dumux/io/gnuplotinterface.hh>
+#include <dumux/io/plotmateriallaw.hh>
+
+namespace Dumux {
+
+/*!
+ * \ingroup TwoPTwoCModel
+ * \brief Definition of the spatial parameters for the injection problem
+ *        which uses the isothermal two-phase two-component
+ *        fully implicit model.
+ */
+template<class FVGridGeometry, class Scalar>
+class InjectionSpatialParams
+: public FVSpatialParams<FVGridGeometry, Scalar, InjectionSpatialParams<FVGridGeometry, Scalar>>
+{
+    using ThisType = InjectionSpatialParams<FVGridGeometry, Scalar>;
+    using ParentType = FVSpatialParams<FVGridGeometry, Scalar, ThisType>;
+    using GridView = typename FVGridGeometry::GridView;
+    static const int dimWorld = GridView::dimensionworld;
+    using Element = typename GridView::template Codim<0>::Entity;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
+
+public:
+    // export permeability type
+    using PermeabilityType = Scalar;
+
+    // TODO: dumux-course-task
+    // Use your own material law instead
+    // Set the material law parameterized by absolute saturations
+    using MaterialLaw = EffToAbsLaw<MyMaterialLaw<Scalar>>;
+    using MaterialLawParams = typename MaterialLaw::Params;
+
+    /*!
+     * \brief The constructor
+     *
+     * \param fvGridGeometry The finite volume grid geometry
+     */
+    InjectionSpatialParams(std::shared_ptr<const FVGridGeometry>& fvGridGeometry)
+    : ParentType(fvGridGeometry)
+    {
+        aquiferHeightFromBottom_ = 30.0;
+
+        // intrinsic permeabilities
+        aquitardK_ = getParam<Scalar>("SpatialParams.PermeabilityAquitard");
+        aquiferK_ = getParam<Scalar>("SpatialParams.PermeabilityAquifer");
+
+        // porosities
+        aquitardPorosity_ = 0.2;
+        aquiferPorosity_ = 0.4;
+
+        // residual saturations
+        aquitardMaterialParams_.setSwr(0.2);
+        aquitardMaterialParams_.setSnr(0.0);
+        aquiferMaterialParams_.setSwr(0.2);
+        aquiferMaterialParams_.setSnr(0.0);
+
+        // parameters for the Brooks-Corey law
+        aquitardMaterialParams_.setPe(getParam<Scalar>("SpatialParams.EntryPressureAquitard"));
+        aquiferMaterialParams_.setPe(getParam<Scalar>("SpatialParams.EntryPressureAquifer"));
+        aquitardMaterialParams_.setLambda(2.0);
+        aquiferMaterialParams_.setLambda(2.0);
+
+        // plot the material laws using gnuplot and exit
+        if (getParam<bool>("Problem.OnlyPlotMaterialLaws"))
+        {
+            plotMaterialLaws();
+            exit(0);
+        }
+    }
+
+    /*!
+     * \brief Define the intrinsic permeability \f$\mathrm{[m^2]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    PermeabilityType permeabilityAtPos(const GlobalPosition& globalPos) const
+
+    {
+        if (isInAquitard_(globalPos))
+            return aquitardK_;
+        return aquiferK_;
+    }
+
+    /*!
+     * \brief Define the porosity \f$\mathrm{[-]}\f$.
+     *
+     * \param globalPos The global position
+     */
+    Scalar porosityAtPos(const GlobalPosition& globalPos) const
+    {
+        if (isInAquitard_(globalPos))
+            return aquitardPorosity_;
+        return aquiferPorosity_;
+    }
+
+    /*!
+     * \brief Function for defining the parameters needed by constitutive relationships (kr-sw, pc-sw, etc.).
+     *
+     * \param globalPos The global position
+     *
+     * \return the material parameters object
+     */
+     const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const
+    {
+        if (isInAquitard_(globalPos))
+            return aquitardMaterialParams_;
+        return aquiferMaterialParams_;
+    }
+
+    /*!
+     * \brief Function for defining which phase is to be considered as the wetting phase.
+     *
+     * \return the wetting phase index
+     * \param globalPos The position of the center of the element
+     */
+    template<class FluidSystem>
+    int wettingPhaseAtPos(const GlobalPosition& globalPos) const
+    { return FluidSystem::H2OIdx; }
+
+    /*!
+     * \brief Creates a gnuplot output of the pc-Sw curve
+     */
+    void plotMaterialLaws()
+    {
+        PlotMaterialLaw<Scalar, MaterialLaw> plotMaterialLaw;
+        GnuplotInterface<Scalar> gnuplot;
+        plotMaterialLaw.addpcswcurve(gnuplot, aquitardMaterialParams_, 0.2, 1.0, "upper layer (fine, aquitard)", "w lp");
+        plotMaterialLaw.addpcswcurve(gnuplot, aquiferMaterialParams_, 0.2, 1.0, "lower layer (coarse, aquifer)", "w l");
+        gnuplot.setOption("set xrange [0:1]");
+        gnuplot.setOption("set label \"residual\\nsaturation\" at 0.1,100000 center");
+        gnuplot.plot("pc-Sw");
+    }
+
+private:
+
+    static constexpr Scalar eps_ = 1e-6;
+
+    bool isInAquitard_(const GlobalPosition &globalPos) const
+    { return globalPos[dimWorld-1] > aquiferHeightFromBottom_ + eps_; }
+
+    Scalar aquitardK_;
+    Scalar aquiferK_;
+    Scalar aquiferHeightFromBottom_;
+
+    Scalar aquitardPorosity_;
+    Scalar aquiferPorosity_;
+
+    MaterialLawParams aquitardMaterialParams_;
+    MaterialLawParams aquiferMaterialParams_;
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/solution/ex2/mylocalresidual.hh b/exercises/solution/ex2/mylocalresidual.hh
new file mode 100644
index 00000000..ac668555
--- /dev/null
+++ b/exercises/solution/ex2/mylocalresidual.hh
@@ -0,0 +1,163 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Element-wise calculation of the local residual for problems
+ *        using compositional fully implicit model.
+ */
+#ifndef DUMUX_MY_COMPOSITIONAL_LOCAL_RESIDUAL_HH
+#define DUMUX_MY_COMPOSITIONAL_LOCAL_RESIDUAL_HH
+
+#include <dumux/common/properties.hh>
+
+namespace Dumux
+{
+/*!
+ * \ingroup Implicit
+ * \ingroup ImplicitLocalResidual
+ * \brief Element-wise calculation of the local residual for problems
+ *        using compositional fully implicit model.
+ *
+ */
+template<class TypeTag>
+class MyCompositionalLocalResidual: public GET_PROP_TYPE(TypeTag, BaseLocalResidual)
+{
+    using ParentType = typename GET_PROP_TYPE(TypeTag, BaseLocalResidual);
+    using Implementation = typename GET_PROP_TYPE(TypeTag, LocalResidual);
+    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
+    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+    using SubControlVolume = typename FVElementGeometry::SubControlVolume;
+    using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace;
+    using ResidualVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
+    using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables);
+    using ElementFluxVariablesCache = typename GET_PROP_TYPE(TypeTag, GridFluxVariablesCache)::LocalView;
+    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Element = typename GridView::template Codim<0>::Entity;
+    using ElementVolumeVariables = typename GET_PROP_TYPE(TypeTag, GridVolumeVariables)::LocalView;
+    using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables);
+    using EnergyLocalResidual = typename GET_PROP_TYPE(TypeTag, EnergyLocalResidual);
+
+    static constexpr int numPhases = GET_PROP_TYPE(TypeTag, ModelTraits)::numPhases();
+    static constexpr int numComponents = GET_PROP_TYPE(TypeTag, ModelTraits)::numComponents();
+
+    enum { conti0EqIdx = Indices::conti0EqIdx };
+
+public:
+    using ParentType::ParentType;
+
+    /*!
+     * \brief Evaluate the amount of all conservation quantities
+     *        (e.g. phase mass) within a sub-control volume.
+     *
+     * The result should be averaged over the volume (e.g. phase mass
+     * inside a sub control volume divided by the volume)
+     *
+     *  \param storage The mass of the component within the sub-control volume
+     *  \param scvIdx The SCV (sub-control-volume) index
+     *  \param usePrevSol Evaluate function with solution of current or previous time step
+     */
+    ResidualVector computeStorage(const Problem& problem,
+                                  const SubControlVolume& scv,
+                                  const VolumeVariables& volVars) const
+    {
+        ResidualVector storage(0.0);
+
+        // compute storage term of all components within all phases
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+        {
+            for (int compIdx = 0; compIdx < numComponents; ++compIdx)
+            {
+                auto eqIdx = conti0EqIdx + compIdx;
+                    storage[eqIdx] += volVars.porosity()
+                                      * volVars.saturation(phaseIdx)
+                                      * volVars.molarDensity(phaseIdx)
+                                      * volVars.moleFraction(phaseIdx, compIdx);
+            }
+        }
+
+        return storage;
+    }
+
+    /*!
+     * \brief Evaluates the total flux of all conservation quantities
+     *        over a face of a sub-control volume.
+     *
+     * \param flux The flux over the SCV (sub-control-volume) face for each component
+     * \param fIdx The index of the SCV face
+     * \param onBoundary A boolean variable to specify whether the flux variables
+     *        are calculated for interior SCV faces or boundary faces, default=false
+     */
+    ResidualVector computeFlux(const Problem& problem,
+                               const Element& element,
+                               const FVElementGeometry& fvGeometry,
+                               const ElementVolumeVariables& elemVolVars,
+                               const SubControlVolumeFace& scvf,
+                               const ElementFluxVariablesCache& elemFluxVarsCache) const
+    {
+        FluxVariables fluxVars;
+        fluxVars.init(problem, element, fvGeometry, elemVolVars, scvf, elemFluxVarsCache);
+        // get upwind weights into local scope
+        ResidualVector flux(0.0);
+
+        auto enableDiffusion = getParam<bool>("Problem.EnableDiffusion", true);
+
+        // advective fluxes
+        for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
+        {
+            const auto diffusiveFluxes = fluxVars.molecularDiffusionFlux(phaseIdx);
+            for (int compIdx = 0; compIdx < numComponents; ++compIdx)
+            {
+                // get equation index
+                const auto eqIdx = conti0EqIdx + compIdx;
+
+                // the physical quantities for which we perform upwinding
+                const auto upwindTerm = [phaseIdx,compIdx] (const auto& volVars)
+                { return volVars.molarDensity(phaseIdx)*volVars.moleFraction(phaseIdx, compIdx)*volVars.mobility(phaseIdx); };
+                 flux[eqIdx] += fluxVars.advectiveFlux(phaseIdx, upwindTerm);
+
+                // TODO: dumux-course-task
+                // same here: only add diffusive fluxes if diffusion is enabled
+                if (enableDiffusion)
+                    flux[eqIdx] +=  diffusiveFluxes[compIdx];
+            }
+
+            //! Add advective phase energy fluxes. For isothermal model the contribution is zero.
+            EnergyLocalResidual::heatConvectionFlux(flux, fluxVars, phaseIdx);
+        }
+
+        //! Add diffusive energy fluxes. For isothermal model the contribution is zero.
+        EnergyLocalResidual::heatConductionFlux(flux, fluxVars);
+
+        return flux;
+    }
+
+protected:
+    Implementation *asImp_()
+    { return static_cast<Implementation *> (this); }
+
+    const Implementation *asImp_() const
+    { return static_cast<const Implementation *> (this); }
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/solution/ex2/mymateriallaw.hh b/exercises/solution/ex2/mymateriallaw.hh
new file mode 100644
index 00000000..fe36bec6
--- /dev/null
+++ b/exercises/solution/ex2/mymateriallaw.hh
@@ -0,0 +1,114 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief Implementation of the capillary pressure and
+ * relative permeability <-> saturation relations.
+ *
+ */
+#ifndef DUMUX_MY_MATERIAL_LAW_HH
+#define DUMUX_MY_MATERIAL_LAW_HH
+
+#include <dumux/material/fluidmatrixinteractions/2p/brookscoreyparams.hh>
+#include <cmath>
+#include <algorithm>
+
+namespace Dumux
+{
+/*!
+ * \ingroup fluidmatrixinteractionslaws
+ * \note a simple material law using the BrooksCoreyParams
+ */
+template <class ScalarT, class ParamsT = BrooksCoreyParams<ScalarT> >
+class MyMaterialLaw
+{
+public:
+    typedef ParamsT     Params;
+    typedef typename    Params::Scalar Scalar;
+
+    /*!
+     * \brief The capillary pressure-saturation curve
+     * \param swe saturation of the wetting phase \f$\mathrm{[\overline{S}_w]}\f$
+     * \param params A container object that is populated with the appropriate coefficients for the respective law.
+     *                  Therefore, in the (problem specific) spatialParameters  first, the material law is chosen,
+                        and then the params container is constructed accordingly. Afterwards the values are set there, too.
+     * \return capillary pressure
+     */
+    static Scalar pc(const Params &params, Scalar swe)
+    {
+        return 1.0e5*(1.0-swe) + params.pe();
+    }
+
+    /*!
+     * \brief The relative permeability for the wetting phase of
+     *        the medium implied by the Brooks-Corey
+     *        parameterization.
+     *
+     * \param swe The mobile saturation of the wetting phase.
+     * \param params A container object that is populated with the appropriate coefficients for the respective law.
+     *                  Therefore, in the (problem specific) spatialParameters  first, the material law is chosen,
+     *                  and then the params container is constructed accordingly. Afterwards the values are set there, too.
+     * \return Relative permeability of the wetting phase calculated as implied by Brooks & Corey.
+     *
+     * \note Instead of undefined behaviour if pc is not in the valid range, we return a valid number,
+     *       by clamping the input.
+     */
+    static Scalar krw(const Params &params, Scalar swe)
+    {
+        using std::pow;
+        using std::min;
+        using std::max;
+
+        swe = min(max(swe, 0.0), 1.0); // the equation below is only defined for 0.0 <= swe <= 1.0
+
+        return pow(swe, 2.0/params.lambda() + 3);
+    }
+
+    /*!
+     * \brief The relative permeability for the non-wetting phase of
+     *        the medium as implied by the Brooks-Corey
+     *        parameterization.
+     *
+     * \param swe The mobile saturation of the wetting phase.
+     * \param params A container object that is populated with the appropriate coefficients for the respective law.
+     *                  Therefore, in the (problem specific) spatialParameters  first, the material law is chosen, and then the params container
+     *                  is constructed accordingly. Afterwards the values are set there, too.
+     * \return Relative permeability of the non-wetting phase calculated as implied by Brooks & Corey.
+     *
+     * \note Instead of undefined behaviour if pc is not in the valid range, we return a valid number,
+     *       by clamping the input.
+     */
+    static Scalar krn(const Params &params, Scalar swe)
+    {
+        using std::pow;
+        using std::min;
+        using std::max;
+
+        swe = min(max(swe, 0.0), 1.0); // the equation below is only defined for 0.0 <= swe <= 1.0
+
+        const Scalar exponent = 2.0/params.lambda() + 1;
+        const Scalar tmp = 1.0 - swe;
+        return tmp*tmp*(1.0 - pow(swe, exponent));
+    }
+};
+
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/solution/ex3/h2omycompressiblecomponent.hh b/exercises/solution/ex3/h2omycompressiblecomponent.hh
new file mode 100644
index 00000000..7ffb47b3
--- /dev/null
+++ b/exercises/solution/ex3/h2omycompressiblecomponent.hh
@@ -0,0 +1,489 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ *
+ * \brief A fluid system with water and a fictitious component, which is to be
+ *        implemented in tutorial exercise 3a, as phases and components. This
+ *        fluid system is to be implemented in exercise 3b.
+ */
+#ifndef DUMUX_H2O_MYCOMPRESSIBLECOMPONENT_FLUID_SYSTEM_HH
+#define DUMUX_H2O_MYCOMPRESSIBLECOMPONENT_FLUID_SYSTEM_HH
+
+#include <dumux/material/components/h2o.hh>
+#include <dumux/material/components/tabulatedcomponent.hh>
+
+#include <dumux/material/fluidsystems/base.hh>
+
+// the fictitious component that was created in exercise 3a
+#include <tutorial/ex3/components/mycompressiblecomponent.hh>
+
+// the binary coefficients corresponding to this fluid system
+#include <tutorial/ex3/binarycoefficients/h2omycompressiblecomponent.hh>
+
+namespace Dumux
+{
+namespace FluidSystems
+{
+
+/*!
+ * \brief A compositional fluid consisting of two liquid phases,
+ *        which are water and a fictitious component from tutorial exercise 3a.
+ */
+template <class TypeTag, class Scalar,
+          class H2OType = Dumux::Components::TabulatedComponent<Dumux::Components::H2O<Scalar> > >
+class H2OMyCompressibleComponent
+    : public BaseFluidSystem< Scalar, H2OMyCompressibleComponent<TypeTag, Scalar, H2OType> >
+{
+    typedef H2OMyCompressibleComponent<TypeTag, Scalar, H2OType> ThisType;
+    typedef BaseFluidSystem<Scalar, ThisType> Base;
+
+public:
+    typedef Dumux::MyCompressibleComponent<Scalar> MyCompressibleComponent;
+    typedef H2OType H2O;
+
+    static constexpr int numPhases = 2;
+    static constexpr int numComponents = 2;
+
+    static constexpr int phase0Idx = 0; // index of the first phase
+    static constexpr int phase1Idx = 1; // index of the second phase
+
+    static constexpr int H2OIdx = 0;
+    static constexpr int NAPLIdx = 1;
+    // export component indices to indicate the main component
+    // of the corresponding phase at atmospheric pressure 1 bar
+    // and room temperature 20°C:
+    static constexpr int comp0Idx = H2OIdx;
+    static constexpr int comp1Idx = NAPLIdx;
+
+    /*!
+     * \brief Initialize the fluid system's static parameters generically
+     *
+     * If a tabulated H2O component is used, we do our best to create
+     * tables that always work.
+     */
+    static void init()
+    {
+        init(/*tempMin=*/273.15,
+             /*tempMax=*/623.15,
+             /*numTemp=*/100,
+             /*pMin=*/0.0,
+             /*pMax=*/20e6,
+             /*numP=*/200);
+    }
+
+    /*!
+     * \brief Initialize the fluid system's static parameters using
+     *        problem specific temperature and pressure ranges
+     *
+     * \param tempMin The minimum temperature used for tabulation of water [K]
+     * \param tempMax The maximum temperature used for tabulation of water [K]
+     * \param nTemp The number of ticks on the temperature axis of the  table of water
+     * \param pressMin The minimum pressure used for tabulation of water [Pa]
+     * \param pressMax The maximum pressure used for tabulation of water [Pa]
+     * \param nPress The number of ticks on the pressure axis of the  table of water
+     */
+    static void init(Scalar tempMin, Scalar tempMax, unsigned nTemp,
+                     Scalar pressMin, Scalar pressMax, unsigned nPress)
+    {
+        if (H2O::isTabulated) {
+            std::cout << "Initializing tables for the H2O fluid properties ("
+                      << nTemp*nPress
+                      << " entries).\n";
+
+            H2O::init(tempMin, tempMax, nTemp,
+                      pressMin, pressMax, nPress);
+        }
+    }
+
+
+    /*!
+     * \brief Return whether a phase is liquid
+     *
+     * \param phaseIdx The index of the fluid phase to consider
+     */
+    static constexpr bool isLiquid(int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        return true;
+    }
+
+    static constexpr bool isIdealGas(int phaseIdx)
+    { return H2O::gasIsIdeal() && MyCompressibleComponent::gasIsIdeal(); }
+
+    /*!
+     * \brief Returns true if and only if a fluid phase is assumed to
+     *        be an ideal mixture.
+     *
+     * We define an ideal mixture as a fluid phase where the fugacity
+     * coefficients of all components times the pressure of the phase
+     * are indepent on the fluid composition. This assumtion is true
+     * if Henry's law and Raoult's law apply. If you are unsure what
+     * this function should return, it is safe to return false. The
+     * only damage done will be (slightly) increased computation times
+     * in some cases.
+     *
+     * \param phaseIdx The index of the fluid phase to consider
+     */
+    static constexpr bool isIdealMixture(int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        return true;
+    }
+
+    /*!
+     * \brief Returns true if and only if a fluid phase is assumed to
+     *        be compressible.
+     *
+     * Compressible means that the partial derivative of the density
+     * to the fluid pressure is always larger than zero.
+     *
+     * \param phaseIdx The index of the fluid phase to consider
+     */
+    static constexpr bool isCompressible(int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        if (phaseIdx == phase0Idx)
+            // the water component decides for the water phase...
+            return H2O::liquidIsCompressible();
+
+        // the NAPL component decides for the napl phase...
+        return MyCompressibleComponent::liquidIsCompressible();
+    }
+
+    /*!
+     * \brief Return the human readable name of a phase (used in indices)
+     */
+    static std::string phaseName(int phaseIdx)
+    {
+        switch (phaseIdx) {
+        case phase0Idx: return "w";
+        case phase1Idx: return "n";
+        };
+        DUNE_THROW(Dune::InvalidStateException, "Invalid phase index " << phaseIdx);
+    }
+
+    /*!
+     * \brief Return the human readable name of a component (used in indices)
+     */
+    static std::string componentName(int compIdx)
+    {
+        switch (compIdx) {
+        case H2OIdx: return H2O::name();
+        case NAPLIdx: return MyCompressibleComponent::name();
+        };
+        DUNE_THROW(Dune::InvalidStateException, "Invalid component index " << compIdx);
+    }
+
+    /*!
+     * \brief Return the molar mass of a component in [kg/mol].
+     */
+    static Scalar molarMass(int compIdx)
+    {
+        switch (compIdx) {
+        case H2OIdx: return H2O::molarMass();
+        case NAPLIdx: return MyCompressibleComponent::molarMass();
+        };
+        DUNE_THROW(Dune::InvalidStateException, "Invalid component index " << compIdx);
+    }
+
+    /*!
+     * \brief Given all mole fractions in a phase, return the phase
+     *        density [kg/m^3].
+     */
+    using Base::density;
+    template <class FluidState>
+    static Scalar density(const FluidState &fluidState, int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        if (phaseIdx == phase0Idx) {
+            // See: doctoral thesis of Steffen Ochs 2007
+            // Steam injection into saturated porous media : process analysis including experimental and numerical investigations
+            // http://elib.uni-stuttgart.de/bitstream/11682/271/1/Diss_Ochs_OPUS.pdf
+            Scalar rholH2O = H2O::liquidDensity(fluidState.temperature(phaseIdx), fluidState.pressure(phaseIdx));
+            Scalar clH2O = rholH2O/H2O::molarMass();
+            Scalar x_H2O = fluidState.moleFraction(phase0Idx, H2OIdx);
+            Scalar x_myComp = fluidState.moleFraction(phase0Idx, NAPLIdx);
+
+            // return composition-dependent water phase density
+            return clH2O*(H2O::molarMass()*x_H2O + MyCompressibleComponent::molarMass()*x_myComp);
+        }
+        else {
+            // assume the density of the fictious component to be independent of the composition
+            Scalar pressure = MyCompressibleComponent::liquidIsCompressible()?fluidState.pressure(phaseIdx):1e100;
+            return MyCompressibleComponent::liquidDensity(fluidState.temperature(phaseIdx), pressure);
+        }
+    }
+
+    using Base::molarDensity;
+    /*!
+     * \brief The molar density \f$\rho_{mol,\alpha}\f$
+     *   of a fluid phase \f$\alpha\f$ in \f$\mathrm{[mol/m^3]}\f$
+     *
+     * The molar density for the simple relation is defined by the
+     * mass density \f$\rho_\alpha\f$ and the molar mass of the main component
+     *
+     * The molar density for the complrex relation is defined by the
+     * mass density \f$\rho_\alpha\f$ and the mean molar mass \f$\overline M_\alpha\f$:
+     *
+     * \f[\rho_{mol,\alpha} = \frac{\rho_\alpha}{\overline M_\alpha} \;.\f]
+     */
+    template <class FluidState>
+    static Scalar molarDensity(const FluidState &fluidState, int phaseIdx)
+    {
+        assert(0 <= phaseIdx  && phaseIdx < numPhases);
+
+        Scalar T = fluidState.temperature(phaseIdx);
+        Scalar p = fluidState.pressure(phaseIdx);
+
+        // liquid phase
+        if (phaseIdx == phase0Idx)
+        {
+            // assume pure water or that each gas molecule displaces exactly one
+            // molecule in the liquid.
+            return H2O::liquidMolarDensity(T, p);
+        }
+        else
+        {
+            // assume the molar density of the fictious component to be independent of the composition
+            Scalar pressure = MyCompressibleComponent::liquidIsCompressible()?fluidState.pressure(phaseIdx):1e100;
+            return MyCompressibleComponent::liquidMolarDensity(fluidState.temperature(phaseIdx), pressure);
+        }
+    }
+
+    /*!
+     * \brief Return the viscosity of a phase.
+     */
+    using Base::viscosity;
+    template <class FluidState>
+    static Scalar viscosity(const FluidState &fluidState,
+                            int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        if (phaseIdx == phase0Idx) {
+            // assume pure water viscosity
+            return H2O::liquidViscosity(fluidState.temperature(phaseIdx),
+                                        fluidState.pressure(phaseIdx));
+        }
+        else {
+            // assume pure NAPL viscosity
+            return MyCompressibleComponent::liquidViscosity(fluidState.temperature(phaseIdx), fluidState.pressure(phaseIdx));
+        }
+    }
+
+    using Base::diffusionCoefficient;
+    template <class FluidState>
+    static Scalar diffusionCoefficient(const FluidState &fluidState, int phaseIdx, int compIdx)
+    {
+        DUNE_THROW(Dune::NotImplemented, "Diffusion coefficients");
+    }
+
+    /*!
+     * \brief Given a phase's composition, temperature and pressure,
+     *        return the binary diffusion coefficient \f$\mathrm{[m^2/s]}\f$ for components
+     *        \f$\mathrm{i}\f$ and \f$\mathrm{j}\f$ in this phase.
+     * \param fluidState The fluid state
+     * \param paramCache mutable parameters
+     * \param phaseIdx Index of the fluid phase
+     * \param compIIdx Index of the component i
+     * \param compJIdx Index of the component j
+     */
+    using Base::binaryDiffusionCoefficient;
+    template <class FluidState>
+    static Scalar binaryDiffusionCoefficient(const FluidState &fluidState,
+                                             int phaseIdx,
+                                             int compIIdx,
+                                             int compJIdx)
+    {
+        assert(0 <= phaseIdx  && phaseIdx < numPhases);
+        assert(0 <= compIIdx  && compIIdx < numComponents);
+        assert(0 <= compJIdx  && compJIdx < numComponents);
+
+        const Scalar T = fluidState.temperature(phaseIdx);
+        const Scalar p = fluidState.pressure(phaseIdx);
+
+        // we assume the diffusion coefficient to be the same in both phases
+        return Dumux::BinaryCoeff::H2O_MyCompressibleComponent::liquidDiffCoeff(T, p);
+    }
+
+     /* Henry coefficients
+     */
+    template <class FluidState>
+    static Scalar henryCoefficient(const FluidState &fluidState,
+                                   int phaseIdx,
+                                   int compIdx)
+    {
+        assert(0 <= phaseIdx  && phaseIdx < numPhases);
+        assert(0 <= compIdx  && compIdx < numComponents);
+
+        const Scalar T = fluidState.temperature(phaseIdx);
+        const Scalar p = fluidState.pressure(phaseIdx);
+
+        if (compIdx == NAPLIdx && phaseIdx == phase0Idx)
+            return Dumux::BinaryCoeff::H2O_MyCompressibleComponent::henryMyCompressibleComponentInWater(T)/p;
+
+        else if (phaseIdx == phase1Idx && compIdx == H2OIdx)
+            return Dumux::BinaryCoeff::H2O_MyCompressibleComponent::henryWaterInMyCompressibleComponent(T)/p;
+
+        else
+            DUNE_THROW(Dune::InvalidStateException, "non-existent henry coefficient for phase index " << phaseIdx
+                                                     << " and component index " << compIdx);
+    }
+
+    using Base::fugacityCoefficient;
+    /*!
+     * \brief Returns the fugacity coefficient \f$\mathrm{[-]}\f$ of a component in a
+     *        phase.
+     *
+     * In this case, things are actually pretty simple. We have an ideal
+     * solution. Thus, the fugacity coefficient is 1 in the gas phase
+     * (fugacity equals the partial pressure of the component in the gas phase
+     * respectively in the liquid phases it is the inverse of the
+     * Henry coefficients scaled by pressure
+     * \param fluidState The fluid state
+     * \param phaseIdx The index of the phase
+     * \param compIdx The index of the component
+     */
+    template <class FluidState>
+    static Scalar fugacityCoefficient(const FluidState &fluidState,
+                                      int phaseIdx,
+                                      int compIdx)
+    {
+        assert(0 <= phaseIdx  && phaseIdx < numPhases);
+        assert(0 <= compIdx  && compIdx < numComponents);
+
+        Scalar T = fluidState.temperature(phaseIdx);
+        Scalar p = fluidState.pressure(phaseIdx);
+
+        if (phaseIdx == phase0Idx) {
+            if (compIdx == H2OIdx)
+                return H2O::vaporPressure(T)/p;
+            else if (compIdx == NAPLIdx)
+                return Dumux::BinaryCoeff::H2O_MyCompressibleComponent::henryMyCompressibleComponentInWater(T)/p;
+        }
+
+        // for the NAPL phase, we assume currently that nothing is
+        // dissolved. this means that the affinity of the NAPL
+        // component to the NAPL phase is much higher than for the
+        // other components, i.e. the fugacity coefficient is much
+        // smaller.
+        Scalar phiNapl = MyCompressibleComponent::vaporPressure(T)/p;
+        if (compIdx == NAPLIdx)
+            return phiNapl;
+        else
+            return 1e6*phiNapl;
+    }
+
+    template <class FluidState>
+    static Scalar kelvinVaporPressure(const FluidState &fluidState,
+                                      const int phaseIdx,
+                                      const int compIdx)
+    {
+        DUNE_THROW(Dune::NotImplemented, "FluidSystems::H2OMyCompressibleComponent::kelvinVaporPressure()");
+    }
+
+     /*  partial pressures in the gas phase, taken from saturation vapor pressures
+     */
+    template <class FluidState>
+    static Scalar partialPressureGas(const FluidState &fluidState, int phaseIdx,
+                                      int compIdx)
+    {
+        assert(0 <= compIdx  && compIdx < numComponents);
+
+        const Scalar T = fluidState.temperature(phaseIdx);
+        if (compIdx == NAPLIdx)
+            return MyCompressibleComponent::vaporPressure(T);
+        else if (compIdx == H2OIdx)
+            return H2O::vaporPressure(T);
+        else
+            DUNE_THROW(Dune::InvalidStateException, "non-existent component index " << compIdx);
+    }
+
+     /*  inverse vapor pressures, taken from inverse saturation vapor pressures
+     */
+    template <class FluidState>
+    static Scalar inverseVaporPressureCurve(const FluidState &fluidState,
+                                            int phaseIdx,
+                                            int compIdx)
+    {
+        assert(0 <= compIdx  && compIdx < numComponents);
+
+        const Scalar pressure = fluidState.pressure(phaseIdx);
+        if (compIdx == NAPLIdx)
+            return MyCompressibleComponent::vaporTemperature(pressure);
+        else if (compIdx == H2OIdx)
+            return H2O::vaporTemperature(pressure);
+        else
+            DUNE_THROW(Dune::InvalidStateException, "non-existent component index " << compIdx);
+    }
+
+    /*!
+     * \brief Given all mole fractions in a phase, return the specific
+     *        phase enthalpy [J/kg].
+     */
+    using Base::enthalpy;
+    template <class FluidState>
+    static Scalar enthalpy(const FluidState &fluidState,
+                           int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+        if (phaseIdx == phase0Idx) {
+            return H2O::liquidEnthalpy(fluidState.temperature(phaseIdx), fluidState.pressure(phaseIdx));
+        }
+        else {
+            return MyCompressibleComponent::liquidEnthalpy(fluidState.temperature(phaseIdx), fluidState.pressure(phaseIdx));
+        }
+        DUNE_THROW(Dune::InvalidStateException, "Invalid phase index " << phaseIdx);
+    }
+
+    using Base::heatCapacity;
+    template <class FluidState>
+    static Scalar heatCapacity(const FluidState &fluidState,
+                               int phaseIdx)
+    {
+        DUNE_THROW(Dune::NotImplemented, "FluidSystems::H2ONAPL::heatCapacity()");
+    }
+
+    using Base::thermalConductivity;
+    template <class FluidState>
+    static Scalar thermalConductivity(const FluidState &fluidState,
+                                      int phaseIdx)
+    {
+        assert(0 <= phaseIdx && phaseIdx < numPhases);
+
+        const Scalar temperature  = fluidState.temperature(phaseIdx) ;
+        const Scalar pressure = fluidState.pressure(phaseIdx);
+        if (phaseIdx == phase0Idx)
+        {
+            return H2O::liquidThermalConductivity(temperature, pressure);
+        }
+        else
+        {
+            return MyCompressibleComponent::liquidThermalConductivity(temperature, pressure);
+        }
+        DUNE_THROW(Dune::InvalidStateException, "Invalid phase index " << phaseIdx);
+    }
+
+private:
+
+};
+} // end namespace FluidSystems
+} // end namespace Dumux
+
+#endif
diff --git a/exercises/solution/ex3/mycompressiblecomponent.hh b/exercises/solution/ex3/mycompressiblecomponent.hh
new file mode 100644
index 00000000..c19fae6d
--- /dev/null
+++ b/exercises/solution/ex3/mycompressiblecomponent.hh
@@ -0,0 +1,124 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup Components
+ * \brief A fictitious component to be implemented in exercise 3.
+ */
+#ifndef DUMUX_MYCOMPRESSIBLECOMPONENT_HH
+#define DUMUX_MYCOMPRESSIBLECOMPONENT_HH
+
+#include <dumux/material/idealgas.hh>
+
+#include <dumux/material/components/base.hh>
+#include <dumux/material/components/liquid.hh>
+
+#include "myincompressiblecomponent.hh"
+
+namespace Dumux
+{
+/*!
+ * \ingroup Components
+ * \brief A fictitious component to be implemented in exercise 3.
+ *
+ * \tparam Scalar The type used for scalar values
+ */
+template <class Scalar>
+class MyCompressibleComponent
+: public Components::Base<Scalar, MyIncompressibleComponent<Scalar> >
+, public Components::Liquid<Scalar, MyIncompressibleComponent<Scalar> >
+{
+public:
+    /*!
+     * \brief A human readable name for MyCompressibleComponent.
+     */
+    static std::string name()
+    { return "MyCompressibleComponent"; }
+
+    /*!
+     * \brief The molar mass in \f$\mathrm{[kg/mol]}\f$ of MyCompressibleComponent.
+     */
+    static Scalar molarMass()
+    {
+        return 131.39e-3; // [kg/mol]
+    }
+
+    /*!
+     * \brief The density of MyCompressibleComponent at a given pressure and temperature \f$\mathrm{[kg/m^3]}\f$.
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     */
+    static Scalar liquidDensity(Scalar temperature, Scalar pressure)
+    {
+        static const Scalar rho_min = 1440;
+        static const Scalar rho_max = 1480;
+        static const Scalar k = 5e-7;
+
+        using std::exp;
+        return rho_min + (rho_max - rho_min)/(1 + rho_min*exp(-1.0*k*(rho_max - rho_min)*pressure)); // [kg/m^3]
+    }
+
+    /*!
+     * \brief The molar density of MyCompressibleComponent in \f$\mathrm{[mol/m^3]}\f$ at a given pressure and temperature.
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     *
+     */
+    static Scalar liquidMolarDensity(Scalar temperature, Scalar pressure)
+    { return liquidDensity(temperature, pressure)/molarMass(); }
+
+
+    /*!
+     * \brief The dynamic viscosity \f$\mathrm{[Pa*s]}\f$ of MyCompressibleComponent.
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     */
+    static Scalar liquidViscosity(Scalar temperature, Scalar pressure)
+    {
+        return 5.7e-4;// [Pa*s]
+    }
+
+    /*****************************************************************
+     * The function below is implemented in the scope of exercise 3b *
+     *****************************************************************/
+
+    /*!
+     * \brief The vapor pressure in \f$\mathrm{[Pa]}\f$ of MyCompressibleComponent
+     *        at a given temperature.
+     *
+     * \param T temperature of component in \f$\mathrm{[K]}\f$
+     */
+    static Scalar vaporPressure(Scalar T)
+    {
+        return 3900; // [Pa] (at 20C)
+    }
+
+    /*!
+     * \brief Returns true if the liquid phase is assumed to be compressible
+     */
+    static constexpr bool liquidIsCompressible()
+    { return true; }
+};
+
+} // end namespace
+
+#endif
diff --git a/exercises/solution/ex3/myincompressiblecomponent.hh b/exercises/solution/ex3/myincompressiblecomponent.hh
new file mode 100644
index 00000000..24fe6556
--- /dev/null
+++ b/exercises/solution/ex3/myincompressiblecomponent.hh
@@ -0,0 +1,101 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup Components
+ * \brief A fictitious component to be implemented in tutorial exercise 3.
+ */
+#ifndef DUMUX_MYINCOMPRESSIBLECOMPONENT_HH
+#define DUMUX_MYINCOMPRESSIBLECOMPONENT_HH
+
+#include <dumux/material/idealgas.hh>
+
+#include <dumux/material/components/base.hh>
+#include <dumux/material/components/liquid.hh>
+
+namespace Dumux
+{
+/*!
+ * \ingroup Components
+ * \brief A fictitious component to be implemented in exercise 3.
+ *
+ * \tparam Scalar The type used for scalar values
+ */
+template <class Scalar>
+class MyIncompressibleComponent
+: public Components::Base<Scalar, MyIncompressibleComponent<Scalar> >
+, public Components::Liquid<Scalar, MyIncompressibleComponent<Scalar> >
+{
+public:
+    /*!
+     * \brief A human readable name for MyIncompressibleComponent.
+     */
+    static std::string name()
+    { return "MyIncompressibleComponent"; }
+
+    /*!
+     * \brief The molar mass in \f$\mathrm{[kg/mol]}\f$ of MyIncompressibleComponent.
+     */
+    static Scalar molarMass()
+    {
+        return 131.39e-3; // [kg/mol]
+    }
+
+    /*!
+     * \brief The density of MyIncompressibleComponent at a given pressure and temperature \f$\mathrm{[kg/m^3]}\f$.
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     */
+    static Scalar liquidDensity(Scalar temperature, Scalar pressure)
+    {
+        return 1460.0; // [kg/m^3]
+    }
+
+    /*!
+     * \brief The molar density of MyIncompressibleComponent in \f$\mathrm{[mol/m^3]}\f$ at a given pressure and temperature.
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     *
+     */
+    static Scalar liquidMolarDensity(Scalar temperature, Scalar pressure)
+    { return liquidDensity(temperature, pressure)/molarMass(); }
+
+    /*!
+     * \brief The dynamic viscosity \f$\mathrm{[Pa*s]}\f$ of MyIncompressibleComponent.
+     *
+     * \param temperature temperature of component in \f$\mathrm{[K]}\f$
+     * \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
+     */
+    static Scalar liquidViscosity(Scalar temperature, Scalar pressure)
+    {
+        return 5.7e-4;// [Pa*s]
+    }
+
+    /*!
+     * \brief Returns true if the liquid phase is assumed to be compressible
+     */
+    static constexpr bool liquidIsCompressible()
+    { return false; }
+};
+
+} // end namespace
+
+#endif
-- 
GitLab