diff --git a/test/porousmediumflow/richards/analytical/main.cc b/test/porousmediumflow/richards/analytical/main.cc
index 234f99b9d9facf210da7b1af6a59d8295336ad92..7a0cf3e5fe5d055a5cb06977f837451c41dc2974 100644
--- a/test/porousmediumflow/richards/analytical/main.cc
+++ b/test/porousmediumflow/richards/analytical/main.cc
@@ -24,15 +24,10 @@
 
 #include <config.h>
 
-#include "problem.hh"
-
-#include <ctime>
 #include <iostream>
 
 #include <dune/common/parallel/mpihelper.hh>
 #include <dune/common/timer.hh>
-#include <dune/grid/io/file/vtk.hh>
-#include <dune/istl/io.hh>
 
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
@@ -44,32 +39,9 @@
 #include <dumux/assembly/fvassembler.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)
-{
-    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";
-
-        std::cout << errorMessageOut
-                  << "\n";
-    }
-}
+#include <dumux/io/grid/gridmanager_yasp.hh>
+
+#include "properties.hh"
 
 ////////////////////////
 // the main function
@@ -89,7 +61,7 @@ int main(int argc, char** argv)
         DumuxMessage::print(/*firstCall=*/true);
 
     // parse command line arguments and input file
-    Parameters::init(argc, argv, usage);
+    Parameters::init(argc, argv);
 
     // try to create a grid (from the given grid file or the input file)
     GridManager<GetPropType<TypeTag, Properties::Grid>> gridManager;
diff --git a/test/porousmediumflow/richards/analytical/problem.hh b/test/porousmediumflow/richards/analytical/problem.hh
index 346582759e5702d9388032d4766807282c10ec5d..bd02b6d6705124ecee0b2cf961e956e54cf17979 100644
--- a/test/porousmediumflow/richards/analytical/problem.hh
+++ b/test/porousmediumflow/richards/analytical/problem.hh
@@ -32,62 +32,15 @@
 #include <cmath>
 #include <dune/common/math.hh>
 #include <dune/geometry/quadraturerules.hh>
-#include <dune/grid/yaspgrid.hh>
 
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 #include <dumux/common/boundarytypes.hh>
 
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/box.hh>
 #include <dumux/porousmediumflow/problem.hh>
 
