diff --git a/dumux/common/boundarytypes.hh b/dumux/common/boundarytypes.hh
index 3ac652e3a333edc55a12b9258e0bbdb4cb7c8d6b..6a3b9ce41653aa55625a76bec96df460f3a12da5 100644
--- a/dumux/common/boundarytypes.hh
+++ b/dumux/common/boundarytypes.hh
@@ -24,6 +24,9 @@
 #ifndef DUMUX_BOUNDARY_TYPES_HH
 #define DUMUX_BOUNDARY_TYPES_HH
 
+#include <algorithm>
+#include <array>
+
 namespace Dumux
 {
 
diff --git a/dumux/common/entitymap.hh b/dumux/common/entitymap.hh
index 365655aea24393d75b07636cfdcac352ffda95f8..ef777325b3a66e7e5ae03bc9c32d897abf5908e6 100644
--- a/dumux/common/entitymap.hh
+++ b/dumux/common/entitymap.hh
@@ -24,6 +24,10 @@
 #ifndef DUMUX_ENTITY_INDEX_MAP_HH
 #define DUMUX_ENTITY_INDEX_MAP_HH
 
+#include <vector>
+#include <utility>
+#include <dune/geometry/dimension.hh>
+
 namespace Dumux {
 
 /*!
diff --git a/dumux/common/geometry/boundingboxtree.hh b/dumux/common/geometry/boundingboxtree.hh
index 5c5a0f6647b270cbfc1a746033ab24d35a817230..1b02e16d6b861beb5f222de2aae3d54c61812a67 100644
--- a/dumux/common/geometry/boundingboxtree.hh
+++ b/dumux/common/geometry/boundingboxtree.hh
@@ -32,8 +32,10 @@
 #include <vector>
 #include <array>
 #include <algorithm>
+#include <memory>
 #include <numeric>
 #include <type_traits>
+#include <iostream>
 
 #include <dune/common/promotiontraits.hh>
 #include <dune/common/timer.hh>
diff --git a/dumux/common/intersectionmapper.hh b/dumux/common/intersectionmapper.hh
index 558b3101174362ef503e53d3c979793d1e735c23..73e87d3140800e3b94dd3d8287e5b2a61ac34bcc 100644
--- a/dumux/common/intersectionmapper.hh
+++ b/dumux/common/intersectionmapper.hh
@@ -30,7 +30,7 @@
 #include <dune/grid/common/rangegenerators.hh>
 
 #include <dune/common/version.hh>
-
+#include <dumux/common/properties.hh>
 
 namespace Dumux
 {
@@ -39,6 +39,7 @@ namespace Dumux
  * \ingroup Common
  * \brief defines a standard intersection mapper for mapping of global DOFs assigned
  *        to faces. It only works for conforming grids, without hanging nodes.
+ * \todo This shouldn't depend on type tag but gridview only
  */
 template<class TypeTag>
 class ConformingGridIntersectionMapper
@@ -84,6 +85,7 @@ private:
  * \ingroup Common
  * \brief defines an intersection mapper for mapping of global DOFs assigned
  *        to faces which also works for non-conforming grids and corner-point grids.
+ * \todo This shouldn't depend on type tag but gridview only
  */
 template<class TypeTag>
 class NonConformingGridIntersectionMapper
diff --git a/dumux/common/intrange.hh b/dumux/common/intrange.hh
index ef9ad36f16a2d001c68d9e4d6c4117c1f166bc55..f9426a4c7cff9a8d5970a2a46340ef7a521470ad 100644
--- a/dumux/common/intrange.hh
+++ b/dumux/common/intrange.hh
@@ -24,6 +24,8 @@
 #ifndef DUMUX_INTEGER_RANGE_HH
 #define DUMUX_INTEGER_RANGE_HH
 
+#include <cassert>
+
 namespace Dumux {
 
 /*!
diff --git a/dumux/common/properties.hh b/dumux/common/properties.hh
index 19d1a093dbac30b2be49ee4926ecc0fe91be7084..2e6b2c39e6112b9664974f16c537b3eefac39286 100644
--- a/dumux/common/properties.hh
+++ b/dumux/common/properties.hh
@@ -186,7 +186,9 @@ NEW_PROP_TAG(NumEqCellCenter);                     //!< The number of equations
 NEW_PROP_TAG(NumEqFace);                           //!< The number of equations for face dofs
 NEW_PROP_TAG(CellCenterSolutionVector);            //!< The solution vector type for cell-centered dofs
 NEW_PROP_TAG(FaceSolutionVector);                  //!< The solution vector type for face dofs
+NEW_PROP_TAG(StaggeredFaceSolution);               //!< The solution on the face
 NEW_PROP_TAG(GlobalFaceVars);                      //!< Class containing face-related data
+NEW_PROP_TAG(ElementFaceVariables);                //!< Face data per element
 NEW_PROP_TAG(CellCenterPrimaryVariables);          //!< The primary variables container type for cell-centered dofs
 NEW_PROP_TAG(FacePrimaryVariables);                //!< The primary variables container type for face dofs
 NEW_PROP_TAG(IntersectionMapper);                  //!< Specifies the intersection mapper
@@ -196,6 +198,7 @@ NEW_PROP_TAG(StaggeredPrimaryVariables);           //!< The hybrid primary varia
 NEW_PROP_TAG(BaseEpsilon);                         //!< A base epsilon for numerical differentiation, can contain multiple values
 NEW_PROP_TAG(FaceVariables);                       //!< Class containing local face-related data
 NEW_PROP_TAG(BoundaryValues);                      //!< Class containing local boundary data
+NEW_PROP_TAG(EnableGlobalFaceVariablesCache);      //!< If the face variables are cached on the gridview
 
 /////////////////////////////////////////////////////////////
 // Properties used by the mpnc model
diff --git a/dumux/common/staggeredfvproblem.hh b/dumux/common/staggeredfvproblem.hh
index 89d1e90fcd3348b395008a619f4ae38ba0d97382..04c569cbca82184163549d9cb10bdad2d2af230b 100644
--- a/dumux/common/staggeredfvproblem.hh
+++ b/dumux/common/staggeredfvproblem.hh
@@ -24,11 +24,16 @@
 #ifndef DUMUX_STAGGERD_FV_PROBLEM_HH
 #define DUMUX_STAGGERD_FV_PROBLEM_HH
 
+#include <dune/common/version.hh>
+#if DUNE_VERSION_NEWER(DUNE_COMMON,2,6)
+#include <dune/common/rangeutilities.hh>
+#endif
+
 #include <dumux/common/properties.hh>
 #include <dumux/common/fvproblem.hh>
 
-namespace Dumux
-{
+namespace Dumux {
+
 /*!
  * \ingroup Problems
  * \ingroup Common
diff --git a/dumux/common/timesteppingscheme.hh b/dumux/common/timesteppingscheme.hh
deleted file mode 100644
index e6e033e4e37e9aff1fdbc93392414eedbf8d98d4..0000000000000000000000000000000000000000
--- a/dumux/common/timesteppingscheme.hh
+++ /dev/null
@@ -1,83 +0,0 @@
-// -*- 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
- * \ingroup Common
- * \brief Manages the handling of time dependent problems
- */
-#ifndef DUMUX_TIME_STEPPING_SCHEME_HH
-#define DUMUX_TIME_STEPPING_SCHEME_HH
-
-#include "parameters.hh"
-
-namespace Dumux
-{
-
-/*!
- * \ingroup Common
- * \brief The abstract time stepping parameter interface
- */
-template <class Scalar>
-class TimeSteppingParams
-{
-
-public:
-    //! Pure abstract base classes have virtual destructor
-    virtual ~TimeSteppingScheme () {}
-
-    //! Returns if the time stepping scheme is implicit
-    virtual constexpr bool implicit() const = 0;
-
-    //! The number of stages in the time stepping scheme
-    virtual std::size_t numStages() const = 0;
-
-    //! The a parameters of the time stepping scheme
-    virtual Scalar a(int stage, int i) const = 0;
-
-    //! The b parameters of the time stepping scheme
-    virtual Scalar b(int stage, int i) const = 0;
-
-    //! The d parameters of the time stepping scheme
-    virtual Scalar d(int i) const = 0;
-
-    //! The name of the time stepping scheme
-    virtual std::string name() const = 0;
-};
-
-/*!
- * \ingroup Common
- * \brief The time stepping scheme class
- */
-template <class Scalar>
-class TimeSteppingScheme
-{
-
-public:
-    TimeSteppingScheme(std::shared_ptr<TimeSteppingParams> method)
-    : method_(method)
-    {}
-
-private:
-    std::shared_ptr<TimeSteppingParams> method_;
-
-};
-
-} // end namespace Dumux
-
-#endif