diff --git a/test/multidomain/facet/tracer_tracer/main.cc b/test/multidomain/facet/tracer_tracer/main.cc
index 8cae074fd2cb3d3e1e5a879ba65dbf15a3b3cfb0..45fd9a9cb318c2805848f52003ed6484b77d20a4 100644
--- a/test/multidomain/facet/tracer_tracer/main.cc
+++ b/test/multidomain/facet/tracer_tracer/main.cc
@@ -60,8 +60,8 @@
 template< class BulkTypeTag, class LowDimTypeTag >
 class TestTraits
 {
-    using BulkFVGridGeometry = typename GET_PROP_TYPE(BulkTypeTag, FVGridGeometry);
-    using LowDimFVGridGeometry = typename GET_PROP_TYPE(LowDimTypeTag, FVGridGeometry);
+    using BulkFVGridGeometry = Dumux::GetPropType<BulkTypeTag, Dumux::Properties::FVGridGeometry>;
+    using LowDimFVGridGeometry = Dumux::GetPropType<LowDimTypeTag, Dumux::Properties::FVGridGeometry>;
 public:
     using MDTraits = Dumux::MultiDomainTraits<BulkTypeTag, LowDimTypeTag>;
     using CouplingMapper = Dumux::FacetCouplingMapper<BulkFVGridGeometry, LowDimFVGridGeometry>;
@@ -73,20 +73,28 @@ namespace Dumux {
 namespace Properties {
 
 // set cm property for the box test
-using BoxTraits = TestTraits<TTAG(OnePBulkBox), TTAG(OnePLowDimBox)>;
-using BoxTracerTraits = TestTraits<TTAG(TracerBulkBox), TTAG(TracerLowDimBox)>;
-SET_TYPE_PROP(OnePBulkBox, CouplingManager, typename BoxTraits::CouplingManager);
-SET_TYPE_PROP(OnePLowDimBox, CouplingManager, typename BoxTraits::CouplingManager);
-SET_TYPE_PROP(TracerBulkBox, CouplingManager, typename BoxTracerTraits::CouplingManager);
-SET_TYPE_PROP(TracerLowDimBox, CouplingManager, typename BoxTracerTraits::CouplingManager);
+using BoxTraits = TestTraits<Properties::TTag::OnePBulkBox, Properties::TTag::OnePLowDimBox>;
+using BoxTracerTraits = TestTraits<Properties::TTag::TracerBulkBox, Properties::TTag::TracerLowDimBox>;
+template<class TypeTag>
+struct CouplingManager<TypeTag, TTag::OnePBulkBox> { using type = typename BoxTraits::CouplingManager; };
+template<class TypeTag>
+struct CouplingManager<TypeTag, TTag::OnePLowDimBox> { using type = typename BoxTraits::CouplingManager; };
+template<class TypeTag>
+struct CouplingManager<TypeTag, TTag::TracerBulkBox> { using type = typename BoxTracerTraits::CouplingManager; };
+template<class TypeTag>
+struct CouplingManager<TypeTag, TTag::TracerLowDimBox> { using type = typename BoxTracerTraits::CouplingManager; };
 
 // set cm property for the tpfa test
-using TpfaTraits = TestTraits<TTAG(OnePBulkTpfa), TTAG(OnePLowDimTpfa)>;
-using TpfaTracerTraits = TestTraits<TTAG(TracerBulkTpfa), TTAG(TracerLowDimTpfa)>;
-SET_TYPE_PROP(OnePBulkTpfa, CouplingManager, typename TpfaTraits::CouplingManager);
-SET_TYPE_PROP(OnePLowDimTpfa, CouplingManager, typename TpfaTraits::CouplingManager);
-SET_TYPE_PROP(TracerBulkTpfa, CouplingManager, typename TpfaTracerTraits::CouplingManager);
-SET_TYPE_PROP(TracerLowDimTpfa, CouplingManager, typename TpfaTracerTraits::CouplingManager);
+using TpfaTraits = TestTraits<Properties::TTag::OnePBulkTpfa, Properties::TTag::OnePLowDimTpfa>;
+using TpfaTracerTraits = TestTraits<Properties::TTag::TracerBulkTpfa, Properties::TTag::TracerLowDimTpfa>;
+template<class TypeTag>
+struct CouplingManager<TypeTag, TTag::OnePBulkTpfa> { using type = typename TpfaTraits::CouplingManager; };
+template<class TypeTag>
+struct CouplingManager<TypeTag, TTag::OnePLowDimTpfa> { using type = typename TpfaTraits::CouplingManager; };
+template<class TypeTag>
+struct CouplingManager<TypeTag, TTag::TracerBulkTpfa> { using type = typename TpfaTracerTraits::CouplingManager; };
+template<class TypeTag>
+struct CouplingManager<TypeTag, TTag::TracerLowDimTpfa> { using type = typename TpfaTracerTraits::CouplingManager; };
 
 } // end namespace Properties
 } // end namespace Dumux
@@ -206,10 +214,10 @@ int main(int argc, char** argv) try
     //////////////////////////////////////////////////////
     // try to create the grids (from the given grid file)
     //////////////////////////////////////////////////////
-    using BulkOnePTypeTag = TTAG(ONEPBULKTYPETAG);
-    using LowDimOnePTypeTag = TTAG(ONEPLOWDIMTYPETAG);
-    using BulkGrid = typename GET_PROP_TYPE(BulkOnePTypeTag, Grid);
-    using LowDimGrid = typename GET_PROP_TYPE(LowDimOnePTypeTag, Grid);
+    using BulkOnePTypeTag = Properties::TTag::ONEPBULKTYPETAG;
+    using LowDimOnePTypeTag = Properties::TTag::ONEPLOWDIMTYPETAG;
+    using BulkGrid = GetPropType<BulkOnePTypeTag, Properties::Grid>;
+    using LowDimGrid = GetPropType<LowDimOnePTypeTag, Properties::Grid>;
 
     using GridManager = FacetCouplingGridManager<BulkGrid, LowDimGrid>;
     GridManager gridManager;
@@ -225,8 +233,8 @@ int main(int argc, char** argv) try
     std::vector< std::vector<double> > lowDimVolumeFluxes;
 
     // create the finite volume grid geometries
-    using BulkFVGridGeometry = typename GET_PROP_TYPE(BulkOnePTypeTag, FVGridGeometry);
-    using LowDimFVGridGeometry = typename GET_PROP_TYPE(LowDimOnePTypeTag, FVGridGeometry);
+    using BulkFVGridGeometry = GetPropType<BulkOnePTypeTag, Properties::FVGridGeometry>;
+    using LowDimFVGridGeometry = GetPropType<LowDimOnePTypeTag, Properties::FVGridGeometry>;
     auto bulkFvGridGeometry = std::make_shared<BulkFVGridGeometry>(bulkGridView);
     auto lowDimFvGridGeometry = std::make_shared<LowDimFVGridGeometry>(lowDimGridView);
     updateBulkFVGridGeometry(*bulkFvGridGeometry, gridManager, lowDimGridView);
@@ -256,8 +264,8 @@ int main(int argc, char** argv) try
         auto couplingManager = std::make_shared<CouplingManager>();
 
         // the problems (boundary conditions)
-        using BulkProblem = typename GET_PROP_TYPE(BulkOnePTypeTag, Problem);
-        using LowDimProblem = typename GET_PROP_TYPE(LowDimOnePTypeTag, Problem);
+        using BulkProblem = GetPropType<BulkOnePTypeTag, Properties::Problem>;
+        using LowDimProblem = GetPropType<LowDimOnePTypeTag, Properties::Problem>;
         auto bulkSpatialParams = std::make_shared<typename BulkProblem::SpatialParams>(bulkFvGridGeometry, "Bulk.OneP");
         auto bulkProblem = std::make_shared<BulkProblem>(bulkFvGridGeometry, bulkSpatialParams, couplingManager, "Bulk.OneP");
         auto lowDimSpatialParams = std::make_shared<typename LowDimProblem::SpatialParams>(lowDimFvGridGeometry, "LowDim.OneP");
@@ -274,8 +282,8 @@ int main(int argc, char** argv) try
         couplingManager->init(bulkProblem, lowDimProblem, couplingMapper, x);
 
         // the grid variables
-        using BulkGridVariables = typename GET_PROP_TYPE(BulkOnePTypeTag, GridVariables);
-        using LowDimGridVariables = typename GET_PROP_TYPE(LowDimOnePTypeTag, GridVariables);
+        using BulkGridVariables = GetPropType<BulkOnePTypeTag, Properties::GridVariables>;
+        using LowDimGridVariables = GetPropType<LowDimOnePTypeTag, Properties::GridVariables>;
         auto bulkGridVariables = std::make_shared<BulkGridVariables>(bulkProblem, bulkFvGridGeometry);
         auto lowDimGridVariables = std::make_shared<LowDimGridVariables>(lowDimProblem, lowDimFvGridGeometry);
         bulkGridVariables->init(x[bulkId]);
@@ -289,8 +297,8 @@ int main(int argc, char** argv) try
         VtkOutputModule<LowDimGridVariables, LowDimSolutionVector> lowDimVtkWriter(*lowDimGridVariables, x[lowDimId], lowDimProblem->name(), "LowDim.OneP");
 
         // Add model specific output fields
-        using BulkIOFields = typename GET_PROP_TYPE(BulkOnePTypeTag, IOFields);
-        using LowDimIOFields = typename GET_PROP_TYPE(LowDimOnePTypeTag, IOFields);
+        using BulkIOFields = GetPropType<BulkOnePTypeTag, Properties::IOFields>;
+        using LowDimIOFields = GetPropType<LowDimOnePTypeTag, Properties::IOFields>;
         BulkIOFields::initOutputModule(bulkVtkWriter);
         LowDimIOFields::initOutputModule(lowDimVtkWriter);
 
@@ -321,8 +329,8 @@ int main(int argc, char** argv) try
         lowDimVtkWriter.write(1.0);
 
         // compute the volume fluxes and store them in the arrays
-        using BulkFluxVariables = typename GET_PROP_TYPE(BulkOnePTypeTag, FluxVariables);
-        using LowDimFluxVariables = typename GET_PROP_TYPE(LowDimOnePTypeTag, FluxVariables);
+        using BulkFluxVariables = GetPropType<BulkOnePTypeTag, Properties::FluxVariables>;
+        using LowDimFluxVariables = GetPropType<LowDimOnePTypeTag, Properties::FluxVariables>;
         computeVolumeFluxes<BulkFluxVariables>(bulkVolumeFluxes, *couplingManager, *assembler,
                                                *bulkProblem, *bulkFvGridGeometry, *bulkGridVariables, x[bulkId], bulkId);
         computeVolumeFluxes<LowDimFluxVariables>(lowDimVolumeFluxes, *couplingManager, *assembler,
@@ -334,8 +342,8 @@ int main(int argc, char** argv) try
     ////////////////////////////////////////////////////////////////////////////
 
     //! the problem (initial and boundary conditions)
-    using BulkTracerTypeTag = TTAG(TRACERBULKTYPETAG);
-    using LowDimTracerTypeTag = TTAG(TRACERLOWDIMTYPETAG);
+    using BulkTracerTypeTag = Properties::TTag::TRACERBULKTYPETAG;
+    using LowDimTracerTypeTag = Properties::TTag::TRACERLOWDIMTYPETAG;
 
     // instantiate coupling manager
     using TracerTestTraits = TestTraits<BulkTracerTypeTag, LowDimTracerTypeTag>;
@@ -343,8 +351,8 @@ int main(int argc, char** argv) try
     auto couplingManager = std::make_shared<CouplingManager>();
 
     // instantiate the tracer problems reusing the fv grid geometries
-    using TracerBulkProblem = typename GET_PROP_TYPE(BulkTracerTypeTag, Problem);
-    using TracerLowDimProblem = typename GET_PROP_TYPE(LowDimTracerTypeTag, Problem);
+    using TracerBulkProblem = GetPropType<BulkTracerTypeTag, Properties::Problem>;
+    using TracerLowDimProblem = GetPropType<LowDimTracerTypeTag, Properties::Problem>;
     using TracerBulkSpatialParams = typename TracerBulkProblem::SpatialParams;
     using TracerLowDimSpatialParams = typename TracerLowDimProblem::SpatialParams;
     auto bulkSpatialParams = std::make_shared<TracerBulkSpatialParams>(bulkFvGridGeometry, bulkVolumeFluxes, "Bulk.Tracer");
@@ -368,8 +376,8 @@ int main(int argc, char** argv) try
     couplingManager->init(bulkProblem, lowDimProblem, couplingMapper, x);
 
     // the grid variables
-    using BulkGridVariables = typename GET_PROP_TYPE(BulkTracerTypeTag, GridVariables);
-    using LowDimGridVariables = typename GET_PROP_TYPE(LowDimTracerTypeTag, GridVariables);
+    using BulkGridVariables = GetPropType<BulkTracerTypeTag, Properties::GridVariables>;
+    using LowDimGridVariables = GetPropType<LowDimTracerTypeTag, Properties::GridVariables>;
     auto bulkGridVariables = std::make_shared<BulkGridVariables>(bulkProblem, bulkFvGridGeometry);
     auto lowDimGridVariables = std::make_shared<LowDimGridVariables>(lowDimProblem, lowDimFvGridGeometry);
     bulkGridVariables->init(x[bulkId]);
@@ -383,8 +391,8 @@ int main(int argc, char** argv) try
     VtkOutputModule<LowDimGridVariables, LowDimSolutionVector> lowDimVtkWriter(*lowDimGridVariables, x[lowDimId], lowDimProblem->name(), "LowDim.Tracer");
 
     // Add model specific output fields
-    using BulkIOFields = typename GET_PROP_TYPE(BulkTracerTypeTag, IOFields);
-    using LowDimIOFields = typename GET_PROP_TYPE(LowDimTracerTypeTag, IOFields);
+    using BulkIOFields = GetPropType<BulkTracerTypeTag, Properties::IOFields>;
+    using LowDimIOFields = GetPropType<LowDimTracerTypeTag, Properties::IOFields>;
     BulkIOFields::initOutputModule(bulkVtkWriter);
     LowDimIOFields::initOutputModule(lowDimVtkWriter);
 
diff --git a/test/multidomain/facet/tracer_tracer/problem_1p_bulk.hh b/test/multidomain/facet/tracer_tracer/problem_1p_bulk.hh
index 92fcafea6c12f022d1f45acb31a61c1796f41d07..6246cb9b11ab8fe4ecaf35f7463ff50b2707c420 100644
--- a/test/multidomain/facet/tracer_tracer/problem_1p_bulk.hh
+++ b/test/multidomain/facet/tracer_tracer/problem_1p_bulk.hh
@@ -45,23 +45,33 @@ template<class TypeTag> class OnePBulkProblem;
 
 namespace Properties {
 // create the type tag nodes
-NEW_TYPE_TAG(OnePBulk, INHERITS_FROM(OneP));
-NEW_TYPE_TAG(OnePBulkTpfa, INHERITS_FROM(OnePBulk, CCTpfaFacetCouplingModel));
-NEW_TYPE_TAG(OnePBulkBox, INHERITS_FROM(OnePBulk, BoxFacetCouplingModel));
+// Create new type tags
+namespace TTag {
+struct OnePBulk { using InheritsFrom = std::tuple<OneP>; };
+struct OnePBulkTpfa { using InheritsFrom = std::tuple<CCTpfaFacetCouplingModel, OnePBulk>; };
+struct OnePBulkBox { using InheritsFrom = std::tuple<BoxFacetCouplingModel, OnePBulk>; };
+} // end namespace TTag
 
 // Set the grid type
-SET_TYPE_PROP(OnePBulk, Grid, Dune::ALUGrid<2, 2, Dune::simplex, Dune::conforming>);
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePBulk> { using type = Dune::ALUGrid<2, 2, Dune::simplex, Dune::conforming>; };
 // Set the problem type
-SET_TYPE_PROP(OnePBulk, Problem, OnePBulkProblem<TypeTag>);
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePBulk> { using type = OnePBulkProblem<TypeTag>; };
 // set the spatial params
-SET_TYPE_PROP(OnePBulk, SpatialParams, OnePSpatialParams< typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
-                                                          typename GET_PROP_TYPE(TypeTag, Scalar) >);
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePBulk>
+{
+    using type = OnePSpatialParams< GetPropType<TypeTag, Properties::FVGridGeometry>,
+                                    GetPropType<TypeTag, Properties::Scalar> >;
+};
 
 // the fluid system
-SET_PROP(OnePBulk, FluidSystem)
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePBulk>
 {
 private:
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
 public:
     using type = FluidSystems::OnePLiquid< Scalar, Components::SimpleH2O<Scalar> >;
 };
@@ -79,7 +89,7 @@ class OnePBulkProblem : public PorousMediumFlowProblem<TypeTag>
 {
     using ParentType = PorousMediumFlowProblem<TypeTag>;
 
-    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    using GridVariables = GetPropType<TypeTag, Properties::GridVariables>;
     using PrimaryVariables = typename GridVariables::PrimaryVariables;
     using Scalar = typename GridVariables::Scalar;
 
@@ -91,10 +101,10 @@ class OnePBulkProblem : public PorousMediumFlowProblem<TypeTag>
     using Element = typename GridView::template Codim<0>::Entity;
     using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
 
-    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
-    using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager);
-    using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
-    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using BoundaryTypes = GetPropType<TypeTag, Properties::BoundaryTypes>;
+    using CouplingManager = GetPropType<TypeTag, Properties::CouplingManager>;
+    using NumEqVector = GetPropType<TypeTag, Properties::NumEqVector>;
+    using Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices;
 
 public:
     OnePBulkProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry,
diff --git a/test/multidomain/facet/tracer_tracer/problem_1p_lowdim.hh b/test/multidomain/facet/tracer_tracer/problem_1p_lowdim.hh
index 57cdc3734cc4e18fefa6d2f7fa518503e8f44e43..80f5cbfe2a89e9f236dfa185c2d35251195047fd 100644
--- a/test/multidomain/facet/tracer_tracer/problem_1p_lowdim.hh
+++ b/test/multidomain/facet/tracer_tracer/problem_1p_lowdim.hh
@@ -45,23 +45,33 @@ template<class TypeTag> class OnePLowDimProblem;
 
 namespace Properties {
 // create the type tag nodes
-NEW_TYPE_TAG(OnePLowDim, INHERITS_FROM(OneP));
-NEW_TYPE_TAG(OnePLowDimTpfa, INHERITS_FROM(CCTpfaModel, OnePLowDim));
-NEW_TYPE_TAG(OnePLowDimBox, INHERITS_FROM(BoxModel, OnePLowDim));
+// Create new type tags
+namespace TTag {
+struct OnePLowDim { using InheritsFrom = std::tuple<OneP>; };
+struct OnePLowDimTpfa { using InheritsFrom = std::tuple<OnePLowDim, CCTpfaModel>; };
+struct OnePLowDimBox { using InheritsFrom = std::tuple<OnePLowDim, BoxModel>; };
+} // end namespace TTag
 
 // Set the grid type
-SET_TYPE_PROP(OnePLowDim, Grid, Dune::FoamGrid<1, 2>);
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePLowDim> { using type = Dune::FoamGrid<1, 2>; };
 // Set the problem type
-SET_TYPE_PROP(OnePLowDim, Problem, OnePLowDimProblem<TypeTag>);
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePLowDim> { using type = OnePLowDimProblem<TypeTag>; };
 // set the spatial params
-SET_TYPE_PROP(OnePLowDim, SpatialParams, OnePSpatialParams< typename GET_PROP_TYPE(TypeTag, FVGridGeometry),
-                                                            typename GET_PROP_TYPE(TypeTag, Scalar) >);
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePLowDim>
+{
+    using type = OnePSpatialParams< GetPropType<TypeTag, Properties::FVGridGeometry>,
+                                    GetPropType<TypeTag, Properties::Scalar> >;
+};
 
 // the fluid system
-SET_PROP(OnePLowDim, FluidSystem)
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePLowDim>
 {
 private:
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
 public:
     using type = FluidSystems::OnePLiquid< Scalar, Components::SimpleH2O<Scalar> >;
 };
@@ -77,7 +87,7 @@ class OnePLowDimProblem : public PorousMediumFlowProblem<TypeTag>
 {
     using ParentType = PorousMediumFlowProblem<TypeTag>;
 
-    using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables);
+    using GridVariables = GetPropType<TypeTag, Properties::GridVariables>;
     using ElementVolumeVariables = typename GridVariables::GridVolumeVariables::LocalView;
     using PrimaryVariables = typename GridVariables::PrimaryVariables;
     using Scalar = typename GridVariables::Scalar;
@@ -89,10 +99,10 @@ class OnePLowDimProblem : public PorousMediumFlowProblem<TypeTag>
     using Element = typename GridView::template Codim<0>::Entity;
     using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
 
-    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
-    using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager);
-    using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
-    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
+    using BoundaryTypes = GetPropType<TypeTag, Properties::BoundaryTypes>;
+    using CouplingManager = GetPropType<TypeTag, Properties::CouplingManager>;
+    using NumEqVector = GetPropType<TypeTag, Properties::NumEqVector>;
+    using Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices;
 
 public:
     OnePLowDimProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry,
diff --git a/test/multidomain/facet/tracer_tracer/problem_tracer_bulk.hh b/test/multidomain/facet/tracer_tracer/problem_tracer_bulk.hh
index 6718828ece1698b366f7230bda20acb97b4ee1cd..06c1ab2b44891a7d0ac592e0edb41bbffeaff894 100644
--- a/test/multidomain/facet/tracer_tracer/problem_tracer_bulk.hh
+++ b/test/multidomain/facet/tracer_tracer/problem_tracer_bulk.hh
@@ -44,44 +44,55 @@ template <class TypeTag>
 class TracerBulkProblem;
 
 namespace Properties {
-NEW_TYPE_TAG(TracerTestBulk, INHERITS_FROM(Tracer));
+// Create new type tags
+namespace TTag {
+struct TracerTestBulk { using InheritsFrom = std::tuple<Tracer>; };
 
 // define the type tags
-NEW_TYPE_TAG(TracerBulkTpfa, INHERITS_FROM(TracerTestBulk, CCTpfaFacetCouplingModel));
-NEW_TYPE_TAG(TracerBulkBox, INHERITS_FROM(TracerTestBulk, BoxFacetCouplingModel));
+struct TracerBulkTpfa { using InheritsFrom = std::tuple<CCTpfaFacetCouplingModel, TracerTestBulk>; };
+struct TracerBulkBox { using InheritsFrom = std::tuple<BoxFacetCouplingModel, TracerTestBulk>; };
+} // end namespace TTag
 
 // Set the grid type
-SET_TYPE_PROP(TracerTestBulk, Grid, Dune::ALUGrid<2, 2, Dune::simplex, Dune::conforming>);
+template<class TypeTag>
+struct Grid<TypeTag, TTag::TracerTestBulk> { using type = Dune::ALUGrid<2, 2, Dune::simplex, Dune::conforming>; };
 
 //! Overwrite the advection type property
-SET_TYPE_PROP(TracerBulkTpfa, AdvectionType, StationaryVelocityField<typename GET_PROP_TYPE(TypeTag, Scalar)>);
-SET_TYPE_PROP(TracerBulkBox, AdvectionType, StationaryVelocityField<typename GET_PROP_TYPE(TypeTag, Scalar)>);
+template<class TypeTag>
+struct AdvectionType<TypeTag, TTag::TracerBulkTpfa> { using type = StationaryVelocityField<GetPropType<TypeTag, Properties::Scalar>>; };
+template<class TypeTag>
+struct AdvectionType<TypeTag, TTag::TracerBulkBox> { using type = StationaryVelocityField<GetPropType<TypeTag, Properties::Scalar>>; };
 
 // Set the problem property
-SET_TYPE_PROP(TracerTestBulk, Problem, TracerBulkProblem<TypeTag>);
+template<class TypeTag>
+struct Problem<TypeTag, TTag::TracerTestBulk> { using type = TracerBulkProblem<TypeTag>; };
 
 // Set the spatial parameters
-SET_PROP(TracerTestBulk, SpatialParams)
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::TracerTestBulk>
 {
-    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using type = TracerSpatialParams<FVGridGeometry, Scalar>;
 };
 
 // Define whether mole(true) or mass (false) fractions are used
-SET_BOOL_PROP(TracerTestBulk, UseMoles, false);
+template<class TypeTag>
+struct UseMoles<TypeTag, TTag::TracerTestBulk> { static constexpr bool value = false; };
 
 //! set the model traits (with disabled diffusion)
-SET_PROP(TracerTestBulk, ModelTraits)
+template<class TypeTag>
+struct ModelTraits<TypeTag, TTag::TracerTestBulk>
 {
 private:
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
 public:
-    using type = TracerTestModelTraits<FluidSystem::numComponents, GET_PROP_VALUE(TypeTag, UseMoles)>;
+    using type = TracerTestModelTraits<FluidSystem::numComponents, getPropValue<TypeTag, Properties::UseMoles>()>;
 };
 
 // use the test-specific fluid system
-SET_TYPE_PROP(TracerTestBulk, FluidSystem, TracerFluidSystem<TypeTag>);
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::TracerTestBulk> { using type = TracerFluidSystem<TypeTag>; };
 } // end namespace Properties
 
 
@@ -95,19 +106,19 @@ class TracerBulkProblem : public PorousMediumFlowProblem<TypeTag>
 {
     using ParentType = PorousMediumFlowProblem<TypeTag>;
 
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices;
+    using GridView = GetPropType<TypeTag, Properties::GridView>;
+    using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
     using FVElementGeometry = typename FVGridGeometry::LocalView;
-    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager);
+    using BoundaryTypes = GetPropType<TypeTag, Properties::BoundaryTypes>;
+    using PrimaryVariables = GetPropType<TypeTag, Properties::PrimaryVariables>;
+    using NumEqVector = GetPropType<TypeTag, Properties::NumEqVector>;
+    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
+    using CouplingManager = GetPropType<TypeTag, Properties::CouplingManager>;
 
     //! property that defines whether mole or mass fractions are used
-    static constexpr bool useMoles = GET_PROP_VALUE(TypeTag, UseMoles);
+    static constexpr bool useMoles = getPropValue<TypeTag, Properties::UseMoles>();
 
     using Element = typename FVGridGeometry::GridView::template Codim<0>::Entity;
     using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
diff --git a/test/multidomain/facet/tracer_tracer/problem_tracer_lowdim.hh b/test/multidomain/facet/tracer_tracer/problem_tracer_lowdim.hh
index a96185c465b69469b126601a75841e954eea1b5a..232cb32b77238bedd346609fa1455603405bdbcd 100644
--- a/test/multidomain/facet/tracer_tracer/problem_tracer_lowdim.hh
+++ b/test/multidomain/facet/tracer_tracer/problem_tracer_lowdim.hh
@@ -44,40 +44,49 @@ template <class TypeTag>
 class TracerLowDimProblem;
 
 namespace Properties {
-NEW_TYPE_TAG(TracerTestLowDim, INHERITS_FROM(Tracer));
+// Create new type tags
+namespace TTag {
+struct TracerTestLowDim { using InheritsFrom = std::tuple<Tracer>; };
 
 // define the type tags for both bulk and lowdim type tag here
-NEW_TYPE_TAG(TracerLowDimTpfa, INHERITS_FROM(CCTpfaModel, TracerTestLowDim));
-NEW_TYPE_TAG(TracerLowDimBox, INHERITS_FROM(BoxModel, TracerTestLowDim));
+struct TracerLowDimTpfa { using InheritsFrom = std::tuple<TracerTestLowDim, CCTpfaModel>; };
+struct TracerLowDimBox { using InheritsFrom = std::tuple<TracerTestLowDim, BoxModel>; };
+} // end namespace TTag
 
 // Set the grid type
-SET_TYPE_PROP(TracerTestLowDim, Grid, Dune::FoamGrid<1, 2>);
+template<class TypeTag>
+struct Grid<TypeTag, TTag::TracerTestLowDim> { using type = Dune::FoamGrid<1, 2>; };
 
 // Set the problem property
-SET_TYPE_PROP(TracerTestLowDim, Problem, TracerLowDimProblem<TypeTag>);
+template<class TypeTag>
+struct Problem<TypeTag, TTag::TracerTestLowDim> { using type = TracerLowDimProblem<TypeTag>; };
 
 // Set the spatial parameters
-SET_PROP(TracerTestLowDim, SpatialParams)
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::TracerTestLowDim>
 {
-    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
+    using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
     using type = TracerSpatialParams<FVGridGeometry, Scalar>;
 };
 
 // Define whether mole(true) or mass (false) fractions are used
-SET_BOOL_PROP(TracerTestLowDim, UseMoles, false);
+template<class TypeTag>
+struct UseMoles<TypeTag, TTag::TracerTestLowDim> { static constexpr bool value = false; };
 
 //! set the model traits (with disabled diffusion)
-SET_PROP(TracerTestLowDim, ModelTraits)
+template<class TypeTag>
+struct ModelTraits<TypeTag, TTag::TracerTestLowDim>
 {
 private:
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
+    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
 public:
-    using type = TracerTestModelTraits<FluidSystem::numComponents, GET_PROP_VALUE(TypeTag, UseMoles)>;
+    using type = TracerTestModelTraits<FluidSystem::numComponents, getPropValue<TypeTag, Properties::UseMoles>()>;
 };
 
 // use the test-specific fluid system
-SET_TYPE_PROP(TracerTestLowDim, FluidSystem, TracerFluidSystem<TypeTag>);
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::TracerTestLowDim> { using type = TracerFluidSystem<TypeTag>; };
 } // end namespace Properties
 
 
@@ -92,19 +101,19 @@ class TracerLowDimProblem : public PorousMediumFlowProblem<TypeTag>
 {
     using ParentType = PorousMediumFlowProblem<TypeTag>;
 
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices;
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
-    using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices;
+    using GridView = GetPropType<TypeTag, Properties::GridView>;
+    using FVGridGeometry = GetPropType<TypeTag, Properties::FVGridGeometry>;
     using FVElementGeometry = typename FVGridGeometry::LocalView;
-    using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes);
-    using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables);
-    using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector);
-    using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem);
-    using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager);
+    using BoundaryTypes = GetPropType<TypeTag, Properties::BoundaryTypes>;
+    using PrimaryVariables = GetPropType<TypeTag, Properties::PrimaryVariables>;
+    using NumEqVector = GetPropType<TypeTag, Properties::NumEqVector>;
+    using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
+    using CouplingManager = GetPropType<TypeTag, Properties::CouplingManager>;
 
     //! property that defines whether mole or mass fractions are used
