Index: lemon/concept/bpugraph.h
===================================================================
--- lemon/concept/bpugraph.h	(revision 2126)
+++ lemon/concept/bpugraph.h	(revision 2163)
@@ -56,9 +56,10 @@
     ///
     /// The bipartite graph stores two types of nodes which are named
-    /// ANode and BNode. The graph type contains two types ANode and BNode
-    /// which are inherited from Node type. Moreover they have
-    /// constructor which converts Node to either ANode or BNode when it is
-    /// possible. Therefor everywhere the Node type can be used instead of
-    /// ANode and BNode. So the usage of the ANode and BNode is suggested.  
+    /// ANode and BNode. The graph type contains two types ANode and
+    /// BNode which are inherited from Node type. Moreover they have
+    /// constructor which converts Node to either ANode or BNode when
+    /// it is possible. Therefor everywhere the Node type can be used
+    /// instead of ANode and BNode. So the usage of the ANode and
+    /// BNode is not suggested.
     ///
     /// The iteration on the partition can be done with the ANodeIt and 
@@ -69,6 +70,10 @@
     class BpUGraph {
     public:
-      /// \todo undocumented
-      ///
+      /// \brief The undirected graph should be tagged by the
+      /// UndirectedTag.
+      ///
+      /// The undirected graph should be tagged by the UndirectedTag. This
+      /// tag helps the enable_if technics to make compile time 
+      /// specializations for undirected graphs.  
       typedef True UndirectedTag;
 
@@ -123,13 +128,10 @@
       };
 
-      /// \brief The base type of anode iterators, 
-      /// or in other words, the trivial anode iterator.
-      ///
-      /// This is the base type of each anode iterator,
-      /// thus each kind of anode iterator converts to this.
-      /// More precisely each kind of node iterator should be inherited 
-      /// from the trivial anode iterator. The ANode class should be used
-      /// only in special cases. Usually the Node type should be used insted
-      /// of it. 
+      /// \brief Helper class for ANodes.
+      ///
+      /// This class is just a helper class for ANodes, it is not
+      /// suggested to use it directly. It can be converted easily to
+      /// node and vice versa. The usage of this class is limited
+      /// two use just as template parameters for special map types. 
       class ANode {
       public:
@@ -180,13 +182,10 @@
       };
 
