diff --git a/dumux/multidomain/2cstokes2p2c/localoperator.hh b/dumux/multidomain/2cstokes2p2c/localoperator.hh
index b1ad103c9f13673b5d9f09e4355d1f7c95e9dc47..ba5f07097063a56082e0e8c6fca705bdbfb1374f 100644
--- a/dumux/multidomain/2cstokes2p2c/localoperator.hh
+++ b/dumux/multidomain/2cstokes2p2c/localoperator.hh
@@ -32,7 +32,7 @@
 #include <dune/pdelab/localoperator/pattern.hh>
 #include <dune/pdelab/localoperator/idefault.hh>
 
-#include <dumux/multidomain/common/properties.hh>
+#include <dumux/multidomain/properties.hh>
 #include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh>
 #include <dumux/freeflow/boundarylayermodel.hh>
 #include <dumux/freeflow/masstransfermodel.hh>
diff --git a/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh b/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh
index 712cf33479a3425e96ea0d8e9659a56ff49c4e04..51b47acc3f43a66d16c1216ff3c4007802269e0d 100644
--- a/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh
+++ b/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh
@@ -24,7 +24,7 @@
 #ifndef DUMUX_2CSTOKES_2P2C_NEWTON_CONTROLLER_HH
 #define DUMUX_2CSTOKES_2P2C_NEWTON_CONTROLLER_HH
 