-#include <dumux/porousmediumflow/richards/model.hh>
-#include <dumux/material/components/simpleh2o.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-
-#include "spatialparams.hh"
-
 namespace Dumux {
 
-/*!
- * \ingroup RichardsTests
- * \brief A one-dimensional infiltration problem with a smooth, given solution.
- *
- * The source term is calculated analytically. Thus, this example can be used
- * to calculate the L2 error and to show convergence for grid and time-step
- * refinement.
- */
-template <class TypeTag>
-class RichardsAnalyticalProblem;
-
-//////////
-// Specify the properties for the analytical problem
-//////////
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct RichardsAnalytical { using InheritsFrom = std::tuple<Richards>; };
-struct RichardsAnalyticalBox { using InheritsFrom = std::tuple<RichardsAnalytical, BoxModel>; };
-struct RichardsAnalyticalCC { using InheritsFrom = std::tuple<RichardsAnalytical, CCTpfaModel>; };
-} // end namespace TTag
-
-// Use 2d YaspGrid
-template<class TypeTag>
-struct Grid<TypeTag, TTag::RichardsAnalytical> { using type = Dune::YaspGrid<2>; };
-
-// Set the physical problem to be solved
-template<class TypeTag>
-struct Problem<TypeTag, TTag::RichardsAnalytical> { using type = RichardsAnalyticalProblem<TypeTag>; };
-
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::RichardsAnalytical>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = RichardsAnalyticalSpatialParams<GridGeometry, Scalar>;
-};
-} // end namespace Properties
-
 /*!
  * \ingroup RichardsModel
  * \ingroup ImplicitTestProblems
diff --git a/test/porousmediumflow/richards/analytical/properties.hh b/test/porousmediumflow/richards/analytical/properties.hh
new file mode 100644
index 0000000000000000000000000000000000000000..b562af98ff066113b34458d23208615ca557d3b0
--- /dev/null
+++ b/test/porousmediumflow/richards/analytical/properties.hh
@@ -0,0 +1,68 @@
+// -*- 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 3 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 RichardsTests
+ * \brief The properties of the one-dimensional infiltration problem with a smooth, given solution.
+ */
+#ifndef DUMUX_RICHARDS_ANALYTICALPROPERTIES_HH
+#define DUMUX_RICHARDS_ANALYTICALPROPERTIES_HH
+
+#include <dune/grid/yaspgrid.hh>
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/box.hh>
+#include <dumux/porousmediumflow/richards/model.hh>
+#include <dumux/material/components/simpleh2o.hh>
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+#include "spatialparams.hh"
+#include "problem.hh"
+
+//////////
+// Specify the properties for the analytical problem
+//////////
+namespace Dumux::Properties {
+
+// Create new type tags
+namespace TTag {
+struct RichardsAnalytical { using InheritsFrom = std::tuple<Richards>; };
+struct RichardsAnalyticalBox { using InheritsFrom = std::tuple<RichardsAnalytical, BoxModel>; };
+struct RichardsAnalyticalCC { using InheritsFrom = std::tuple<RichardsAnalytical, CCTpfaModel>; };
+} // end namespace TTag
+
+// Use 2d YaspGrid
+template<class TypeTag>
+struct Grid<TypeTag, TTag::RichardsAnalytical> { using type = Dune::YaspGrid<2>; };
+
+// Set the physical problem to be solved
+template<class TypeTag>
+struct Problem<TypeTag, TTag::RichardsAnalytical> { using type = RichardsAnalyticalProblem<TypeTag>; };
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::RichardsAnalytical>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = RichardsAnalyticalSpatialParams<GridGeometry, Scalar>;
+};
+
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/richards/lens/main.cc b/test/porousmediumflow/richards/lens/main.cc
index 1f7efe01cb64d6f6d6f0b3a5478767d71ee1f4c7..43dcc8e09f156814b2319d85a3b9d7d0ae3c5ab4 100644
--- a/test/porousmediumflow/richards/lens/main.cc
+++ b/test/porousmediumflow/richards/lens/main.cc
@@ -52,7 +52,7 @@
 #include <dumux/io/grid/gridmanager.hh>
 #include <dumux/io/loadsolution.hh>
 
-#include "problem.hh"
+#include "properties.hh"
 
 #ifndef DIFFMETHOD
 #define DIFFMETHOD DiffMethod::numeric
diff --git a/test/porousmediumflow/richards/lens/problem.hh b/test/porousmediumflow/richards/lens/problem.hh
index d1a3e3d9eccbf8a0a3f0e3fa622f50a4b13d4af5..196daf954dc21d6d12336a9037a5a9e2d73cdf2b 100644
--- a/test/porousmediumflow/richards/lens/problem.hh
+++ b/test/porousmediumflow/richards/lens/problem.hh
@@ -27,65 +27,14 @@
 #ifndef DUMUX_RICHARDS_LENSPROBLEM_HH
 #define DUMUX_RICHARDS_LENSPROBLEM_HH
 
-#include <dune/grid/yaspgrid.hh>
-#if HAVE_DUNE_ALUGRID
-#include <dune/alugrid/grid.hh>
-#endif
-#if HAVE_UG
-#include <dune/grid/uggrid.hh>
-#endif
-
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 #include <dumux/common/boundarytypes.hh>
 
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/ccmpfa.hh>
-#include <dumux/discretization/box.hh>
 #include <dumux/porousmediumflow/problem.hh>
 
