diff --git a/dune/gfe/cosseratenergystiffness.hh b/dune/gfe/cosseratenergystiffness.hh
index 4dcc4d5f98d09f819da42e05b0e62b6efc5d5e1a..70e849c76e65fe1658580789d81a954219482bd3 100644
--- a/dune/gfe/cosseratenergystiffness.hh
+++ b/dune/gfe/cosseratenergystiffness.hh
@@ -238,7 +238,7 @@ energy(const Entity& element,
         
         // transform to matrix coordinates:
         // first get the derivative of the embedding of H_1 into R^{3\times3}
-        Dune::array<Dune::FieldMatrix<double,3 , 4>, 3> dd_dq;
+        Tensor3<double,3 , 3, 4> dd_dq;
         value.q.getFirstDerivativesOfDirectors(dd_dq);
         
         //
diff --git a/dune/gfe/quaternion.hh b/dune/gfe/quaternion.hh
index 712b2a549bd5b4389aa6deba6586580e6801fecf..b518c32557f7ff8a5a4b5fd9559853d0e092995c 100644
--- a/dune/gfe/quaternion.hh
+++ b/dune/gfe/quaternion.hh
@@ -6,6 +6,8 @@
 #include <dune/common/fmatrix.hh>
 #include <dune/common/exceptions.hh>
 
+#include <dune/gfe/tensor3.hh>
+
 template <class T>
 class Quaternion : public Dune::FieldVector<T,4>
 {
@@ -94,7 +96,7 @@ public:
         return d;
     }
             
-    void getFirstDerivativesOfDirectors(Dune::array<Dune::FieldMatrix<double,3 , 4>, 3>& dd_dq) const
+    void getFirstDerivativesOfDirectors(Tensor3<double,3, 3, 4>& dd_dq) const
     {
         const Quaternion<T>& q = (*this);
 
diff --git a/dune/gfe/rodlocalstiffness.hh b/dune/gfe/rodlocalstiffness.hh
index 692a604bb0d91f6ee0891e09be595c27abe3a5c5..f0dfc6aef690b28acf33839bf232ed58fbf6e4fc 100644
--- a/dune/gfe/rodlocalstiffness.hh
+++ b/dune/gfe/rodlocalstiffness.hh
@@ -563,7 +563,7 @@ assembleGradient(const Entity& element,
         
         
         // dd_dvij[m][i][j] = \parder {(d_k)_i} {q}
-        array<FieldMatrix<double,3 , 4>, 3> dd_dq;
+        Tensor3<double,3 ,3, 4> dd_dq;
         q.getFirstDerivativesOfDirectors(dd_dq);
         
         // First derivatives of the position