diff --git a/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh b/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
index c2539c371d89950ea832e2c5e7f3e127fe3be7fb..6e7399ff3419b525b4352d88d3149d91a614b93a 100644
--- a/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
+++ b/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
@@ -305,46 +305,11 @@ public:
         continua_["continuum"].solver_          = solver;
         continua_["continuum"].localAssembler_  = localAssembler;
 
-        ////////////////////////////////////////////////////////////////////////////////////
-        //  For each continuum, merge the Dirichlet boundary with all interface boundaries
-        ////////////////////////////////////////////////////////////////////////////////////
-        
-        for (ContinuumIterator cIt = continua_.begin(); cIt != continua_.end(); ++cIt) {
-            
-            // name of the current continuum
-            const std::string& name = cIt->first;
-            
-            // short-cut to avoid frequent map look-up
-            Dune::BitSetVector<dim>& dirichletAndCouplingNodes = continua_[name].dirichletAndCouplingNodes_;
-        
-            dirichletAndCouplingNodes.resize(complex.continuumGrid(name)->size(dim));
-        
-            // first copy the true Dirichlet boundary
-            const LeafBoundaryPatch<ContinuumGridType>& dirichletBoundary = complex.continua_.find(name)->second.dirichletBoundary_;
-
-            for (int i=0; i<dirichletAndCouplingNodes.size(); i++)
-                dirichletAndCouplingNodes[i] = dirichletBoundary.containsVertex(i);
-
-            const LeafBoundaryPatch<ContinuumGridType>& continuumInterfaceBoundary 
-                    = complex.coupling(std::make_pair("rod",name)).continuumInterfaceBoundary_;
-
-            for (int i=0; i<dirichletAndCouplingNodes.size(); i++) {
-                bool v = continuumInterfaceBoundary.containsVertex(i);
-                for (int j=0; j<dim; j++)
-                    dirichletAndCouplingNodes[i][j] = dirichletAndCouplingNodes[i][j] or v;
-            }
-        
-        }
-        
+        mergeDirichletAndCouplingBoundaries();
     }
     
-    
-    
-    
-    
-    
-    
-        
+    void mergeDirichletAndCouplingBoundaries();
+
         
     /** \brief Do one Steklov-Poincare step
      * \param[in,out] lambda The old and new iterate
@@ -437,6 +402,45 @@ public:
 private:
 };
 
+
+template <class RodGridType, class ContinuumGridType>
+void RodContinuumSteklovPoincareStep<RodGridType,ContinuumGridType>::
+mergeDirichletAndCouplingBoundaries()
+{
+    ////////////////////////////////////////////////////////////////////////////////////
+    //  For each continuum, merge the Dirichlet boundary with all interface boundaries
+    ////////////////////////////////////////////////////////////////////////////////////
+        
+    for (ContinuumIterator cIt = continua_.begin(); cIt != continua_.end(); ++cIt) {
+            
+        // name of the current continuum
+        const std::string& name = cIt->first;
+            
+        // short-cut to avoid frequent map look-up
+        Dune::BitSetVector<dim>& dirichletAndCouplingNodes = continua_[name].dirichletAndCouplingNodes_;
+        
+        dirichletAndCouplingNodes.resize(complex_.continuumGrid(name)->size(dim));
+        
+        // first copy the true Dirichlet boundary
+        const LeafBoundaryPatch<ContinuumGridType>& dirichletBoundary = complex_.continua_.find(name)->second.dirichletBoundary_;
+
+        for (int i=0; i<dirichletAndCouplingNodes.size(); i++)
+            dirichletAndCouplingNodes[i] = dirichletBoundary.containsVertex(i);
+
+        const LeafBoundaryPatch<ContinuumGridType>& continuumInterfaceBoundary 
+                = complex_.coupling(std::make_pair("rod",name)).continuumInterfaceBoundary_;
+
+        for (int i=0; i<dirichletAndCouplingNodes.size(); i++) {
+            bool v = continuumInterfaceBoundary.containsVertex(i);
+            for (int j=0; j<dim; j++)
+                dirichletAndCouplingNodes[i][j] = dirichletAndCouplingNodes[i][j] or v;
+        }
+        
+    }
+        
+}
+    
+
 template <class RodGridType, class ContinuumGridType>
 RigidBodyMotion<3>::TangentVector RodContinuumSteklovPoincareStep<RodGridType,ContinuumGridType>::
 rodDirichletToNeumannMap(const RigidBodyMotion<3>& lambda) const