diff --git a/dune/common/lru.hh b/dune/common/lru.hh
index 20dd7bdf4ed1bf40fc08eff2a1cfa657eda41d2d..91ab8ed9406ed0f447c60da9d3b4cf5f60ed1948 100644
--- a/dune/common/lru.hh
+++ b/dune/common/lru.hh
@@ -182,15 +182,15 @@ namespace Dune {
     reference touch (const key_type & key)
     {
       /* query _index for iterator */
-      iterator it = _index[key];
+      map_iterator it = _index.find(key);
       if (it == _index.end())
         DUNE_THROW(Dune::RangeError,
           "Failed to touch key " << key << ", it is not in the lru container");
        /* update _data
          move it to the front
        */
-      _data.splice(_data.begin(), _data, it);
-      return it->second;
+      _data.splice(_data.begin(), _data, it->second);
+      return it->second->second;
     }
 
     /**