-#include <dumux/multidomain/common/newtoncontroller.hh>
+#include <dumux/multidomain/newtoncontroller.hh>
 
 namespace Dumux
 {
diff --git a/dumux/multidomain/2cstokes2p2c/properties.hh b/dumux/multidomain/2cstokes2p2c/properties.hh
index 6ca47f6bce33334e7bd7879eaae0a2e3b7cb1d5b..36330a143e4838836ad6abca6b7efdb161f079df 100644
--- a/dumux/multidomain/2cstokes2p2c/properties.hh
+++ b/dumux/multidomain/2cstokes2p2c/properties.hh
@@ -28,7 +28,7 @@
 #ifndef DUMUX_TWOCSTOKESTWOPTWOC_PROPERTIES_HH
 #define DUMUX_TWOCSTOKESTWOPTWOC_PROPERTIES_HH
 
-#include <dumux/multidomain/common/propertydefaults.hh>
+#include <dumux/multidomain/propertydefaults.hh>
 
 namespace Dumux
 {
diff --git a/dumux/multidomain/common/assembler.hh b/dumux/multidomain/assembler.hh
similarity index 100%
rename from dumux/multidomain/common/assembler.hh
rename to dumux/multidomain/assembler.hh
diff --git a/dumux/multidomain/boxcouplinglocalresidual.hh b/dumux/multidomain/boxcouplinglocalresidual.hh
new file mode 100644
index 0000000000000000000000000000000000000000..651e50a1a67452bff4a67ef40e2aef8e5243dfee
--- /dev/null
+++ b/dumux/multidomain/boxcouplinglocalresidual.hh
@@ -0,0 +1,224 @@
+// -*- 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 Element-wise calculation of the Jacobian matrix for problems
+ *        using the coupled box model.
+ */
+#ifndef DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH
+#define DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH
+
+#include <dune/common/deprecated.hh>
+
+#include <dumux/implicit/box/localresidual.hh>
+
+namespace Dumux
+{
+/*!
+ * \ingroup ImplicitLocalResidual
+ * \ingroup TwoPTwoCNIStokesTwoCNIModel
+ * \ingroup TwoPTwoCNIZeroEqTwoCNIModel
+ * \brief Element-wise calculation of the Jacobian matrix for problems
+ *        using the coupled box model.
+ */
+template<class TypeTag>
+class BoxCouplingLocalResidual : public BoxLocalResidual<TypeTag>
+{
+private:
+    typedef typename GET_PROP_TYPE(TypeTag, LocalResidual) Implementation;
+    typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
+
+    enum {
+        numEq = GET_PROP_VALUE(TypeTag, NumEq),
+
+        dim = GridView::dimension,
+        dimWorld = GridView::dimensionworld
+    };
+
+    typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
+    typedef typename GridView::Grid::ctype CoordScalar;
+
+    typedef typename GridView::template Codim<0>::Entity Element;
+    typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry;
+
+    typedef typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes) ElementBoundaryTypes;
+    typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables;
+
+    // copying the local residual class is not a good idea
+    BoxCouplingLocalResidual(const BoxCouplingLocalResidual &);
+
+public:
+    //! \brief The constructor
+    BoxCouplingLocalResidual()
+    { }
+
+    /*!
+     * \brief Compute the local residual, i.e. the deviation of the
+     *        equations from zero. Gets a solution vector computed by PDELab
+     *
+     * \tparam ElemSolVectorType The local solution for the element using PDELab ordering
+     *
+     * \param element The DUNE Codim<0> entity for which the residual
+     *                ought to be calculated
+     * \param fvGeometry The element geometry
+     * \param elementSolVector The local solution for the element using PDELab ordering
+     * \param volVarsPrev Volume variables of the previous time step
+     * \param volVarsCur Volume variables of the current time step
+     */
+    template<typename ElemSolVectorType>
+    DUNE_DEPRECATED_MSG("evalPDELab() is deprecated.")
+    void evalPDELab(const Element &element,
+                    const FVElementGeometry& fvGeometry,
+                    const ElemSolVectorType& elementSolVector,
+                    ElementVolumeVariables& volVarsPrev,
+                    ElementVolumeVariables& volVarsCur)
+    {
+        this->elemPtr_ = &element;
+        this->fvElemGeomPtr_ = &fvGeometry;
+
+        volVarsPrev.update(this->problem_(),
+                           element,
+                           fvGeometry,
+                           true /* oldSol? */);
+        volVarsCur.updatePDELab(this->problem_(),
+                                element,
+                                fvGeometry,
+                                elementSolVector);
+        ElementBoundaryTypes bcTypes;
+        bcTypes.update(this->problem_(), element, fvGeometry);
+
+        asImp_().evalPDELab(element, fvGeometry, volVarsPrev, volVarsCur, bcTypes);
+    }
+
+    /*!
+     * \brief Compute the local residual, i.e. the deviation of the
+     *        equations from zero without taking boundary conditions into account.
+     *        This is required for the flux calculation at the interface
+     *        (called from the coupled problem). Calls evalPDELab with the
+     *        required removal of the stabilization at the boundary (stokes).
+     *
+     * \param element The DUNE Codim<0> entity for which the residual
+     *                ought to be calculated
+     * \param fvGeometry The element geometry
+     * \param volVarsPrev Volume variables of the previous time step
+     * \param volVarsCur Volume variables of the current time step
+     */
+    DUNE_DEPRECATED_MSG("evalNoBoundary() is deprecated.")
+    void evalNoBoundary(const Element &element,
+                        const FVElementGeometry fvGeometry,
+                        ElementVolumeVariables& volVarsPrev,
+                        ElementVolumeVariables& volVarsCur)
+    {
+        volVarsPrev.update(this->problem_(),
+                           element,
+                           fvGeometry,
+                           true /* oldSol? */);
+        volVarsCur.update(this->problem_(),
+                          element,
+                          fvGeometry,
+                          false /* oldSol? */);
+
+        ElementBoundaryTypes bcTypes;
+        bcTypes.update(this->problem_(), element, fvGeometry);
+
+        asImp_().evalPDELab(element, fvGeometry, volVarsPrev, volVarsCur, bcTypes);
+    }
+
+    /*!
+     * \brief Compute the local residual, i.e. the deviation of the
+     *        equations from zero. Calls evalBoundaryPDELab,
+     *        where the stabilization of the mass balance (stokes)
+     *        is removed. No further boundary conditions are employed.
+     *
+     * \param element The DUNE Codim<0> entity for which the residual
+     *                ought to be calculated
+     * \param fvGeometry The finite-volume geometry of the element
+     * \param prevVolVars The volume averaged variables for all
+     *                   sub-control volumes of the element at the previous
+     *                   time level
+     * \param curVolVars The volume averaged variables for all
+     *                   sub-control volumes of the element at the current
+     *                   time level
+     * \param bcTypes The types of the boundary conditions for all
+     *                vertices of the element
+     */
+    void evalPDELab(const Element &element,
+                    const FVElementGeometry &fvGeometry,
+                    const ElementVolumeVariables &prevVolVars,
+                    const ElementVolumeVariables &curVolVars,
+                    const ElementBoundaryTypes &bcTypes)
+    {
+        const int numVerts = fvGeometry.numScv;
+#if HAVE_VALGRIND
+        for (int i=0; i < numVerts; i++) {
+            Valgrind::CheckDefined(prevVolVars[i]);
+            Valgrind::CheckDefined(curVolVars[i]);
+        }
+#endif // HAVE_VALGRIND
+
+        this->elemPtr_ = &element;
+        this->fvElemGeomPtr_ = &fvGeometry;
+        this->bcTypesPtr_ = &bcTypes;
+        this->prevVolVarsPtr_ = &prevVolVars;
+        this->curVolVarsPtr_ = &curVolVars;
+
+        // reset residual
+        this->residual_.resize(numVerts);
+        this->storageTerm_.resize(numVerts);
+
+        this->residual_ = 0;
+        this->storageTerm_ = 0;
+
+        asImp_().evalFluxes_();
+        asImp_().evalVolumeTerms_();
+
+        // evaluate the boundary (modified version)
+        asImp_().evalBoundaryPDELab_();
+
+#if HAVE_VALGRIND
+        for (int i=0; i < numVerts; i++)
+            Valgrind::CheckDefined(this->residual_[i]);
+#endif // HAVE_VALGRIND
+    }
+
+protected:
+    /*!
+     * \brief Empty method, has to be overwritten if required.
+     *        Called e.g. for the removal of the stabilization of the
+     *        stokes model.
+     */
+    void evalBoundaryPDELab_()
+    { }
+
+    Implementation &asImp_()
+    {
+        assert(static_cast<Implementation*>(this) != 0);
+        return *static_cast<Implementation*>(this);
+    }
+
+    const Implementation &asImp_() const
+    {
+        assert(static_cast<const Implementation*>(this) != 0);
+        return *static_cast<const Implementation*>(this);
+    }
+};
+
+} // namespace Dumux
+
+#endif // DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH
diff --git a/dumux/multidomain/common/boxcouplinglocalresidual.hh b/dumux/multidomain/common/boxcouplinglocalresidual.hh
index 651e50a1a67452bff4a67ef40e2aef8e5243dfee..d1c41e2ecca818b6f80d7516fe669b7994e3b39b 100644
--- a/dumux/multidomain/common/boxcouplinglocalresidual.hh
+++ b/dumux/multidomain/common/boxcouplinglocalresidual.hh
@@ -1,224 +1,8 @@
-// -*- 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 Element-wise calculation of the Jacobian matrix for problems
- *        using the coupled box model.
- */
-#ifndef DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH
-#define DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH
+#ifndef DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH_OLD
+#define DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH_OLD
 
-#include <dune/common/deprecated.hh>
+#warning this header is deprecated, use dumux/multidomain/boxcouplinglocalresidual.hh instead
 
-#include <dumux/implicit/box/localresidual.hh>
+#include <dumux/multidomain/boxcouplinglocalresidual.hh>
 
-namespace Dumux
-{
-/*!
- * \ingroup ImplicitLocalResidual
- * \ingroup TwoPTwoCNIStokesTwoCNIModel
- * \ingroup TwoPTwoCNIZeroEqTwoCNIModel
- * \brief Element-wise calculation of the Jacobian matrix for problems
- *        using the coupled box model.
- */
-template<class TypeTag>
-class BoxCouplingLocalResidual : public BoxLocalResidual<TypeTag>
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, LocalResidual) Implementation;
-    typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
-
-    enum {
-        numEq = GET_PROP_VALUE(TypeTag, NumEq),
-
-        dim = GridView::dimension,
-        dimWorld = GridView::dimensionworld
-    };
-
-    typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
-    typedef typename GridView::Grid::ctype CoordScalar;
-
-    typedef typename GridView::template Codim<0>::Entity Element;
-    typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry;
-
-    typedef typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes) ElementBoundaryTypes;
-    typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables;
-
-    // copying the local residual class is not a good idea
-    BoxCouplingLocalResidual(const BoxCouplingLocalResidual &);
-
-public:
-    //! \brief The constructor
-    BoxCouplingLocalResidual()
-    { }
-
-    /*!
-     * \brief Compute the local residual, i.e. the deviation of the
-     *        equations from zero. Gets a solution vector computed by PDELab
-     *
-     * \tparam ElemSolVectorType The local solution for the element using PDELab ordering
-     *
-     * \param element The DUNE Codim<0> entity for which the residual
-     *                ought to be calculated
-     * \param fvGeometry The element geometry
-     * \param elementSolVector The local solution for the element using PDELab ordering
-     * \param volVarsPrev Volume variables of the previous time step
-     * \param volVarsCur Volume variables of the current time step
-     */
-    template<typename ElemSolVectorType>
-    DUNE_DEPRECATED_MSG("evalPDELab() is deprecated.")
-    void evalPDELab(const Element &element,
-                    const FVElementGeometry& fvGeometry,
-                    const ElemSolVectorType& elementSolVector,
-                    ElementVolumeVariables& volVarsPrev,
-                    ElementVolumeVariables& volVarsCur)
-    {
-        this->elemPtr_ = &element;
-        this->fvElemGeomPtr_ = &fvGeometry;
-
-        volVarsPrev.update(this->problem_(),
-                           element,
-                           fvGeometry,
-                           true /* oldSol? */);
-        volVarsCur.updatePDELab(this->problem_(),
-                                element,
-                                fvGeometry,
-                                elementSolVector);
-        ElementBoundaryTypes bcTypes;
-        bcTypes.update(this->problem_(), element, fvGeometry);
-
-        asImp_().evalPDELab(element, fvGeometry, volVarsPrev, volVarsCur, bcTypes);
-    }
-
-    /*!
-     * \brief Compute the local residual, i.e. the deviation of the
-     *        equations from zero without taking boundary conditions into account.
-     *        This is required for the flux calculation at the interface
-     *        (called from the coupled problem). Calls evalPDELab with the
-     *        required removal of the stabilization at the boundary (stokes).
-     *
-     * \param element The DUNE Codim<0> entity for which the residual
-     *                ought to be calculated
-     * \param fvGeometry The element geometry
-     * \param volVarsPrev Volume variables of the previous time step
-     * \param volVarsCur Volume variables of the current time step
-     */
-    DUNE_DEPRECATED_MSG("evalNoBoundary() is deprecated.")
-    void evalNoBoundary(const Element &element,
-                        const FVElementGeometry fvGeometry,
-                        ElementVolumeVariables& volVarsPrev,
-                        ElementVolumeVariables& volVarsCur)
-    {
-        volVarsPrev.update(this->problem_(),
-                           element,
-                           fvGeometry,
-                           true /* oldSol? */);
-        volVarsCur.update(this->problem_(),
-                          element,
-                          fvGeometry,
-                          false /* oldSol? */);
-
-        ElementBoundaryTypes bcTypes;
-        bcTypes.update(this->problem_(), element, fvGeometry);
-
-        asImp_().evalPDELab(element, fvGeometry, volVarsPrev, volVarsCur, bcTypes);
-    }
-
-    /*!
-     * \brief Compute the local residual, i.e. the deviation of the
-     *        equations from zero. Calls evalBoundaryPDELab,
-     *        where the stabilization of the mass balance (stokes)
-     *        is removed. No further boundary conditions are employed.
-     *
-     * \param element The DUNE Codim<0> entity for which the residual
-     *                ought to be calculated
-     * \param fvGeometry The finite-volume geometry of the element
-     * \param prevVolVars The volume averaged variables for all
-     *                   sub-control volumes of the element at the previous
-     *                   time level
-     * \param curVolVars The volume averaged variables for all
-     *                   sub-control volumes of the element at the current
-     *                   time level
-     * \param bcTypes The types of the boundary conditions for all
-     *                vertices of the element
-     */
-    void evalPDELab(const Element &element,
-                    const FVElementGeometry &fvGeometry,
-                    const ElementVolumeVariables &prevVolVars,
-                    const ElementVolumeVariables &curVolVars,
-                    const ElementBoundaryTypes &bcTypes)
-    {
-        const int numVerts = fvGeometry.numScv;
-#if HAVE_VALGRIND
-        for (int i=0; i < numVerts; i++) {
-            Valgrind::CheckDefined(prevVolVars[i]);
-            Valgrind::CheckDefined(curVolVars[i]);
-        }
-#endif // HAVE_VALGRIND
-
-        this->elemPtr_ = &element;
-        this->fvElemGeomPtr_ = &fvGeometry;
-        this->bcTypesPtr_ = &bcTypes;
-        this->prevVolVarsPtr_ = &prevVolVars;
-        this->curVolVarsPtr_ = &curVolVars;
-
-        // reset residual
-        this->residual_.resize(numVerts);
-        this->storageTerm_.resize(numVerts);
-
-        this->residual_ = 0;
-        this->storageTerm_ = 0;
-
-        asImp_().evalFluxes_();
-        asImp_().evalVolumeTerms_();
-
-        // evaluate the boundary (modified version)
-        asImp_().evalBoundaryPDELab_();
-
-#if HAVE_VALGRIND
-        for (int i=0; i < numVerts; i++)
-            Valgrind::CheckDefined(this->residual_[i]);
-#endif // HAVE_VALGRIND
-    }
-
-protected:
-    /*!
-     * \brief Empty method, has to be overwritten if required.
-     *        Called e.g. for the removal of the stabilization of the
-     *        stokes model.
-     */
-    void evalBoundaryPDELab_()
-    { }
-
-    Implementation &asImp_()
-    {
-        assert(static_cast<Implementation*>(this) != 0);
-        return *static_cast<Implementation*>(this);
-    }
-
-    const Implementation &asImp_() const
-    {
-        assert(static_cast<const Implementation*>(this) != 0);
-        return *static_cast<const Implementation*>(this);
-    }
-};
-
-} // namespace Dumux
-
-#endif // DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH
+#endif
diff --git a/dumux/multidomain/common/multidomainassembler.hh b/dumux/multidomain/common/multidomainassembler.hh
index 814bfa681029ccbc9dace32efbfd04e66520a71a..d5e4f6654556a4033423817ddca74534adf0cb13 100644
--- a/dumux/multidomain/common/multidomainassembler.hh
+++ b/dumux/multidomain/common/multidomainassembler.hh
@@ -1,8 +1,8 @@
 #ifndef DUMUX_MULTIDOMAIN_ASSEMBLER_HH_OLD
 #define DUMUX_MULTIDOMAIN_ASSEMBLER_HH_OLD
 
