Index: lemon/bits/alteration_notifier.h
===================================================================
--- lemon/bits/alteration_notifier.h	(revision 1718)
+++ lemon/bits/alteration_notifier.h	(revision 1729)
@@ -173,20 +173,4 @@
       }
 
-      /// \brief Signal a property change on the given item.
-      ///
-      /// Signal a property change on the given item. It should
-      /// be used always with the commitChange() function.
-      /// This function is called always the property change.
-      /// The commitChange() is called always after the change.
-      virtual void signalChange(const Item&) {}
-
-      /// \brief Commit the property change on the given item.
-      ///
-      /// Commit the property change on the given item. It should
-      /// be used always with the signalChange() function.
-      /// This function is called always the property change.
-      /// The commitChange() is called always after the change.
-      virtual void commitChange(const Item&) {}
-
       /// \brief The member function to notificate the observer about the
       /// container is built.
@@ -325,30 +309,4 @@
       }
     }
-    
-    /// \brief Signal a property change on the given item.
-    ///
-    /// Signal a property change on the given item. It should
-    /// be used always with the commitChange() function.
-    /// This function is called always the property change.
-    /// The commitChange() is called always after the change.
-    void signalChange(const Item& item) {
-      typename Container::iterator it;
-      for (it = container.begin(); it != container.end(); ++it) {
-	(*it)->signalChange(item);
-      }
-    }
-    
-    /// \brief Commit the property change on the given item.
-    ///
-    /// Commit the property change on the given item. It should
-    /// be used always with the signalChange() function.
-    /// This function is called always the property change.
-    /// The commitChange() is called always after the change.
-    void commitChange(const Item& item) {
-      typename Container::iterator it;
-      for (it = container.begin(); it != container.end(); ++it) {
-	(*it)->commitChange(item);
-      }
-    }
 
     /// \brief Notifies all the registered observers about the container is 
Index: lemon/graph_utils.h
===================================================================
--- lemon/graph_utils.h	(revision 1720)
+++ lemon/graph_utils.h	(revision 1729)
@@ -1326,4 +1326,12 @@
   /// whenever the graph changes.
   ///
+  /// \warning Besides addNode() and addEdge(), a graph structure may provide
+  /// alternative ways to mogify the graph. The correct behavior of InDegMap
+  /// is not guarantied if these additional featureas are used. For example
+  /// the funstions \ref ListGraph::changeSource() "changeSource()",
+  /// \ref ListGraph::changeTarget() "changeTarget()" and
+  /// \ref ListGraph::reverseEdge() "reverseEdge()"
+  /// of \ref ListGraph will \e not update the degree values correctly.
+  ///
   /// \sa OutDegMap
 
@@ -1424,4 +1432,12 @@
   /// whenever the graph changes.
   ///
+  /// \warning Besides addNode() and addEdge(), a graph structure may provide
+  /// alternative ways to mogify the graph. The correct behavior of OutDegMap
+  /// is not guarantied if these additional featureas are used. For example
+  /// the funstions \ref ListGraph::changeSource() "changeSource()",
+  /// \ref ListGraph::changeTarget() "changeTarget()" and
+  /// \ref ListGraph::reverseEdge() "reverseEdge()"
+  /// of \ref ListGraph will \e not update the degree values correctly.
+  ///
   /// \sa InDegMap
 
Index: lemon/list_graph.h
===================================================================
--- lemon/list_graph.h	(revision 1718)
+++ lemon/list_graph.h	(revision 1729)
@@ -339,7 +339,5 @@
     ///valid. However <tt>InEdge</tt>'s are invalidated.
     void changeTarget(Edge e, Node n) { 
-      getNotifier(Edge()).signalChange(e); 
       _changeTarget(e,n); 
-      getNotifier(Edge()).commitChange(e); 
     }
     /// Changes the source of \c e to \c n
@@ -351,7 +349,5 @@
     ///valid. However <tt>OutEdge</tt>'s are invalidated.
     void changeSource(Edge e, Node n) { 
-      getNotifier(Edge()).signalChange(e); 
       _changeSource(e,n);
-      getNotifier(Edge()).commitChange(e); 
     }
 
