diff --git a/dumux/common/properties.hh b/dumux/common/properties.hh
index cb03e8348de6ba7a5988adbebbd6b9a33283ba84..af81de4480d393889e5d14c82e25bfa9942e302f 100644
--- a/dumux/common/properties.hh
+++ b/dumux/common/properties.hh
@@ -132,7 +132,6 @@ NEW_PROP_TAG(ThermalConductivityModel);            //! Model to be used for the
 NEW_PROP_TAG(VelocityOutput);                      //! specifies the velocity calculation module to be used
 
 NEW_PROP_TAG(MaterialLaw);                         //! The material law which ought to be used (extracted from the spatial parameters)
-NEW_PROP_TAG(MaterialLawParams);                   //! The context material law (extracted from the spatial parameters)
 NEW_PROP_TAG(WettingPhase);                        //! The wetting phase for two-phase models
 NEW_PROP_TAG(NonwettingPhase);                     //! The non-wetting phase for two-phase models
 NEW_PROP_TAG(Formulation);                         //! The formulation of the model
diff --git a/dumux/io/plotmateriallaw.hh b/dumux/io/plotmateriallaw.hh
index 42cd2a8f007b01733067809e707df79819c0a9c9..a5e63cb96353245ce8040f2a42ce81b53c2f3b66 100644
--- a/dumux/io/plotmateriallaw.hh
+++ b/dumux/io/plotmateriallaw.hh
@@ -24,19 +24,12 @@
 #ifndef DUMUX_PLOT_FLUID_MATRIX_LAW_HH
 #define DUMUX_PLOT_FLUID_MATRIX_LAW_HH
 