-#include <dumux/porousmediumflow/richards/model.hh>
-#include <dumux/material/components/simpleh2o.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-
-#include "spatialparams.hh"
-
 namespace Dumux {
 
-template <class TypeTag>
-class RichardsLensProblem;
-
-// Specify the properties for the lens problem
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct RichardsLens { using InheritsFrom = std::tuple<Richards>; };
-struct RichardsLensBox { using InheritsFrom = std::tuple<RichardsLens, BoxModel>; };
-struct RichardsLensCC { using InheritsFrom = std::tuple<RichardsLens, CCTpfaModel>; };
-struct RichardsLensCCMpfa { using InheritsFrom = std::tuple<RichardsLens, CCMpfaModel>; };
-} // end namespace TTag
-
-#ifndef GRIDTYPE
-// Use 2d YaspGrid
-template<class TypeTag>
-struct Grid<TypeTag, TTag::RichardsLens> { using type = Dune::YaspGrid<2>; };
-#else
-// Use GRIDTYPE from CMakeLists.txt
-template<class TypeTag>
-struct Grid<TypeTag, TTag::RichardsLens> { using type = GRIDTYPE; };
-#endif
-
-// Set the physical problem to be solved
-template<class TypeTag>
-struct Problem<TypeTag, TTag::RichardsLens> { using type = RichardsLensProblem<TypeTag>; };
-
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::RichardsLens>
-{
-    using type = RichardsLensSpatialParams<GetPropType<TypeTag, Properties::GridGeometry>,
-                                           GetPropType<TypeTag, Properties::Scalar>>;
-};
-} // end namespace Dumux
-
 /*!
  * \ingroup RichardsTests
  *
diff --git a/test/porousmediumflow/richards/lens/properties.hh b/test/porousmediumflow/richards/lens/properties.hh
new file mode 100644
index 0000000000000000000000000000000000000000..e5a75fb3e907c941a8e6e0cde0e076fe62463a8f
--- /dev/null
+++ b/test/porousmediumflow/richards/lens/properties.hh
@@ -0,0 +1,83 @@
+// -*- 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 3 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 RichardsTests
+ * \brief The properties of the water infiltration problem with a
+ *        low-permeability lens embedded into a high-permeability domain which
+ *        uses the Richards box model.
+ */
+#ifndef DUMUX_RICHARDS_LENSPROPERTIES_HH
+#define DUMUX_RICHARDS_LENSPROPERTIES_HH
+
+#include <dune/grid/yaspgrid.hh>
+#if HAVE_DUNE_ALUGRID
+#include <dune/alugrid/grid.hh>
+#endif
+#if HAVE_UG
+#include <dune/grid/uggrid.hh>
+#endif
+
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/ccmpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/richards/model.hh>
+#include <dumux/material/components/simpleh2o.hh>
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+#include "spatialparams.hh"
+#include "problem.hh"
+
+// Specify the properties for the lens problem
+namespace Dumux::Properties {
+
+// Create new type tags
+namespace TTag {
+struct RichardsLens { using InheritsFrom = std::tuple<Richards>; };
+struct RichardsLensBox { using InheritsFrom = std::tuple<RichardsLens, BoxModel>; };
+struct RichardsLensCC { using InheritsFrom = std::tuple<RichardsLens, CCTpfaModel>; };
+struct RichardsLensCCMpfa { using InheritsFrom = std::tuple<RichardsLens, CCMpfaModel>; };
+} // end namespace TTag
+
+#ifndef GRIDTYPE
+// Use 2d YaspGrid
+template<class TypeTag>
+struct Grid<TypeTag, TTag::RichardsLens> { using type = Dune::YaspGrid<2>; };
+#else
+// Use GRIDTYPE from CMakeLists.txt
+template<class TypeTag>
+struct Grid<TypeTag, TTag::RichardsLens> { using type = GRIDTYPE; };
+#endif
+
+// Set the physical problem to be solved
+template<class TypeTag>
+struct Problem<TypeTag, TTag::RichardsLens> { using type = RichardsLensProblem<TypeTag>; };
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::RichardsLens>
+{
+    using type = RichardsLensSpatialParams<GetPropType<TypeTag, Properties::GridGeometry>,
+                                           GetPropType<TypeTag, Properties::Scalar>>;
+};
+
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/richards/nonisothermal/conduction/main.cc b/test/porousmediumflow/richards/nonisothermal/conduction/main.cc
index 15c6631842d7370c2d6b91436c809caaf8c517ef..12489bae7b0d929537ff3165978aa470744845d2 100644
--- a/test/porousmediumflow/richards/nonisothermal/conduction/main.cc
+++ b/test/porousmediumflow/richards/nonisothermal/conduction/main.cc
@@ -24,15 +24,10 @@
 
 #include <config.h>
 
-#include "problem.hh"
-
-#include <ctime>
 #include <iostream>
 
 #include <dune/common/parallel/mpihelper.hh>
 #include <dune/common/timer.hh>
-#include <dune/grid/io/file/vtk.hh>
-#include <dune/istl/io.hh>
 
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
@@ -44,32 +39,9 @@
 #include <dumux/assembly/fvassembler.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)
-{
-    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";
-
-        std::cout << errorMessageOut
-                  << "\n";
-    }
-}
+#include <dumux/io/grid/gridmanager_yasp.hh>
+
+#include "properties.hh"
 
 ////////////////////////
 // the main function
