diff --git a/dune/fem-dg/algorithm/sub/evolution.hh b/dune/fem-dg/algorithm/sub/evolution.hh
index b1db33eab8db74d446f91510ee08f4090a5c461e..054949055a5456fc5a0c45021d33d421eca1d4aa 100644
--- a/dune/fem-dg/algorithm/sub/evolution.hh
+++ b/dune/fem-dg/algorithm/sub/evolution.hh
@@ -299,11 +299,14 @@ namespace Fem
 
 #ifdef BASEFUNCTIONSET_CODEGEN_GENERATE
       {
-        const int maxOrder = 2*solution().space().order() ;
+        const int polOrder = solution().space().order();
+        const int maxOrder = 2 * polOrder + 1 ;
+        const int dim = GridType :: dimension;
         std::vector< int > quadOrder( maxOrder );
         for( int i=2; i<maxOrder+2; ++i )
           quadOrder.push_back( i );
-        Dune::Fem::generateCode( solution().space(), quadOrder, quadOrder );
+        std::string filename( "autogeneratedcode_"+std::to_string( dim ) + "d_k" + std::to_string( polOrder ) + ".hh" );
+        Dune::Fem::generateCode( solution().space(), quadOrder, quadOrder, "./", filename );
 
       }
 #endif
diff --git a/dune/fem-dg/misc/algorithmcreatorselector.hh b/dune/fem-dg/misc/algorithmcreatorselector.hh
index 945e647b204c49a35b0ff2172823805a87bd407e..3245627f545f6bfd5cf1eae1579fa3159473be41 100644
--- a/dune/fem-dg/misc/algorithmcreatorselector.hh
+++ b/dune/fem-dg/misc/algorithmcreatorselector.hh
@@ -503,6 +503,13 @@ namespace Fem
 ///////////////////////////////////////////////////////////////////////////
 // DiscreteFunctionSpaceSelector
 ///////////////////////////////////////////////////////////////////////////
+#if USE_BASEFUNCTIONSET_CODEGEN
+  template <class T>
+  using Storage = Dune::Fem::CodegenStorage<T>;
+#else
+  template <class T>
+  using Storage = Dune::Fem::CachingStorage<T>;
+#endif
 
   template< class FunctionSpaceImp, class GridPartImp, int polOrder, DiscreteFunctionSpaces::Enum dfType, Galerkin::Enum opType >
   struct DiscreteFunctionSpaceSelector;
@@ -510,45 +517,45 @@ namespace Fem
   template< class FunctionSpaceImp, class GridPartImp, int polOrder >
   struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::lagrange, Galerkin::Enum::cg >
   {
-    typedef LagrangeDiscreteFunctionSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type;
+    typedef LagrangeDiscreteFunctionSpace< FunctionSpaceImp, GridPartImp, polOrder, Storage > type;
   };
 
   template< class FunctionSpaceImp, class GridPartImp, int polOrder >
   struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::legendre, Galerkin::Enum::dg >
   {
-    typedef LegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type;
+    typedef LegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, Storage > type;
   };
 
   template< class FunctionSpaceImp, class GridPartImp, int polOrder >
   struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::orthonormal, Galerkin::Enum::dg >
   {
-    typedef DiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type;
+    typedef DiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, Storage > type;
   };
 
   template< class FunctionSpaceImp, class GridPartImp, int polOrder >
   struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::lagrange, Galerkin::Enum::dg >
   {
-    typedef LagrangeDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type;
+    typedef LagrangeDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, Storage > type;
   };
 
 
   template< class FunctionSpaceImp, class GridPartImp, int polOrder >
   struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::hierarchic_legendre, Galerkin::Enum::dg >
   {
-    typedef HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, CachingStorage > type;
+    typedef HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpaceImp, GridPartImp, polOrder, Storage > type;
   };
 
 #if HAVE_DUNE_LOCALFUNCTIONS
   template< class FunctionSpaceImp, class GridPartImp, int polOrder >
   struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::gausslobatto, Galerkin::Enum::dg >
   {
-    typedef FixedOrderDGLagrangeSpace< FunctionSpaceImp, GridPartImp, polOrder, Dune::GaussLobattoPointSet, CachingStorage > type;
+    typedef FixedOrderDGLagrangeSpace< FunctionSpaceImp, GridPartImp, polOrder, Dune::GaussLobattoPointSet, Storage > type;
   };
 
   template< class FunctionSpaceImp, class GridPartImp, int polOrder >
   struct DiscreteFunctionSpaceSelector< FunctionSpaceImp, GridPartImp, polOrder, DiscreteFunctionSpaces::Enum::gausslegendre, Galerkin::Enum::dg >
   {
-    typedef FixedOrderDGLagrangeSpace< FunctionSpaceImp, GridPartImp, polOrder, Dune::GaussLegendrePointSet, CachingStorage > type;
+    typedef FixedOrderDGLagrangeSpace< FunctionSpaceImp, GridPartImp, polOrder, Dune::GaussLegendrePointSet, Storage > type;
   };
 #endif
 
diff --git a/dune/fem-dg/misc/simulator.hh b/dune/fem-dg/misc/simulator.hh
index 47330a7be3a89b88e3101b4788372fc2fdf6d6dc..d70fff96aba6c6fd8a992095420893663fee70fe 100644
--- a/dune/fem-dg/misc/simulator.hh
+++ b/dune/fem-dg/misc/simulator.hh
@@ -54,6 +54,7 @@
 
 #ifdef USE_BASEFUNCTIONSET_CODEGEN
 #warning "Using autogenerated code"
+#include <autogeneratedcode.hh>
 #endif
 
 #include <dune/fem-dg/pass/threadhandle.hh>