-#include <dumux/common/basicproperties.hh>
+#include <dumux/common/properties.hh>
 #include <dumux/io/gnuplotinterface.hh>
 
 namespace Dumux
 {
 
-namespace Properties
-{
-NEW_PROP_TAG(MaterialLaw);
-NEW_PROP_TAG(MaterialLawParams);
-NEW_PROP_TAG(Scalar);
-}
-
 /*!
  *\brief Interface for plotting the two-phase fluid-matrix-interaction laws
  */
@@ -44,7 +37,7 @@ template<class TypeTag>
 class PlotMaterialLaw
 {
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
 
 public:
diff --git a/dumux/io/plotmateriallaw3p.hh b/dumux/io/plotmateriallaw3p.hh
index 901e74901232191d062816a67d3132efb72887ca..f1ae23d678a7f7f41c41d69f2cb41c0c51ad5c6d 100644
--- a/dumux/io/plotmateriallaw3p.hh
+++ b/dumux/io/plotmateriallaw3p.hh
@@ -24,19 +24,11 @@
 #ifndef DUMUX_PLOT_FLUID_MATRIX_LAW_HH
 #define DUMUX_PLOT_FLUID_MATRIX_LAW_HH
 
-#include <dumux/common/basicproperties.hh>
+#include <dumux/common/properties.hh>
 #include <dumux/io/gnuplotinterface.hh>
 
 namespace Dumux
 {
-
-namespace Properties
-{
-NEW_PROP_TAG(MaterialLaw);
-NEW_PROP_TAG(MaterialLawParams);
-NEW_PROP_TAG(Scalar);
-}
-
 /*!
  *\brief Interface for plotting the three-phase fluid-matrix-interaction laws
  *
@@ -46,7 +38,7 @@ template<class TypeTag>
 class PlotMaterialLaw
 {
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
 
 public:
diff --git a/dumux/material/spatialparams/implicit.hh b/dumux/material/spatialparams/implicit.hh
index a36e9276e61f4efd33e42fe389063325f03794cd..7c4dcb17c3af2225cc58394164cbd9ac96a8d6c4 100644
--- a/dumux/material/spatialparams/implicit.hh
+++ b/dumux/material/spatialparams/implicit.hh
@@ -26,14 +26,10 @@
 #ifndef DUMUX_IMPLICIT_SPATIAL_PARAMS_HH
 #define DUMUX_IMPLICIT_SPATIAL_PARAMS_HH
 
+#include <dune/common/properties.hh>
 #include "implicit1p.hh"
 
 namespace Dumux {
-// forward declaration of property tags
-namespace Properties {
-NEW_PROP_TAG(MaterialLaw);
-NEW_PROP_TAG(MaterialLawParams);
-}
 
 /*!
  * \ingroup SpatialParameters
@@ -52,7 +48,7 @@ class ImplicitSpatialParams: public ImplicitSpatialParamsOneP<TypeTag>
     using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
     using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLawParams);
+    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
     using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
 
     using CoordScalar = typename GridView::ctype;
diff --git a/dumux/porousmediumflow/2p/sequential/properties.hh b/dumux/porousmediumflow/2p/sequential/properties.hh
index 05e7039d6f622b373a98892c1bff5087220ffdcd..5af78bee53a95333c30492ef1815ad930cf653c2 100644
--- a/dumux/porousmediumflow/2p/sequential/properties.hh
+++ b/dumux/porousmediumflow/2p/sequential/properties.hh
@@ -60,7 +60,6 @@ NEW_TYPE_TAG(SequentialTwoP, INHERITS_FROM(SequentialModel));
 //////////////////////////////////////////////////////////////////
 NEW_PROP_TAG( SpatialParams ); //!< The type of the spatial parameters object
 NEW_PROP_TAG(MaterialLaw);   //!< The material law which ought to be used (extracted from the spatial parameters)
-NEW_PROP_TAG(MaterialLawParams); //!< The material law parameters (extracted from the spatial parameters)
 NEW_PROP_TAG( ProblemEnableGravity); //!< Returns whether gravity is considered in the problem
 NEW_PROP_TAG( Formulation); //!< The formulation of the model
 NEW_PROP_TAG( PressureFormulation); //!< The formulation of the pressure model
@@ -153,19 +152,6 @@ public:
 //! The spatial parameters to be employed. Use FVSpatialParams by default.
 SET_TYPE_PROP(SequentialTwoP, SpatialParams, FVSpatialParams<TypeTag>);
 
-/*!
- * \brief Set the property for the material parameters by extracting
- *        it from the material law.
- */
-SET_PROP(SequentialTwoP, MaterialLawParams)
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-
-public:
-    typedef typename MaterialLaw::Params type;
-};
-
 //! Default error term factor
 SET_SCALAR_PROP(SequentialTwoP, ImpetErrorTermFactor, 0.5);
 //! Default lower threshold for evaluation of an error term
diff --git a/dumux/porousmediumflow/2p1c/implicit/properties.hh b/dumux/porousmediumflow/2p1c/implicit/properties.hh
index d238985e541cee5149d5f95c3f70ed2561b3289f..f5328f37470d34e9e98c01a4709dac23d9d8d06c 100644
--- a/dumux/porousmediumflow/2p1c/implicit/properties.hh
+++ b/dumux/porousmediumflow/2p1c/implicit/properties.hh
@@ -55,7 +55,6 @@ NEW_PROP_TAG(SpatialParams); //!< The type of the spatial parameters
 NEW_PROP_TAG(FluidSystem); //!< Type of the multi-component relations
 
 NEW_PROP_TAG(MaterialLaw);   //!< The material law which ought to be used (extracted from the spatial parameters)
-NEW_PROP_TAG(MaterialLawParams); //!< The parameters of the material law (extracted from the spatial parameters)
 
 NEW_PROP_TAG(ProblemEnableGravity); //!< Returns whether gravity is considered in the problem
 
diff --git a/dumux/porousmediumflow/2p1c/implicit/volumevariables.hh b/dumux/porousmediumflow/2p1c/implicit/volumevariables.hh
index 6d6653b553b6e25e4efba11d80ecf01531bb1332..cf406f1ff303196525a8db14fbfe9f77f95760e2 100644
--- a/dumux/porousmediumflow/2p1c/implicit/volumevariables.hh
+++ b/dumux/porousmediumflow/2p1c/implicit/volumevariables.hh
@@ -53,7 +53,7 @@ class TwoPOneCVolumeVariables : public ImplicitVolumeVariables<TypeTag>
     typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables;
     typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
 
     typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
     enum {
diff --git a/dumux/porousmediumflow/2p2c/implicit/properties.hh b/dumux/porousmediumflow/2p2c/implicit/properties.hh
index 87e21f47468d096a301100e10cd5363c0690b4da..942b6f27cf39a82eb3381d456cc17c9c7c1cf5d6 100644
--- a/dumux/porousmediumflow/2p2c/implicit/properties.hh
+++ b/dumux/porousmediumflow/2p2c/implicit/properties.hh
@@ -65,7 +65,6 @@ NEW_PROP_TAG(FluidSystem); //!< The type of the multi-component relations
 NEW_PROP_TAG(FluidState); //!< The type of the 2p2c fluid state
 
 NEW_PROP_TAG(MaterialLaw); //!< The material law which ought to be used (extracted from the spatial parameters)
-NEW_PROP_TAG(MaterialLawParams); //!< The parameters of the material law (extracted from the spatial parameters)
 NEW_PROP_TAG(EffectiveDiffusivityModel); //!< The employed model for the computation of the effective diffusivity
 
 NEW_PROP_TAG(ProblemEnableGravity); //!< Returns whether gravity is considered in the problem
diff --git a/dumux/porousmediumflow/2p2c/implicit/propertydefaults.hh b/dumux/porousmediumflow/2p2c/implicit/propertydefaults.hh
index 003834cf7716cf3917bf89ba4bc07c092151f449..84cca07fe81a193c674ca72d0aa818dd35b1fbd8 100644
--- a/dumux/porousmediumflow/2p2c/implicit/propertydefaults.hh
+++ b/dumux/porousmediumflow/2p2c/implicit/propertydefaults.hh
@@ -112,16 +112,6 @@ SET_INT_PROP(TwoPTwoC,
 //! Set as default that no component mass balance is replaced by the total mass balance
 SET_INT_PROP(TwoPTwoC, ReplaceCompEqIdx, 2);
 
-//! Set the property for the material parameters by extracting it from the material law.
-SET_PROP(TwoPTwoC, MaterialLawParams)
-{
- private:
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-
- public:
-    typedef typename MaterialLaw::Params type;
-};
-
 //! Use the 2p2c local residual operator
 SET_TYPE_PROP(TwoPTwoC, LocalResidual, CompositionalLocalResidual<TypeTag>);
 
diff --git a/dumux/porousmediumflow/2pnc/implicit/properties.hh b/dumux/porousmediumflow/2pnc/implicit/properties.hh
index b78abac3af17daf5e10d965a502888af72fd0f57..63bf31c588e458100d4a433df148a1465abd2efa 100644
--- a/dumux/porousmediumflow/2pnc/implicit/properties.hh
+++ b/dumux/porousmediumflow/2pnc/implicit/properties.hh
@@ -115,16 +115,6 @@ public:
     using type = CompositionalFluidState<Scalar, FluidSystem>;
 };
 
-//! Set the property for the material parameters by extracting it from the material law.
-SET_PROP(TwoPNC, MaterialLawParams)
-{
-private:
-    using MaterialLaw = typename GET_PROP_TYPE(TypeTag, PTAG(MaterialLaw));
-
-public:
-    using type = typename MaterialLaw::Params;
-};
-
 /////////////////////////////////////////////////
 // Properties for the non-isothermal 2pnc model
 /////////////////////////////////////////////////
diff --git a/dumux/porousmediumflow/2pnc/implicit/volumevariables.hh b/dumux/porousmediumflow/2pnc/implicit/volumevariables.hh
index 01b56f98cb79c729f73efe2c3ce5359c3024ca3b..43b3075428329d53283664788685173564e95ce0 100644
--- a/dumux/porousmediumflow/2pnc/implicit/volumevariables.hh
+++ b/dumux/porousmediumflow/2pnc/implicit/volumevariables.hh
@@ -63,7 +63,7 @@ class TwoPNCVolumeVariables : public ImplicitVolumeVariables<TypeTag>
     using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
     using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLawParams);
+    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
     using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
 
     enum
diff --git a/dumux/porousmediumflow/2pncmin/implicit/volumevariables.hh b/dumux/porousmediumflow/2pncmin/implicit/volumevariables.hh
index f7c915715f4335f98d9506ddf3e344a0926a294d..c8b0f2fa6749576c0519d5b7b11bc66d7be8bc7f 100644
--- a/dumux/porousmediumflow/2pncmin/implicit/volumevariables.hh
+++ b/dumux/porousmediumflow/2pncmin/implicit/volumevariables.hh
@@ -61,7 +61,7 @@ class TwoPNCMinVolumeVariables : public TwoPNCVolumeVariables<TypeTag>
     using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
     using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLawParams);
+    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
     using Indices = typename GET_PROP_TYPE(TypeTag, Indices);
 
     enum
diff --git a/dumux/porousmediumflow/3p3c/implicit/volumevariables.hh b/dumux/porousmediumflow/3p3c/implicit/volumevariables.hh
index 54537f004c6cd9576b6358c12d76973af0f16650..7b158db51db3f8c804b7ea26456bea6fab5696e2 100644
--- a/dumux/porousmediumflow/3p3c/implicit/volumevariables.hh
+++ b/dumux/porousmediumflow/3p3c/implicit/volumevariables.hh
@@ -55,7 +55,7 @@ class ThreePThreeCVolumeVariables : public ImplicitVolumeVariables<TypeTag>
     using ElementSolution = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
     using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLawParams);
