Index: lemon/bits/map_extender.h
===================================================================
--- lemon/bits/map_extender.h	(revision 867)
+++ lemon/bits/map_extender.h	(revision 912)
@@ -50,6 +50,4 @@
     typedef typename Parent::ConstReference ConstReference;
 
-    typedef typename Parent::ReferenceMapTag ReferenceMapTag;
-
     class MapIt;
     class ConstMapIt;
@@ -85,34 +83,34 @@
       typedef typename Map::Value Value;
 
-      MapIt() : map(NULL) {}
-
-      MapIt(Invalid i) : Parent(i), map(NULL) {}
-
-      explicit MapIt(Map& _map) : map(&_map) {
-        map->notifier()->first(*this);
+      MapIt() {}
+
+      MapIt(Invalid i) : Parent(i) { }
+
+      explicit MapIt(Map& _map) : map(_map) {
+        map.notifier()->first(*this);
       }
 
       MapIt(const Map& _map, const Item& item)
-        : Parent(item), map(&_map) {}
+        : Parent(item), map(_map) {}
 
       MapIt& operator++() {
-        map->notifier()->next(*this);
+        map.notifier()->next(*this);
         return *this;
       }
 
       typename MapTraits<Map>::ConstReturnValue operator*() const {
-        return (*map)[*this];
+        return map[*this];
       }
 
       typename MapTraits<Map>::ReturnValue operator*() {
-        return (*map)[*this];
+        return map[*this];
       }
 
       void set(const Value& value) {
-        map->set(*this, value);
-      }
-
-    protected:
-      Map* map;
+        map.set(*this, value);
+      }
+
+    protected:
+      Map& map;
 
     };
@@ -125,10 +123,10 @@
       typedef typename Map::Value Value;
 
-      ConstMapIt() : map(NULL) {}
-
-      ConstMapIt(Invalid i) : Parent(i), map(NULL) {}
-
-      explicit ConstMapIt(Map& _map) : map(&_map) {
-        map->notifier()->first(*this);
+      ConstMapIt() {}
+
+      ConstMapIt(Invalid i) : Parent(i) { }
+
+      explicit ConstMapIt(Map& _map) : map(_map) {
+        map.notifier()->first(*this);
       }
 
@@ -137,5 +135,5 @@
 
       ConstMapIt& operator++() {
-        map->notifier()->next(*this);
+        map.notifier()->next(*this);
         return *this;
       }
@@ -146,5 +144,5 @@
 
     protected:
-      const Map* map;
+      const Map& map;
     };
 
@@ -153,23 +151,23 @@
 
     public:
-      ItemIt() : map(NULL) {}
-
-
-      ItemIt(Invalid i) : Parent(i), map(NULL) {}
-
-      explicit ItemIt(Map& _map) : map(&_map) {
-        map->notifier()->first(*this);
+
+      ItemIt() {}
+
+      ItemIt(Invalid i) : Parent(i) { }
+
+      explicit ItemIt(Map& _map) : map(_map) {
+        map.notifier()->first(*this);
       }
 
       ItemIt(const Map& _map, const Item& item)
-        : Parent(item), map(&_map) {}
+        : Parent(item), map(_map) {}
 
       ItemIt& operator++() {
-        map->notifier()->next(*this);
-        return *this;
-      }
-
-    protected:
-      const Map* map;
+        map.notifier()->next(*this);
+        return *this;
+      }
+
+    protected:
+      const Map& map;
 
     };
@@ -194,6 +192,4 @@
     typedef typename Parent::ConstReference ConstReference;
 
-    typedef typename Parent::ReferenceMapTag ReferenceMapTag;
-
     class MapIt;
     class ConstMapIt;
@@ -232,34 +228,34 @@
       typedef typename Map::Value Value;
 
-      MapIt() : map(NULL) {}
-
-      MapIt(Invalid i) : Parent(i), map(NULL) { }
-
-      explicit MapIt(Map& _map) : map(&_map) {
-        map->graph.first(*this);
+      MapIt() {}
+
+      MapIt(Invalid i) : Parent(i) { }
+
+      explicit MapIt(Map& _map) : map(_map) {
+        map.graph.first(*this);
       }
 
       MapIt(const Map& _map, const Item& item)
-        : Parent(item), map(&_map) {}
+        : Parent(item), map(_map) {}
 
       MapIt& operator++() {
-        map->graph.next(*this);
+        map.graph.next(*this);
         return *this;
       }
 
       typename MapTraits<Map>::ConstReturnValue operator*() const {
-        return (*map)[*this];
+        return map[*this];
       }
 
       typename MapTraits<Map>::ReturnValue operator*() {
-        return (*map)[*this];
+        return map[*this];
       }
 
       void set(const Value& value) {
-        map->set(*this, value);
-      }
-
-    protected:
-      Map* map;
+        map.set(*this, value);
+      }
+
+    protected:
+      Map& map;
 
     };
@@ -272,26 +268,26 @@
       typedef typename Map::Value Value;
 
-      ConstMapIt() : map(NULL) {}
-
-      ConstMapIt(Invalid i) : Parent(i), map(NULL) { }
-
-      explicit ConstMapIt(Map& _map) : map(&_map) {
-        map->graph.first(*this);
+      ConstMapIt() {}
+
+      ConstMapIt(Invalid i) : Parent(i) { }
+
+      explicit ConstMapIt(Map& _map) : map(_map) {
+        map.graph.first(*this);
       }
 
       ConstMapIt(const Map& _map, const Item& item)
-        : Parent(item), map(&_map) {}
+        : Parent(item), map(_map) {}
 
       ConstMapIt& operator++() {
-        map->graph.next(*this);
+        map.graph.next(*this);
         return *this;
       }
 
       typename MapTraits<Map>::ConstReturnValue operator*() const {
-        return (*map)[*this];
-      }
-
-    protected:
-      const Map* map;
+        return map[*this];
+      }
+
+    protected:
+      const Map& map;
     };
 
@@ -300,23 +296,23 @@
 
     public:
-      ItemIt() : map(NULL) {}
-
-
-      ItemIt(Invalid i) : Parent(i), map(NULL) { }
-
-      explicit ItemIt(Map& _map) : map(&_map) {
-        map->graph.first(*this);
+
+      ItemIt() {}
+
+      ItemIt(Invalid i) : Parent(i) { }
+
+      explicit ItemIt(Map& _map) : map(_map) {
+        map.graph.first(*this);
       }
 
       ItemIt(const Map& _map, const Item& item)
-        : Parent(item), map(&_map) {}
+        : Parent(item), map(_map) {}
 
       ItemIt& operator++() {
-        map->graph.next(*this);
-        return *this;
-      }
-
-    protected:
-      const Map* map;
+        map.graph.next(*this);
+        return *this;
+      }
+
+    protected:
+      const Map& map;
 
     };
