Index: src/lemon/alteration_notifier.h
===================================================================
--- src/lemon/alteration_notifier.h	(revision 1040)
+++ src/lemon/alteration_notifier.h	(revision 1134)
@@ -322,9 +322,15 @@
   public:
 
-    EdgeNotifier& getNotifier(Edge = INVALID) const {
+    /// \brief Gives back the edge alteration notifier.
+    ///
+    /// Gives back the edge alteration notifier.
+    EdgeNotifier& getNotifier(Edge) const {
       return edge_notifier;
     }
 
-    NodeNotifier& getNotifier(Node = INVALID) const {
+    /// \brief Gives back the node alteration notifier.
+    ///
+    /// Gives back the node alteration notifier.
+    NodeNotifier& getNotifier(Node) const {
       return node_notifier;
     }
Index: src/lemon/concept/graph_component.h
===================================================================
--- src/lemon/concept/graph_component.h	(revision 1106)
+++ src/lemon/concept/graph_component.h	(revision 1134)
@@ -25,4 +25,6 @@
 #include <lemon/invalid.h>
 #include <lemon/concept/maps.h>
+
+#include <lemon/alteration_notifier.h>
 
 namespace lemon {
@@ -572,7 +574,9 @@
       ///
       GraphIncIterator(GraphIncIterator const&) {}
-      /// Sets the iterator to the first edge incoming into or outgoing from the node.
-      
-      /// Sets the iterator to the first edge incoming into or outgoing from the node.
+      /// Sets the iterator to the first edge incoming into or outgoing 
+      /// from the node.
+      
+      /// Sets the iterator to the first edge incoming into or outgoing 
+      /// from the node.
       ///
       explicit GraphIncIterator(const Graph&, const typename Graph::Node&) {}
@@ -672,9 +676,42 @@
   	checkConcept< BaseGraphComponent, _Graph>();
 
-	checkConcept<GraphIterator<_Graph, typename _Graph::Edge>, typename _Graph::EdgeIt >();
-	checkConcept<GraphIterator<_Graph, typename _Graph::Node>, typename _Graph::NodeIt >();
+	checkConcept<GraphIterator<_Graph, typename _Graph::Edge>,
+	  typename _Graph::EdgeIt >();
+	checkConcept<GraphIterator<_Graph, typename _Graph::Node>,
+	  typename _Graph::NodeIt >();
 	checkConcept<GraphIncIterator<_Graph>, typename _Graph::InEdgeIt >();
 	checkConcept<GraphIncIterator<_Graph>, typename _Graph::OutEdgeIt >();
       }
+    };
+
+    /// An empty alteration notifier base graph class.
+  
+    /// This class provides beside the core graph features
+    /// alteration notifier interface for the graph structure.
+    /// This is an observer-notifier pattern. More Obsevers can
+    /// be registered into the notifier and whenever an alteration
+    /// occured in the graph all the observers will notified about it.
+    class AlterableGraphComponent : virtual public BaseGraphComponent {
+    public:
+
+      /// The edge observer registry.
+      typedef AlterationNotifier<Edge> EdgeNotifier;
+      /// The node observer registry.
+      typedef AlterationNotifier<Node> NodeNotifier;
+      
+      /// \brief Gives back the edge alteration notifier.
+      ///
+      /// Gives back the edge alteration notifier.
+      EdgeNotifier getNotifier(Edge) const {
+	return EdgeNotifier();
+      }
+      
+      /// \brief Gives back the node alteration notifier.
+      ///
+      /// Gives back the node alteration notifier.
+      NodeNotifier getNotifier(Node) const {
+	return NodeNotifier();
+      }
+      
     };
 
@@ -690,8 +727,20 @@
       GraphMap() {}
     public:
+      /// \brief Construct a new map.
+      ///
+      /// Construct a new map for the graph.
       explicit GraphMap(const Graph&) {}
+      /// \brief Construct a new map with default value.
+      ///
+      /// Construct a new map for the graph and initalise the values.
       GraphMap(const Graph&, const _Value&) {}
+      /// \brief Copy constructor.
+      ///
+      /// Copy Constructor.
       GraphMap(const GraphMap&) {}
       
+      /// \brief Assign operator.
+      ///
+      /// Assign operator.
       GraphMap& operator=(const GraphMap&) { return *this;}
 
@@ -741,9 +790,21 @@
 	NodeMap();
       public:
-	// \todo call the right parent class constructor
+	/// \brief Construct a new map.
+	///
+	/// Construct a new map for the graph.
+	/// \todo call the right parent class constructor
 	explicit NodeMap(const Graph&) {}
+	/// \brief Construct a new map with default value.
+	///
+	/// Construct a new map for the graph and initalise the values.
 	NodeMap(const Graph&, const _Value&) {}
+	/// \brief Copy constructor.
+	///
+	/// Copy Constructor.
 	NodeMap(const NodeMap&) {}
 
+	/// \brief Assign operator.
+	///
+	/// Assign operator.
 	NodeMap& operator=(const NodeMap&) { return *this;}
 
@@ -759,9 +820,21 @@
 	EdgeMap();
       public:
-	// \todo call the right parent class constructor
+	/// \brief Construct a new map.
+	///
+	/// Construct a new map for the graph.
+	/// \todo call the right parent class constructor
 	explicit EdgeMap(const Graph&) {}
+	/// \brief Construct a new map with default value.
+	///
+	/// Construct a new map for the graph and initalise the values.
 	EdgeMap(const Graph&, const _Value&) {}
+	/// \brief Copy constructor.
+	///
+	/// Copy Constructor.
 	EdgeMap(const EdgeMap&) {}
 
+	/// \brief Assign operator.
+	///
+	/// Assign operator.
 	EdgeMap& operator=(const EdgeMap&) { return *this;}
 
@@ -781,22 +854,28 @@
 	  { // int map test
 	    typedef typename _Graph::template NodeMap<int> IntNodeMap;
-	    checkConcept<GraphMap<_Graph, typename _Graph::Node, int>, IntNodeMap >();
+	    checkConcept<GraphMap<_Graph, typename _Graph::Node, int>, 
+	      IntNodeMap >();
 	  } { // bool map test
 	    typedef typename _Graph::template NodeMap<bool> BoolNodeMap;
-	    checkConcept<GraphMap<_Graph, typename _Graph::Node, bool>, BoolNodeMap >();
+	    checkConcept<GraphMap<_Graph, typename _Graph::Node, bool>,
+	      BoolNodeMap >();
 	  } { // Type map test
 	    typedef typename _Graph::template NodeMap<Type> TypeNodeMap;
-	    checkConcept<GraphMap<_Graph, typename _Graph::Node, Type>, TypeNodeMap >();
+	    checkConcept<GraphMap<_Graph, typename _Graph::Node, Type>,
+	      TypeNodeMap >();
 	  } 
 
 	  { // int map test
 	    typedef typename _Graph::template EdgeMap<int> IntEdgeMap;
-	    checkConcept<GraphMap<_Graph, typename _Graph::Edge, int>, IntEdgeMap >();
+	    checkConcept<GraphMap<_Graph, typename _Graph::Edge, int>,
+	      IntEdgeMap >();
 	  } { // bool map test
 	    typedef typename _Graph::template EdgeMap<bool> BoolEdgeMap;
-	    checkConcept<GraphMap<_Graph, typename _Graph::Edge, bool>, BoolEdgeMap >();
+	    checkConcept<GraphMap<_Graph, typename _Graph::Edge, bool>,
+	      BoolEdgeMap >();
 	  } { // Type map test
 	    typedef typename _Graph::template EdgeMap<Type> TypeEdgeMap;
-	    checkConcept<GraphMap<_Graph, typename _Graph::Edge, Type>, TypeEdgeMap >();
+	    checkConcept<GraphMap<_Graph, typename _Graph::Edge, Type>, 
+	      TypeEdgeMap >();
 	  } 
 	}
