diff --git a/dumux/flux/box/darcyslaw.hh b/dumux/flux/box/darcyslaw.hh
index 0c011f5d1d8454bd831e281a3eb2a0bb4b197a2f..a1326195e31839e3725ce92242ced0086b24ad44 100644
--- a/dumux/flux/box/darcyslaw.hh
+++ b/dumux/flux/box/darcyslaw.hh
@@ -37,7 +37,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class DarcysLawImplementation;
 
 // forward declaration
@@ -49,7 +49,7 @@ class BoxDarcysLaw;
  * \brief Specialization of Darcy's Law for the box method.
  */
 template<class TypeTag>
-class DarcysLawImplementation<TypeTag, DiscretizationMethod::box>
+class DarcysLawImplementation<TypeTag, DiscretizationMethods::Box>
 : public BoxDarcysLaw<GetPropType<TypeTag, Properties::Scalar>, GetPropType<TypeTag, Properties::GridGeometry>>
 { };
 
diff --git a/dumux/flux/box/fickslaw.hh b/dumux/flux/box/fickslaw.hh
index 61b7a17b268fd9ee2d71c8006d714a8d0452eb89..0349e2549cab98b22f64b3412b803f72fc6b5f04 100644
--- a/dumux/flux/box/fickslaw.hh
+++ b/dumux/flux/box/fickslaw.hh
@@ -39,7 +39,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template<class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -47,7 +47,7 @@ class FicksLawImplementation;
  * \brief Specialization of Fick's Law for the box method.
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class FicksLawImplementation<TypeTag, DiscretizationMethod::box, referenceSystem>
+class FicksLawImplementation<TypeTag, DiscretizationMethods::Box, referenceSystem>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
diff --git a/dumux/flux/box/forchheimerslaw.hh b/dumux/flux/box/forchheimerslaw.hh
index eee7bb7b327835ff76dc7f782ecc2cb657050b40..0ce29b5f0e92c4d60659a4668d6c9e27cb699c0a 100644
--- a/dumux/flux/box/forchheimerslaw.hh
+++ b/dumux/flux/box/forchheimerslaw.hh
@@ -39,7 +39,7 @@
 namespace Dumux {
 
 // forward declarations
-template<class TypeTag, class ForchheimerVelocity, DiscretizationMethod discMethod>
+template<class TypeTag, class ForchheimerVelocity, class DiscretizationMethod>
 class ForchheimersLawImplementation;
 
 /*!
@@ -59,7 +59,7 @@ class BoxForchheimersLaw;
  * \brief Forchheimer's law for box scheme
  */
 template <class TypeTag, class ForchheimerVelocity>
-class ForchheimersLawImplementation<TypeTag, ForchheimerVelocity, DiscretizationMethod::box>
+class ForchheimersLawImplementation<TypeTag, ForchheimerVelocity, DiscretizationMethods::Box>
 : public BoxForchheimersLaw<GetPropType<TypeTag, Properties::Scalar>,
                             GetPropType<TypeTag, Properties::GridGeometry>,
                             ForchheimerVelocity>
@@ -88,8 +88,9 @@ public:
     //! state the scalar type of the law
     using Scalar = ScalarType;
 
+    using DiscretizationMethod = DiscretizationMethods::Box;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::box;
+    static constexpr DiscretizationMethod discMethod{};
 
     /*! \brief Compute the advective flux of a phase across
     *          the given sub-control volume face using the Forchheimer equation.
diff --git a/dumux/flux/box/fourierslaw.hh b/dumux/flux/box/fourierslaw.hh
index 988f87024ba23808b4cc5e06c73b294f4845006e..6a825e69464a0a4ec4a5fb42a94c06651202bab1 100644
--- a/dumux/flux/box/fourierslaw.hh
+++ b/dumux/flux/box/fourierslaw.hh
@@ -33,7 +33,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class FouriersLawImplementation;
 
 /*!
@@ -41,7 +41,7 @@ class FouriersLawImplementation;
  * \brief Specialization of Fourier's Law for the box method.
  */
 template <class TypeTag>
-class FouriersLawImplementation<TypeTag, DiscretizationMethod::box>
+class FouriersLawImplementation<TypeTag, DiscretizationMethods::Box>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
diff --git a/dumux/flux/box/fourierslawnonequilibrium.hh b/dumux/flux/box/fourierslawnonequilibrium.hh
index 40bf51f39aef1038576543180a6a6e864454e53f..22ea175d80443dd893be1e4722cb37f87ba2f2db 100644
--- a/dumux/flux/box/fourierslawnonequilibrium.hh
+++ b/dumux/flux/box/fourierslawnonequilibrium.hh
@@ -36,7 +36,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class FouriersLawNonEquilibriumImplementation;
 
 /*!
@@ -44,7 +44,7 @@ class FouriersLawNonEquilibriumImplementation;
  * \brief Specialization of Fourier's Law for the box method for thermal nonequilibrium models.
  */
 template <class TypeTag>
-class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::box>
+class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethods::Box>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
diff --git a/dumux/flux/box/maxwellstefanslaw.hh b/dumux/flux/box/maxwellstefanslaw.hh
index 76b2b5b583eec0b405a467fb924ffbfd5d32cc30..fa2a845e9a7109e87200e7986ef7230c177cba63 100644
--- a/dumux/flux/box/maxwellstefanslaw.hh
+++ b/dumux/flux/box/maxwellstefanslaw.hh
@@ -40,7 +40,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class MaxwellStefansLawImplementation;
 
 /*!
@@ -48,7 +48,7 @@ class MaxwellStefansLawImplementation;
  * \brief Specialization of Maxwell Stefan's Law for the Box method.
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethod::box, referenceSystem>
+class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethods::Box, referenceSystem>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
diff --git a/dumux/flux/ccmpfa/darcyslaw.hh b/dumux/flux/ccmpfa/darcyslaw.hh
index 97a5a3a2d87afbd2fa80c96fa26652c896941e55..9627f8e7ac44b34bd55507ab1b5198c903bfadef 100644
--- a/dumux/flux/ccmpfa/darcyslaw.hh
+++ b/dumux/flux/ccmpfa/darcyslaw.hh
@@ -35,7 +35,7 @@
 namespace Dumux {
 
 //! forward declaration of the method-specific implementation
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class DarcysLawImplementation;
 
 /*!
@@ -44,7 +44,7 @@ class DarcysLawImplementation;
  *        with multi-point flux approximation.
  */
 template<class TypeTag>
-class DarcysLawImplementation<TypeTag, DiscretizationMethod::ccmpfa>
+class DarcysLawImplementation<TypeTag, DiscretizationMethods::CCMpfa>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
@@ -151,8 +151,9 @@ class DarcysLawImplementation<TypeTag, DiscretizationMethod::ccmpfa>
     };
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCMpfa;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::ccmpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     // export the type for the corresponding cache
     using Cache = MpfaDarcysLawCache;