@@ -89,7 +61,7 @@ int main(int argc, char** argv)
         DumuxMessage::print(/*firstCall=*/true);
 
     // parse command line arguments and input file
-    Parameters::init(argc, argv, usage);
+    Parameters::init(argc, argv);
 
     // try to create a grid (from the given grid file or the input file)
     GridManager<GetPropType<TypeTag, Properties::Grid>> gridManager;
diff --git a/test/porousmediumflow/richards/nonisothermal/conduction/problem.hh b/test/porousmediumflow/richards/nonisothermal/conduction/problem.hh
index b161899190e70ebecaa5596eaf3be70bf52ac989..1230c423db0b34a13fafff050383fdbee7bb9e15 100644
--- a/test/porousmediumflow/richards/nonisothermal/conduction/problem.hh
+++ b/test/porousmediumflow/richards/nonisothermal/conduction/problem.hh
@@ -27,60 +27,17 @@
 #define DUMUX_RICHARDS_CONDUCTION_PROBLEM_HH
 
 #include <cmath>
-#include <dune/grid/yaspgrid.hh>
 
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 #include <dumux/common/boundarytypes.hh>
-
 #include <dumux/discretization/elementsolution.hh>
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/box.hh>
 
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/porousmediumflow/richards/model.hh>
-#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh>
-#include <dumux/material/fluidsystems/h2on2.hh>
-#include "../spatialparams.hh"
+#include <dumux/material/components/h2o.hh>
 
 namespace Dumux {
 
-/**
- * \ingroup RichardsTests
- * \brief Test for the RichardsModel in combination with the NI model for a conduction problem:
- * The simulation domain is a tube with an elevated temperature on the left hand side.
- */
-template <class TypeTag>
-class RichardsNIConductionProblem;
-
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct RichardsNIConduction { using InheritsFrom = std::tuple<RichardsNI>; };
-struct RichardsNIConductionBox { using InheritsFrom = std::tuple<RichardsNIConduction, BoxModel>; };
-struct RichardsNIConductionCC { using InheritsFrom = std::tuple<RichardsNIConduction, CCTpfaModel>; };
-} // end namespace TTag
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::RichardsNIConduction> { using type = Dune::YaspGrid<2>; };
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::RichardsNIConduction> { using type = RichardsNIConductionProblem<TypeTag>; };
-
-// Set the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::RichardsNIConduction> { using type = FluidSystems::H2ON2<GetPropType<TypeTag, Properties::Scalar>, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>; };
-
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::RichardsNIConduction>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = RichardsNISpatialParams<GridGeometry, Scalar>;
-};
-} // end namespace Properties
-
 /*!
  * \ingroup RichardsTests
  *
diff --git a/test/porousmediumflow/richards/nonisothermal/conduction/properties.hh b/test/porousmediumflow/richards/nonisothermal/conduction/properties.hh
new file mode 100644
index 0000000000000000000000000000000000000000..85f49de8f527b82c3e79161430a5833d9b86a05d
--- /dev/null
+++ b/test/porousmediumflow/richards/nonisothermal/conduction/properties.hh
@@ -0,0 +1,72 @@
+// -*- 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 3 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 RichardsTests
+ * \brief The properties of the test for the RichardsModel in combination with the NI model for a
+ * conduction problem.
+ */
+#ifndef DUMUX_RICHARDS_CONDUCTION_PROPERTIES_HH
+#define DUMUX_RICHARDS_CONDUCTION_PROPERTIES_HH
+
+#include <dune/grid/yaspgrid.hh>
+
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/richards/model.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+
+#include "../spatialparams.hh"
+#include "problem.hh"
+
+namespace Dumux::Properties {
+
+// Create new type tags
+namespace TTag {
+struct RichardsNIConduction { using InheritsFrom = std::tuple<RichardsNI>; };
+struct RichardsNIConductionBox { using InheritsFrom = std::tuple<RichardsNIConduction, BoxModel>; };
+struct RichardsNIConductionCC { using InheritsFrom = std::tuple<RichardsNIConduction, CCTpfaModel>; };
+} // end namespace TTag
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::RichardsNIConduction> { using type = Dune::YaspGrid<2>; };
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::RichardsNIConduction> { using type = RichardsNIConductionProblem<TypeTag>; };
+
+// Set the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::RichardsNIConduction> { using type = FluidSystems::H2ON2<GetPropType<TypeTag, Properties::Scalar>, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>; };
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::RichardsNIConduction>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = RichardsNISpatialParams<GridGeometry, Scalar>;
+};
+
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/richards/nonisothermal/convection/main.cc b/test/porousmediumflow/richards/nonisothermal/convection/main.cc
index 15c6631842d7370c2d6b91436c809caaf8c517ef..12489bae7b0d929537ff3165978aa470744845d2 100644
--- a/test/porousmediumflow/richards/nonisothermal/convection/main.cc
+++ b/test/porousmediumflow/richards/nonisothermal/convection/main.cc
@@ -24,15 +24,10 @@
 
 #include <config.h>
 
