diff --git a/dumux/implicit/cellcentered/tpfa/propertydefaults.hh b/dumux/implicit/cellcentered/tpfa/propertydefaults.hh
index 6e7276f13d8be067e7d4cfdbcc3c239f9e79d8e0..58d02f23b3e763c27786e361474a1db0c7685d04 100644
--- a/dumux/implicit/cellcentered/tpfa/propertydefaults.hh
+++ b/dumux/implicit/cellcentered/tpfa/propertydefaults.hh
@@ -34,7 +34,7 @@
 #include <dumux/implicit/cellcentered/stencils.hh>
 #include <dumux/implicit/cellcentered/localresidual.hh>
 #include <dumux/implicit/cellcentered/properties.hh>
-#include <dumux/porousmediumflow/implicit/cellcentered/tpfa/darcyfluxvariables.hh>
+#include <dumux/porousmediumflow/implicit/cellcentered/tpfa/darcyslaw.hh>
 
 namespace Dumux {
 
@@ -83,14 +83,14 @@ public:
 };
 
 //! The darcy flux variables
-SET_TYPE_PROP(CCTpfaModel, DarcyFluxVariables, Dumux::CCTpfaImplicitDarcyFluxVariables<TypeTag>);
+SET_TYPE_PROP(CCTpfaModel, AdvectionType, Dumux::CCTpfaDarcysLaw<TypeTag>);
 
 // TODO: Actually implement the diffusion and energy flux variables
 //! The diffusion flux variables
-//SET_TYPE_PROP(CCTpfaModel, DiffusionFluxVariables, TODO);
+//SET_TYPE_PROP(CCTpfaModel, MolecularDiffusionType, CCTpfaFicksLaw);
 
 //! The energy flux variables
-//SET_TYPE_PROP(CCTpfaModel, EnergyFluxVariables, TODO);
+//SET_TYPE_PROP(CCTpfaModel, HeatConductionType, CCTpfaFouriersLaw);
 
 } // namespace Properties
 
diff --git a/dumux/implicit/fluxvariables.hh b/dumux/implicit/fluxvariables.hh
index dd358c3b8bc6f8ee08f4356d6b4607541bd1f9d5..f7a136ef1cfaad2bf160a7f2ad2868ccac1b61d2 100644
--- a/dumux/implicit/fluxvariables.hh
+++ b/dumux/implicit/fluxvariables.hh
@@ -37,13 +37,13 @@ NEW_PROP_TAG(NumComponents);
 /*!
  * \ingroup ImplicitModel
  * \brief Base class for the flux variables
- *        specializations are provided for combinations of diffusion processes
+ *        specializations are provided for combinations of diffusion_ processes
  */
-template<class TypeTag, bool darcy, bool diffusion, bool energy>
+template<class TypeTag, bool enableAdvection, bool enableMolecularDiffusion, bool enableEnergyBalance>
 class FluxVariables {};
 
 
-// specialization for pure darcy flow
+// specialization for pure advective flow (e.g. one-phase darcy equation)
 template<class TypeTag>
 class FluxVariables<TypeTag, true, false, false>
 {
@@ -51,38 +51,38 @@ class FluxVariables<TypeTag, true, false, false>
     using GridView = typename GET_PROP_TYPE(TypeTag, GridView);
     using IndexType = typename GridView::IndexSet::IndexType;
     using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
-    using DarcyFluxVariables = typename GET_PROP_TYPE(TypeTag, DarcyFluxVariables);
     using Stencil = std::set<IndexType>;
+    using AdvectionType = typename GET_PROP_TYPE(TypeTag, AdvectionType);
 
 public:
     void update(const Problem& problem, const SubControlVolumeFace &scv)
     {
-        darcyFluxVars_.update(problem, scv);
+        advection_.update(problem, scv);
     }
 
-    const DarcyFluxVariables& darcyFluxVars() const
+    const AdvectionType& advection() const
     {
-        return darcyFluxVars_;
+        return advection_;
     }
 
     Stencil stencil() const
     {
-        return darcyFluxVars().stencil();
+        return advection().stencil();
     }
 
 private:
-    DarcyFluxVariables darcyFluxVars_;
+    AdvectionType advection_;
 };
 
 