diff --git a/dumux/flux/ccmpfa/fickslaw.hh b/dumux/flux/ccmpfa/fickslaw.hh
index 0e13b4eebcb836c108ce9aecf0b828efc94bb5e2..071a9b2e230db1a355d1791c9020477b4d792887 100644
--- a/dumux/flux/ccmpfa/fickslaw.hh
+++ b/dumux/flux/ccmpfa/fickslaw.hh
@@ -34,7 +34,7 @@
 namespace Dumux {
 
 //! forward declaration of the method-specific implemetation
-template<class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template<class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -42,7 +42,7 @@ class FicksLawImplementation;
  * \brief Fick's law for cell-centered finite volume schemes with multi-point flux approximation
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class FicksLawImplementation<TypeTag, DiscretizationMethod::ccmpfa, referenceSystem>
+class FicksLawImplementation<TypeTag, DiscretizationMethods::CCMpfa, referenceSystem>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
@@ -162,8 +162,9 @@ class FicksLawImplementation<TypeTag, DiscretizationMethod::ccmpfa, referenceSys
     };
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCMpfa;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::ccmpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
diff --git a/dumux/flux/ccmpfa/fourierslaw.hh b/dumux/flux/ccmpfa/fourierslaw.hh
index 55fe8dbd46080d2d949a01e2790ae07d481a3c38..c094d4abed78a36fd396328877160887171a8319 100644
--- a/dumux/flux/ccmpfa/fourierslaw.hh
+++ b/dumux/flux/ccmpfa/fourierslaw.hh
@@ -33,7 +33,7 @@
 namespace Dumux {
 
 //! forward declaration of the method-specific implementation
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class FouriersLawImplementation;
 
 /*!
@@ -41,7 +41,7 @@ class FouriersLawImplementation;
  * \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation
  */
 template <class TypeTag>
-class FouriersLawImplementation<TypeTag, DiscretizationMethod::ccmpfa>
+class FouriersLawImplementation<TypeTag, DiscretizationMethods::CCMpfa>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
@@ -148,8 +148,9 @@ class FouriersLawImplementation<TypeTag, DiscretizationMethod::ccmpfa>
     };
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCMpfa;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::ccmpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     // state the type for the corresponding cache and its filler
     using Cache = MpfaFouriersLawCache;
