diff --git a/dumux/common/volumevariables.hh b/dumux/common/volumevariables.hh
new file mode 100644
index 0000000000000000000000000000000000000000..2b74ee8f019c1c92315341d1b000d6e342326e27
--- /dev/null
+++ b/dumux/common/volumevariables.hh
@@ -0,0 +1,67 @@
+// -*- 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 3 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 Basic volume variables for finite volume methods
+ */
+#ifndef DUMUX_COMMON_BASIC_VOLUME_VARIABLES_HH
+#define DUMUX_COMMON_BASIC_VOLUME_VARIABLES_HH
+
+#include <memory>
+
+namespace Dumux {
+
+template <class Traits>
+class BasicVolumeVariables
+{
+    using Scalar = typename Traits::PrimaryVariables::value_type;
+public:
+    //! export the type used for the primary variables
+    using PrimaryVariables = typename Traits::PrimaryVariables;
+
+    /*!
+     * \brief Update all quantities for a given control volume
+     */
+    template<class ElementSolution, class Problem, class Element, class SubControlVolume>
+    void update(const ElementSolution& elemSol,
+                const Problem& problem,
+                const Element& element,
+                const SubControlVolume& scv)
+    {
+        priVars_ = elemSol[scv.indexInElement()];
+    }
+
+    Scalar priVar(const int pvIdx) const
+    { return priVars_[pvIdx]; }
+
+    const PrimaryVariables& priVars() const
+    { return priVars_; }
+
+    // for compatibility with more general models
+    Scalar extrusionFactor() const
+    { return 1.0; }
+
+private:
+    PrimaryVariables priVars_;
+};
+
+} // end namespace Dumux
+
+#endif