diff --git a/dumux/multidomain/common/multidomainconvergencewriter.hh b/dumux/multidomain/common/multidomainconvergencewriter.hh
index b49b3f27d0325bcfb20f9a4d7a406c17af718322..ba2e626c0aafc085cfbe6cf16a2b66ef7cbc709c 100644
--- a/dumux/multidomain/common/multidomainconvergencewriter.hh
+++ b/dumux/multidomain/common/multidomainconvergencewriter.hh
@@ -44,6 +44,7 @@ struct MultiDomainConvergenceWriter
 
     typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem;
     typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector;
+    typedef typename GET_PROP_TYPE(TypeTag, SplitAndMerge) SplitAndMerge;
 
     typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubDomain1TypeTag;
     typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubDomain2TypeTag;
@@ -121,8 +122,8 @@ struct MultiDomainConvergenceWriter
             SolutionVector1 deltaU1(uLastIter1);
             SolutionVector2 deltaU2(uLastIter2);
 
-            SplitAndMerge<TypeTag>::splitSolVector(uLastIter, uLastIter1, uLastIter2);
-            SplitAndMerge<TypeTag>::splitSolVector(deltaU, deltaU1, deltaU2);
+            SplitAndMerge::splitSolVector(uLastIter, uLastIter1, uLastIter2);
+            SplitAndMerge::splitSolVector(deltaU, deltaU1, deltaU2);
 
             std::cout << "\n writing convergence file of current Newton iteration \n";
             ctl_.method().model().sdModel1().addConvergenceVtkFields(*vtkMultiWriter1_, uLastIter1, deltaU1);
diff --git a/dumux/multidomain/common/multidomainmodel.hh b/dumux/multidomain/common/multidomainmodel.hh
index 814daa8b326babf7ed2cb01988d48d9537eeb96a..4d22a4a665b8e4f548c5f02703b6c434fcce7a1d 100644
--- a/dumux/multidomain/common/multidomainmodel.hh
+++ b/dumux/multidomain/common/multidomainmodel.hh
@@ -58,7 +58,7 @@ class MultiDomainModel
     typedef typename GET_PROP_TYPE(SubDomain1TypeTag, Model) SubDomainModel1;
     typedef typename GET_PROP_TYPE(SubDomain2TypeTag, Model) SubDomainModel2;
 
-    typedef Dumux::SplitAndMerge<TypeTag> SplitAndMerge;
+    typedef typename GET_PROP_TYPE(TypeTag, SplitAndMerge) SplitAndMerge;
 
     enum {
         numEq1 = GET_PROP_VALUE(TypeTag, NumEq1),
diff --git a/dumux/multidomain/common/multidomainnewtoncontroller.hh b/dumux/multidomain/common/multidomainnewtoncontroller.hh
index cc71989d5332466cb4cfec7160d0f233f58224a4..d021a668d4d027d5f00e312628d8618a3ef851e0 100644
--- a/dumux/multidomain/common/multidomainnewtoncontroller.hh
+++ b/dumux/multidomain/common/multidomainnewtoncontroller.hh
@@ -63,6 +63,7 @@ class MultiDomainNewtonController : public NewtonController<TypeTag>
 
     typedef typename GET_PROP_TYPE(TypeTag, NewtonMethod) NewtonMethod;
     typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector;
+    typedef typename GET_PROP_TYPE(TypeTag, SplitAndMerge) SplitAndMerge;
     typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem;
     typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
 
@@ -241,11 +242,9 @@ public:
     */
     void newtonEndStep(SolutionVector &uCurrentIter, SolutionVector &uLastIter)
     {
-        typedef Dumux::SplitAndMerge<TypeTag> Common;
-
-        Common::splitSolVector(this->model_().curSol(),
-                               this->model_().sdModel1().curSol(),
-                               this->model_().sdModel2().curSol());
+        SplitAndMerge::splitSolVector(this->model_().curSol(),
+                                      this->model_().sdModel1().curSol(),
+                                      this->model_().sdModel2().curSol());
 
         ParentType::newtonEndStep(uCurrentIter, uLastIter);
     }
diff --git a/dumux/multidomain/common/multidomainproperties.hh b/dumux/multidomain/common/multidomainproperties.hh
index 373062fc7e514aef02728bc2c05685cc4890b493..22b480b770be28e83d37cdd546834b9e186aa1bd 100644
--- a/dumux/multidomain/common/multidomainproperties.hh
+++ b/dumux/multidomain/common/multidomainproperties.hh
@@ -120,6 +120,9 @@ NEW_PROP_TAG(ConstraintsTrafo);
 //! Specifies the type of the jacobian matrix as used for the linear solver
 NEW_PROP_TAG(JacobianMatrix);
 
+//! the routines that are used to split and merge solution vectors
+NEW_PROP_TAG(SplitAndMerge);
+
 } // namespace Properties
 } // namespace Dumux
 
diff --git a/dumux/multidomain/common/multidomainpropertydefaults.hh b/dumux/multidomain/common/multidomainpropertydefaults.hh
index 10fb338c8cdb9476bf63e2ec861ad0bb1c4e8885..3ec34d67bd681950eebbac6cbcab574662faffaa 100644
--- a/dumux/multidomain/common/multidomainpropertydefaults.hh
+++ b/dumux/multidomain/common/multidomainpropertydefaults.hh
@@ -240,6 +240,9 @@ SET_INT_PROP(MultiDomain, LinearSolverMaxIterations, 250);
 // set the maximum time step divisions
 SET_INT_PROP(MultiDomain, NewtonMaxTimeStepDivisions, 10);
 
+// set the routines for splitting and merging solution vectors
+SET_TYPE_PROP(MultiDomain, SplitAndMerge, SplitAndMerge<TypeTag>);
+
 } // namespace Properties
 } // namespace Dumux