diff --git a/dumux/flux/cctpfa/darcyslaw.hh b/dumux/flux/cctpfa/darcyslaw.hh
index 98e6bc3f7a9c74b6ed64ffceace972c4ce4d2dc1..fa9b7eb164d3e07f112da1952d70c41352ff40bd 100644
--- a/dumux/flux/cctpfa/darcyslaw.hh
+++ b/dumux/flux/cctpfa/darcyslaw.hh
@@ -35,7 +35,7 @@
 namespace Dumux {
 
 // forward declarations
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class DarcysLawImplementation;
 
 /*!
@@ -55,7 +55,7 @@ class CCTpfaDarcysLaw;
  * \note Darcy's law is specialized for network and surface grids (i.e. if grid dim < dimWorld)
  */
 template <class TypeTag>
-class DarcysLawImplementation<TypeTag, DiscretizationMethod::cctpfa>
+class DarcysLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>
 : public CCTpfaDarcysLaw<GetPropType<TypeTag, Properties::Scalar>,
                          GetPropType<TypeTag, Properties::GridGeometry>,
                          (GetPropType<TypeTag, Properties::GridGeometry>::GridView::dimension < GetPropType<TypeTag, Properties::GridGeometry>::GridView::dimensionworld)>
@@ -145,8 +145,9 @@ class CCTpfaDarcysLaw<ScalarType, GridGeometry, /*isNetwork*/ false>
     //! state the scalar type of the law
     using Scalar = ScalarType;
 
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! state the type for the corresponding cache
     using Cache = TpfaDarcysLawCache<ThisType, GridGeometry>;
@@ -309,8 +310,9 @@ public:
     //! state the scalar type of the law
     using Scalar = ScalarType;
 
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! state the type for the corresponding cache
     using Cache = TpfaDarcysLawCache<ThisType, GridGeometry>;
diff --git a/dumux/flux/cctpfa/fickslaw.hh b/dumux/flux/cctpfa/fickslaw.hh
index 29c1aa8ea5641f7dd2b87f67145a32fd81616952..7876e600e10a2c092cf7cba2eb4f0f0024d1aa86 100644
--- a/dumux/flux/cctpfa/fickslaw.hh
+++ b/dumux/flux/cctpfa/fickslaw.hh
@@ -39,7 +39,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template<class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -47,9 +47,9 @@ class FicksLawImplementation;
  * \brief Fick's law for cell-centered finite volume schemes with two-point flux approximation
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>
+class FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>
 {
-    using Implementation = FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>;
+    using Implementation = FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>;
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -117,8 +117,10 @@ class FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSys
     };
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
+
     //! Return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
     { return referenceSystem; }
diff --git a/dumux/flux/cctpfa/forchheimerslaw.hh b/dumux/flux/cctpfa/forchheimerslaw.hh
index ccc07f448e7efa74f7e630c0d5ad3feea9c460b8..7e1065254d36b73fb6d62bda8c381e74bb6a1a8b 100644
--- a/dumux/flux/cctpfa/forchheimerslaw.hh
+++ b/dumux/flux/cctpfa/forchheimerslaw.hh
@@ -39,7 +39,7 @@
 namespace Dumux {
 
 // forward declarations
-template<class TypeTag, class ForchheimerVelocity, DiscretizationMethod discMethod>
+template<class TypeTag, class ForchheimerVelocity, class DiscretizationMethod>
 class ForchheimersLawImplementation;
 
 /*!
@@ -60,7 +60,7 @@ class CCTpfaForchheimersLaw;
  * \note Forchheimer's law is specialized for network and surface grids (i.e. if grid dim < dimWorld)
  */
 template <class TypeTag, class ForchheimerVelocity>
-class ForchheimersLawImplementation<TypeTag, ForchheimerVelocity, DiscretizationMethod::cctpfa>
+class ForchheimersLawImplementation<TypeTag, ForchheimerVelocity, DiscretizationMethods::CCTpfa>
 : public CCTpfaForchheimersLaw<GetPropType<TypeTag, Properties::Scalar>,
                                GetPropType<TypeTag, Properties::GridGeometry>,
                                ForchheimerVelocity,
@@ -157,8 +157,9 @@ class CCTpfaForchheimersLaw<ScalarType, GridGeometry, ForchheimerVelocity, /*isN
     //! state the scalar type of the law
     using Scalar = ScalarType;
 
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! state the type for the corresponding cache
     using Cache = TpfaForchheimersLawCache<ThisType, GridGeometry>;
diff --git a/dumux/flux/cctpfa/fourierslaw.hh b/dumux/flux/cctpfa/fourierslaw.hh
index 90fa112ac94a112037a00600cd9c365f7957a89b..ac3b95b99cd5c2b2440d963fe3bbf0ab1b8d9889 100644
--- a/dumux/flux/cctpfa/fourierslaw.hh
+++ b/dumux/flux/cctpfa/fourierslaw.hh
@@ -34,7 +34,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class FouriersLawImplementation;
 
 /*!
@@ -42,9 +42,9 @@ class FouriersLawImplementation;
  * \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation
  */
 template <class TypeTag>
-class FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>
+class FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>
 {
-    using Implementation = FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>;
+    using Implementation = FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>;
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -103,8 +103,9 @@ class FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>
     };
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! export the type for the corresponding cache
     using Cache = TpfaFouriersLawCache;
diff --git a/dumux/flux/cctpfa/fourierslawnonequilibrium.hh b/dumux/flux/cctpfa/fourierslawnonequilibrium.hh
index cf0dc419c7ecfe3fc6398a84d92e936ee26e4c1f..a2ddb1e83d8db26a494b14825936567240d26660 100644
--- a/dumux/flux/cctpfa/fourierslawnonequilibrium.hh
+++ b/dumux/flux/cctpfa/fourierslawnonequilibrium.hh
@@ -33,7 +33,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class FouriersLawNonEquilibriumImplementation;
 
 /*!
@@ -41,9 +41,9 @@ class FouriersLawNonEquilibriumImplementation;
  * \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation
  */
 template <class TypeTag>
-class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::cctpfa>
+class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethods::CCTpfa>
 {
-    using Implementation = FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::cctpfa>;
+    using Implementation = FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethods::CCTpfa>;
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -66,8 +66,9 @@ class FouriersLawNonEquilibriumImplementation<TypeTag, DiscretizationMethod::cct
     static constexpr auto sPhaseIdx = ModelTraits::numFluidPhases();
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     using Cache = FluxVariablesCaching::EmptyHeatConductionCache;
 
diff --git a/dumux/flux/cctpfa/maxwellstefanslaw.hh b/dumux/flux/cctpfa/maxwellstefanslaw.hh
index 87b3fd4717b0a6e69db2633229219068aa3b94cb..89f3a1a48a61850a5f84341a24eec32c20edf1aa 100644
--- a/dumux/flux/cctpfa/maxwellstefanslaw.hh
+++ b/dumux/flux/cctpfa/maxwellstefanslaw.hh
@@ -40,7 +40,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class MaxwellStefansLawImplementation;
 
 /*!
@@ -48,7 +48,7 @@ class MaxwellStefansLawImplementation;
  * \brief Specialization of Maxwell Stefan's Law for the CCTpfa method.
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem >
+class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem >
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
@@ -78,8 +78,10 @@ class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethod::cctpfa, ref
     using ReducedComponentMatrix = Dune::FieldMatrix<Scalar, numComponents-1, numComponents-1>;
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
+
     //return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
     { return referenceSystem; }
diff --git a/dumux/flux/darcyslaw_fwd.hh b/dumux/flux/darcyslaw_fwd.hh
index 9cba7efb4f19fca6af8b270dbe9bd32579184ff3..f69444c70212d1a3b7bf1e64c921f28e74306ab7 100644
--- a/dumux/flux/darcyslaw_fwd.hh
+++ b/dumux/flux/darcyslaw_fwd.hh
@@ -33,7 +33,7 @@
 namespace Dumux {
 
 // declaration of primary template
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class DarcysLawImplementation;
 
 /*!
@@ -43,7 +43,7 @@ class DarcysLawImplementation;
  * These specializations are found in the headers included below.
  */
 template <class TypeTag>
-using DarcysLaw = DarcysLawImplementation<TypeTag, GetPropType<TypeTag, Properties::GridGeometry>::discMethod>;
+using DarcysLaw = DarcysLawImplementation<TypeTag, typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod>;
 
 } // end namespace Dumux
 
diff --git a/dumux/flux/effectivestresslaw_fwd.hh b/dumux/flux/effectivestresslaw_fwd.hh
index 75e66af3e307fce9f031bad623572af9927b014b..9b2092081d550fc5d494a4b1cecc0a96676d0b3c 100644
--- a/dumux/flux/effectivestresslaw_fwd.hh
+++ b/dumux/flux/effectivestresslaw_fwd.hh
@@ -35,7 +35,7 @@ namespace Dumux {
  * \note Specializations are provided for the different discretization methods.
  * These specializations are found in the headers included below.
  */
-template <class StressType, class GridGeometry, DiscretizationMethod dm = GridGeometry::discMethod>
+template <class StressType, class GridGeometry, class DiscretizationMethod = typename GridGeometry::DiscretizationMethod>
 class EffectiveStressLaw;
 
 } // end namespace Dumux
diff --git a/dumux/flux/fickslaw_fwd.hh b/dumux/flux/fickslaw_fwd.hh
index 265c964c03004205a1bceabef2f79f461873ae43..8264f2c6c5b8a1dd7ee694eb939b8f1ffd119840 100644
--- a/dumux/flux/fickslaw_fwd.hh
+++ b/dumux/flux/fickslaw_fwd.hh
@@ -34,7 +34,7 @@
 namespace Dumux {
 
 // declaration of primary template
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -42,7 +42,7 @@ class FicksLawImplementation;
  * \brief Evaluates the diffusive mass flux according to Fick's law
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem =  ReferenceSystemFormulation::massAveraged>
-using FicksLaw = FicksLawImplementation<TypeTag, GetPropType<TypeTag, Properties::GridGeometry>::discMethod, referenceSystem>;
+using FicksLaw = FicksLawImplementation<TypeTag, typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod, referenceSystem>;
 
 } // end namespace Dumux
 
diff --git a/dumux/flux/forchheimerslaw_fwd.hh b/dumux/flux/forchheimerslaw_fwd.hh
index fe008ed2ffa765e96147b7c6a03b12222a46d219..9e45d2165ec61b9db701d7f2b880bba45b7a079a 100644
--- a/dumux/flux/forchheimerslaw_fwd.hh
+++ b/dumux/flux/forchheimerslaw_fwd.hh
@@ -34,12 +34,13 @@
 namespace Dumux {
 
 // definition of primary template
-template <class TypeTag, class VelocityLaw, DiscretizationMethod discMethod>
+template <class TypeTag, class VelocityLaw, class DiscretizationMethod>
 class ForchheimersLawImplementation
 {
     static_assert(
-        discMethod == DiscretizationMethod::cctpfa || discMethod == DiscretizationMethod::box,
-        "Forchheimer only implemented for cctpfa or box!"
+        GetPropType<TypeTag, Properties::GridGeometry>::discMethod == DiscretizationMethods::cctpfa || 
+        GetPropType<TypeTag, Properties::GridGeometry>::discMethod == DiscretizationMethods::box, 
+        "Forchheimer only implemented for cctpfa or box!")
     );
 };
 
@@ -57,7 +58,7 @@ using ForchheimersLaw = ForchheimersLawImplementation<
         GetPropType<TypeTag, Properties::GridGeometry>,
         GetPropType<TypeTag, Properties::FluxVariables>
     >,
-    GetPropType<TypeTag, Properties::GridGeometry>::discMethod
+    typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod
 >;
 
 } // end namespace Dumux
diff --git a/dumux/flux/fourierslaw_fwd.hh b/dumux/flux/fourierslaw_fwd.hh
index 1658102bfa92d39423d33d82ece65204658459f4..ef6da70c5570b009f7b6a88457b70c1493489e3b 100644
--- a/dumux/flux/fourierslaw_fwd.hh
+++ b/dumux/flux/fourierslaw_fwd.hh
@@ -32,7 +32,7 @@
 namespace Dumux {
 
 // declaration of primary template
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class FouriersLawImplementation;
 
 /*!
@@ -40,7 +40,7 @@ class FouriersLawImplementation;
  * \brief Evaluates the heat conduction flux according to Fouriers's law
  */
 template <class TypeTag>
-using FouriersLaw = FouriersLawImplementation<TypeTag, GetPropType<TypeTag, Properties::GridGeometry>::discMethod>;
+using FouriersLaw = FouriersLawImplementation<TypeTag, typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod>;
 
 } // end namespace Dumux
 
diff --git a/dumux/flux/fourierslawnonequilibrium_fwd.hh b/dumux/flux/fourierslawnonequilibrium_fwd.hh
index a940df1c0d4246f65e250347bf2f95e9a8316f57..77969c91d2d1f6c78b6f653c23ddd5a8a2a10669 100644
--- a/dumux/flux/fourierslawnonequilibrium_fwd.hh
+++ b/dumux/flux/fourierslawnonequilibrium_fwd.hh
@@ -31,7 +31,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class FouriersLawNonEquilibriumImplementation;
 
 /*!
@@ -39,7 +39,7 @@ class FouriersLawNonEquilibriumImplementation;
  * \brief Evaluates the heat conduction flux according to Fouriers's law
  */
 template <class TypeTag>
-using FouriersLawNonEquilibrium = FouriersLawNonEquilibriumImplementation<TypeTag, GetPropType<TypeTag, Properties::GridGeometry>::discMethod>;
+using FouriersLawNonEquilibrium = FouriersLawNonEquilibriumImplementation<TypeTag, typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod>;
 
 } // end namespace Dumux
 
