diff --git a/dune/gfe/averagedistanceassembler.hh b/dune/gfe/averagedistanceassembler.hh
index ff09c61e8aa835ded08115d7ed8eedda8de266d0..9291406818c78aff3ed8da18a7b60c4796f3da6f 100644
--- a/dune/gfe/averagedistanceassembler.hh
+++ b/dune/gfe/averagedistanceassembler.hh
@@ -8,7 +8,8 @@
 template <class TargetSpace>
 class AverageDistanceAssembler
 {
-    static const int size = TargetSpace::EmbeddedTangentVector::size;
+    static const int size         = TargetSpace::TangentVector::size;
+    static const int embeddedSize = TargetSpace::EmbeddedTangentVector::size;
 
 public:
 
@@ -38,6 +39,24 @@ public:
                           TargetSpace::derivativeOfDistanceSquaredWRTSecondArgument(coefficients_[i], x));
     }
 
+    void assembleGradient(const TargetSpace& x,
+                          typename TargetSpace::TangentVector& gradient) const
+    {
+        typename TargetSpace::EmbeddedTangentVector embeddedGradient;
+        assembleGradient(x,embeddedGradient);
+        
+        Dune::FieldMatrix<double,size,embeddedSize> orthonormalFrame = x.orthonormalFrame();
+        orthonormalFrame.mv(embeddedGradient,gradient);
+    }
+
+    void assembleHessianApproximation(const TargetSpace& x,
+                                      Dune::FieldMatrix<double,embeddedSize,embeddedSize>& matrix) const
+    {
+        for (int i=0; i<embeddedSize; i++)
+            for (int j=0; j<embeddedSize; j++)
+                matrix[i][j] = (i==j);
+    }
+
     void assembleHessianApproximation(const TargetSpace& x,
                                       Dune::FieldMatrix<double,size,size>& matrix) const
     {
@@ -47,7 +66,7 @@ public:
     }
 
     void assembleHessian(const TargetSpace& x,
-                         Dune::FieldMatrix<double,size,size>& matrix) const
+                         Dune::FieldMatrix<double,embeddedSize,embeddedSize>& matrix) const
     {
         matrix = 0;
         for (size_t i=0; i<coefficients_.size(); i++)
diff --git a/dune/gfe/targetspacertrsolver.hh b/dune/gfe/targetspacertrsolver.hh
index c05aadea97083ad41572bce2e3f21d3be980e13e..cb6928b4d432f174917c3d08d10b3862e93e9301 100644
--- a/dune/gfe/targetspacertrsolver.hh
+++ b/dune/gfe/targetspacertrsolver.hh
@@ -13,7 +13,7 @@ class TargetSpaceRiemannianTRSolver
 //     : public IterativeSolver<std::vector<TargetSpace>,
 //                             Dune::BitSetVector<TargetSpace::TangentVector::size> >
 { 
-    const static int blocksize = TargetSpace::EmbeddedTangentVector::size;
+    const static int blocksize = TargetSpace::TangentVector::size;
 
     // Centralize the field type here
     typedef double field_type;