-#include "problem.hh"
-
-#include <ctime>
 #include <iostream>
 
 #include <dune/common/parallel/mpihelper.hh>
 #include <dune/common/timer.hh>
-#include <dune/grid/io/file/vtk.hh>
-#include <dune/istl/io.hh>
 
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
@@ -44,32 +39,9 @@
 #include <dumux/assembly/fvassembler.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)
-{
-    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";
-
-        std::cout << errorMessageOut
-                  << "\n";
-    }
-}
+#include <dumux/io/grid/gridmanager_yasp.hh>
+
+#include "properties.hh"
 
 ////////////////////////
 // the main function
@@ -89,7 +61,7 @@ int main(int argc, char** argv)
         DumuxMessage::print(/*firstCall=*/true);
 
     // parse command line arguments and input file
-    Parameters::init(argc, argv, usage);
+    Parameters::init(argc, argv);
 
     // try to create a grid (from the given grid file or the input file)
     GridManager<GetPropType<TypeTag, Properties::Grid>> gridManager;
diff --git a/test/porousmediumflow/richards/nonisothermal/convection/problem.hh b/test/porousmediumflow/richards/nonisothermal/convection/problem.hh
index c2fc0ec91b6f5e583680c4c7c626cd7ba8b03b65..89911bf8a2e48517b99366fe5d90fbb422919a83 100644
--- a/test/porousmediumflow/richards/nonisothermal/convection/problem.hh
+++ b/test/porousmediumflow/richards/nonisothermal/convection/problem.hh
@@ -28,59 +28,16 @@
 #define DUMUX_RICHARDS_CONVECTION_PROBLEM_HH
 
 #include <cmath>
-#include <dune/grid/yaspgrid.hh>
 
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 #include <dumux/common/boundarytypes.hh>
 
