diff --git a/dune/subgrid/subgrid.hh b/dune/subgrid/subgrid.hh
index d979b9d587c7cb690b27a6c8bf0505a2ec19eaa5..ee2ecf24cdb9c46f7f93a5f7842e2076da1640a0 100644
--- a/dune/subgrid/subgrid.hh
+++ b/dune/subgrid/subgrid.hh
@@ -318,7 +318,7 @@ class SubGrid :
             typedef typename Traits::template Codim<EntitySeed::codimension>::Entity Entity;
             typedef SubGridEntity<EntitySeed::codimension, Entity::dimension, const typename Traits::Grid> EntityImp;
 
-            return Entity(EntityImp(this, hostgrid_->entity(this->getRealImplementation(seed).hostEntitySeed())));
+            return Entity(EntityImp(this, hostgrid_->entity(seed.impl().hostEntitySeed())));
         }
 
 
@@ -625,9 +625,9 @@ class SubGrid :
                 {
                     if (refinementMark_[level][index])
                     {
-                        if (this->getRealImplementation(e).hostEntity().isLeaf())
+                        if (e.impl().hostEntity().isLeaf())
                         {
-                            hostgrid_->mark(1, this->getRealImplementation(e).hostEntity());
+                            hostgrid_->mark(1, e.impl().hostEntity());
                             callHostgridAdapt = true;
                         }
                     }
@@ -1148,7 +1148,7 @@ class SubGrid :
         template <int codim>
         typename HostGrid::Traits::template Codim<codim>::Entity getHostEntity(const typename Traits::template Codim<codim>::Entity& e) const
         {
-            return this->getRealImplementation(e).hostEntity();
+            return e.impl().hostEntity();
         }
 
 
diff --git a/dune/subgrid/subgrid/subgridindexsets.hh b/dune/subgrid/subgrid/subgridindexsets.hh
index b8111257fc589c21a7709ef0673d76ef9fef188a..f5283c8447ab7f1bdbba956837e217628820fd93 100644
--- a/dune/subgrid/subgrid/subgridindexsets.hh
+++ b/dune/subgrid/subgrid/subgridindexsets.hh
@@ -78,8 +78,8 @@ class SubGridLevelIndexSet :
         template<class EntityType>
         bool contains (const EntityType& e) const
         {
-            return grid_ == &(grid_->getRealImplementation(e).grid())
-                && level_ == grid_->getRealImplementation(e).hostEntity().level();
+            return grid_ == &(e.impl().grid())
+                && level_ == e.impl().hostEntity().level();
         }
 
 
@@ -217,7 +217,7 @@ class SubGridGlobalIdSet :
         GlobalIdType id (const typename std::remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e) const
         {
             // Return id of the host entity
-            return grid_->getHostGrid().globalIdSet().id(grid_->getRealImplementation(e).hostEntity());
+            return grid_->getHostGrid().globalIdSet().id(e.impl().hostEntity());
         }
 
 
@@ -229,7 +229,7 @@ class SubGridGlobalIdSet :
         GlobalIdType subId (const typename std::remove_const<GridImp>::type::Traits::template Codim<0>::Entity& e, int i, unsigned int cc) const
         {
             // Return sub id of the host entity
-            return grid_->getHostGrid().globalIdSet().subId(grid_->getRealImplementation(e).hostEntity(),i,cc);
+            return grid_->getHostGrid().globalIdSet().subId(e.impl().hostEntity(),i,cc);
         }
 
 
@@ -273,7 +273,7 @@ class SubGridLocalIdSet :
         LocalIdType id (const typename std::remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e) const
         {
             // Return id of the host entity
-            return grid_->getHostGrid().localIdSet().id(grid_->getRealImplementation(e).hostEntity());
+            return grid_->getHostGrid().localIdSet().id(e.impl().hostEntity());
         }
 
 
@@ -285,7 +285,7 @@ class SubGridLocalIdSet :
         LocalIdType subId (const typename std::remove_const<GridImp>::type::Traits::template Codim<0>::Entity& e, int i, unsigned int cc) const
         {
             // Return sub id of the host entity
-            return grid_->getHostGrid().localIdSet().subId(grid_->getRealImplementation(e).hostEntity(),i,cc);
+            return grid_->getHostGrid().localIdSet().subId(e.impl().hostEntity(),i,cc);
         }
 
 
diff --git a/dune/subgrid/subgrid/subgridindexstorage.hh b/dune/subgrid/subgrid/subgridindexstorage.hh
index b22ff76dc78a40547f0d5d33797f2eead0941e82..e273fc9d0fc9ff8c7e868529497588d44d185b0d 100644
--- a/dune/subgrid/subgrid/subgridindexstorage.hh
+++ b/dune/subgrid/subgrid/subgridindexstorage.hh
@@ -214,7 +214,7 @@ class SubGridIndexStorageBase
         template <int codim>
         int getHostLevelIndex(int level, const GridEntity<codim>& e) const
         {
-            return hostgrid.levelIndexSet(level).index(grid.getRealImplementation(e).hostEntity());
+            return hostgrid.levelIndexSet(level).index(e.impl().hostEntity());
         }
 
 
@@ -222,7 +222,7 @@ class SubGridIndexStorageBase
         template <int cc>
         int getHostLevelSubIndex(int level, const GridEntity<cc>& e, int i, unsigned int codim) const
         {
-            return hostgrid.levelIndexSet(level).subIndex(grid.getRealImplementation(e).hostEntity(), i, codim+CodimInHostGrid);
+            return hostgrid.levelIndexSet(level).subIndex(e.impl().hostEntity(), i, codim+CodimInHostGrid);
         }
 
 
@@ -230,14 +230,14 @@ class SubGridIndexStorageBase
         template <int codim>
         HostIdType getHostId(const GridEntity<codim>& e) const
         {
-            return hostgrid.globalIdSet().id(grid.getRealImplementation(e).hostEntity());
+            return hostgrid.globalIdSet().id(e.impl().hostEntity());
         }
 
 
         //! get id of host grid subentity encapsulated in given subentity
         HostIdType getHostSubId(const GridEntity<0>& e, int i, unsigned int codim) const
         {
-            return hostgrid.globalIdSet().subId(grid.getRealImplementation(e).hostEntity(), i, codim);
+            return hostgrid.globalIdSet().subId(e.impl().hostEntity(), i, codim);
         }