@@ -806,5 +885,11 @@
     };
 
-
+    /// \brief An empty extendable extended graph class.
+    ///
+    /// This class provides beside the core graph features
+    /// item addition interface for the graph structure.
+    /// The difference between this class and the 
+    /// \c BaseExtendableGraphComponent is that it should
+    /// notify the item alteration observers.
     class ExtendableGraphComponent : virtual public BaseGraphComponent {
     public:
@@ -815,8 +900,14 @@
       typedef BaseGraphComponent::Edge Edge;
 
+      /// \brief Add a node to the graph.
+      ///
+      /// Add a node to the graph and notify the observers.
       Node addNode() {
 	return INVALID;
       }
     
+      /// \brief Add an edge to the graph.
+      ///
+      /// Add an edge to the graph and notify the observers.
       Edge addEdge(const Node& from, const Node& to) {
 	return INVALID;
@@ -835,4 +926,12 @@
       };
     };
+
+    /// \brief An empty erasable extended graph class.
+    ///
+    /// This class provides beside the core graph features
+    /// item erase interface for the graph structure.
+    /// The difference between this class and the 
+    /// \c BaseErasableGraphComponent is that it should
+    /// notify the item alteration observers.
     class ErasableGraphComponent : virtual public BaseGraphComponent {
     public:
@@ -843,5 +942,12 @@
       typedef BaseGraphComponent::Edge Edge;
 
+      /// \brief Erase the Node and notify the node alteration observers.
+      ///
+      ///  Erase the Node and notify the node alteration observers.
       void erase(const Node&) {}    
+
+      /// \brief Erase the Edge and notify the edge alteration observers.
+      ///
+      ///  Erase the Edge and notify the edge alteration observers.
       void erase(const Edge&) {}
 
