diff --git a/dune/fem-dg/operator/adaptation/utility.hh b/dune/fem-dg/operator/adaptation/utility.hh
index b037101d7a9ec9fcdd1916fc69adbeab56395907..dbdb7ac9f7f4d8b93c00705721696a1e56557a5f 100644
--- a/dune/fem-dg/operator/adaptation/utility.hh
+++ b/dune/fem-dg/operator/adaptation/utility.hh
@@ -11,20 +11,26 @@ namespace Dune
   struct AdaptationParameters
     : public Fem::LocalParameter< AdaptationParameters, AdaptationParameters >
   {
+    protected:
+    const std::string keyPrefix_;
     int markStrategy_;
 
+
+
+    public:
+    //! constructor
+    AdaptationParameters( const std::string keyPrefix = "fem.adaptation." )
+      : keyPrefix_( keyPrefix ),
+        markStrategy_( getStrategy() )
+    {}
+
     int getStrategy () const
     {
       const std::string names[] = { "shockind", "apost", "grad" };
       // default value is gradient
-      return Fem::Parameter::getEnum( "fem.adaptation.markingStrategy", names, 2 );
+      return Fem::Parameter::getEnum( keyPrefix_ + "markingStrategy", names, 2 );
     }
 
-    //! constructor
-    AdaptationParameters ()
-      : markStrategy_( getStrategy() )
-    {}
-
     //! simulation end time
     virtual double endTime () const
     {
@@ -34,13 +40,13 @@ namespace Dune
     //! retujrn refinement tolerance
     virtual double refinementTolerance () const
     {
-      return Fem::Parameter::getValue< double >( "fem.adaptation.refineTolerance" );
+      return Fem::Parameter::getValue< double >( keyPrefix_ + "refineTolerance" );
     }
 
     //! return percentage of refinement tolerance used for coarsening tolerance
     virtual double coarsenPercentage () const
     {
-      return Fem::Parameter::getValue< double >( "fem.adaptation.coarsenPercent", 0.1 );
+      return Fem::Parameter::getValue< double >( keyPrefix_ + "coarsenPercent", 0.1 );
     }
 
     //! return product of refinementTolerance and coarsenPercentage
@@ -53,20 +59,20 @@ namespace Dune
     virtual int finestLevel ( const int refineStepsForHalf ) const
     {
       return refineStepsForHalf *
-             Fem::Parameter::getValue< int >( "fem.adaptation.finestLevel" );
+             Fem::Parameter::getValue< int >( keyPrefix_ + "finestLevel" );
     }
 
     //! return minimal level achieved by refinement
     virtual int coarsestLevel ( const int refineStepsForHalf ) const
     {
       return refineStepsForHalf *
-             Fem::Parameter::getValue< int >( "fem.adaptation.coarsestLevel", 0 );
+             Fem::Parameter::getValue< int >( keyPrefix_ + "coarsestLevel", 0 );
     }
 
     //! return depth for refining neighbors of a cell marked for refinement
     virtual int neighborRefLevel () const
     {
-      return Fem::Parameter::getValue< int >( "fem.adaptation.grad.neighborRefLevel", 1 );
+      return Fem::Parameter::getValue< int >( keyPrefix_ + "grad.neighborRefLevel", 1 );
     }
 
     //! return true if marking strategy is based on shock indicator
@@ -88,7 +94,7 @@ namespace Dune
     }
 
     //! return true if verbosity mode is enabled
-    virtual bool verbose () const { return Fem::Parameter::getValue< bool >( "fem.adaptation.verbose", false ); }
+    virtual bool verbose () const { return Fem::Parameter::getValue< bool >( keyPrefix_ + "verbose", false ); }
   };
 
   class ComputeMinMaxVolume