+    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
     using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
 
     // constraint solvers
diff --git a/dumux/porousmediumflow/3pwateroil/properties.hh b/dumux/porousmediumflow/3pwateroil/properties.hh
index 0c41a588fe98221b27ebb9add2bd2a774384390d..4fb06922e7c0bb5826b954a68ede91995016695c 100644
--- a/dumux/porousmediumflow/3pwateroil/properties.hh
+++ b/dumux/porousmediumflow/3pwateroil/properties.hh
@@ -56,7 +56,6 @@ NEW_PROP_TAG(SpatialParams); //!< The type of the spatial parameters
 NEW_PROP_TAG(FluidSystem); //!< Type of the multi-component relations
 
 NEW_PROP_TAG(MaterialLaw);   //!< The material law which ought to be used (extracted from the spatial parameters)
-NEW_PROP_TAG(MaterialLawParams); //!< The parameters of the material law (extracted from the spatial parameters)
 
 NEW_PROP_TAG(ProblemEnableGravity); //!< Returns whether gravity is considered in the problem
 
diff --git a/dumux/porousmediumflow/3pwateroil/volumevariables.hh b/dumux/porousmediumflow/3pwateroil/volumevariables.hh
index 0a2c13a7bd41eeeae5c8476a98b3d344105d280e..80dba8d356ef90bf9475547d4adab09ea45b70d2 100644
--- a/dumux/porousmediumflow/3pwateroil/volumevariables.hh
+++ b/dumux/porousmediumflow/3pwateroil/volumevariables.hh
@@ -62,7 +62,7 @@ class ThreePWaterOilVolumeVariables : public ImplicitVolumeVariables<TypeTag>
     typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables;
     typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
 
     // constraint solvers
     typedef Dumux::MiscibleMultiPhaseComposition<Scalar, FluidSystem> MiscibleMultiPhaseComposition;
