diff --git a/fem/common/discretefunctionspace.hh b/fem/common/discretefunctionspace.hh
index 70c5911c8a097b552a279aeebc9cbe6409739520..470493c1261034696890641cc403756da96d0129 100644
--- a/fem/common/discretefunctionspace.hh
+++ b/fem/common/discretefunctionspace.hh
@@ -73,7 +73,7 @@ namespace Dune {
     typedef GridTemp GridType;
 
     //! Constructor
-    DiscreteFunctionSpaceInterface ( GridType & g, int ident, int level ) :
+    DiscreteFunctionSpaceInterface (const GridType & g, int ident, int level ) :
       FunctionSpaceType (ident),  grid_ (g), level_(level) {};
 
     //! Get base function set for given entity.
@@ -105,7 +105,7 @@ namespace Dune {
     }
 
     //! return the corresponding Grid
-    GridType & getGrid () const { return grid_; }
+    const GridType & getGrid () const { return grid_; }
 
     //! return number of degrees of freedom for spezified grid and level
     //! which can also be the leaflevel and furthermore
@@ -141,7 +141,7 @@ namespace Dune {
     }
 
     //! the corresponding Grid
-    GridType & grid_ ;
+    const GridType & grid_ ;
 
     //! The grid level
     int level_;
@@ -165,7 +165,7 @@ namespace Dune {
 
   public:
     // at the moment nothing
-    DiscreteFunctionSpaceDefault(GridTemp& g, int id, int level)
+    DiscreteFunctionSpaceDefault(const GridTemp& g, int id, int level)
       : DiscreteFunctionSpaceInterface < FunctionSpaceType , GridTemp,
             DiscreteFunctionSpaceImp, BaseFunctionSetInter>(g, id, level)
     {}
diff --git a/fem/lagrangebase.hh b/fem/lagrangebase.hh
index 69821997bd996051fc6eda5eb5bd5b73aa67086a..b0f72368b7019f7f6a9bf979647e02d7c682301b 100644
--- a/fem/lagrangebase.hh
+++ b/fem/lagrangebase.hh
@@ -86,7 +86,7 @@ namespace Dune {
 
     //! Constructor generating for each different element type of the grid a
     //! LagrangeBaseSet with polOrd
-    LagrangeDiscreteFunctionSpace ( GridType & g, IndexSetType & iset , DofManagerType & dm , int level );
+    LagrangeDiscreteFunctionSpace ( const GridType & g, IndexSetType & iset , DofManagerType & dm , int level );
 
     //! return max number of baseset that holds this space
     int maxNumberBase () const;
diff --git a/fem/lagrangebase/lagrangespace.cc b/fem/lagrangebase/lagrangespace.cc
index 1c55dc2be17f5d438ded584248179a3a27823ebb..eece311bd79d7c97e3db7758e98ed79c738bef7a 100644
--- a/fem/lagrangebase/lagrangespace.cc
+++ b/fem/lagrangebase/lagrangespace.cc
@@ -10,7 +10,7 @@ namespace Dune {
   // Constructor
   template< class FunctionSpaceT, class GridType, class IndexSetType , int polOrd, class DofManagerType >
   inline LagrangeDiscreteFunctionSpace<FunctionSpaceT,GridType,IndexSetType,polOrd,DofManagerType>::
-  LagrangeDiscreteFunctionSpace ( GridType & g, IndexSetType & iset, DofManagerType & dm , int level) :
+  LagrangeDiscreteFunctionSpace (const GridType & g, IndexSetType & iset, DofManagerType & dm , int level) :
     DiscreteFunctionSpaceType (g,id, level) , dm_ ( dm ) , indexSet_ (iset)
   {
     // add index set to list of indexset of dofmanager
diff --git a/fem/transfer/multigridtransfer.cc b/fem/transfer/multigridtransfer.cc
index f5bcfa05e335352df0b4811a572181df27b9968d..de3c138277da859dd9685c455dd286aac510e87e 100644
--- a/fem/transfer/multigridtransfer.cc
+++ b/fem/transfer/multigridtransfer.cc
@@ -15,7 +15,7 @@ void Dune::MultiGridTransfer<DiscFuncType>::setup(const FunctionSpaceType& coars
     DUNE_THROW(Exception, "The two function spaces don't belong to consecutive levels!");
 
   typedef typename FunctionSpaceType::GridType GridType;
-  GridType& grid = coarseFSpace.getGrid();
+  const GridType& grid = coarseFSpace.getGrid();
   if (&grid != &(fineFSpace.getGrid()))
     DUNE_THROW(Exception, "The two function spaces don't belong to the same grid!");