-#include <dumux/discretization/elementsolution.hh>
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/box.hh>
-
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/porousmediumflow/richards/model.hh>
-#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh>
-#include <dumux/material/fluidsystems/h2on2.hh>
-#include "../spatialparams.hh"
+
+#include <dumux/material/components/h2o.hh>
 
 namespace Dumux {
-/**
- * \ingroup RichardsTests
- * \brief Test for the RichardsModel in combination with the NI model for a convection problem:
- * The simulation domain is a tube where water with an elevated temperature is injected
- * at a constant rate on the left hand side.
- */
-template <class TypeTag>
-class RichardsNIConvectionProblem;
-
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct RichardsNIConvection { using InheritsFrom = std::tuple<RichardsNI>; };
-struct RichardsNIConvectionBox { using InheritsFrom = std::tuple<RichardsNIConvection, BoxModel>; };
-struct RichardsNIConvectionCC { using InheritsFrom = std::tuple<RichardsNIConvection, CCTpfaModel>; };
-} // end namespace TTag
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::RichardsNIConvection> { using type = Dune::YaspGrid<2>; };
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::RichardsNIConvection> { using type = RichardsNIConvectionProblem<TypeTag>; };
-
-// Set the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::RichardsNIConvection> { using type = FluidSystems::H2ON2<GetPropType<TypeTag, Properties::Scalar>, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>; };
-
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::RichardsNIConvection>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = RichardsNISpatialParams<GridGeometry, Scalar>;
-};
-} // end namespace Properties
 
 /*!
  * \ingroup RichardsTests
diff --git a/test/porousmediumflow/richards/nonisothermal/convection/properties.hh b/test/porousmediumflow/richards/nonisothermal/convection/properties.hh
new file mode 100644
index 0000000000000000000000000000000000000000..28512a4733751b634b957fed552ff9708969e7b2
--- /dev/null
+++ b/test/porousmediumflow/richards/nonisothermal/convection/properties.hh
@@ -0,0 +1,73 @@
+// -*- 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 3 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 RichardsTests
+ * \brief The properties of the test for the RichardsModel in combination with the NI model for a
+ * convection problem.
+ */
+#ifndef DUMUX_RICHARDS_CONVECTION_PROPERTIES_HH
+#define DUMUX_RICHARDS_CONVECTION_PROPERTIES_HH
+
+#include <dune/grid/yaspgrid.hh>
+
+#include <dumux/discretization/elementsolution.hh>
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/richards/model.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+
+#include "../spatialparams.hh"
+#include "problem.hh"
+
+namespace Dumux::Properties {
+
+// Create new type tags
+namespace TTag {
+struct RichardsNIConvection { using InheritsFrom = std::tuple<RichardsNI>; };
+struct RichardsNIConvectionBox { using InheritsFrom = std::tuple<RichardsNIConvection, BoxModel>; };
+struct RichardsNIConvectionCC { using InheritsFrom = std::tuple<RichardsNIConvection, CCTpfaModel>; };
+} // end namespace TTag
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::RichardsNIConvection> { using type = Dune::YaspGrid<2>; };
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::RichardsNIConvection> { using type = RichardsNIConvectionProblem<TypeTag>; };
+
+// Set the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::RichardsNIConvection> { using type = FluidSystems::H2ON2<GetPropType<TypeTag, Properties::Scalar>, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>; };
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::RichardsNIConvection>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = RichardsNISpatialParams<GridGeometry, Scalar>;
+};
+
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/richards/nonisothermal/evaporation/main.cc b/test/porousmediumflow/richards/nonisothermal/evaporation/main.cc
index f11bf909c3039a348d7027cf420960160fef3d54..6c936ecd2bcabef2eaf80738b9a62a3a37a3428f 100644
--- a/test/porousmediumflow/richards/nonisothermal/evaporation/main.cc
+++ b/test/porousmediumflow/richards/nonisothermal/evaporation/main.cc
@@ -24,7 +24,7 @@
 
 #include <config.h>
 
-#include "problem.hh"
+#include "properties.hh"
 
 #include <ctime>
 #include <iostream>
diff --git a/test/porousmediumflow/richards/nonisothermal/evaporation/problem.hh b/test/porousmediumflow/richards/nonisothermal/evaporation/problem.hh
index 8d95b157acd7178f0783f08a7129a13514ce8e1d..60becef3bf2d85809892a15bba28ed2e5011dd90 100644
--- a/test/porousmediumflow/richards/nonisothermal/evaporation/problem.hh
+++ b/test/porousmediumflow/richards/nonisothermal/evaporation/problem.hh
@@ -27,62 +27,16 @@
 #define DUMUX_RICHARDS_EVAPORATION_PROBLEM_HH
 
 #include <cmath>
-#include <dune/grid/yaspgrid.hh>
 
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 #include <dumux/common/boundarytypes.hh>
 
