diff --git a/dune/gfe/targetspacertrsolver.cc b/dune/gfe/targetspacertrsolver.cc
index 57c2168e81635498c9c50c6aed7909277676c08d..171d3f46116c19fc7fc746c586e23effdf58370c 100644
--- a/dune/gfe/targetspacertrsolver.cc
+++ b/dune/gfe/targetspacertrsolver.cc
@@ -30,14 +30,14 @@ setup(const AverageDistanceAssembler<TargetSpace>* assembler,
     // ////////////////////////////////
 
     // First create a Gauss-seidel base solver
-    TrustRegionGSStep<MatrixType, CorrectionType>* innerSolverStep = new TrustRegionGSStep<MatrixType, CorrectionType>;
+    innerSolverStep_ = std::auto_ptr<TrustRegionGSStep<MatrixType, CorrectionType> >(new TrustRegionGSStep<MatrixType, CorrectionType>);
 
-    EnergyNorm<MatrixType, CorrectionType>* energyNorm = new EnergyNorm<MatrixType, CorrectionType>(*innerSolverStep);
+    energyNorm_ = std::auto_ptr<EnergyNorm<MatrixType, CorrectionType> >(new EnergyNorm<MatrixType, CorrectionType>(*innerSolverStep_.get()));
 
-    innerSolver_ = std::auto_ptr< ::LoopSolver<CorrectionType> >(new ::LoopSolver<CorrectionType>(innerSolverStep,
+    innerSolver_ = std::auto_ptr< ::LoopSolver<CorrectionType> >(new ::LoopSolver<CorrectionType>(innerSolverStep_.get(),
                                                                                                   innerIterations,
                                                                                                   innerTolerance,
-                                                                                                  energyNorm,
+                                                                                                  energyNorm_.get(),
                                                                                                   Solver::QUIET));
 
     innerSolver_->useRelativeError_ = false;
diff --git a/dune/gfe/targetspacertrsolver.hh b/dune/gfe/targetspacertrsolver.hh
index cb6928b4d432f174917c3d08d10b3862e93e9301..2ca7577c60590b7613ea1eb9e18dda279dbf0c2e 100644
--- a/dune/gfe/targetspacertrsolver.hh
+++ b/dune/gfe/targetspacertrsolver.hh
@@ -5,6 +5,8 @@
 
 #include <dune/solvers/common/boxconstraint.hh>
 #include <dune/solvers/solvers/loopsolver.hh>
+#include <dune/solvers/iterationsteps/trustregiongsstep.hh>
+#include <dune/solvers/norms/energynorm.hh>
 
 /** \brief Riemannian trust-region solver for geodesic finite-element problems */
 template <class TargetSpace>
@@ -73,6 +75,12 @@ protected:
     /** \brief The solver for the quadratic inner problems */
     std::auto_ptr< ::LoopSolver<CorrectionType> > innerSolver_;
 
+    /** \brief The iteration step for the quadratic inner problems */
+    std::auto_ptr<TrustRegionGSStep<MatrixType, CorrectionType> > innerSolverStep_;
+    
+    /** \brief Norm for the quadratic inner problems */
+    std::auto_ptr<EnergyNorm<MatrixType, CorrectionType> > energyNorm_;
+    
 //     /** \brief Dummy field for the trustregiongsstep */
 //     Dune::BitSetVector<blocksize> dummyObstacle_;