-#warning this header is deprecated, use dumux/multidomain/common/assembler.hh instead
+#warning this header is deprecated, use dumux/multidomain/assembler.hh instead
 
-#include <dumux/multidomain/common/assembler.hh>
+#include <dumux/multidomain/assembler.hh>
 
 #endif
diff --git a/dumux/multidomain/common/multidomainconvergencewriter.hh b/dumux/multidomain/common/multidomainconvergencewriter.hh
index a6a1671e08cccae44c13c6cd97c2a94ee3a26f69..98bd359046c35da6d86683172f9c5ffbf5ff264a 100644
--- a/dumux/multidomain/common/multidomainconvergencewriter.hh
+++ b/dumux/multidomain/common/multidomainconvergencewriter.hh
@@ -1,8 +1,8 @@
 #ifndef DUMUX_MULTIDOMAIN_CONVERGENCEWRITER_HH_OLD
 #define DUMUX_MULTIDOMAIN_CONVERGENCEWRITER_HH_OLD
 
-#warning this header is deprecated, use dumux/multidomain/common/convergencewriter.hh instead
+#warning this header is deprecated, use dumux/multidomain/convergencewriter.hh instead
 
-#include <dumux/multidomain/common/convergencewriter.hh>
+#include <dumux/multidomain/convergencewriter.hh>
 
 #endif
diff --git a/dumux/multidomain/common/multidomainlocaloperator.hh b/dumux/multidomain/common/multidomainlocaloperator.hh
index 2eb8c8572b59cb226cc6fc65b07fa5776b0ca94f..14af986bb6d2d008d28a76fac7fb9d8637efd9c5 100644
--- a/dumux/multidomain/common/multidomainlocaloperator.hh
+++ b/dumux/multidomain/common/multidomainlocaloperator.hh
@@ -1,8 +1,8 @@
 #ifndef DUMUX_MULTIDOMAIN_LOCAL_OPERATOR_HH_OLD
 #define DUMUX_MULTIDOMAIN_LOCAL_OPERATOR_HH_OLD
 
-#warning this header is deprecated, use dumux/multidomain/common/localoperator.hh instead
+#warning this header is deprecated, use dumux/multidomain/localoperator.hh instead
 
-#include <dumux/multidomain/common/localoperator.hh>
+#include <dumux/multidomain/localoperator.hh>
 
 #endif
diff --git a/dumux/multidomain/common/multidomainmodel.hh b/dumux/multidomain/common/multidomainmodel.hh
index f97f6031ebd6a6961164a4ae54e3a88eceebbb2c..107c441ed87d8e26461ad4d2d8fd37d62b1fa17e 100644
--- a/dumux/multidomain/common/multidomainmodel.hh
+++ b/dumux/multidomain/common/multidomainmodel.hh
@@ -1,8 +1,8 @@
 #ifndef DUMUX_MULTIDOMAIN_MODEL_HH_OLD
 #define DUMUX_MULTIDOMAIN_MODEL_HH_OLD
 
-#warning this header is deprecated, use dumux/multidomain/common/model.hh instead
+#warning this header is deprecated, use dumux/multidomain/model.hh instead
 
-#include <dumux/multidomain/common/model.hh>
+#include <dumux/multidomain/model.hh>
 
 #endif
diff --git a/dumux/multidomain/common/multidomainnewtoncontroller.hh b/dumux/multidomain/common/multidomainnewtoncontroller.hh
index 88ccdc0bddcb9e7081ff109f4f17764807c4e78f..2201deda6f2882e5f8d68857ee8e33b74d9ee517 100644
--- a/dumux/multidomain/common/multidomainnewtoncontroller.hh
+++ b/dumux/multidomain/common/multidomainnewtoncontroller.hh
@@ -1,8 +1,8 @@
 #ifndef DUMUX_MULTIDOMAIN_NEWTON_CONTROLLER_HH_OLD
 #define DUMUX_MULTIDOMAIN_NEWTON_CONTROLLER_HH_OLD
 
-#warning this header is deprecated, use dumux/multidomain/common/newtoncontroller.hh instead
+#warning this header is deprecated, use dumux/multidomain/newtoncontroller.hh instead
 
-#include <dumux/multidomain/common/newtoncontroller.hh>
+#include <dumux/multidomain/newtoncontroller.hh>
 
 #endif
diff --git a/dumux/multidomain/common/multidomainproblem.hh b/dumux/multidomain/common/multidomainproblem.hh
index c95ccb2e01730d194c83b5ffcaf07f84b3eac8e2..ea174ce9b79edee6dbf649c6a4a9d1624389fb56 100644
--- a/dumux/multidomain/common/multidomainproblem.hh
+++ b/dumux/multidomain/common/multidomainproblem.hh
@@ -1,8 +1,8 @@
 #ifndef DUMUX_MULTIDOMAIN_PROBLEM_HH_OLD
 #define DUMUX_MULTIDOMAIN_PROBLEM_HH_OLD
 
-#warning this header is deprecated, use dumux/multidomain/common/problem.hh instead
+#warning this header is deprecated, use dumux/multidomain/problem.hh instead
 
-#include <dumux/multidomain/common/problem.hh>
+#include <dumux/multidomain/problem.hh>
 
 #endif
diff --git a/dumux/multidomain/common/multidomainproperties.hh b/dumux/multidomain/common/multidomainproperties.hh
index 22c05bf084d5ad399fc283b6141ba4de8d5a3c39..e9875b8077017fbf3ed8d4675233bafc8e0f30a1 100644
--- a/dumux/multidomain/common/multidomainproperties.hh
+++ b/dumux/multidomain/common/multidomainproperties.hh
@@ -1,8 +1,8 @@
 #ifndef DUMUX_MULTIDOMAIN_PROPERTIES_HH_OLD
 #define DUMUX_MULTIDOMAIN_PROPERTIES_HH_OLD
 
-#warning this header is deprecated, use dumux/multidomain/common/properties.hh instead
+#warning this header is deprecated, use dumux/multidomain/properties.hh instead
 
-#include <dumux/multidomain/common/properties.hh>
+#include <dumux/multidomain/properties.hh>
 
 #endif
diff --git a/dumux/multidomain/common/multidomainpropertydefaults.hh b/dumux/multidomain/common/multidomainpropertydefaults.hh
index e234dbcd747b487c88a772be2f83ec52b6ca6f20..12e10bc65278d9e2fb3978b4211d28ccabc2260c 100644
--- a/dumux/multidomain/common/multidomainpropertydefaults.hh
+++ b/dumux/multidomain/common/multidomainpropertydefaults.hh
@@ -1,8 +1,8 @@
 #ifndef DUMUX_MULTIDOMAIN_PROPERTY_DEFAULTS_HH_OLD
 #define DUMUX_MULTIDOMAIN_PROPERTY_DEFAULTS_HH_OLD
 
