diff --git a/dune/gfe/quaternion.hh b/dune/gfe/quaternion.hh
index df69b26bde40273cc145594114241cd41e883846..a6580dfd366984eb7d9c78e90012613a6e98bc85 100644
--- a/dune/gfe/quaternion.hh
+++ b/dune/gfe/quaternion.hh
@@ -32,16 +32,6 @@ public:
     /** \brief Copy constructor */
     Quaternion(const Dune::FieldVector<T,4>& other) : Dune::FieldVector<T,4>(other) {}
 
-    /** \brief Constructor with rotation axis and angle */
-    Quaternion(Dune::FieldVector<T,3> axis, T angle) {
-        axis /= axis.two_norm();
-        axis *= std::sin(angle/2);
-        (*this)[0] = axis[0];
-        (*this)[1] = axis[1];
-        (*this)[2] = axis[2];
-        (*this)[3] = std::cos(angle/2);
-    }
-
     /** \brief Assignment from a scalar */
     Quaternion<T>& operator=(const T& v) {
         for (int i=0; i<4; i++)
diff --git a/dune/gfe/rotation.hh b/dune/gfe/rotation.hh
index 398f9d78370c97328ff0383f3571995e90b1089c..2ce7cfbd48260f2ed5200799b55b210d485e0a19 100644
--- a/dune/gfe/rotation.hh
+++ b/dune/gfe/rotation.hh
@@ -192,8 +192,14 @@ public:
     }
     
     Rotation<T,3>(Dune::FieldVector<T,3> axis, T angle) 
-        : Quaternion<T>(axis, angle)
-    {}
+    {
+        axis /= axis.two_norm();
+        axis *= std::sin(angle/2);
+        (*this)[0] = axis[0];
+        (*this)[1] = axis[1];
+        (*this)[2] = axis[2];
+        (*this)[3] = std::cos(angle/2);
+    }
 
     /** \brief Return the identity element */
     static Rotation<T,3> identity() {