diff --git a/dumux/porousmediumflow/co2/implicit/volumevariables.hh b/dumux/porousmediumflow/co2/implicit/volumevariables.hh
index 543e9c83696f56832d216fa16985e91142411041..d3260ef293e618a37ee4f87acf6824efe9a55667 100644
--- a/dumux/porousmediumflow/co2/implicit/volumevariables.hh
+++ b/dumux/porousmediumflow/co2/implicit/volumevariables.hh
@@ -50,7 +50,7 @@ class CO2VolumeVariables: public TwoPTwoCVolumeVariables<TypeTag>
     typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables;
     typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
 
     typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
 
diff --git a/dumux/porousmediumflow/mpnc/implicit/properties.hh b/dumux/porousmediumflow/mpnc/implicit/properties.hh
index e4360e6e921333fe5e2989bd41bc6a595f37aae4..ee99e9ad24c64f846e1e1da49e44c5f5ff480486 100644
--- a/dumux/porousmediumflow/mpnc/implicit/properties.hh
+++ b/dumux/porousmediumflow/mpnc/implicit/properties.hh
@@ -91,7 +91,6 @@ NEW_PROP_TAG(VtkAddInterfacialArea);
 NEW_PROP_TAG(SpatialParams); //!< The type of the spatial parameters
 
 NEW_PROP_TAG(MaterialLaw);   //!< The material law which ought to be used (extracted from the spatialParams)