-#include <dumux/discretization/elementsolution.hh>
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/box.hh>
-
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/porousmediumflow/richards/model.hh>
-#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh>
-#include <dumux/material/fluidsystems/h2on2.hh>
-#include "../spatialparams.hh"
+#include <dumux/material/components/h2o.hh>
 
 namespace Dumux {
 
-/**
- * \ingroup RichardsTests
- * \brief Test for the RichardsModel in combination with the NI model for evaporation.
- */
-template <class TypeTag>
-class RichardsNIEvaporationProblem;
-
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct RichardsNIEvaporation { using InheritsFrom = std::tuple<RichardsNI>; };
-struct RichardsNIEvaporationBox { using InheritsFrom = std::tuple<RichardsNIEvaporation, BoxModel>; };
-struct RichardsNIEvaporationCC { using InheritsFrom = std::tuple<RichardsNIEvaporation, CCTpfaModel>; };
-} // end namespace TTag
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::RichardsNIEvaporation> { using type = Dune::YaspGrid<2>; };
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::RichardsNIEvaporation> { using type = RichardsNIEvaporationProblem<TypeTag>; };
-
-// Set the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::RichardsNIEvaporation> { using type = FluidSystems::H2ON2<GetPropType<TypeTag, Properties::Scalar>, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>; };
-
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::RichardsNIEvaporation>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = RichardsNISpatialParams<GridGeometry, Scalar>;
-};
-
-template<class TypeTag>
-struct EnableWaterDiffusionInAir<TypeTag, TTag::RichardsNIEvaporation> { static constexpr bool value = true; };
-} // end namespace Properties
-
 /*!
  * \ingroup RichardsTests
  *
diff --git a/test/porousmediumflow/richards/nonisothermal/evaporation/properties.hh b/test/porousmediumflow/richards/nonisothermal/evaporation/properties.hh
new file mode 100644
index 0000000000000000000000000000000000000000..1f1b341e169d2309ae74cde77e3f4abe002e5ea3
--- /dev/null
+++ b/test/porousmediumflow/richards/nonisothermal/evaporation/properties.hh
@@ -0,0 +1,77 @@
+// -*- 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 3 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 RichardsTests
+ * \brief The properties of the test for the RichardsModel in combination with the NI model for
+ * evaporation.
+ */
+#ifndef DUMUX_RICHARDS_EVAPORATION_PROPERTIES_HH
+#define DUMUX_RICHARDS_EVAPORATION_PROPERTIES_HH
+/**
+ */
+#include <dune/grid/yaspgrid.hh>
+
+#include <dumux/discretization/elementsolution.hh>
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/richards/model.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh>
+#include <dumux/material/fluidsystems/h2on2.hh>
+
+#include "../spatialparams.hh"
+#include "problem.hh"
+
+namespace Dumux::Properties {
+
+// Create new type tags
+namespace TTag {
+struct RichardsNIEvaporation { using InheritsFrom = std::tuple<RichardsNI>; };
+struct RichardsNIEvaporationBox { using InheritsFrom = std::tuple<RichardsNIEvaporation, BoxModel>; };
+struct RichardsNIEvaporationCC { using InheritsFrom = std::tuple<RichardsNIEvaporation, CCTpfaModel>; };
+} // end namespace TTag
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::RichardsNIEvaporation> { using type = Dune::YaspGrid<2>; };
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::RichardsNIEvaporation> { using type = RichardsNIEvaporationProblem<TypeTag>; };
+
+// Set the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::RichardsNIEvaporation> { using type = FluidSystems::H2ON2<GetPropType<TypeTag, Properties::Scalar>, FluidSystems::H2ON2DefaultPolicy</*fastButSimplifiedRelations=*/true>>; };
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::RichardsNIEvaporation>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = RichardsNISpatialParams<GridGeometry, Scalar>;
+};
+
+template<class TypeTag>
+struct EnableWaterDiffusionInAir<TypeTag, TTag::RichardsNIEvaporation> { static constexpr bool value = true; };
+
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/richardsnc/main.cc b/test/porousmediumflow/richardsnc/main.cc
index b2ae15ca22331d9dc7400b050402105852fca57f..1dd7d5d7994c77f54387cda3e17e7e10099e58c3 100644
--- a/test/porousmediumflow/richardsnc/main.cc
+++ b/test/porousmediumflow/richardsnc/main.cc
@@ -24,15 +24,10 @@
 
 #include <config.h>
 
-#include "problem.hh"
-
-#include <ctime>
 #include <iostream>
 
 #include <dune/common/parallel/mpihelper.hh>
 #include <dune/common/timer.hh>
-#include <dune/grid/io/file/vtk.hh>
-#include <dune/istl/io.hh>
 
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
@@ -44,32 +39,9 @@
 #include <dumux/assembly/fvassembler.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)
-{
-    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";
-
-        std::cout << errorMessageOut
-                  << "\n";
-    }
-}
+#include <dumux/io/grid/gridmanager_yasp.hh>
+
+#include "properties.hh"
 
 ////////////////////////
 // the main function
@@ -89,7 +61,7 @@ int main(int argc, char** argv)
         DumuxMessage::print(/*firstCall=*/true);
 
     // parse command line arguments and input file
-    Parameters::init(argc, argv, usage);
+    Parameters::init(argc, argv);
 
     // try to create a grid (from the given grid file or the input file)
     GridManager<GetPropType<TypeTag, Properties::Grid>> gridManager;