-// specialization for darcy flow with diffusion
+// specialization for isothermal advection diffusion_ equations
 template<class TypeTag>
 class FluxVariables<TypeTag, true, true, false>
 {
     using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
-    using DarcyFluxVariables = typename GET_PROP_TYPE(TypeTag, DarcyFluxVariables);
-    using DiffusionFluxVariables = typename GET_PROP_TYPE(TypeTag, DiffusionFluxVariables);
+    using AdvectionType = typename GET_PROP_TYPE(TypeTag, AdvectionType);
+    using MolecularDiffusionType = typename GET_PROP_TYPE(TypeTag, MolecularDiffusionType);
 
     enum
     {
@@ -93,45 +93,45 @@ class FluxVariables<TypeTag, true, true, false>
 public:
     void update(const Problem& problem, const SubControlVolumeFace &scv)
     {
-        darcyFluxVars_.update(problem, scv);
+        advection_.update(problem, scv);
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
             for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-                diffusionFluxVariables_.update(problem, scv, phaseIdx, compIdx);
+                diffusion_.update(problem, scv, phaseIdx, compIdx);
     }
 
-    const DarcyFluxVariables& darcyFluxVars() const
+    const AdvectionType& advection() const
     {
-        return darcyFluxVars_;
+        return advection_;
     }
 
-    DarcyFluxVariables& darcyFluxVars()
+    AdvectionType& advection()
     {
-        return darcyFluxVars_;
+        return advection_;
     }
 
-    const DiffusionFluxVariables& diffusionFluxVars(const int phaseIdx, const int compIdx) const
+    const MolecularDiffusionType& diffusion(const int phaseIdx, const int compIdx) const
     {
-        return diffusionFluxVariables_[phaseIdx][compIdx];
+        return diffusion_[phaseIdx][compIdx];
     }
 
-    DiffusionFluxVariables& diffusionFluxVars(const int phaseIdx, const int compIdx)
+    MolecularDiffusionType& diffusion(const int phaseIdx, const int compIdx)
     {
-        return diffusionFluxVariables_[phaseIdx][compIdx];
+        return diffusion_[phaseIdx][compIdx];
     }
 
 private:
-    DarcyFluxVariables darcyFluxVars_;
-    std::array< std::array<DiffusionFluxVariables, numComponents>, numPhases> diffusionFluxVariables_;
+    AdvectionType advection_;
+    std::array< std::array<MolecularDiffusionType, numComponents>, numPhases> diffusion_;
 };
 
 
-// specialization for pure diffusion
+// specialization for pure diffusion_
 template<class TypeTag>
 class FluxVariables<TypeTag, false, true, false>
 {
     using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
-    using DiffusionFluxVariables = typename GET_PROP_TYPE(TypeTag, DiffusionFluxVariables);
+    using MolecularDiffusionType = typename GET_PROP_TYPE(TypeTag, MolecularDiffusionType);
 
     enum
     {
@@ -144,75 +144,75 @@ public:
     {
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
             for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-                diffusionFluxVariables_.update(problem, scv, phaseIdx, compIdx);
+                diffusion_.update(problem, scv, phaseIdx, compIdx);
     }
 
-    const DiffusionFluxVariables& diffusionFluxVars(const int phaseIdx, const int compIdx) const
+    const MolecularDiffusionType& diffusion(const int phaseIdx, const int compIdx) const
     {
-        return diffusionFluxVariables_[phaseIdx][compIdx];
+        return diffusion_[phaseIdx][compIdx];
     }
 
-    DiffusionFluxVariables& diffusionFluxVars(const int phaseIdx, const int compIdx)
+    MolecularDiffusionType& diffusion(const int phaseIdx, const int compIdx)
     {
-        return diffusionFluxVariables_[phaseIdx][compIdx];
+        return diffusion_[phaseIdx][compIdx];
     }
 
 private:
-    std::array< std::array<DiffusionFluxVariables, numComponents>, numPhases> diffusionFluxVariables_;
+    std::array< std::array<MolecularDiffusionType, numComponents>, numPhases> diffusion_;
 };
 
 
-// specialization for non-isothermal darcy flow
+// specialization for non-isothermal advective flow (e.g. non-isothermal one-phase darcy equation)
 template<class TypeTag>
 class FluxVariables<TypeTag, true, false, true>
 {
     using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
-    using DarcyFluxVariables = typename GET_PROP_TYPE(TypeTag, DarcyFluxVariables);
-    using EnergyFluxVariables = typename GET_PROP_TYPE(TypeTag, EnergyFluxVariables);
+    using AdvectionType = typename GET_PROP_TYPE(TypeTag, AdvectionType);
+    using HeatConductionType = typename GET_PROP_TYPE(TypeTag, HeatConductionType);
 
 public:
     void update(const Problem& problem, const SubControlVolumeFace &scv)
     {
-        darcyFluxVars_.update(problem, scv);
-        energyFluxVars_.update(problem, scv);
+        advection_.update(problem, scv);
+        heatConduction_.update(problem, scv);
     }
 
-    const DarcyFluxVariables& darcyFluxVars() const
+    const AdvectionType& advection() const
     {
-        return darcyFluxVars_;
+        return advection_;
     }
 
-    DarcyFluxVariables& darcyFluxVars()
+    AdvectionType& advection()
     {
-        return darcyFluxVars_;
+        return advection_;
     }
 
-    const EnergyFluxVariables& energyFluxVars() const
+    const HeatConductionType& heatConduction() const
     {
-        return energyFluxVars_;
+        return heatConduction_;
     }
 
-    EnergyFluxVariables& energyFluxVars()
+    HeatConductionType& heatConduction()
     {
-        return energyFluxVars_;
+        return heatConduction_;
     }
 
 private:
-    DarcyFluxVariables darcyFluxVars_;
-    EnergyFluxVariables energyFluxVars_;
+    AdvectionType advection_;
+    HeatConductionType heatConduction_;
 };
 
 
-// specialization for non-isothermal darcy flow with diffusion
+// specialization for non-isothermal advection diffusion_ equations
 template<class TypeTag>
 class FluxVariables<TypeTag, true, true, true>
 {
     using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
-    using DarcyFluxVariables = typename GET_PROP_TYPE(TypeTag, DarcyFluxVariables);
-    using DiffusionFluxVariables = typename GET_PROP_TYPE(TypeTag, DiffusionFluxVariables);
-    using EnergyFluxVariables = typename GET_PROP_TYPE(TypeTag, EnergyFluxVariables);
+    using AdvectionType = typename GET_PROP_TYPE(TypeTag, AdvectionType);
+    using MolecularDiffusionType = typename GET_PROP_TYPE(TypeTag, MolecularDiffusionType);
+    using HeatConductionType = typename GET_PROP_TYPE(TypeTag, HeatConductionType);
 
     enum
     {
@@ -223,58 +223,58 @@ class FluxVariables<TypeTag, true, true, true>
 public:
     void update(const Problem& problem, const SubControlVolumeFace &scv)
     {
-        darcyFluxVars_.update(problem, scv);
+        advection_.update(problem, scv);
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
             for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-                diffusionFluxVariables_.update(problem, scv, phaseIdx, compIdx);
-        energyFluxVars_.update(problem, scv);
+                diffusion_.update(problem, scv, phaseIdx, compIdx);
+        heatConduction_.update(problem, scv);
     }
 
-    const DarcyFluxVariables& darcyFluxVars() const
+    const AdvectionType& advection() const
     {
-        return darcyFluxVars_;
+        return advection_;
     }
 
-    DarcyFluxVariables& darcyFluxVars()
+    AdvectionType& advection()
     {
-        return darcyFluxVars_;
+        return advection_;
     }
 
-    const EnergyFluxVariables& energyFluxVars() const
+    const HeatConductionType& heatConduction() const
     {
-        return energyFluxVars_;
+        return heatConduction_;
     }
 
-    EnergyFluxVariables& energyFluxVars()
+    HeatConductionType& heatConduction()
     {
-        return energyFluxVars_;
+        return heatConduction_;
     }
 
-    const DiffusionFluxVariables& diffusionFluxVars(const int phaseIdx, const int compIdx) const
+    const MolecularDiffusionType& diffusion(const int phaseIdx, const int compIdx) const
     {
-        return diffusionFluxVariables_[phaseIdx][compIdx];
+        return diffusion_[phaseIdx][compIdx];
     }
 
-    DiffusionFluxVariables& diffusionFluxVars(const int phaseIdx, const int compIdx)
+    MolecularDiffusionType& diffusion(const int phaseIdx, const int compIdx)
     {
-        return diffusionFluxVariables_[phaseIdx][compIdx];
+        return diffusion_[phaseIdx][compIdx];
     }
 
 private:
-    DarcyFluxVariables darcyFluxVars_;
-    std::array< std::array<DiffusionFluxVariables, numComponents>, numPhases> diffusionFluxVariables_;
-    EnergyFluxVariables energyFluxVars_;
+    AdvectionType advection_;
+    std::array< std::array<MolecularDiffusionType, numComponents>, numPhases> diffusion_;
+    HeatConductionType heatConduction_;
 };
 
 
-// specialization for non-isothermal pure diffusion
+// specialization for non-isothermal diffusion_
 template<class TypeTag>
 class FluxVariables<TypeTag, false, true, true>
 {
     using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
-    using DiffusionFluxVariables = typename GET_PROP_TYPE(TypeTag, DiffusionFluxVariables);
-    using EnergyFluxVariables = typename GET_PROP_TYPE(TypeTag, EnergyFluxVariables);
+    using MolecularDiffusionType = typename GET_PROP_TYPE(TypeTag, MolecularDiffusionType);
+    using HeatConductionType = typename GET_PROP_TYPE(TypeTag, HeatConductionType);
 
     enum
     {
@@ -287,63 +287,64 @@ public:
     {
         for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
             for (int compIdx = 0; compIdx < numComponents; ++compIdx)
-                diffusionFluxVariables_.update(problem, scv, phaseIdx, compIdx);
-        energyFluxVars_.update(problem, scv);
+                diffusion_.update(problem, scv, phaseIdx, compIdx);
+        heatConduction_.update(problem, scv);
     }
 
-    const EnergyFluxVariables& energyFluxVars() const
+    const HeatConductionType& heatConduction() const
     {
-        return energyFluxVars_;
+        return heatConduction_;
     }
 
-    EnergyFluxVariables& energyFluxVars()
+    HeatConductionType& heatConduction()
     {
-        return energyFluxVars_;
+        return heatConduction_;
     }
 
-    const DiffusionFluxVariables& diffusionFluxVars(const int phaseIdx, const int compIdx) const
+    const MolecularDiffusionType& diffusion(const int phaseIdx, const int compIdx) const
     {
-        return diffusionFluxVariables_[phaseIdx][compIdx];
+        return diffusion_[phaseIdx][compIdx];
     }
 
-    DiffusionFluxVariables& diffusionFluxVars(const int phaseIdx, const int compIdx)
+    MolecularDiffusionType& diffusion(const int phaseIdx, const int compIdx)
     {
-        return diffusionFluxVariables_[phaseIdx][compIdx];
+        return diffusion_[phaseIdx][compIdx];
     }
 
 private:
-    std::array< std::array<DiffusionFluxVariables, numComponents>, numPhases> diffusionFluxVariables_;
-    EnergyFluxVariables energyFluxVars_;
+    std::array< std::array<MolecularDiffusionType, numComponents>, numPhases> diffusion_;
+    HeatConductionType heatConduction_;
 };
 
 
-// specialization for pure heat transport
+// specialization for pure heat conduction (e.g. the heat equation)
 template<class TypeTag>
 class FluxVariables<TypeTag, false, false, true>
 {
     using Problem = typename GET_PROP_TYPE(TypeTag, Problem);
     using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace);
-    using EnergyFluxVariables = typename GET_PROP_TYPE(TypeTag, EnergyFluxVariables);
+    using HeatConductionType = typename GET_PROP_TYPE(TypeTag, HeatConductionType);
 
 public:
     void update(const Problem& problem, const SubControlVolumeFace &scv)
     {
-        energyFluxVars_.update(problem, scv);
+        heatConduction_.update(problem, scv);
     }
 
-    const EnergyFluxVariables& energyFluxVars() const
+    const HeatConductionType& heatConduction() const
     {
-        return energyFluxVars_;
+        return heatConduction_;
     }
 
-    EnergyFluxVariables& energyFluxVars()
+    HeatConductionType& heatConduction()
     {
-        return energyFluxVars_;
+        return heatConduction_;
     }
 
 private:
-    EnergyFluxVariables energyFluxVars_;
+    HeatConductionType heatConduction_;
 };
+
 } // end namespace
 
 #endif
diff --git a/dumux/implicit/properties.hh b/dumux/implicit/properties.hh
index 184177e1c2286a48da8ab8b9c66fd02bd98a3a81..ebc7114dc2aee0c9fb349f84d5519f2dedb61681 100644
--- a/dumux/implicit/properties.hh
+++ b/dumux/implicit/properties.hh
@@ -79,12 +79,12 @@ NEW_PROP_TAG(BoundaryVariables); //!< Data required to calculate fluxes over bou
 
 // Specify the forms of fluxes that should be considered in the model
 // also, specify their corresponding flux variables
-NEW_PROP_TAG(DarcyFluxes); //! specifies if darcy fluxes are considered in the model
-NEW_PROP_TAG(DarcyFluxVariables); //! The type for the calculation of the darcy fluxes
-NEW_PROP_TAG(DiffusiveFluxes); //! specifies if diffusive fluxes are considered in the model
-NEW_PROP_TAG(DiffusionFluxVariables); //! The type that handles the calculation of the molecular diffusion fluxes
-NEW_PROP_TAG(EnergyFluxes); //! specifies if the model consideres heat transport phenomena
-NEW_PROP_TAG(EnergyFluxVariables); //! The type for the heat flux calculation
+NEW_PROP_TAG(EnableAdvection); //! specifies if advection is considered in the model
+NEW_PROP_TAG(AdvectionType); //! The type for the calculation the advective fluxes
+NEW_PROP_TAG(EnableMolecularDiffusion); //! specifies if molecular diffusive fluxes are considered in the model
+NEW_PROP_TAG(MolecularDiffusionType); //! The type for the calculation of the molecular diffusion fluxes
+NEW_PROP_TAG(EnableEnergyBalance); //! Specifies if the model solves an energy equation
+NEW_PROP_TAG(HeatConductionType); //! The type for the calculation of the heat conduction fluxes
 
 // stencils
 NEW_PROP_TAG(Stencils); //! The stencils container type
diff --git a/dumux/implicit/propertydefaults.hh b/dumux/implicit/propertydefaults.hh
index 2bfb39ab18ef60fbdde1011af76cd02c1c711548..c63c3b9da61a54303be462bf412cdd40c7724fbe 100644
--- a/dumux/implicit/propertydefaults.hh
+++ b/dumux/implicit/propertydefaults.hh
@@ -102,32 +102,20 @@ SET_TYPE_PROP(ImplicitBase, VolumeVariablesVector, Dumux::VolumeVariablesVector<
 //! The global volume variables vector class
 SET_TYPE_PROP(ImplicitBase, StencilsVector, Dumux::StencilsVector<TypeTag>);
 
-//! Set darcy fluxes as the default fluxes to be considered
-SET_BOOL_PROP(ImplicitBase, DarcyFluxes, true);
-
-//! By default diffusive fluxes are switched off
-SET_BOOL_PROP(ImplicitBase, DiffusiveFluxes, false);
-
-//! By default energy fluxes are not considered
-SET_BOOL_PROP(ImplicitBase, EnergyFluxes, false);
+//! The global volume variables vector class
+SET_TYPE_PROP(ImplicitBase, FluxVariablesVector, Dumux::FluxVariablesVector<TypeTag>);
 
 // //! The class that contains the different flux variables (i.e. darcy, diffusion, energy)
 SET_PROP(ImplicitBase, FluxVariables)
 {
 private:
-  enum
-  {
-    darcy = GET_PROP_VALUE(TypeTag, DarcyFluxes),
-    diffusion = GET_PROP_VALUE(TypeTag, DiffusiveFluxes),
-    energy = GET_PROP_VALUE(TypeTag, EnergyFluxes)
-  };
+    static constexpr bool advection = GET_PROP_VALUE(TypeTag, EnableAdvection);
+    static constexpr bool diffusion = GET_PROP_VALUE(TypeTag, EnableMolecularDiffusion);
+    static constexpr bool energy = GET_PROP_VALUE(TypeTag, EnableEnergyBalance);
 public:
-  typedef FluxVariables<TypeTag, darcy, diffusion, energy> type;
+    typedef Dumux::FluxVariables<TypeTag, advection, diffusion, energy> type;
 };
 
-//! The global volume variables vector class
-SET_TYPE_PROP(ImplicitBase, FluxVariablesVector, Dumux::FluxVariablesVector<TypeTag>);
-
 //! The local jacobian operator
 SET_TYPE_PROP(ImplicitBase, LocalJacobian, ImplicitLocalJacobian<TypeTag>);
 
diff --git a/dumux/porousmediumflow/1p/implicit/localresidual.hh b/dumux/porousmediumflow/1p/implicit/localresidual.hh
index 98292d8929700700fa38c1f7f45c77bae03806fd..77c2e60930ad18bd512dda62e4b3d04aea74737d 100644
--- a/dumux/porousmediumflow/1p/implicit/localresidual.hh
+++ b/dumux/porousmediumflow/1p/implicit/localresidual.hh
@@ -111,7 +111,7 @@ public:
                           { return (up.density(0)*massWeight + dn.density(0)*(1-massWeight))
                                    *(up.mobility(0)*mobWeight + dn.mobility(0)*(1-mobWeight)); };
 
-        auto flux = fluxVars.darcyFluxVars().computeFlux(0, upwindRule);
+        auto flux = fluxVars.advection().flux(0, upwindRule);
 
         return flux;
     }
diff --git a/dumux/porousmediumflow/1p/implicit/propertydefaults.hh b/dumux/porousmediumflow/1p/implicit/propertydefaults.hh
index 6bb3aad3e7f2d4ebd4a620d3aa09476ed348acb8..3b57481c715087c945f6edd6727eccbf51e3db34 100644
--- a/dumux/porousmediumflow/1p/implicit/propertydefaults.hh
+++ b/dumux/porousmediumflow/1p/implicit/propertydefaults.hh
@@ -62,6 +62,15 @@ SET_TYPE_PROP(OneP, Model, OnePModel<TypeTag>);
 //! the VolumeVariables property
 SET_TYPE_PROP(OneP, VolumeVariables, OnePVolumeVariables<TypeTag>);
 
+//! Enable advection
+SET_BOOL_PROP(OneP, EnableAdvection, true);
+
+//! The one-phase model has no molecular diffusion
+SET_BOOL_PROP(OneP, EnableMolecularDiffusion, false);
+
+//! Isothermal model by default
+SET_BOOL_PROP(OneP, EnableEnergyBalance, false);
+
 //! The indices required by the isothermal single-phase model
 SET_TYPE_PROP(OneP, Indices, OnePIndices);
 
diff --git a/dumux/porousmediumflow/2p/implicit/localresidual.hh b/dumux/porousmediumflow/2p/implicit/localresidual.hh
index 29e67f02602fbb82620b22abc0ec4daf63ebb464..5ef5fc06730117e11885c083b1c5364a09534b24 100644
--- a/dumux/porousmediumflow/2p/implicit/localresidual.hh
+++ b/dumux/porousmediumflow/2p/implicit/localresidual.hh
@@ -127,7 +127,7 @@ public:
                                    *(up.mobility(phaseIdx)*mobWeight + dn.mobility(phaseIdx)*(1-mobWeight)); };
 
             auto eqIdx = (phaseIdx == wPhaseIdx) ? contiWEqIdx : contiNEqIdx;
-            flux[eqIdx] = fluxVars.darcyFluxVars().computeFlux(phaseIdx, upwindRule);
+            flux[eqIdx] = fluxVars.advection().flux(phaseIdx, upwindRule);
         }
 
         return flux;