-#warning this header is deprecated, use dumux/multidomain/common/propertydefaults.hh instead
+#warning this header is deprecated, use dumux/multidomain/propertydefaults.hh instead
 
-#include <dumux/multidomain/common/propertydefaults.hh>
+#include <dumux/multidomain/propertydefaults.hh>
 
 #endif
diff --git a/dumux/multidomain/common/splitandmerge.hh b/dumux/multidomain/common/splitandmerge.hh
index 297971ff9cbc346a4629eb63e1392aea953d2fd3..78c09503b81dd14228f3bf47208933e969c5c44e 100644
--- a/dumux/multidomain/common/splitandmerge.hh
+++ b/dumux/multidomain/common/splitandmerge.hh
@@ -1,240 +1,8 @@
-// -*- 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 Some methods required by several classes of the coupling model.
- */
-#ifndef DUMUX_SPLIT_AND_MERGE_HH
-#define DUMUX_SPLIT_AND_MERGE_HH
+#ifndef DUMUX_SPLIT_AND_MERGE_HH_OLD
+#define DUMUX_SPLIT_AND_MERGE_HH_OLD
 
-#include "properties.hh"
-#include <dumux/common/valgrind.hh>
+#warning this header is deprecated, use dumux/multidomain/splitandmerge.hh instead
 
-namespace Dumux
-{
-/*!
- * \ingroup MultidomainModel
- * \brief Some methods required by several classes of the coupling model.
- */
-template<class TypeTag>
-class SplitAndMerge
-{
-    typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubTypeTag1;
-    typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubTypeTag2;
+#include <dumux/multidomain/splitandmerge.hh>
 
-    typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector;
-    typedef typename GET_PROP_TYPE(SubTypeTag1, SolutionVector) SolutionVector1;
-    typedef typename GET_PROP_TYPE(SubTypeTag2, SolutionVector) SolutionVector2;
-
-    typedef typename GET_PROP_TYPE(TypeTag, JacobianMatrix) JacobianMatrix;
-    typedef typename GET_PROP_TYPE(SubTypeTag1, JacobianMatrix) JacobianMatrix1;
-    typedef typename GET_PROP_TYPE(SubTypeTag2, JacobianMatrix) JacobianMatrix2;
-
-
-    enum {
-            numEq1 = GET_PROP_VALUE(SubTypeTag1, NumEq),
-            numEq2 = GET_PROP_VALUE(SubTypeTag2, NumEq)
-    };
-public:
-    /*!
-     * \brief Merge two solution vectors of the sub models into a
-     *        global vector: nonoverlapping case.
-     *
-     * \param vec1 Input vector with solution of subdomain 1
-     * \param vec2 Input vector with solution of subdomain 2
-     * \param dest Destination vector for global solution
-     *
-     */
-    static void mergeSolVectors(const SolutionVector1 &vec1,
-                                const SolutionVector2 &vec2,
-                                SolutionVector &dest)
-    {
-//         printvector(std::cout, vec1, "vec1", "row", 200, 1, 3);
-//         printvector(std::cout, vec2, "vec2", "row", 200, 1, 3);
-
-        int nDofs1 = vec1.size();
-        int nDofs2 = vec2.size();
-
-        for (int i = 0; i < nDofs1; ++i)
-            for (int j = 0; j < numEq1; j++)
-            {
-                dest.base()[i*numEq1 + j][0] = vec1[i][j];
-
-                Valgrind::CheckDefined(dest.base()[i*numEq1 + j][0]);
-            }
-
-        for (int i = 0; i < nDofs2; ++i)
-            for (int j = 0; j < numEq2; j++)
-            {
-                dest.base()[nDofs1*numEq1 + i*numEq2 + j][0] = vec2[i][j];
-
-                Valgrind::CheckDefined(dest.base()[nDofs1*numEq1 + i*numEq2 + j][0]);
-            }
-//         printvector(std::cout, dest.base(), "dest", "row", 200, 1, 3);
-    }
-
-    /*!
-     * \brief Split a global solution vector into two solution vectors
-     *        of the sub models: nonoverlapping case.
-     *
-     * \param vec Input vector with global solution
-     * \param dest1 Destination vector with solution of subdomain 1
-     * \param dest2 Destination vector with solution of subdomain 2
-     *
-     */
-    static void splitSolVector(const SolutionVector &vec,
-                               SolutionVector1 &dest1,
-                               SolutionVector2 &dest2)
-    {
-//         printvector(std::cout, vec.base(), "vec", "row", 200, 1, 3);
-
-        int nDofs1 = dest1.size();
-        int nDofs2 = dest2.size();
-
-        for (int i = 0; i < nDofs1; ++i)
-            for (int j = 0; j < numEq1; j++)
-                dest1[i][j] = vec.base()[i*numEq1 + j][0];
-
-        for (int i = 0; i < nDofs2; ++i)
-            for (int j = 0; j < numEq2; j++)
-                dest2[i][j] = vec.base()[nDofs1*numEq1 + i*numEq2 + j][0];
-
-//         printvector(std::cout, dest1, "dest1", "row", 200, 1, 3);
-//         printvector(std::cout, dest2, "dest2", "row", 200, 1, 3);
-    }
-
-    /*!
-     * \brief Merge two solution vectors of the sub models into a
-     *        global vector: more general case.
-     *
-     * \param vec1 Input vector with solution of subdomain 1
-     * \param vec2 Input vector with solution of subdomain 2
-     * \param dest Destination vector for global solution
-     * \param subDOFToCoupledDOF unused
-     *
-     */
-    static void mergeSolVectors(const SolutionVector1 &vec1,
-                                 const SolutionVector2 &vec2,
-                                 SolutionVector &dest,
-                                 const std::vector<int>& subDOFToCoupledDOF)
-    {
-        int nDofs1 = vec1.size();
-        int nDofs2 = vec2.size();
-//         printvector(std::cout, vec1, "vec1", "row", 200, 1, 3);
-//         printvector(std::cout, vec2, "vec2", "row", 200, 1, 3);
-
-        for (int i = 0; i < nDofs1; ++i)
-            for (int j = 0; j < numEq1; j++)
-                dest.base()[i*numEq1 + j] = vec1[i][j];
-
-        for (int i = 0; i < nDofs2; ++i)
-        {
-            for (int j = numEq1; j < numEq2; j++)
-                dest.base()[nDofs1*numEq1 + i*(numEq2-numEq1) + (j - numEq1)] = vec2[i][j];
-        }
-//         printvector(std::cout, dest.base(), "dest", "row", 200, 1, 3);
-    }
-
-    /*!
-     * \brief Split a global solution vector into two solution vectors
-     *        of the sub models: more general case.
-     *
-     * \param vec Input vector with global solution
-     * \param dest1 Destination vector with solution of subdomain 1
-     * \param dest2 Destination vector with solution of subdomain 2
-     * \param subDOFToCoupledDOF Identification vector between sub and global DOFs
-     *
-     */
-    static void splitSolVector(const SolutionVector &vec,
-                               SolutionVector1 &dest1,
-                               SolutionVector2 &dest2,
-                               const std::vector<int>& subDOFToCoupledDOF)
-    {
-        int nDofs1 = dest1.size();
-        int nDofs2 = dest2.size();
-
-//         printvector(std::cout, vec.base(), "vec", "row", 200, 1, 3);
-        for (int i = 0; i < nDofs1; ++i)
-            for (int j = 0; j < numEq1; j++)
-                dest1[i][j] = vec.base()[i*numEq1 + j];
-
-        for (int i = 0; i < nDofs2; ++i)
-        {
-            int blockIdxCoupled = subDOFToCoupledDOF[i];
-            for (int j = 0; j < numEq1; j++)
-            {
-                dest2[i][j] = vec.base()[blockIdxCoupled*numEq1 + j];
-            }
-
-            for (int j = numEq1; j < numEq2; j++)
-                dest2[i][j] = vec.base()[nDofs1*numEq1 + i*(numEq2-numEq1) + (j - numEq1)];
-        }
-//         printvector(std::cout, dest1, "dest1", "row", 200, 1, 3);
-//         printvector(std::cout, dest2, "dest2", "row", 200, 1, 3);
-    }
-
-
-    /*!
-     * \brief Merge individual jacobian matrices of the sub models
-     *        into a global jacobian matrix.
-     *
-     * \param M1 Input jacobian matrix of subdomain 1
-     * \param M2 Input jacobian matrix of subdomain 2
-     * \param M Destination global jacobian matrix
-     *
-     */
-    static void mergeMatrices(const JacobianMatrix1 &M1,
-                              const JacobianMatrix2 &M2,
-                              JacobianMatrix &M)
-    {
-        DUNE_THROW(Dune::NotImplemented, "mergeMatrices in coupled common");
-    }
-
-    /*!
-     * \brief Copy a sub matrix into into the main diagonal of the global matrix.
-     *
-     * \param Msub Sub matrix
-     * \param M Global matrix
-     * \param offset Offset in rows and columns
-     *
-     */
-    template <class SubMatrix>
-    static void copyMatrix(const SubMatrix &Msub,
-                           JacobianMatrix &M,
-                           size_t offset)
-    {
-        // loop over all rows of the submatrix
-        typedef typename SubMatrix::ConstRowIterator RowIterator;
-        typedef typename SubMatrix::ConstColIterator ColIterator;
-        RowIterator endRow = Msub.end();
-        for (RowIterator row = Msub.begin(); row != endRow; ++row) {
-            // loop over columns of the current row
-            ColIterator endCol = row->end();
-            for (ColIterator col = row->begin(); col != endCol; ++ col) {
-                // copy entry in the global matrix
-                M[row.index() + offset][col.index() + offset]
-                    = *col;
-            }
-        }
-    }
-
-};
-} // namespace Dumux
-
-#endif // DUMUX_SPLIT_AND_MERGE_HH
+#endif
diff --git a/dumux/multidomain/common/subdomainproperties.hh b/dumux/multidomain/common/subdomainproperties.hh
index 4af5c2a8faca706ee4c54595288f702b843a6ff1..93321d681b0f4da8e8c3603a79a4096d742b7c6f 100644
--- a/dumux/multidomain/common/subdomainproperties.hh
+++ b/dumux/multidomain/common/subdomainproperties.hh
@@ -1,66 +1,8 @@
-// -*- 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 Properties
- * \ingroup ImplicitProperties
- * \ingroup MultidomainModel
- * \brief Specify properties required for the subdomains of the coupled model
- */
-#ifndef DUMUX_SUBDOMAIN_PROPERTIES_HH
-#define DUMUX_SUBDOMAIN_PROPERTIES_HH
+#ifndef DUMUX_SUBDOMAIN_PROPERTIES_HH_OLD
+#define DUMUX_SUBDOMAIN_PROPERTIES_HH_OLD
 