-      /// \brief The base type of bnode iterators, 
-      /// or in other words, the trivial bnode iterator.
-      ///
-      /// This is the base type of each anode iterator,
-      /// thus each kind of anode iterator converts to this.
-      /// More precisely each kind of node iterator should be inherited 
-      /// from the trivial anode iterator. The BNode class should be used
-      /// only in special cases. Usually the Node type should be used insted
-      /// of it. 
+      /// \brief Helper class for BNodes.
+      ///
+      /// This class is just a helper class for BNodes, it is not
+      /// suggested to use it directly. It can be converted easily to
+      /// node and vice versa. The usage of this class is limited
+      /// two use just as template parameters for special map types. 
       class BNode {
       public:
@@ -291,5 +290,5 @@
       /// for (Graph::ANodeIt n(g); n!=INVALID; ++n) ++count;
       ///\endcode
-      class ANodeIt : public ANode {
+      class ANodeIt : public Node {
       public:
         /// Default constructor
@@ -336,5 +335,5 @@
       /// for (Graph::BNodeIt n(g); n!=INVALID; ++n) ++count;
       ///\endcode
-      class BNodeIt : public BNode {
+      class BNodeIt : public Node {
       public:
         /// Default constructor
@@ -819,5 +818,5 @@
       ///
       /// Direct the given undirected edge. The returned edge source
-      /// will be the given edge.
+      /// will be the given node.
       Edge direct(const UEdge&, const Node&) const {
 	return INVALID;
@@ -826,7 +825,8 @@
       /// \brief Direct the given undirected edge.
       ///
-      /// Direct the given undirected edge. The returned edge source
-      /// will be the source of the undirected edge if the given bool
-      /// is true.
+      /// Direct the given undirected edge. The returned edge
+      /// represents the given undireted edge and the direction comes
+      /// from the given bool.  The source of the undirected edge and
+      /// the directed edge is the same when the given bool is true.
       Edge direct(const UEdge&, bool) const {
 	return INVALID;
@@ -856,5 +856,5 @@
       ///
       /// Returns whether the given directed edge is same orientation as
-      /// the corresponding undirected edge.
+      /// the corresponding undirected edge's default orientation.
       bool direction(Edge) const { return true; }
 
@@ -866,5 +866,5 @@
       /// \brief Opposite node on an edge
       ///
-      /// \return the opposite of the given Node on the given Edge
+      /// \return the opposite of the given Node on the given UEdge
       Node oppositeNode(Node, UEdge) const { return INVALID; }
 
@@ -873,5 +873,5 @@
       /// \return the first node of the given UEdge.
       ///
-      /// Naturally uectected edges don't have direction and thus
+      /// Naturally undirected edges don't have direction and thus
       /// don't have source and target node. But we use these two methods
       /// to query the two endnodes of the edge. The direction of the edge
Index: lemon/concept/ugraph.h
===================================================================
--- lemon/concept/ugraph.h	(revision 2126)
+++ lemon/concept/ugraph.h	(revision 2163)
@@ -36,6 +36,6 @@
 
 
-    /// Class describing the concept of Undirected Graphs.
-
+    /// \brief Class describing the concept of Undirected Graphs.
+    ///
     /// This class describes the common interface of all Undirected
     /// Graphs.
@@ -44,21 +44,38 @@
     /// without any sensible implementation. So any algorithm for
     /// undirected graph should compile with this class, but it will not
-    /// run properly, of couse.
+    /// run properly, of course.
     ///
-    /// In LEMON undirected graphs also fulfill the concept of directed
-    /// graphs (\ref lemon::concept::Graph "Graph Concept"). For
-    /// explanation of this and more see also the page \ref graphs,
-    /// a tutorial about graphs.
+    /// The LEMON undirected graphs also fulfill the concept of
+    /// directed graphs (\ref lemon::concept::Graph "Graph
+    /// Concept"). Each undirected edges can be seen as two opposite
+    /// directed edge and consequently the undirected graph can be
+    /// seen as the direceted graph of these directed edges. The
+    /// UGraph has the UEdge inner class for the undirected edges and
+    /// the Edge type for the directed edges. The Edge type is
+    /// convertible to UEdge or inherited from it so from a directed
+    /// edge we can get the represented undirected edge.
     ///
-    /// You can assume that all undirected graph can be handled
-    /// as a directed graph. This way it is fully conform
-    /// to the Graph concept.
-
+    /// In the sense of the LEMON each undirected edge has a default
+    /// direction (it should be in every computer implementation,
+    /// because the order of undirected edge's nodes defines an
+    /// orientation). With the default orientation we can define that
+    /// the directed edge is forward or backward directed. With the \c
+    /// direction() and \c direct() function we can get the direction
+    /// of the directed edge and we can direct an undirected edge.
+    ///
+    /// The UEdgeIt is an iterator for the undirected edges. We can use
+    /// the UEdgeMap to map values for the undirected edges. The InEdgeIt and
+    /// OutEdgeIt iterates on the same undirected edges but with opposite
+    /// direction. The IncEdgeIt iterates also on the same undirected edges
+    /// as the OutEdgeIt and InEdgeIt but it is not convertible to Edge just
+    /// to UEdge.  
     class UGraph {
     public:
-      ///\e
-
-      ///\todo undocumented
-      ///
+      /// \brief The undirected graph should be tagged by the
+      /// UndirectedTag.
+      ///
+      /// The undirected graph should be tagged by the UndirectedTag. This
+      /// tag helps the enable_if technics to make compile time 
+      /// specializations for undirected graphs.  
       typedef True UndirectedTag;
 
@@ -297,5 +314,6 @@
 
       /// The directed edge type. It can be converted to the
-      /// undirected edge.
+      /// undirected edge or it should be inherited from the undirected
+      /// edge.
       class Edge : public UEdge {
       public:
@@ -563,5 +581,5 @@
       ///
       /// Direct the given undirected edge. The returned edge source
-      /// will be the given edge.
+      /// will be the given node.
       Edge direct(const UEdge&, const Node&) const {
 	return INVALID;
@@ -570,7 +588,8 @@
       /// \brief Direct the given undirected edge.
       ///
-      /// Direct the given undirected edge. The returned edge source
-      /// will be the source of the undirected edge if the given bool
-      /// is true.
+      /// Direct the given undirected edge. The returned edge
+      /// represents the given undireted edge and the direction comes
+      /// from the given bool.  The source of the undirected edge and
+      /// the directed edge is the same when the given bool is true.
       Edge direct(const UEdge&, bool) const {
 	return INVALID;
@@ -580,5 +599,5 @@
       ///
       /// Returns whether the given directed edge is same orientation as
-      /// the corresponding undirected edge.
+      /// the corresponding undirected edge's default orientation.
       bool direction(Edge) const { return true; }
 
@@ -590,5 +609,5 @@
       /// \brief Opposite node on an edge
       ///
-      /// \return the opposite of the given Node on the given Edge
+      /// \return the opposite of the given Node on the given UEdge
       Node oppositeNode(Node, UEdge) const { return INVALID; }
 
@@ -597,7 +616,7 @@
       /// \return the first node of the given UEdge.
       ///
-      /// Naturally uectected edges don't have direction and thus
+      /// Naturally undirected edges don't have direction and thus
       /// don't have source and target node. But we use these two methods
-      /// to query the two endnodes of the edge. The direction of the edge
+      /// to query the two nodes of the edge. The direction of the edge
       /// which arises this way is called the inherent direction of the
       /// undirected edge, and is used to define the "default" direction