diff --git a/dumux/flux/hookeslaw_fwd.hh b/dumux/flux/hookeslaw_fwd.hh
index 2ee6c30c7ad8c85826c97be4d7c286b5516db698..e3cc7c4982575904e50aea2126601c84cbb59676 100644
--- a/dumux/flux/hookeslaw_fwd.hh
+++ b/dumux/flux/hookeslaw_fwd.hh
@@ -35,7 +35,7 @@ namespace Dumux {
  * \note Specializations are provided for the different discretization methods.
  * These specializations are found in the headers included below.
  */
-template <class Scalar, class GridGeometry, DiscretizationMethod dm = GridGeometry::discMethod>
+template <class Scalar, class GridGeometry, class DiscretizationMethod = typename GridGeometry::DiscretizationMethod>
 class HookesLaw;
 
 } // end namespace Dumux
diff --git a/dumux/flux/maxwellstefanslaw_fwd.hh b/dumux/flux/maxwellstefanslaw_fwd.hh
index fad0ea05a8935cc5e3d954f362127aa30938ce17..f320dd1aa8bae1a2e2873cf0d2757b376dd6ac07 100644
--- a/dumux/flux/maxwellstefanslaw_fwd.hh
+++ b/dumux/flux/maxwellstefanslaw_fwd.hh
@@ -32,7 +32,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class MaxwellStefansLawImplementation;
 
 /*!
@@ -40,7 +40,7 @@ class MaxwellStefansLawImplementation;
  * \brief Evaluates the diffusive mass flux according to Maxwell Stefan's law
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem =  ReferenceSystemFormulation::massAveraged>
-using MaxwellStefansLaw = MaxwellStefansLawImplementation<TypeTag, GetPropType<TypeTag, Properties::GridGeometry>::discMethod, referenceSystem>;
+using MaxwellStefansLaw = MaxwellStefansLawImplementation<TypeTag, typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod, referenceSystem>;
 
 } // end namespace Dumux
 
diff --git a/dumux/flux/staggered/freeflow/fickslaw.hh b/dumux/flux/staggered/freeflow/fickslaw.hh
index a1a36d25ae7f758df2bb91ef11acb0dac4452af9..146b025e1147b29e612dcb4b7fd9f3cc73a58135 100644
--- a/dumux/flux/staggered/freeflow/fickslaw.hh
+++ b/dumux/flux/staggered/freeflow/fickslaw.hh
@@ -42,7 +42,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template<class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -50,7 +50,7 @@ class FicksLawImplementation;
  * \brief Specialization of Fick's Law for the staggered free flow method.
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class FicksLawImplementation<TypeTag, DiscretizationMethod::staggered, referenceSystem>
+class FicksLawImplementation<TypeTag, DiscretizationMethods::Staggered, referenceSystem>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -72,8 +72,10 @@ class FicksLawImplementation<TypeTag, DiscretizationMethod::staggered, reference
     static_assert(ModelTraits::numFluidPhases() == 1, "Only one phase supported!");
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::Staggered;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::staggered;
+    static constexpr DiscretizationMethod discMethod{};
+
     //return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
     { return referenceSystem; }
diff --git a/dumux/flux/staggered/freeflow/fourierslaw.hh b/dumux/flux/staggered/freeflow/fourierslaw.hh
index 578777bda0751d287e8e7693171b308bd524eb9b..1221ec07c1674065d305e775aa9e53da13ed41b6 100644
--- a/dumux/flux/staggered/freeflow/fourierslaw.hh
+++ b/dumux/flux/staggered/freeflow/fourierslaw.hh
@@ -34,7 +34,7 @@
 namespace Dumux {
 
 // forward declaration
-template<class TypeTag, DiscretizationMethod discMethod>
+template<class TypeTag, class DiscretizationMethod>
 class FouriersLawImplementation;
 
 /*!
@@ -42,7 +42,7 @@ class FouriersLawImplementation;
  * \brief Specialization of Fourier's Law for the staggered free flow method.
  */
 template <class TypeTag>