-#include <dumux/common/propertysystem.hh>
+#warning this header is deprecated, use dumux/multidomain/subdomainproperties.hh instead
 
-namespace Dumux
-{
-namespace Properties
-{
+#include <dumux/multidomain/subdomainproperties.hh>
 
-//////////////////////////////////////////////////////////////////
-// Type tags
-//////////////////////////////////////////////////////////////////
-
-//! The type tag from which sub-problems of coupling models inherit
-NEW_TYPE_TAG(SubDomain);
-
-//////////////////////////////////////////////////////////////////
-// Property tags
-//////////////////////////////////////////////////////////////////
-//! Specifies the host grid
-NEW_PROP_TAG(Grid);
-
-//! Specifies the scalar grid function space used for sub-problems
-NEW_PROP_TAG(ScalarGridFunctionSpace);
-
-//! Specifies the grid function space used for sub-problems
-NEW_PROP_TAG(GridFunctionSpace);
-
-//! Specifies the type of the constraints
-NEW_PROP_TAG(Constraints);
-
-//! Specifies the local finite element space
-NEW_PROP_TAG(LocalFEMSpace);
-
-//! Specifies the local operator
-NEW_PROP_TAG(LocalOperator);
-
-} // namespace Properties
-} // namespace Dumux
-#endif // DUMUX_SUBDOMAIN_PROPERTIES_HH
+#endif
diff --git a/dumux/multidomain/common/subdomainpropertydefaults.hh b/dumux/multidomain/common/subdomainpropertydefaults.hh
index e1227178637d170eca18d7f3a27cf55ee5f15b24..67087a5892355d26d99f4dbc2514a9245b950e71 100644
--- a/dumux/multidomain/common/subdomainpropertydefaults.hh
+++ b/dumux/multidomain/common/subdomainpropertydefaults.hh
@@ -1,140 +1,8 @@
-// -*- 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 Properties
- * \ingroup ImplicitProperties
- * \ingroup MultidomainModel
- * \brief Specify default properties required in the subdomains of dune-multidomain
- */
-#ifndef DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH
-#define DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH
+#ifndef DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH_OLD
+#define DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH_OLD
 
-#include <dune/grid/multidomaingrid.hh>
-#include <dune/pdelab/backend/istlvectorbackend.hh>
-#include <dune/pdelab/backend/istlmatrixbackend.hh>
-#include <dune/pdelab/finiteelementmap/qkfem.hh>
-#include <dune/pdelab/constraints/conforming.hh>
+#warning this header is deprecated, use dumux/multidomain/subdomainpropertydefaults.hh instead
 
-#include "subdomainproperties.hh"
-#include "properties.hh"
-#include "localoperator.hh"
-#include "boxcouplinglocalresidual.hh"
+#include <dumux/multidomain/subdomainpropertydefaults.hh>
 