-    static constexpr bool useMoles = GET_PROP_VALUE(TypeTag, UseMoles);
+    static constexpr bool useMoles = getPropValue<TypeTag, Properties::UseMoles>();
 
     using Element = typename FVGridGeometry::GridView::template Codim<0>::Entity;
     using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
diff --git a/test/multidomain/facet/tracer_tracer/tracerfluidsystem.hh b/test/multidomain/facet/tracer_tracer/tracerfluidsystem.hh
index a363bf81b02ac972d5f9fd33267dbbad2eb7b324..1b3376a1067471668f2809a568357e1491a362d0 100644
--- a/test/multidomain/facet/tracer_tracer/tracerfluidsystem.hh
+++ b/test/multidomain/facet/tracer_tracer/tracerfluidsystem.hh
@@ -29,14 +29,14 @@ namespace Dumux {
 
 //! A simple fluid system with one tracer component
 template<class TypeTag>
-class TracerFluidSystem : public FluidSystems::Base<typename GET_PROP_TYPE(TypeTag, Scalar),
+class TracerFluidSystem : public FluidSystems::Base<GetPropType<TypeTag, Properties::Scalar>,
                                                                TracerFluidSystem<TypeTag>>
 {
-    using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar);
-    using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
-    using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using Problem = GetPropType<TypeTag, Properties::Problem>;
+    using GridView = GetPropType<TypeTag, Properties::GridView>;
     using Element = typename GridView::template Codim<0>::Entity;
-    using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView;
+    using FVElementGeometry = typename GetPropType<TypeTag, Properties::FVGridGeometry>::LocalView;
     using SubControlVolume = typename FVElementGeometry::SubControlVolume;
 
 public: