diff --git a/exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh b/exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh
index 4baab97dedc7bbbb4f7b918326837552be33a471..88e21585790a0fdc0bbc33419e5efcea52d0faf8 100644
--- a/exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh
+++ b/exercises/exercise-coupling-ff-pm/turbulence/freeflowsubproblem.hh
@@ -23,63 +23,11 @@
 #ifndef DUMUX_FREEFLOW1P2C_SUBPROBLEM_HH
 #define DUMUX_FREEFLOW1P2C_SUBPROBLEM_HH
 
-#include <dune/grid/yaspgrid.hh>
-
-#include <dumux/material/fluidsystems/1padapter.hh>
-#include <dumux/material/fluidsystems/h2oair.hh>
-#include <dumux/discretization/staggered/freeflow/properties.hh>
-
-// TODO: dumux-course-task 3.A
-// Include headers for compositional zero equation turbulence model here.
-#include <dumux/freeflow/compositional/navierstokesncmodel.hh>
 #include <dumux/freeflow/navierstokes/problem.hh>
+#include <dumux/common/properties.hh>
 
 namespace Dumux {
 
-template <class TypeTag>
-class FreeFlowSubProblem;
-
-namespace Properties {
-
-// Create new type tags
-namespace TTag {
-  // TODO: dumux-course-task 3.A
-  // Change the entry in the `StokesZeroEq` definition accordingly.
-struct StokesZeroEq { using InheritsFrom = std::tuple<NavierStokesNCNI, StaggeredFreeFlowModel>; };
-} // end namespace TTag
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::StokesZeroEq> { using type = Dune::YaspGrid<2, Dune::TensorProductCoordinates<GetPropType<TypeTag, Properties::Scalar>, 2> >; };
-
-// The fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::StokesZeroEq>
-{
-  using H2OAir = FluidSystems::H2OAir<GetPropType<TypeTag, Properties::Scalar>>;
-  static constexpr auto phaseIdx = H2OAir::gasPhaseIdx; // simulate the air phase
-  using type = FluidSystems::OnePAdapter<H2OAir, phaseIdx>;
-};
-
-template<class TypeTag>
-struct ReplaceCompEqIdx<TypeTag, TTag::StokesZeroEq> { static constexpr int value = 3; };
-
-// Use formulation based on mass fractions
-template<class TypeTag>
-struct UseMoles<TypeTag, TTag::StokesZeroEq> { static constexpr bool value = true; };
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::StokesZeroEq> { using type = Dumux::FreeFlowSubProblem<TypeTag> ; };
-
-template<class TypeTag>
-struct EnableGridGeometryCache<TypeTag, TTag::StokesZeroEq> { static constexpr bool value = true; };
-template<class TypeTag>
-struct EnableGridFluxVariablesCache<TypeTag, TTag::StokesZeroEq> { static constexpr bool value = true; };
-template<class TypeTag>
-struct EnableGridVolumeVariablesCache<TypeTag, TTag::StokesZeroEq> { static constexpr bool value = true; };
-}
-
 /*!
  * \brief The free-flow sub problem
  */
@@ -398,6 +346,7 @@ private:
 
     DiffusionCoefficientAveragingType diffCoeffAvgType_;
 };
-} //end namespace
+
+} //end namespace Dumux
 
 #endif // DUMUX_STOKES1P2C_SUBPROBLEM_HH
diff --git a/exercises/exercise-coupling-ff-pm/turbulence/main.cc b/exercises/exercise-coupling-ff-pm/turbulence/main.cc
index a0750fad95b9c509d191c895502f2f2b9d62c779..72c7ebf0db1d6206aad74c56ac5140ae94693157 100644
--- a/exercises/exercise-coupling-ff-pm/turbulence/main.cc
+++ b/exercises/exercise-coupling-ff-pm/turbulence/main.cc
@@ -49,28 +49,7 @@
 
 #include <dumux/multidomain/boundary/stokesdarcy/couplingmanager.hh>
 
