diff --git a/src/configuration.hh b/src/configuration.hh
index 0b23bda122d9bc801a3bdbd4f67224879b30bf63..2f7081ce66d924fb399d70ba2dd6ac8f6b11a7ec 100644
--- a/src/configuration.hh
+++ b/src/configuration.hh
@@ -2,7 +2,7 @@
 #define CONFIGURATION_HH
 
 #include <dune/common/fvector.hh>
-#include "quaternion.hh"
+#include "rotation.hh"
 
 /** \brief Configuration of a nonlinear rod in 3d */
 struct Configuration 
@@ -11,7 +11,7 @@ struct Configuration
     Dune::FieldVector<double,3> r;
 
     // Rotational part
-    Quaternion<double> q;
+    Rotation<3,double> q;
 
 };
 
diff --git a/src/rodassembler.hh b/src/rodassembler.hh
index f5eb976724136095da4ddc72651cc83914edb6a4..403000616b62c5fca72a3f17c31f4f044ccdb7b8 100644
--- a/src/rodassembler.hh
+++ b/src/rodassembler.hh
@@ -167,7 +167,7 @@ public:
             if (i<3)
                 c.r[i] += eps;
             else
-                c.q = c.q.mult(Quaternion<double>::exp((i==3)*eps, 
+                c.q = c.q.mult(Rotation<3,double>::exp((i==3)*eps, 
                                                        (i==4)*eps, 
                                                        (i==5)*eps));
         }
@@ -194,7 +194,7 @@ public:
                 referenceConfiguration_[idx].r[0] = 0;
                 referenceConfiguration_[idx].r[1] = 0;
                 referenceConfiguration_[idx].r[2] = it->geometry().corner(0)[0];
-                referenceConfiguration_[idx].q = Quaternion<double>::identity();
+                referenceConfiguration_[idx].q = Rotation<3,double>::identity();
             }
 
         }
diff --git a/src/rodsolver.cc b/src/rodsolver.cc
index 23868b614784d429bc26e3120af393a5f9617047..fc0cc387b28ab16fd15a42f59164ba3b8dfe85f4 100644
--- a/src/rodsolver.cc
+++ b/src/rodsolver.cc
@@ -70,7 +70,7 @@ void RodSolver<GridType>::setup(const GridType& grid,
 
     EnergyNorm<MatrixType, CorrectionType>* baseEnergyNorm = new EnergyNorm<MatrixType, CorrectionType>(*baseSolverStep);
 
-    LoopSolver<CorrectionType>* baseSolver = new LoopSolver<CorrectionType>(baseSolverStep,
+    ::LoopSolver<CorrectionType>* baseSolver = new ::LoopSolver<CorrectionType>(baseSolverStep,
                                                                             baseIt_,
                                                                             baseTolerance_,
                                                                             baseEnergyNorm,
@@ -106,7 +106,7 @@ void RodSolver<GridType>::setup(const GridType& grid,
 
     h1SemiNorm_ = new H1SemiNorm<CorrectionType>(**A);
 
-    mmgSolver_ = new LoopSolver<CorrectionType>(mmgStep,
+    mmgSolver_ = new ::LoopSolver<CorrectionType>(mmgStep,
                                                      multigridIterations_,
                                                      qpTolerance_,
                                                      h1SemiNorm_,
@@ -318,7 +318,7 @@ void RodSolver<GridType>::solve()
                 newIterate[j].r[k] += corr[j][k];
             
             // Add rotational correction
-            Quaternion<double> qCorr = Quaternion<double>::exp(corr[j][3], corr[j][4], corr[j][5]);
+            Rotation<3,double> qCorr = Rotation<3,double>::exp(corr[j][3], corr[j][4], corr[j][5]);
             newIterate[j].q = newIterate[j].q.mult(qCorr);
             
         }