@@ -363,8 +359,6 @@
     void reverseEdge(Edge e) {
       Node t=target(e);
-      getNotifier(Edge()).signalChange(e); 
       _changeTarget(e,source(e));
       _changeSource(e,t);
-      getNotifier(Edge()).commitChange(e); 
     }
 
@@ -594,11 +588,5 @@
     /// valid. However <tt>InEdge</tt>'s are invalidated.
     void changeTarget(UndirEdge e, Node n) { 
-      getNotifier(UndirEdge()).signalChange(e); 
-      getNotifier(Edge()).signalChange(direct(e, true)); 
-      getNotifier(Edge()).signalChange(direct(e, false)); 
       _changeTarget(e,n); 
-      getNotifier(UndirEdge()).commitChange(e);
-      getNotifier(Edge()).commitChange(direct(e, true)); 
-      getNotifier(Edge()).commitChange(direct(e, false)); 
     }
     /// Changes the source of \c e to \c n
@@ -610,11 +598,5 @@
     ///valid. However <tt>OutEdge</tt>'s are invalidated.
     void changeSource(UndirEdge e, Node n) { 
-      getNotifier(UndirEdge()).signalChange(e); 
-      getNotifier(Edge()).signalChange(direct(e, true)); 
-      getNotifier(Edge()).signalChange(direct(e, false)); 
       _changeSource(e,n); 
-      getNotifier(UndirEdge()).commitChange(e);
-      getNotifier(Edge()).commitChange(direct(e, true)); 
-      getNotifier(Edge()).commitChange(direct(e, false)); 
     }
     /// \brief Contract two nodes.
Index: lemon/smart_graph.h
===================================================================
--- lemon/smart_graph.h	(revision 1718)
+++ lemon/smart_graph.h	(revision 1729)
@@ -316,11 +316,5 @@
     Node split(Node n, bool connect = true) 
     {
-      for (OutEdgeIt it(*this, n); it != INVALID; ++it) {
-	getNotifier(Edge()).signalChange(it);
-      }
       Node b = _split(n,connect);
-      for (OutEdgeIt it(*this, b); it != INVALID; ++it) {
-	getNotifier(Edge()).commitChange(it);
-      }
       return b;
     }
Index: test/graph_utils_test.cc
===================================================================
--- test/graph_utils_test.cc	(revision 1728)
+++ test/graph_utils_test.cc	(revision 1729)
@@ -83,4 +83,5 @@
     ListGraph graph;
     InDegMap<ListGraph> inDeg(graph);
+    OutDegMap<ListGraph> outDeg(graph);
     std::vector<ListGraph::Node> nodes(nodeNum);
     for (int i = 0; i < nodeNum; ++i) {
@@ -96,23 +97,6 @@
 	    "Wrong in degree map");
     }
-    for (int i = 0; i < edgeNum; ++i) {
-      graph.changeTarget(edges[i], nodes[urandom(nodeNum)]);
-    }
     for (int i = 0; i < nodeNum; ++i) {
-      check(inDeg[nodes[i]] == countInEdges(graph, nodes[i]),
-	    "Wrong in degree map");
-    }
-    for (int i = 0; i < edgeNum; ++i) {
-      graph.changeSource(edges[i], nodes[urandom(nodeNum)]);
-    }
-    for (int i = 0; i < nodeNum; ++i) {
-      check(inDeg[nodes[i]] == countInEdges(graph, nodes[i]), 
-	    "Wrong in degree map");
-    }
-    for (int i = 0; i < edgeNum; ++i) {
-      graph.reverseEdge(edges[i]);
-    }
-    for (int i = 0; i < nodeNum; ++i) {
-      check(inDeg[nodes[i]] == countInEdges(graph, nodes[i]), 
+      check(outDeg[nodes[i]] == countOutEdges(graph, nodes[i]), 
 	    "Wrong in degree map");
     }