-NEW_PROP_TAG(MaterialLawParams); //!< The context material law (extracted from the spatialParams)
 
 //! The compositional twophase system of fluids which is considered
 NEW_PROP_TAG(FluidSystem);
diff --git a/dumux/porousmediumflow/mpnc/implicit/propertydefaults.hh b/dumux/porousmediumflow/mpnc/implicit/propertydefaults.hh
index 864fe8dce032c56ca2a2f4ed6fa454cea04ce2ac..ab195d70796d8a63dbf6730ecd825f18f59da679 100644
--- a/dumux/porousmediumflow/mpnc/implicit/propertydefaults.hh
+++ b/dumux/porousmediumflow/mpnc/implicit/propertydefaults.hh
@@ -90,19 +90,6 @@ public:
     static const unsigned int value = Indices::numPrimaryVars;
 };
 
-/*!
- * \brief Set the property for the material parameters by extracting
- *        it from the material law.
- */
-SET_PROP(MPNC, MaterialLawParams)
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-
-public:
-    typedef typename MaterialLaw::Params type;
-};
-
 /*!
  * \brief Set the thermodynamic constraint solver which calculates the
  *        composition of any phase given all component fugacities.
diff --git a/dumux/porousmediumflow/mpnc/implicit/volumevariables.hh b/dumux/porousmediumflow/mpnc/implicit/volumevariables.hh
index 9e16f6b489fdde88eb8301ca525422a7dac3c5cb..9a622a021099bee1875d2675fd4e6965ae5241d9 100644
--- a/dumux/porousmediumflow/mpnc/implicit/volumevariables.hh
+++ b/dumux/porousmediumflow/mpnc/implicit/volumevariables.hh
@@ -60,7 +60,7 @@ class MPNCVolumeVariables
     typedef typename GET_PROP_TYPE(TypeTag, FluidState) FluidState;
     typedef typename FluidSystem::ParameterCache ParameterCache;
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables;
     typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
 
diff --git a/dumux/porousmediumflow/mpnc/implicit/volumevariablesiakinetic.hh b/dumux/porousmediumflow/mpnc/implicit/volumevariablesiakinetic.hh
index 7374befbadbf1b5235d245259b8cc399b58f1687..a86bcc25bb31516edf74fc4de88ac115e9c10acf 100644
--- a/dumux/porousmediumflow/mpnc/implicit/volumevariablesiakinetic.hh
+++ b/dumux/porousmediumflow/mpnc/implicit/volumevariablesiakinetic.hh
@@ -54,7 +54,7 @@ class MPNCVolumeVariablesIA<TypeTag, enableKinetic, /*numEnergyEqs=*/3>
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
     typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
     typedef typename GridView::template Codim<0>::Entity Element;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
 
 
     enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