-namespace Dumux
-{
-
-namespace Properties
-{
-
-// Specifies the grid type for the subdomains
-SET_PROP(SubDomain, Grid)
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomain;
-    typedef typename GET_PROP_TYPE(MultiDomain, Grid) HostGrid;
-    typedef typename Dune::mdgrid::FewSubDomainsTraits<HostGrid::dimension,4> MDGridTraits;
-    typedef typename Dune::MultiDomainGrid<HostGrid, MDGridTraits> Grid;
-public:
-    typedef typename Grid::SubDomainGrid type;
-};
-
-// set the default BaseLocalResidual to BoxCouplingLocalResidual
-SET_TYPE_PROP(SubDomain, BaseLocalResidual, BoxCouplingLocalResidual<TypeTag>);
-
-// set the local operator used for submodels
-SET_TYPE_PROP(SubDomain, LocalOperator,
-              Dumux::PDELab::MultiDomainLocalOperator<TypeTag>);
-
-// use the time manager for the coupled problem in the sub problems
-SET_PROP(SubDomain, TimeManager)
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomainTypeTag;
-public:
-    typedef typename GET_PROP_TYPE(MultiDomainTypeTag, TimeManager) type;
-};
-
-// set the constraints for the sub-models
-SET_TYPE_PROP(SubDomain, Constraints, Dune::PDELab::NoConstraints);
-
-// set the grid functions space for the sub-models
-SET_PROP(SubDomain, ScalarGridFunctionSpace)
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, LocalFEMSpace) FEM;
-    typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
-    typedef typename GET_PROP_TYPE(TypeTag, Constraints) Constraints;
-    enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)};
-public:
-    typedef Dune::PDELab::GridFunctionSpace<GridView, FEM, Constraints,
-        Dune::PDELab::ISTLVectorBackend<> > type;
-};
-
-// set the grid functions space for the sub-models
-SET_PROP(SubDomain, GridFunctionSpace)
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, ScalarGridFunctionSpace) ScalarGridFunctionSpace;
-    enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)};
-    typedef typename Dune::PDELab::EntityBlockedOrderingTag OrderingTag;
-    typedef typename Dune::PDELab::ISTLVectorBackend<> VBE;
-public:
-    typedef Dune::PDELab::PowerGridFunctionSpace<ScalarGridFunctionSpace, numEq, VBE, OrderingTag> type;
-};
-
-// use the local FEM space associated with cubes by default
-SET_PROP(SubDomain, LocalFEMSpace)
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
-    typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
-    enum{dim = GridView::dimension};
-public:
-    typedef Dune::PDELab::QkLocalFiniteElementMap<GridView,Scalar,Scalar,1>  type;
-};
-
-SET_PROP(SubDomain, ParameterTree)
-{
-private:
-    typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomainTypeTag;
-    typedef typename GET_PROP(MultiDomainTypeTag, ParameterTree) ParameterTree;
-public:
-    typedef typename ParameterTree::type type;
-
-    static type &tree()
-    { return ParameterTree::tree(); }
-
-    static type &compileTimeParams()
-    { return ParameterTree::compileTimeParams(); }
-
-    static type &runTimeParams()
-    { return ParameterTree::runTimeParams(); }
-
-    static type &deprecatedRunTimeParams()
-    { return ParameterTree::deprecatedRunTimeParams(); }
-
-    static type &unusedNewRunTimeParams()
-    { return ParameterTree::unusedNewRunTimeParams(); }
-};
-
-} // namespace Properties
-} // namespace Dumux
-
-#endif // DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH
+#endif
diff --git a/dumux/multidomain/common/convergencewriter.hh b/dumux/multidomain/convergencewriter.hh
similarity index 100%
rename from dumux/multidomain/common/convergencewriter.hh
rename to dumux/multidomain/convergencewriter.hh
diff --git a/dumux/multidomain/common/localoperator.hh b/dumux/multidomain/localoperator.hh
similarity index 100%
rename from dumux/multidomain/common/localoperator.hh
rename to dumux/multidomain/localoperator.hh
diff --git a/dumux/multidomain/common/model.hh b/dumux/multidomain/model.hh
similarity index 100%
rename from dumux/multidomain/common/model.hh
rename to dumux/multidomain/model.hh
diff --git a/dumux/multidomain/common/newtoncontroller.hh b/dumux/multidomain/newtoncontroller.hh
similarity index 100%
rename from dumux/multidomain/common/newtoncontroller.hh
rename to dumux/multidomain/newtoncontroller.hh
diff --git a/dumux/multidomain/common/problem.hh b/dumux/multidomain/problem.hh
similarity index 100%
rename from dumux/multidomain/common/problem.hh
rename to dumux/multidomain/problem.hh
diff --git a/dumux/multidomain/common/properties.hh b/dumux/multidomain/properties.hh
similarity index 100%
rename from dumux/multidomain/common/properties.hh
rename to dumux/multidomain/properties.hh
diff --git a/dumux/multidomain/common/propertydefaults.hh b/dumux/multidomain/propertydefaults.hh
similarity index 100%
rename from dumux/multidomain/common/propertydefaults.hh
rename to dumux/multidomain/propertydefaults.hh
diff --git a/dumux/multidomain/splitandmerge.hh b/dumux/multidomain/splitandmerge.hh
new file mode 100644
index 0000000000000000000000000000000000000000..297971ff9cbc346a4629eb63e1392aea953d2fd3
--- /dev/null
+++ b/dumux/multidomain/splitandmerge.hh
@@ -0,0 +1,240 @@
+// -*- 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 Some methods required by several classes of the coupling model.
+ */
+#ifndef DUMUX_SPLIT_AND_MERGE_HH
+#define DUMUX_SPLIT_AND_MERGE_HH
+
+#include "properties.hh"
+#include <dumux/common/valgrind.hh>
+
+namespace Dumux
+{
+/*!
+ * \ingroup MultidomainModel
+ * \brief Some methods required by several classes of the coupling model.
+ */
+template<class TypeTag>
+class SplitAndMerge
+{
+    typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubTypeTag1;
+    typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubTypeTag2;
+
+    typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector;
+    typedef typename GET_PROP_TYPE(SubTypeTag1, SolutionVector) SolutionVector1;
+    typedef typename GET_PROP_TYPE(SubTypeTag2, SolutionVector) SolutionVector2;
+
+    typedef typename GET_PROP_TYPE(TypeTag, JacobianMatrix) JacobianMatrix;
+    typedef typename GET_PROP_TYPE(SubTypeTag1, JacobianMatrix) JacobianMatrix1;
+    typedef typename GET_PROP_TYPE(SubTypeTag2, JacobianMatrix) JacobianMatrix2;
+
+
+    enum {
+            numEq1 = GET_PROP_VALUE(SubTypeTag1, NumEq),
+            numEq2 = GET_PROP_VALUE(SubTypeTag2, NumEq)
+    };
+public:
+    /*!
+     * \brief Merge two solution vectors of the sub models into a
+     *        global vector: nonoverlapping case.
+     *
+     * \param vec1 Input vector with solution of subdomain 1
+     * \param vec2 Input vector with solution of subdomain 2
+     * \param dest Destination vector for global solution
+     *
+     */
+    static void mergeSolVectors(const SolutionVector1 &vec1,
+                                const SolutionVector2 &vec2,
+                                SolutionVector &dest)
+    {
+//         printvector(std::cout, vec1, "vec1", "row", 200, 1, 3);
+//         printvector(std::cout, vec2, "vec2", "row", 200, 1, 3);
+
+        int nDofs1 = vec1.size();
+        int nDofs2 = vec2.size();
+
+        for (int i = 0; i < nDofs1; ++i)
+            for (int j = 0; j < numEq1; j++)
+            {
+                dest.base()[i*numEq1 + j][0] = vec1[i][j];
+
+                Valgrind::CheckDefined(dest.base()[i*numEq1 + j][0]);
+            }
+
+        for (int i = 0; i < nDofs2; ++i)
+            for (int j = 0; j < numEq2; j++)
+            {
+                dest.base()[nDofs1*numEq1 + i*numEq2 + j][0] = vec2[i][j];
+
+                Valgrind::CheckDefined(dest.base()[nDofs1*numEq1 + i*numEq2 + j][0]);
+            }
+//         printvector(std::cout, dest.base(), "dest", "row", 200, 1, 3);
+    }
+
+    /*!
+     * \brief Split a global solution vector into two solution vectors
+     *        of the sub models: nonoverlapping case.
+     *
+     * \param vec Input vector with global solution
+     * \param dest1 Destination vector with solution of subdomain 1
+     * \param dest2 Destination vector with solution of subdomain 2
+     *
+     */
+    static void splitSolVector(const SolutionVector &vec,
+                               SolutionVector1 &dest1,
+                               SolutionVector2 &dest2)
+    {
+//         printvector(std::cout, vec.base(), "vec", "row", 200, 1, 3);
+
+        int nDofs1 = dest1.size();
+        int nDofs2 = dest2.size();
+
+        for (int i = 0; i < nDofs1; ++i)
+            for (int j = 0; j < numEq1; j++)
+                dest1[i][j] = vec.base()[i*numEq1 + j][0];
+
+        for (int i = 0; i < nDofs2; ++i)
+            for (int j = 0; j < numEq2; j++)
+                dest2[i][j] = vec.base()[nDofs1*numEq1 + i*numEq2 + j][0];
+
+//         printvector(std::cout, dest1, "dest1", "row", 200, 1, 3);
+//         printvector(std::cout, dest2, "dest2", "row", 200, 1, 3);
+    }
+
+    /*!
+     * \brief Merge two solution vectors of the sub models into a
+     *        global vector: more general case.
+     *
+     * \param vec1 Input vector with solution of subdomain 1
+     * \param vec2 Input vector with solution of subdomain 2
+     * \param dest Destination vector for global solution
+     * \param subDOFToCoupledDOF unused
+     *
+     */
+    static void mergeSolVectors(const SolutionVector1 &vec1,
+                                 const SolutionVector2 &vec2,
+                                 SolutionVector &dest,
+                                 const std::vector<int>& subDOFToCoupledDOF)
+    {
+        int nDofs1 = vec1.size();
+        int nDofs2 = vec2.size();
+//         printvector(std::cout, vec1, "vec1", "row", 200, 1, 3);
+//         printvector(std::cout, vec2, "vec2", "row", 200, 1, 3);
+
+        for (int i = 0; i < nDofs1; ++i)
+            for (int j = 0; j < numEq1; j++)
+                dest.base()[i*numEq1 + j] = vec1[i][j];
+
+        for (int i = 0; i < nDofs2; ++i)
+        {
+            for (int j = numEq1; j < numEq2; j++)
+                dest.base()[nDofs1*numEq1 + i*(numEq2-numEq1) + (j - numEq1)] = vec2[i][j];
+        }
+//         printvector(std::cout, dest.base(), "dest", "row", 200, 1, 3);
+    }
+
+    /*!
+     * \brief Split a global solution vector into two solution vectors
+     *        of the sub models: more general case.
+     *
+     * \param vec Input vector with global solution
+     * \param dest1 Destination vector with solution of subdomain 1
+     * \param dest2 Destination vector with solution of subdomain 2
+     * \param subDOFToCoupledDOF Identification vector between sub and global DOFs
+     *
+     */
+    static void splitSolVector(const SolutionVector &vec,
+                               SolutionVector1 &dest1,
+                               SolutionVector2 &dest2,
+                               const std::vector<int>& subDOFToCoupledDOF)
+    {
+        int nDofs1 = dest1.size();
+        int nDofs2 = dest2.size();
+
+//         printvector(std::cout, vec.base(), "vec", "row", 200, 1, 3);
+        for (int i = 0; i < nDofs1; ++i)
+            for (int j = 0; j < numEq1; j++)
+                dest1[i][j] = vec.base()[i*numEq1 + j];
+
+        for (int i = 0; i < nDofs2; ++i)
+        {
+            int blockIdxCoupled = subDOFToCoupledDOF[i];
+            for (int j = 0; j < numEq1; j++)
+            {
+                dest2[i][j] = vec.base()[blockIdxCoupled*numEq1 + j];
+            }
+
+            for (int j = numEq1; j < numEq2; j++)
+                dest2[i][j] = vec.base()[nDofs1*numEq1 + i*(numEq2-numEq1) + (j - numEq1)];
+        }
+//         printvector(std::cout, dest1, "dest1", "row", 200, 1, 3);
+//         printvector(std::cout, dest2, "dest2", "row", 200, 1, 3);
+    }
+
+
+    /*!
+     * \brief Merge individual jacobian matrices of the sub models
+     *        into a global jacobian matrix.
+     *
+     * \param M1 Input jacobian matrix of subdomain 1
+     * \param M2 Input jacobian matrix of subdomain 2
+     * \param M Destination global jacobian matrix
+     *
+     */
+    static void mergeMatrices(const JacobianMatrix1 &M1,
+                              const JacobianMatrix2 &M2,
+                              JacobianMatrix &M)
+    {
+        DUNE_THROW(Dune::NotImplemented, "mergeMatrices in coupled common");
+    }
+
+    /*!
+     * \brief Copy a sub matrix into into the main diagonal of the global matrix.
+     *
+     * \param Msub Sub matrix
+     * \param M Global matrix
+     * \param offset Offset in rows and columns
+     *
+     */
+    template <class SubMatrix>
+    static void copyMatrix(const SubMatrix &Msub,
+                           JacobianMatrix &M,
+                           size_t offset)
+    {
+        // loop over all rows of the submatrix
+        typedef typename SubMatrix::ConstRowIterator RowIterator;
+        typedef typename SubMatrix::ConstColIterator ColIterator;
+        RowIterator endRow = Msub.end();
+        for (RowIterator row = Msub.begin(); row != endRow; ++row) {
+            // loop over columns of the current row
+            ColIterator endCol = row->end();
+            for (ColIterator col = row->begin(); col != endCol; ++ col) {
+                // copy entry in the global matrix
+                M[row.index() + offset][col.index() + offset]
+                    = *col;
+            }
+        }
+    }
+
+};
+} // namespace Dumux
+
+#endif // DUMUX_SPLIT_AND_MERGE_HH
diff --git a/dumux/multidomain/subdomainproperties.hh b/dumux/multidomain/subdomainproperties.hh
new file mode 100644
index 0000000000000000000000000000000000000000..4af5c2a8faca706ee4c54595288f702b843a6ff1
--- /dev/null
+++ b/dumux/multidomain/subdomainproperties.hh
@@ -0,0 +1,66 @@
+// -*- 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 Properties
+ * \ingroup ImplicitProperties
+ * \ingroup MultidomainModel
+ * \brief Specify properties required for the subdomains of the coupled model
+ */
+#ifndef DUMUX_SUBDOMAIN_PROPERTIES_HH
+#define DUMUX_SUBDOMAIN_PROPERTIES_HH
+
+#include <dumux/common/propertysystem.hh>
+
+namespace Dumux
+{
+namespace Properties
+{
+
+//////////////////////////////////////////////////////////////////
+// Type tags
+//////////////////////////////////////////////////////////////////
+
+//! The type tag from which sub-problems of coupling models inherit
+NEW_TYPE_TAG(SubDomain);
+
+//////////////////////////////////////////////////////////////////
+// Property tags
+//////////////////////////////////////////////////////////////////
+//! Specifies the host grid
+NEW_PROP_TAG(Grid);
+
+//! Specifies the scalar grid function space used for sub-problems
+NEW_PROP_TAG(ScalarGridFunctionSpace);
+
+//! Specifies the grid function space used for sub-problems
+NEW_PROP_TAG(GridFunctionSpace);
+
+//! Specifies the type of the constraints
+NEW_PROP_TAG(Constraints);
+
+//! Specifies the local finite element space
+NEW_PROP_TAG(LocalFEMSpace);
+
+//! Specifies the local operator
+NEW_PROP_TAG(LocalOperator);
+
+} // namespace Properties
+} // namespace Dumux
+#endif // DUMUX_SUBDOMAIN_PROPERTIES_HH
diff --git a/dumux/multidomain/subdomainpropertydefaults.hh b/dumux/multidomain/subdomainpropertydefaults.hh
new file mode 100644
index 0000000000000000000000000000000000000000..e1227178637d170eca18d7f3a27cf55ee5f15b24
--- /dev/null
+++ b/dumux/multidomain/subdomainpropertydefaults.hh
@@ -0,0 +1,140 @@
+// -*- 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 Properties
+ * \ingroup ImplicitProperties
+ * \ingroup MultidomainModel
+ * \brief Specify default properties required in the subdomains of dune-multidomain
+ */
+#ifndef DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH
+#define DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH
+
+#include <dune/grid/multidomaingrid.hh>
+#include <dune/pdelab/backend/istlvectorbackend.hh>
+#include <dune/pdelab/backend/istlmatrixbackend.hh>
+#include <dune/pdelab/finiteelementmap/qkfem.hh>
+#include <dune/pdelab/constraints/conforming.hh>
+
+#include "subdomainproperties.hh"
+#include "properties.hh"
+#include "localoperator.hh"
+#include "boxcouplinglocalresidual.hh"
+
+namespace Dumux
+{
+
+namespace Properties
+{
+
+// Specifies the grid type for the subdomains
+SET_PROP(SubDomain, Grid)
+{
+private:
+    typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomain;
+    typedef typename GET_PROP_TYPE(MultiDomain, Grid) HostGrid;
+    typedef typename Dune::mdgrid::FewSubDomainsTraits<HostGrid::dimension,4> MDGridTraits;
+    typedef typename Dune::MultiDomainGrid<HostGrid, MDGridTraits> Grid;
+public:
+    typedef typename Grid::SubDomainGrid type;
+};
+
+// set the default BaseLocalResidual to BoxCouplingLocalResidual
+SET_TYPE_PROP(SubDomain, BaseLocalResidual, BoxCouplingLocalResidual<TypeTag>);
+
+// set the local operator used for submodels
+SET_TYPE_PROP(SubDomain, LocalOperator,
+              Dumux::PDELab::MultiDomainLocalOperator<TypeTag>);
+
+// use the time manager for the coupled problem in the sub problems
+SET_PROP(SubDomain, TimeManager)
+{
+private:
+    typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomainTypeTag;
+public:
+    typedef typename GET_PROP_TYPE(MultiDomainTypeTag, TimeManager) type;
+};
+
+// set the constraints for the sub-models
+SET_TYPE_PROP(SubDomain, Constraints, Dune::PDELab::NoConstraints);
+
+// set the grid functions space for the sub-models
+SET_PROP(SubDomain, ScalarGridFunctionSpace)
+{
+private:
+    typedef typename GET_PROP_TYPE(TypeTag, LocalFEMSpace) FEM;
+    typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
+    typedef typename GET_PROP_TYPE(TypeTag, Constraints) Constraints;
+    enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)};
+public:
+    typedef Dune::PDELab::GridFunctionSpace<GridView, FEM, Constraints,
+        Dune::PDELab::ISTLVectorBackend<> > type;
+};
+
+// set the grid functions space for the sub-models
+SET_PROP(SubDomain, GridFunctionSpace)
+{
+private:
+    typedef typename GET_PROP_TYPE(TypeTag, ScalarGridFunctionSpace) ScalarGridFunctionSpace;
+    enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)};
+    typedef typename Dune::PDELab::EntityBlockedOrderingTag OrderingTag;
+    typedef typename Dune::PDELab::ISTLVectorBackend<> VBE;
+public:
+    typedef Dune::PDELab::PowerGridFunctionSpace<ScalarGridFunctionSpace, numEq, VBE, OrderingTag> type;
+};
+
+// use the local FEM space associated with cubes by default
+SET_PROP(SubDomain, LocalFEMSpace)
+{
+private:
+    typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
+    typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
+    enum{dim = GridView::dimension};
+public:
+    typedef Dune::PDELab::QkLocalFiniteElementMap<GridView,Scalar,Scalar,1>  type;
+};
+
+SET_PROP(SubDomain, ParameterTree)
+{
+private:
+    typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomainTypeTag;
+    typedef typename GET_PROP(MultiDomainTypeTag, ParameterTree) ParameterTree;
+public:
+    typedef typename ParameterTree::type type;
+
+    static type &tree()
+    { return ParameterTree::tree(); }
+
+    static type &compileTimeParams()
+    { return ParameterTree::compileTimeParams(); }
+
+    static type &runTimeParams()
+    { return ParameterTree::runTimeParams(); }
+
+    static type &deprecatedRunTimeParams()
+    { return ParameterTree::deprecatedRunTimeParams(); }
+
+    static type &unusedNewRunTimeParams()
+    { return ParameterTree::unusedNewRunTimeParams(); }
+};
+
+} // namespace Properties
+} // namespace Dumux
+
+#endif // DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH
diff --git a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh
index 288d03957d98f953578532ffbef0da348302c8b8..a322b57de6e66c99c46e068f48c2de604f32c5f8 100644
--- a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh
+++ b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh
@@ -38,7 +38,7 @@
 #include <dune/grid/io/file/dgfparser.hh>
 
 #include <dumux/material/fluidsystems/h2oair.hh>