diff --git a/dumux/porousmediumflow/2p/implicit/propertydefaults.hh b/dumux/porousmediumflow/2p/implicit/propertydefaults.hh
index 9f553690de770da2d9b195763212976f65bde8cb..630339f4ac71b749e838e8881c9b1820cb45a327 100644
--- a/dumux/porousmediumflow/2p/implicit/propertydefaults.hh
+++ b/dumux/porousmediumflow/2p/implicit/propertydefaults.hh
@@ -72,6 +72,15 @@ SET_TYPE_PROP(TwoP, Model, TwoPModel<TypeTag>);
 //! the VolumeVariables property
 SET_TYPE_PROP(TwoP, VolumeVariables, TwoPVolumeVariables<TypeTag>);
 
+//! Enable advection
+SET_BOOL_PROP(TwoP, EnableAdvection, true);
+
+//! The two-phase model has no molecular diffusion
+SET_BOOL_PROP(TwoP, EnableMolecularDiffusion, false);
+
+//! Isothermal model by default
+SET_BOOL_PROP(TwoP, EnableEnergyBalance, false);
+
 //! the upwind weight for the mass conservation equations.
 SET_SCALAR_PROP(TwoP, ImplicitMassUpwindWeight, 1.0);
 
diff --git a/dumux/porousmediumflow/implicit/cellcentered/tpfa/darcyfluxvariables.hh b/dumux/porousmediumflow/implicit/cellcentered/tpfa/darcyslaw.hh
similarity index 97%
rename from dumux/porousmediumflow/implicit/cellcentered/tpfa/darcyfluxvariables.hh
rename to dumux/porousmediumflow/implicit/cellcentered/tpfa/darcyslaw.hh
index 3067f4dbc503f8f46fd9a1a4e089f3430805e80c..7929d3409e0542b4287fc8dfdca62d19b7c9cd45 100644
--- a/dumux/porousmediumflow/implicit/cellcentered/tpfa/darcyfluxvariables.hh
+++ b/dumux/porousmediumflow/implicit/cellcentered/tpfa/darcyslaw.hh
@@ -22,8 +22,8 @@
  *        volume and mass fluxes of fluid phases over a face of a finite volume by means
  *        of the Darcy approximation.
  */