diff --git a/test/porousmediumflow/richardsnc/problem.hh b/test/porousmediumflow/richardsnc/problem.hh
index 2f2a70d73f808747643d83e11ad7abd2316c6517..77cd9a4f7817eba2154ab372f72fe708375e444c 100644
--- a/test/porousmediumflow/richardsnc/problem.hh
+++ b/test/porousmediumflow/richardsnc/problem.hh
@@ -27,60 +27,14 @@
 #ifndef DUMUX_RICHARDS_NC_WELL_TRACER_PROBLEM_HH
 #define DUMUX_RICHARDS_NC_WELL_TRACER_PROBLEM_HH
 
-#include <dune/grid/yaspgrid.hh>
-
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 #include <dumux/common/boundarytypes.hh>
 
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/box.hh>
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/porousmediumflow/richardsnc/model.hh>
-
-#include "spatialparams.hh"
 
 namespace Dumux {
 
-/*!
- * \ingroup RichardsNCTests
- * \brief A water infiltration problem with a low-permeability lens
- *        embedded into a high-permeability domain which uses the
- *        Richards box model.
- */
-template <class TypeTag>
-class RichardsWellTracerProblem;
-
-
-// Specify the properties for the lens problem
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct RichardsWellTracer { using InheritsFrom = std::tuple<RichardsNC>; };
-struct RichardsWellTracerBox { using InheritsFrom = std::tuple<RichardsWellTracer, BoxModel>; };
-struct RichardsWellTracerCC { using InheritsFrom = std::tuple<RichardsWellTracer, CCTpfaModel>; };
-} // end namespace TTag
-
-// Use 2d YaspGrid
-template<class TypeTag>
-struct Grid<TypeTag, TTag::RichardsWellTracer> { using type = Dune::YaspGrid<2>; };
-
-// Set the physical problem to be solved
-template<class TypeTag>
-struct Problem<TypeTag, TTag::RichardsWellTracer> { using type = RichardsWellTracerProblem<TypeTag>; };
-
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::RichardsWellTracer>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = RichardsWellTracerSpatialParams<GridGeometry, Scalar>;
-};
-
-// Set the physical problem to be solved
-template<class TypeTag>
-struct PointSource<TypeTag, TTag::RichardsWellTracer> { using type = SolDependentPointSource<TypeTag>; };
-} // end namespace Properties
-
 /*!
  * \ingroup RichardsNCTests
  *
diff --git a/test/porousmediumflow/richardsnc/properties.hh b/test/porousmediumflow/richardsnc/properties.hh
new file mode 100644
index 0000000000000000000000000000000000000000..8b92b618b3277f460e933fd3758f66059ce715d9
--- /dev/null
+++ b/test/porousmediumflow/richardsnc/properties.hh
@@ -0,0 +1,70 @@
+// -*- 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 3 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 RichardsNCTests
+ * \brief The properties of the water infiltration problem with a
+ *        low-permeability lens embedded into a high-permeability domain which
+ *        uses the Richards box model.
+ */
+#ifndef DUMUX_DONEA_TEST_PROPERTIES_HH
+#define DUMUX_DONEA_TEST_PROPERTIES_HH
+
+#include <dune/grid/yaspgrid.hh>
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/box.hh>
+#include <dumux/porousmediumflow/richardsnc/model.hh>
+
+#include "spatialparams.hh"
+#include "problem.hh"
+
+// Specify the properties for the lens problem
+namespace Dumux::Properties {
+
+// Create new type tags
+namespace TTag {
+struct RichardsWellTracer { using InheritsFrom = std::tuple<RichardsNC>; };
+struct RichardsWellTracerBox { using InheritsFrom = std::tuple<RichardsWellTracer, BoxModel>; };
+struct RichardsWellTracerCC { using InheritsFrom = std::tuple<RichardsWellTracer, CCTpfaModel>; };
+} // end namespace TTag
+
+// Use 2d YaspGrid
+template<class TypeTag>
+struct Grid<TypeTag, TTag::RichardsWellTracer> { using type = Dune::YaspGrid<2>; };
+
+// Set the physical problem to be solved
+template<class TypeTag>
+struct Problem<TypeTag, TTag::RichardsWellTracer> { using type = RichardsWellTracerProblem<TypeTag>; };
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::RichardsWellTracer>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = RichardsWellTracerSpatialParams<GridGeometry, Scalar>;
+};
+
+// Set the physical problem to be solved
+template<class TypeTag>
+struct PointSource<TypeTag, TTag::RichardsWellTracer> { using type = SolDependentPointSource<TypeTag>; };
+
+} // end namespace Dumux::Properties
+
+#endif