-#include <dumux/multidomain/common/problem.hh>
+#include <dumux/multidomain/problem.hh>
 #include <dumux/multidomain/2cnistokes2p2cni/localoperator.hh>
 #include <dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh>
 
diff --git a/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh b/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh
index 73c664b49b70ddaebc636cfee3c394079117b6ac..216e3bf2c9e4df0a24db0b7362260c69d981c6a4 100644
--- a/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh
+++ b/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh
@@ -30,8 +30,8 @@
 #include <dumux/porousmediumflow/2p2c/implicit/model.hh>
 #include <dumux/io/gnuplotinterface.hh>
 #include <dumux/multidomain/2cnistokes2p2cni/2p2cnicouplinglocalresidual.hh>
-#include <dumux/multidomain/common/subdomainpropertydefaults.hh>
-#include <dumux/multidomain/common/localoperator.hh>
+#include <dumux/multidomain/subdomainpropertydefaults.hh>
+#include <dumux/multidomain/localoperator.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh>
 
 #include "2cnistokes2p2cnispatialparams.hh"
diff --git a/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh b/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh
index 87f20d8cbfaa02c23b8e1a6cfa3038c25f4b63ab..6fc08b9ba642327c88e8fcddc94e34f0a0d369af 100644
--- a/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh
+++ b/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh
@@ -26,7 +26,7 @@
 
 #include <dumux/freeflow/stokesncni/model.hh>
 #include <dumux/multidomain/2cnistokes2p2cni/stokesncnicouplinglocalresidual.hh>