-#ifndef DUMUX_CC_TPFA_DARCY_FLUX_VARIABLES_HH
-#define DUMUX_CC_TPFA_DARCY_FLUX_VARIABLES_HH
+#ifndef DUMUX_CC_TPFA_DARCYS_LAW_HH
+#define DUMUX_CC_TPFA_DARCYS_LAW_HH
 
 #include <dune/common/float_cmp.hh>
 
@@ -44,12 +44,12 @@ NEW_PROP_TAG(ProblemEnableGravity);
 }
 
 /*!
- * \ingroup ImplicitFluxVariables
+ * \ingroup CCTpfaDarcysLaw
  * \brief Evaluates the normal component of the Darcy velocity
  * on a (sub)control volume face.
  */
 template <class TypeTag>
-class CCTpfaImplicitDarcyFluxVariables
+class CCTpfaDarcysLaw
 {
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
     typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem;
@@ -90,7 +90,7 @@ public:
      * \param upwindFunction A function which does the upwinding
      */
     template<typename FunctionType>
-    Scalar computeFlux(IndexType phaseIdx, FunctionType upwindFunction) const
+    Scalar flux(IndexType phaseIdx, FunctionType upwindFunction) const
     {
         const auto insideScvIdx = scvFace_().insideScvIdx();
         const auto& insideScv = problem_().model().fvGeometries().subControlVolume(insideScvIdx);
@@ -249,4 +249,4 @@ protected:
 
 } // end namespace
 
-#endif // DUMUX_CC_TPFA_DARCY_FLUX_VARIABLES_HH
+#endif