-#include "porousmediumsubproblem.hh"
-#include "freeflowsubproblem.hh"
-
-namespace Dumux {
-namespace Properties {
-
-template<class TypeTag>
-struct CouplingManager<TypeTag, TTag::StokesZeroEq>
-{
-    using Traits = StaggeredMultiDomainTraits<TypeTag, TypeTag, Properties::TTag::DarcyTwoPTwoCNI>;
-    using type = Dumux::StokesDarcyCouplingManager<Traits>;
-};
-
-template<class TypeTag>
-struct CouplingManager<TypeTag, TTag::DarcyTwoPTwoCNI>
-{
-    using Traits = StaggeredMultiDomainTraits<Properties::TTag::StokesZeroEq, Properties::TTag::StokesZeroEq, TypeTag>;
-    using type = Dumux::StokesDarcyCouplingManager<Traits>;
-};
-
-} // end namespace Properties
-} // end namespace Dumux
+#include "properties.hh"
 
 int main(int argc, char** argv) try
 {
diff --git a/exercises/exercise-coupling-ff-pm/turbulence/porousmediumsubproblem.hh b/exercises/exercise-coupling-ff-pm/turbulence/porousmediumsubproblem.hh
index 57ff552c5661fd5ac47fbaf8b6af5efd0c70d937..376c31713ced2c3a6849b062010ac3fe5718ae22 100644
--- a/exercises/exercise-coupling-ff-pm/turbulence/porousmediumsubproblem.hh
+++ b/exercises/exercise-coupling-ff-pm/turbulence/porousmediumsubproblem.hh
@@ -24,59 +24,10 @@
 #ifndef DUMUX_DARCY2P2C_SUBPROBLEM_HH
 #define DUMUX_DARCY2P2C_SUBPROBLEM_HH
 
-#include <dune/grid/yaspgrid.hh>
-
-#include <dumux/discretization/cctpfa.hh>
-
-#include <dumux/porousmediumflow/2p2c/model.hh>
 #include <dumux/porousmediumflow/problem.hh>
+#include <dumux/common/properties.hh>
 
-#include <dumux/material/fluidsystems/h2oair.hh>
-
-#include "../2pspatialparams.hh"
-
-namespace Dumux
-{
-template <class TypeTag>
-class PorousMediumSubProblem;
-
-namespace Properties
-{
-// Create new type tags
-namespace TTag {
-struct DarcyTwoPTwoCNI { using InheritsFrom = std::tuple<TwoPTwoCNI, CCTpfaModel>; };
-} // end namespace TTag
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::DarcyTwoPTwoCNI> { using type = Dumux::PorousMediumSubProblem<TypeTag>; };
-
-// the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::DarcyTwoPTwoCNI> { using type = FluidSystems::H2OAir<GetPropType<TypeTag, Properties::Scalar>>; };
-
-//! Set the default formulation to pw-Sn: This can be over written in the problem.
-template<class TypeTag>
-struct Formulation<TypeTag, TTag::DarcyTwoPTwoCNI>
-{ static constexpr auto value = TwoPFormulation::p1s0; };
-
-// The gas component balance (air) is replaced by the total mass balance
-template<class TypeTag>
-struct ReplaceCompEqIdx<TypeTag, TTag::DarcyTwoPTwoCNI> { static constexpr int value = 3; };
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::DarcyTwoPTwoCNI> { using type = Dune::YaspGrid<2, Dune::TensorProductCoordinates<GetPropType<TypeTag, Properties::Scalar>, 2> >; };
-
-template<class TypeTag>
-struct UseMoles<TypeTag, TTag::DarcyTwoPTwoCNI> { static constexpr bool value = true; };
-
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::DarcyTwoPTwoCNI> {
-    using type = TwoPSpatialParams<GetPropType<TypeTag, GridGeometry>, GetPropType<TypeTag, Scalar>>;
-};
-
-} // end namespace Properties
+namespace Dumux {
 
 /*!
  * \brief The porous medium sub problem
@@ -335,6 +286,7 @@ private:
     std::shared_ptr<CouplingManager> couplingManager_;
     DiffusionCoefficientAveragingType diffCoeffAvgType_;
 };
-} //end namespace
+
+} //end namespace dUMUX
 
 #endif //DUMUX_DARCY2P2C_SUBPROBLEM_HH
diff --git a/exercises/exercise-coupling-ff-pm/turbulence/properties.hh b/exercises/exercise-coupling-ff-pm/turbulence/properties.hh
new file mode 100644
index 0000000000000000000000000000000000000000..d1ea847b09bce58cc613fa8bd9f3ec1f542c7ffa
--- /dev/null
+++ b/exercises/exercise-coupling-ff-pm/turbulence/properties.hh
@@ -0,0 +1,126 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 2 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+
+ * \brief The coupled exercise properties file or the turbulent case.
+ */
+#ifndef DUMUX_EXERCISE_COUPLED_TURBULENCE_PROPERTIES_HH
+#define DUMUX_EXERCISE_COUPLED_TURBULENCE_PROPERTIES_HH
+
+// Both domain
+#include <dune/grid/yaspgrid.hh>
+
+#include <dumux/material/fluidsystems/h2oair.hh>
+#include <dumux/material/fluidsystems/1padapter.hh>
+
+// Porous medium flow domain
+#include <dumux/porousmediumflow/2p2c/model.hh>
+#include <dumux/discretization/cctpfa.hh>
+
+#include"porousmediumsubproblem.hh"
+#include "../2pspatialparams.hh"
+
+// Free-flow domain
+#include <dumux/discretization/staggered/freeflow/properties.hh>
+// TODO: dumux-course-task 3.A
+// Include headers for compositional zero equation turbulence model here.
+#include <dumux/freeflow/compositional/navierstokesncmodel.hh>
+
+#include"freeflowsubproblem.hh"
+
+namespace Dumux::Properties {
+
+// Create new type tags
+namespace TTag {
+struct DarcyTwoPTwoCNI { using InheritsFrom = std::tuple<TwoPTwoCNI, CCTpfaModel>; };
+// TODO: dumux-course-task 3.A
+// Change the entry in the `StokesZeroEq` definition accordingly.
+struct StokesZeroEq { using InheritsFrom = std::tuple<NavierStokesNCNI, StaggeredFreeFlowModel>; };
+} // end namespace TTag
+
+// Set the coupling manager
+template<class TypeTag>
+struct CouplingManager<TypeTag, TTag::StokesZeroEq>
+{
+    using Traits = StaggeredMultiDomainTraits<TypeTag, TypeTag, Properties::TTag::DarcyTwoPTwoCNI>;
+    using type = Dumux::StokesDarcyCouplingManager<Traits>;
+};
+template<class TypeTag>
+struct CouplingManager<TypeTag, TTag::DarcyTwoPTwoCNI>
+{
+    using Traits = StaggeredMultiDomainTraits<Properties::TTag::StokesZeroEq, Properties::TTag::StokesZeroEq, TypeTag>;
+    using type = Dumux::StokesDarcyCouplingManager<Traits>;
+};
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::DarcyTwoPTwoCNI> { using type = Dumux::PorousMediumSubProblem<TypeTag>; };
+template<class TypeTag>
+struct Problem<TypeTag, TTag::StokesZeroEq> { using type = Dumux::FreeFlowSubProblem<TypeTag> ; };
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::DarcyTwoPTwoCNI> { using type = Dune::YaspGrid<2, Dune::TensorProductCoordinates<GetPropType<TypeTag, Properties::Scalar>, 2> >; };
+template<class TypeTag>
+struct Grid<TypeTag, TTag::StokesZeroEq> { using type = Dune::YaspGrid<2, Dune::TensorProductCoordinates<GetPropType<TypeTag, Properties::Scalar>, 2> >; };
+
+// the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::DarcyTwoPTwoCNI> { using type = FluidSystems::H2OAir<GetPropType<TypeTag, Properties::Scalar>>; };
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::StokesZeroEq>
+{
+  using H2OAir = FluidSystems::H2OAir<GetPropType<TypeTag, Properties::Scalar>>;
+  static constexpr auto phaseIdx = H2OAir::gasPhaseIdx; // simulate the air phase
+  using type = FluidSystems::OnePAdapter<H2OAir, phaseIdx>;
+};
+
+// Use formulation based on mole fractions
+template<class TypeTag>
+struct UseMoles<TypeTag, TTag::DarcyTwoPTwoCNI> { static constexpr bool value = true; };
+template<class TypeTag>
+struct UseMoles<TypeTag, TTag::StokesZeroEq> { static constexpr bool value = true; };
+
+// The gas component balance (air) is replaced by the total mass balance
+template<class TypeTag>
+struct ReplaceCompEqIdx<TypeTag, TTag::DarcyTwoPTwoCNI> { static constexpr int value = 3; };
+template<class TypeTag>
+struct ReplaceCompEqIdx<TypeTag, TTag::StokesZeroEq> { static constexpr int value = 3; };
+
+
+//! Set the default formulation to pw-Sn: This can be over written in the problem.
+template<class TypeTag>
+struct Formulation<TypeTag, TTag::DarcyTwoPTwoCNI>
+{ static constexpr auto value = TwoPFormulation::p1s0; };
+
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::DarcyTwoPTwoCNI>
+{ using type = TwoPSpatialParams<GetPropType<TypeTag, GridGeometry>, GetPropType<TypeTag, Scalar>>; };
+
+template<class TypeTag>
+struct EnableGridGeometryCache<TypeTag, TTag::StokesZeroEq> { static constexpr bool value = true; };
+template<class TypeTag>
+struct EnableGridFluxVariablesCache<TypeTag, TTag::StokesZeroEq> { static constexpr bool value = true; };
+template<class TypeTag>
+struct EnableGridVolumeVariablesCache<TypeTag, TTag::StokesZeroEq> { static constexpr bool value = true; };
+
+} // end namespace Dumux::Properties
+
+#endif // DUMUX_EXERCISE_COUPLED_TURBULENCE_PROPERTIES_HH