@@ -499,7 +499,7 @@ class MPNCVolumeVariablesIA<TypeTag, /*enableKinetic=*/true, /*numEnergyEqs=*/0>
     enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) };
     enum { sherwoodFormulation = GET_PROP_VALUE(TypeTag, SherwoodFormulation)} ;
     typedef Dune::FieldVector<Scalar,dimWorld> GlobalPosition;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
 
 
 public:
diff --git a/dumux/porousmediumflow/richards/implicit/properties.hh b/dumux/porousmediumflow/richards/implicit/properties.hh
index 7fb1e9f7f16a3a0601b4564663de76f4af8a7a4e..6e5922cb5752005a8e0b1f094d2aeba582a4967c 100644
--- a/dumux/porousmediumflow/richards/implicit/properties.hh
+++ b/dumux/porousmediumflow/richards/implicit/properties.hh
@@ -63,7 +63,6 @@ NEW_PROP_TAG(NumComponents);   //!< Number of components in the system
 NEW_PROP_TAG(Indices); //!< Enumerations used by the model
 NEW_PROP_TAG(SpatialParams); //!< The type of the spatial parameters
 NEW_PROP_TAG(MaterialLaw);   //!< The material law which ought to be used (by default extracted from the spatial parameters)
-NEW_PROP_TAG(MaterialLawParams); //!< The type of the parameter object for the material law (by default extracted from the spatial parameters)
 NEW_PROP_TAG(FluidSystem); //!< The fluid system to be used for the Richards model
 NEW_PROP_TAG(FluidState); //!< The fluid state to be used for the Richards model
 NEW_PROP_TAG(WettingPhase); //!< Fluid which represents the wetting phase
diff --git a/dumux/porousmediumflow/richards/implicit/volumevariables.hh b/dumux/porousmediumflow/richards/implicit/volumevariables.hh
index a7b038f31d336c40a7583b52daf943ae76970683..0b867eadb26786de611b08f8a583e229a4725dd9 100644
--- a/dumux/porousmediumflow/richards/implicit/volumevariables.hh
+++ b/dumux/porousmediumflow/richards/implicit/volumevariables.hh
@@ -52,7 +52,7 @@ class RichardsVolumeVariables : public ImplicitVolumeVariables<TypeTag>
     using PermeabilityType = typename SpatialParams::PermeabilityType;
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
     using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLawParams);
+    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
     using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
     using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
     using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
diff --git a/dumux/porousmediumflow/richardsnc/implicit/properties.hh b/dumux/porousmediumflow/richardsnc/implicit/properties.hh
index 7ba7505c9f41c40213e8e21f19d9d82d3897d8dd..4d3a5b76ff29c0390b927d4587182fc859d35879 100644
--- a/dumux/porousmediumflow/richardsnc/implicit/properties.hh
+++ b/dumux/porousmediumflow/richardsnc/implicit/properties.hh
@@ -58,7 +58,6 @@ NEW_TYPE_TAG(CCRichardsNCNI, INHERITS_FROM(CCTpfaModel, RichardsNCNI));
 NEW_PROP_TAG(NumPhases);   //!< Number of fluid phases in the system
 NEW_PROP_TAG(NumComponents);   //!< Number of fluid components in the system
 NEW_PROP_TAG(MaterialLaw);   //!< The material law which ought to be used (by default extracted from the spatial parameters)
-NEW_PROP_TAG(MaterialLawParams); //!< The type of the parameter object for the material law (by default extracted from the spatial parameters)
 NEW_PROP_TAG(Indices); //!< Enumerations for the model
 NEW_PROP_TAG(SpatialParams); //!< The type of the spatial parameters
 NEW_PROP_TAG(EffectiveDiffusivityModel); //!< The employed model for the computation of the effective diffusivity
diff --git a/dumux/porousmediumflow/richardsnc/implicit/volumevariables.hh b/dumux/porousmediumflow/richardsnc/implicit/volumevariables.hh
index 7c173990f23570b1461740e05f3b77848497d4c7..82bc48dacb249e07194b1f9611a160babcc413d0 100644
--- a/dumux/porousmediumflow/richardsnc/implicit/volumevariables.hh
+++ b/dumux/porousmediumflow/richardsnc/implicit/volumevariables.hh
@@ -40,7 +40,7 @@ class RichardsBaseVolumeVariables : public ImplicitVolumeVariables<TypeTag>
     using PermeabilityType = typename SpatialParams::PermeabilityType;
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
     using MaterialLaw = typename GET_PROP_TYPE(TypeTag, MaterialLaw);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLawParams);
+    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
     using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVElementGeometry);
     using SubControlVolume = typename GET_PROP_TYPE(TypeTag, SubControlVolume);
     using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
diff --git a/test/porousmediumflow/2pncmin/implicit/dissolutionspatialparams.hh b/test/porousmediumflow/2pncmin/implicit/dissolutionspatialparams.hh
index 3aed233fbe7d41659f7f68a74ca09b8acd2b05a5..26901b9144a94f352ac3aa64e4bc2fcc6c4bf983 100644
--- a/test/porousmediumflow/2pncmin/implicit/dissolutionspatialparams.hh
+++ b/test/porousmediumflow/2pncmin/implicit/dissolutionspatialparams.hh
@@ -66,7 +66,7 @@ class DissolutionSpatialparams : public ImplicitSpatialParams<TypeTag>
     using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
     using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLawParams);
+    using MaterialLawParams = typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params;
     using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
     using ElementSolutionVector = typename GET_PROP_TYPE(TypeTag, ElementSolutionVector);
     using CoordScalar = typename GridView::ctype;
diff --git a/test/porousmediumflow/3p3c/implicit/infiltrationproblem.hh b/test/porousmediumflow/3p3c/implicit/infiltrationproblem.hh
index 529e4c9a5e15c462ec55aaf7c848bbbf676b109d..aa550116967433284814e5b49c7daa7e3967bcb7 100644
--- a/test/porousmediumflow/3p3c/implicit/infiltrationproblem.hh
+++ b/test/porousmediumflow/3p3c/implicit/infiltrationproblem.hh
@@ -104,7 +104,7 @@ class InfiltrationProblem : public ImplicitPorousMediaProblem<TypeTag>
     typedef typename GET_PROP_TYPE(TypeTag, SubControlVolume) SubControlVolume;
 
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
 
     // copy some indices for convenience
     typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
diff --git a/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh b/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh
index 1791e2a8934528eebd1874d72dfc4f2ec7eb35da..011d4df4e26f98094e34212570f803a288a8b619 100644
--- a/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh
+++ b/test/porousmediumflow/mpnc/implicit/combustionproblem1c.hh
@@ -214,7 +214,7 @@ class CombustionProblemOneComponent: public ImplicitPorousMediaProblem<TypeTag>
     typedef typename GridView::template Codim<dim>::Entity Vertex;
     typedef typename GridView::Intersection Intersection;
     typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
     typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables;
     typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables;
diff --git a/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh b/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh
index 476e31f0ac608dc552f9e461befc47a92b621d72..52cd2037889e911ee06468e483e60073d3023f61 100644
--- a/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh
+++ b/test/porousmediumflow/mpnc/implicit/evaporationatmosphereproblem.hh
@@ -210,7 +210,7 @@ class EvaporationAtmosphereProblem
     typedef typename GridView::template Codim<dim>::Entity Vertex;
     typedef typename GridView::Intersection Intersection;
     typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
     typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager;
 
diff --git a/test/porousmediumflow/mpnc/implicit/evaporationatmospherespatialparams.hh b/test/porousmediumflow/mpnc/implicit/evaporationatmospherespatialparams.hh
index 68feaee6955898be451b21ea3232cde933f964b6..2765da28936b10013df29ecbb57c16226cdb7cec 100644
--- a/test/porousmediumflow/mpnc/implicit/evaporationatmospherespatialparams.hh
+++ b/test/porousmediumflow/mpnc/implicit/evaporationatmospherespatialparams.hh
@@ -111,7 +111,7 @@ private:
 SET_PROP(EvaporationAtmosphereSpatialParams, AwnSurface)
 {
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef AwnSurfacePcMaxFct<Scalar>     EffectiveIALaw;
     //    typedef AwnSurfacePolynomial2ndOrder<Scalar>      EffectiveIALaw;
 public:
@@ -123,7 +123,7 @@ public:
 SET_PROP(EvaporationAtmosphereSpatialParams, AwsSurface)
 {
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef AwnSurfacePolynomial2ndOrder<Scalar>  EffectiveIALaw;
 public:
     typedef EffToAbsLawIA<EffectiveIALaw, MaterialLawParams> type;
@@ -133,7 +133,7 @@ public:
 SET_PROP(EvaporationAtmosphereSpatialParams, AnsSurface)
 {
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef AwnSurfaceExpSwPcTo3<Scalar>      EffectiveIALaw;
 public:
     typedef EffToAbsLawIA<EffectiveIALaw, MaterialLawParams> type;
diff --git a/test/porousmediumflow/mpnc/implicit/forchheimer1pproblem.hh b/test/porousmediumflow/mpnc/implicit/forchheimer1pproblem.hh
index 73a47157f36fd47c17f0bc52f9f14d5b7d3b7c3e..2ae1eba28d5b912d1fac2c22fcf314475e8df713 100644
--- a/test/porousmediumflow/mpnc/implicit/forchheimer1pproblem.hh
+++ b/test/porousmediumflow/mpnc/implicit/forchheimer1pproblem.hh
@@ -119,7 +119,7 @@ class Forchheimer1pProblem
     typedef typename FluidSystem::ParameterCache ParameterCache;
     typedef typename GET_PROP_TYPE(TypeTag, FluidState) FluidState;
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
 
     // Grid and world dimension
diff --git a/test/porousmediumflow/mpnc/implicit/forchheimer2pproblem.hh b/test/porousmediumflow/mpnc/implicit/forchheimer2pproblem.hh
index 1293aade42a897fe6ef9fcd89ecb2b7f7308ec02..0b34a6e4c08563b580fd69ead1829ec5e2629384 100644
--- a/test/porousmediumflow/mpnc/implicit/forchheimer2pproblem.hh
+++ b/test/porousmediumflow/mpnc/implicit/forchheimer2pproblem.hh
@@ -118,7 +118,7 @@ class Forchheimer2pProblem
     typedef typename FluidSystem::ParameterCache ParameterCache;
     typedef typename GET_PROP_TYPE(TypeTag, FluidState) FluidState;
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
 
     // Grid and world dimension
diff --git a/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh b/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh
index 22a700abb7b116ce6dba918dce579404528352b7..53f8b0a556e8360eb538c412f3d71f8a3c68ca7c 100644
--- a/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh
+++ b/test/porousmediumflow/mpnc/implicit/obstacleproblem.hh
@@ -122,7 +122,7 @@ class ObstacleProblem
     typedef typename FluidSystem::ParameterCache ParameterCache;
     typedef typename GET_PROP_TYPE(TypeTag, FluidState) FluidState;
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
-    typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
+    typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params MaterialLawParams;
     typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
 
     // world dimension