-#include <dumux/multidomain/common/subdomainpropertydefaults.hh>
+#include <dumux/multidomain/subdomainpropertydefaults.hh>
 
 namespace Dumux
 {
diff --git a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh b/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh
index c476dbf1ec5cb57b4102b825a0261135d7247257..e8bd4f59befbeb23f9f8a84de656f46759050603 100644
--- a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh
+++ b/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh
@@ -29,7 +29,7 @@
 #include <dune/grid/io/file/dgfparser.hh>
 
 #include <dumux/material/fluidsystems/h2oair.hh>
-#include <dumux/multidomain/common/problem.hh>
+#include <dumux/multidomain/problem.hh>
 #include <dumux/multidomain/2cnistokes2p2cni/localoperator.hh>
 #include <dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh>
 
diff --git a/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh b/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh
index c1d002ca16bbcabe3cbe3316f5081bd81c85cb39..c6fc61a2b32fa36424af5bc9f186cc051a379e0a 100644
--- a/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh
+++ b/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh
@@ -28,8 +28,8 @@
 #include <dumux/porousmediumflow/implicit/problem.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/thermalconductivityjohansen.hh>
 #include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh>
-#include <dumux/multidomain/common/subdomainpropertydefaults.hh>
-#include <dumux/multidomain/common/localoperator.hh>
+#include <dumux/multidomain/subdomainpropertydefaults.hh>
+#include <dumux/multidomain/localoperator.hh>
 #include <dumux/multidomain/2cnistokes2p2cni/2p2cnicouplinglocalresidual.hh>
 
 #include "2cnizeroeq2p2cnispatialparameters.hh"
diff --git a/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh b/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh
index 55f39c590c75dd94195c552d1d046ad414ea6b01..15f52e7cb0d0b29c3df1578e93f946b9e81a50d3 100644
--- a/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh
+++ b/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh
@@ -25,7 +25,7 @@
 #define DUMUX_ZEROEQTWOCNI_SUBPROBLEM_HH
 
 #include <dumux/freeflow/zeroeqncni/model.hh>
-#include <dumux/multidomain/common/subdomainpropertydefaults.hh>
+#include <dumux/multidomain/subdomainpropertydefaults.hh>
 #include <dumux/multidomain/2cnistokes2p2cni/stokesncnicouplinglocalresidual.hh>
 
 namespace Dumux
diff --git a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh
index b0059934f69c0f8a5f1dd2f14fa298df1f636e47..257feded9262b80471e7b876568f53f3ff235ee4 100644
--- a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh
+++ b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh
@@ -38,7 +38,7 @@
 #include <dune/grid/io/file/dgfparser.hh>
 
 #include <dumux/material/fluidsystems/h2oair.hh>
-#include <dumux/multidomain/common/problem.hh>
+#include <dumux/multidomain/problem.hh>
 #include <dumux/multidomain/2cstokes2p2c/localoperator.hh>
 #include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh>
 
diff --git a/test/multidomain/2cstokes2p2c/2p2csubproblem.hh b/test/multidomain/2cstokes2p2c/2p2csubproblem.hh
index 9e73ad3a825ff3264815ef29b0b8e6a914be612c..97fb3d109a50b6665a45c72b635ae2fd9a3663d7 100644
--- a/test/multidomain/2cstokes2p2c/2p2csubproblem.hh
+++ b/test/multidomain/2cstokes2p2c/2p2csubproblem.hh
@@ -29,8 +29,8 @@
 #include <dumux/porousmediumflow/2p2c/implicit/indices.hh>
 #include <dumux/porousmediumflow/implicit/problem.hh>
 #include <dumux/multidomain/2cstokes2p2c/2p2ccouplinglocalresidual.hh>
-#include <dumux/multidomain/common/subdomainpropertydefaults.hh>
-#include <dumux/multidomain/common/localoperator.hh>
+#include <dumux/multidomain/subdomainpropertydefaults.hh>
+#include <dumux/multidomain/localoperator.hh>
 
 #include "2cstokes2p2cspatialparams.hh"
 
diff --git a/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh b/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh
index 6cf0ae00e95e7608941345eca36a410ad0a23d4d..9c2d290d7274badb83b3a21e38edae54ce40c7a0 100644
--- a/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh
+++ b/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh
@@ -26,7 +26,7 @@
 
 #include <dumux/freeflow/stokesnc/model.hh>
 #include <dumux/multidomain/2cstokes2p2c/stokesnccouplinglocalresidual.hh>
-#include <dumux/multidomain/common/subdomainpropertydefaults.hh>
+#include <dumux/multidomain/subdomainpropertydefaults.hh>
 
 namespace Dumux
 {
diff --git a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh b/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh
index 9054039ddaf71011f4ddc20318fbc48d8f272c64..9bb2b2b4ab577c735e0eb45e58ed2621f4153384 100644
--- a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh
+++ b/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh
@@ -29,7 +29,7 @@
 #include <dune/grid/io/file/dgfparser.hh>
 
 #include <dumux/material/fluidsystems/h2oair.hh>
-#include <dumux/multidomain/common/problem.hh>
+#include <dumux/multidomain/problem.hh>
 #include <dumux/multidomain/2cstokes2p2c/localoperator.hh>
 #include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh>
 
diff --git a/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh b/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh
index 1ab0ca40a3991fef299f42792776c19b8cd33266..4bf1c105e8060718f6f7d284b19c7f9b28329f23 100644
--- a/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh
+++ b/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh
@@ -27,8 +27,8 @@
 
 #include <dumux/porousmediumflow/2p2c/implicit/indices.hh>
 #include <dumux/porousmediumflow/implicit/problem.hh>
-#include <dumux/multidomain/common/subdomainpropertydefaults.hh>
-#include <dumux/multidomain/common/localoperator.hh>
+#include <dumux/multidomain/subdomainpropertydefaults.hh>
+#include <dumux/multidomain/localoperator.hh>
 #include <dumux/multidomain/2cstokes2p2c/2p2ccouplinglocalresidual.hh>
 
 #include "2czeroeq2p2cspatialparameters.hh"
diff --git a/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh b/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh
index b97caf150c9a61282f1589e21098378d7c340a59..82d4bbb4f651da1db08b01e5a1eac037be0345d0 100644
--- a/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh
+++ b/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh
@@ -25,7 +25,7 @@
 #define DUMUX_ZEROEQTWOCSUBPROBLEM_HH
 
 #include <dumux/freeflow/zeroeqnc/model.hh>
-#include <dumux/multidomain/common/subdomainpropertydefaults.hh>
+#include <dumux/multidomain/subdomainpropertydefaults.hh>
 #include <dumux/multidomain/2cstokes2p2c/stokesnccouplinglocalresidual.hh>
 
 namespace Dumux