-class FouriersLawImplementation<TypeTag, DiscretizationMethod::staggered>
+class FouriersLawImplementation<TypeTag, DiscretizationMethods::Staggered>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -54,8 +54,9 @@ class FouriersLawImplementation<TypeTag, DiscretizationMethod::staggered>
     using Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices;
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::Staggered;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::staggered;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! state the type for the corresponding cache
     //! We don't cache anything for this law
diff --git a/dumux/flux/staggered/freeflow/maxwellstefanslaw.hh b/dumux/flux/staggered/freeflow/maxwellstefanslaw.hh
index d74deb75234d4300dc7b79fc1e8f618704710d7a..d6408f78930a02e9d68cfe80a23ef9175446d173 100644
--- a/dumux/flux/staggered/freeflow/maxwellstefanslaw.hh
+++ b/dumux/flux/staggered/freeflow/maxwellstefanslaw.hh
@@ -38,7 +38,7 @@
 namespace Dumux {
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class MaxwellStefansLawImplementation;
 
 /*!
@@ -46,7 +46,7 @@ class MaxwellStefansLawImplementation;
  * \brief Specialization of Maxwell Stefan's Law for the Staggered method.
  */
 template <class TypeTag, ReferenceSystemFormulation referenceSystem>
-class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethod::staggered, referenceSystem>
+class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethods::Staggered, referenceSystem>
 {
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using Problem = GetPropType<TypeTag, Properties::Problem>;
@@ -75,8 +75,10 @@ class MaxwellStefansLawImplementation<TypeTag, DiscretizationMethod::staggered,
     static_assert(referenceSystem == ReferenceSystemFormulation::massAveraged, "only the mass averaged reference system is supported for the Maxwell-Stefan formulation");
 
 public:
+    using DiscretizationMethod = DiscretizationMethods::Staggered;
     // state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::staggered;
+    static constexpr DiscretizationMethod discMethod{};
+
     //return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
     { return referenceSystem; }
diff --git a/dumux/multidomain/boundary/stokesdarcy/couplingdata.hh b/dumux/multidomain/boundary/stokesdarcy/couplingdata.hh
index a4afec061fa211a6ee35338d0109621601d47c7d..25f6a562a4047df4a4fd14fb59ec438b849802a4 100644
--- a/dumux/multidomain/boundary/stokesdarcy/couplingdata.hh
+++ b/dumux/multidomain/boundary/stokesdarcy/couplingdata.hh
@@ -100,7 +100,7 @@ struct IsSameFluidSystem<FS, FS>
 };
 
 // forward declaration
-template <class TypeTag, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
+template <class TypeTag, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
 class FicksLawImplementation;
 
 /*!
@@ -116,8 +116,8 @@ struct IsFicksLaw : public std::false_type {};
  * \brief This structs indicates that Fick's law is used for diffusion.
  * \tparam DiffLaw The diffusion law.
  */
-template<class T, DiscretizationMethod discMethod, ReferenceSystemFormulation referenceSystem>
-struct IsFicksLaw<FicksLawImplementation<T, discMethod, referenceSystem>> : public std::true_type {};
+template<class T, class DiscretizationMethod, ReferenceSystemFormulation referenceSystem>
+struct IsFicksLaw<FicksLawImplementation<T, DiscretizationMethod, referenceSystem>> : public std::true_type {};
 
 /*!
  * \ingroup StokesDarcyCoupling
@@ -194,11 +194,11 @@ struct IndexHelper<stokesIdx, darcyIdx, FFFS, true>
 };
 
 //! forward declare
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class DarcysLawImplementation;
 
 //! forward declare
-template <class TypeTag, DiscretizationMethod discMethod>
+template <class TypeTag, class DiscretizationMethod>
 class ForchheimersLawImplementation;
 
 
@@ -241,8 +241,8 @@ class StokesDarcyCouplingDataImplementationBase
     static constexpr auto darcyIdx = CouplingManager::darcyIdx;
 
     using AdvectionType = GetPropType<SubDomainTypeTag<darcyIdx>, Properties::AdvectionType>;
-    using DarcysLaw = DarcysLawImplementation<SubDomainTypeTag<darcyIdx>, GridGeometry<darcyIdx>::discMethod>;
-    using ForchheimersLaw = ForchheimersLawImplementation<SubDomainTypeTag<darcyIdx>, GridGeometry<darcyIdx>::discMethod>;
+    using DarcysLaw = DarcysLawImplementation<SubDomainTypeTag<darcyIdx>, typename GridGeometry<darcyIdx>::DiscretizationMethod>;
+    using ForchheimersLaw = ForchheimersLawImplementation<SubDomainTypeTag<darcyIdx>, typename GridGeometry<darcyIdx>::DiscretizationMethod>;
 
     static constexpr bool adapterUsed = ModelTraits<darcyIdx>::numFluidPhases() > 1;
     using IndexHelper = Dumux::IndexHelper<stokesIdx, darcyIdx, FluidSystem<stokesIdx>, adapterUsed>;
diff --git a/dumux/multidomain/facet/box/fickslaw.hh b/dumux/multidomain/facet/box/fickslaw.hh
index 6ae5704709e0ab406bd5ab7d7b20017a7dc72f55..075aa5f17520f2a376f3c15a8ab073f600c57121 100644
--- a/dumux/multidomain/facet/box/fickslaw.hh
+++ b/dumux/multidomain/facet/box/fickslaw.hh
@@ -49,9 +49,9 @@ namespace Dumux {
  */
 template<class TypeTag, ReferenceSystemFormulation referenceSystem = ReferenceSystemFormulation::massAveraged>
 class BoxFacetCouplingFicksLaw
-: public FicksLawImplementation<TypeTag, DiscretizationMethod::box, referenceSystem>
+: public FicksLawImplementation<TypeTag, DiscretizationMethods::Box, referenceSystem>
 {
-    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethod::box, referenceSystem>;
+    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethods::Box, referenceSystem>;
 
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
     using FVElementGeometry = typename GridGeometry::LocalView;
diff --git a/dumux/multidomain/facet/box/fourierslaw.hh b/dumux/multidomain/facet/box/fourierslaw.hh
index e492a8b3d733d2d78c1003cdd039cf0118b8929b..a6363228c35c4ab4448f953534fe9227a5e43ccc 100644
--- a/dumux/multidomain/facet/box/fourierslaw.hh
+++ b/dumux/multidomain/facet/box/fourierslaw.hh
@@ -50,9 +50,9 @@ namespace Dumux {
  */
 template<class TypeTag>
 class BoxFacetCouplingFouriersLaw
-: public FouriersLawImplementation<TypeTag, DiscretizationMethod::box>
+: public FouriersLawImplementation<TypeTag, DiscretizationMethods::Box>
 {
-    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethod::box>;
+    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethods::Box>;
 
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
diff --git a/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh b/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh
index 937c76b9a344204df9d6ad625ab350c68b536956..05c4ec5d7abb274ae2604eda9af6ccbfd265baec 100644
--- a/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh
+++ b/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh
@@ -155,7 +155,8 @@ class CCTpfaFacetCouplingDarcysLawImpl<ScalarType, GridGeometry, /*isNetwork*/fa
     //! state the scalar type of the law
     using Scalar = ScalarType;
     //! export the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
+    static constexpr DiscretizationMethod discMethod{};
     //! export the type for the corresponding cache
     using Cache = CCTpfaFacetCouplingDarcysLawCache<ThisType, GridGeometry, /*isNetwork*/false>;
     //! export the type used to store transmissibilities
@@ -428,7 +429,8 @@ class CCTpfaFacetCouplingDarcysLawImpl<ScalarType, GridGeometry, /*isNetwork*/tr
     //! state the scalar type of the law
     using Scalar = ScalarType;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
+    static constexpr DiscretizationMethod discMethod{};
     //! state the type for the corresponding cache
     using Cache = CCTpfaFacetCouplingDarcysLawCache<ThisType, GridGeometry, /*isNetwork*/true>;
     //! export the type used to store transmissibilities
diff --git a/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh b/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh
index e009f41b12401a59929f2d71a0a88988f57dfb6e..f56365cb5e5347557f0588b544f0ce5b49cfabf1 100644
--- a/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh
+++ b/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh
@@ -67,10 +67,10 @@ using CCTpfaFacetCouplingFicksLaw =
  */
 template<class TypeTag, ReferenceSystemFormulation referenceSystem>
 class CCTpfaFacetCouplingFicksLawImpl<TypeTag, referenceSystem, /*isNetwork*/false>
-: public FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>
+: public FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>
 {
     using Implementation = CCTpfaFacetCouplingFicksLawImpl<TypeTag, referenceSystem, false>;
-    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>;
+    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>;
 
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
     using FVElementGeometry = typename GridGeometry::LocalView;
@@ -150,8 +150,9 @@ public:
     //! export the type for the corresponding cache
     using Cache = FacetCouplingFicksLawCache;
 
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! Return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
@@ -306,10 +307,10 @@ public:
  */
 template<class TypeTag, ReferenceSystemFormulation referenceSystem>
 class CCTpfaFacetCouplingFicksLawImpl<TypeTag, referenceSystem, /*isNetwork*/true>
-: public FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>
+: public FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>
 {
     using Implementation = CCTpfaFacetCouplingFicksLawImpl<TypeTag, referenceSystem, true>;
-    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethod::cctpfa, referenceSystem>;
+    using ParentType = FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa, referenceSystem>;
 
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
     using FVElementGeometry = typename GridGeometry::LocalView;
@@ -384,8 +385,9 @@ public:
     //! export the type for the corresponding cache
     using Cache = FacetCouplingFicksLawCache;
 
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! Return the reference system
     static constexpr ReferenceSystemFormulation referenceSystemFormulation()
diff --git a/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh b/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh
index 6e43c638be04d57de0f6d65139e056f6b629f580..4c979da2c29d307c6993360c4d08f88966597fbb 100644
--- a/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh
+++ b/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh
@@ -64,10 +64,10 @@ using CCTpfaFacetCouplingFouriersLaw =
  */
 template<class TypeTag>
 class CCTpfaFacetCouplingFouriersLawImpl<TypeTag, /*isNetwork*/false>
-: public FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>
+: public FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>
 {
     using Implementation = CCTpfaFacetCouplingFouriersLawImpl<TypeTag, false>;
-    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>;
+    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>;
 
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -137,7 +137,8 @@ public:
     using Cache = FacetCouplingFouriersLawCache;
 
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! Compute the conductive heat flux
     template< class Problem, class ElementVolumeVariables, class ElementFluxVarsCache >
@@ -270,10 +271,10 @@ public:
  */
 template<class TypeTag>
 class CCTpfaFacetCouplingFouriersLawImpl<TypeTag, /*isNetwork*/true>
-: public FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>
+: public FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>
 {
     using Implementation = CCTpfaFacetCouplingFouriersLawImpl<TypeTag, true>;
-    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethod::cctpfa>;
+    using ParentType = FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa>;
 
     using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
@@ -338,7 +339,8 @@ public:
     using Cache = FacetCouplingFouriersLawCache;
 
     //! state the discretization method this implementation belongs to
-    static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa;
+    using DiscretizationMethod = DiscretizationMethods::CCTpfa;
+    static constexpr DiscretizationMethod discMethod{};
 
     //! Compute the conductive heat flux
     template< class Problem, class ElementVolumeVariables, class ElementFluxVarsCache >