Index: lemon/concepts/maps.h
===================================================================
--- lemon/concepts/maps.h	(revision 2553)
+++ lemon/concepts/maps.h	(revision 2564)
@@ -35,15 +35,21 @@
 
     /// Readable map concept
+
+    /// Readable map concept.
+    ///
     template<typename K, typename T>
     class ReadMap
     {
     public:
-      /// Map's key type.
-      typedef K Key;    
-      /// Map's value type. (The type of objects associated with the keys).
-      typedef T Value;
-
-      // \bug Value don't need to be default constructible.
+      /// The key type of the map.
+      typedef K Key;    
+      /// The value type of the map. (The type of objects associated with the keys).
+      typedef T Value;
+
       /// Returns the value associated with a key.
+
+      /// Returns the value associated with a key.
+      /// \bug Value shouldn't need to be default constructible.
+      ///
       Value operator[](const Key &) const {return Value();}
 
@@ -70,11 +76,14 @@
 
     /// Writable map concept
+    
+    /// Writable map concept.
+    ///
     template<typename K, typename T>
     class WriteMap
     {
     public:
-      /// Map's key type.
-      typedef K Key;    
-      /// Map's value type. (The type of objects associated with the keys).
+      /// The key type of the map.
+      typedef K Key;    
+      /// The value type of the map. (The type of objects associated with the keys).
       typedef T Value;
 
@@ -106,13 +115,16 @@
     };
 
-    ///Read/Writable map concept
+    /// Read/writable map concept
+    
+    /// Read/writable map concept.
+    ///
     template<typename K, typename T>
     class ReadWriteMap : public ReadMap<K,T>,
-			    public WriteMap<K,T>
-    {
-    public:
-      /// Map's key type.
-      typedef K Key;    
-      /// Map's value type. (The type of objects associated with the keys).
+			 public WriteMap<K,T>
+    {
+    public:
+      /// The key type of the map.
+      typedef K Key;    
+      /// The value type of the map. (The type of objects associated with the keys).
       typedef T Value;
 
@@ -133,4 +145,8 @@
   
     ///Dereferable map concept
+    
+    /// Dereferable map concept.
+    ///
+    /// \todo Rethink this concept.
     template<typename K, typename T, typename R, typename CR>
     class ReferenceMap : public ReadWriteMap<K,T>
@@ -139,11 +155,11 @@
       /// Tag for reference maps.
       typedef True ReferenceMapTag;
-      /// Map's key type.
-      typedef K Key;    
-      /// Map's value type. (The type of objects associated with the keys).
-      typedef T Value;
-      /// Map's reference type.
+      /// The key type of the map.
+      typedef K Key;    
+      /// The value type of the map. (The type of objects associated with the keys).
+      typedef T Value;
+      /// The reference type of the map.
       typedef R Reference;
-      /// Map's const reference type.
+      /// The const reference type of the map.
       typedef CR ConstReference;
 
@@ -152,18 +168,16 @@
     public:
 
-      ///Returns a reference to the value associated to a key.
+      ///Returns a reference to the value associated with a key.
       Reference operator[](const Key &) { return tmp; }
-      ///Returns a const reference to the value associated to a key.
-      ConstReference operator[](const Key &) const
-      { return tmp; }
+      ///Returns a const reference to the value associated with a key.
+      ConstReference operator[](const Key &) const { return tmp; }
       /// Sets the value associated with a key.
       void set(const Key &k,const Value &t) { operator[](k)=t; }
 
-      // \todo rethink this concept
       template<typename _ReferenceMap>
-      struct ReferenceMapConcept {
-
-	void constraints() {
-	  checkConcept<ReadWriteMap, _ReferenceMap >();
+      struct Constraints {
+
+	void constraints() {
+	  checkConcept<ReadWriteMap<K, T>, _ReferenceMap >();
 	  m[key] = val;
 	  val  = m[key];
@@ -178,8 +192,8 @@
 	typename _ReferenceMap::Key& own_key;
 	typename _ReferenceMap::Value& own_val;
-	typename _ReferenceMap::Reference& own_ref;
+	typename _ReferenceMap::Reference own_ref;
 	Key& key;
 	Value& val;
-	Reference& ref;
+	Reference ref;
 	_ReferenceMap& m;
       };
@@ -189,4 +203,6 @@
 
   } //namespace concepts
+
 } //namespace lemon
+
 #endif // LEMON_CONCEPT_MAPS_H
Index: lemon/maps.h
===================================================================
--- lemon/maps.h	(revision 2553)
+++ lemon/maps.h	(revision 2564)
@@ -45,7 +45,7 @@
   class MapBase {
   public:
-    ///\e
+    /// The key type of the map.
     typedef K Key;
-    ///\e
+    /// The value type of the map. (The type of objects associated with the keys).
     typedef T Value;
   };
@@ -53,7 +53,8 @@
   /// Null map. (a.k.a. DoNothingMap)
 
-  /// If you have to provide a map only for its type definitions,
-  /// or if you have to provide a writable map, but
-  /// data written to it will sent to <tt>/dev/null</tt>...
+  /// This map can be used if you have to provide a map only for
+  /// its type definitions, or if you have to provide a writable map, 
+  /// but data written to it is not required (i.e. it will be sent to 
+  /// <tt>/dev/null</tt>).
   template<typename K, typename T>
   class NullMap : public MapBase<K, T> {
@@ -69,4 +70,8 @@
   };
 
+  ///Returns a \c NullMap class
+
+  ///This function just returns a \c NullMap class.
+  ///\relates NullMap
   template <typename K, typename V> 
   NullMap<K, V> nullMap() {
@@ -77,6 +82,7 @@
   /// Constant map.
 
-  /// This is a readable map which assigns a specified value to each key.
-  /// In other aspects it is equivalent to the \c NullMap.
+  /// This is a \ref concepts::ReadMap "readable" map which assigns a 
+  /// specified value to each key.
+  /// In other aspects it is equivalent to \c NullMap.
   template<typename K, typename T>
   class ConstMap : public MapBase<K, T> {
@@ -91,11 +97,13 @@
     /// Default constructor
 
+    /// Default constructor.
     /// The value of the map will be uninitialized. 
     /// (More exactly it will be default constructed.)
     ConstMap() {}
-    ///\e
-
-    /// \param _v The initial value of the map.
-    ///
+    
+    /// Constructor with specified initial value
+
+    /// Constructor with specified initial value.
+    /// \param _v is the initial value of the map.
     ConstMap(const T &_v) : v(_v) {}
     
@@ -132,6 +140,7 @@
   /// Constant map with inlined constant value.
 
-  /// This is a readable map which assigns a specified value to each key.
-  /// In other aspects it is equivalent to the \c NullMap.
+  /// This is a \ref concepts::ReadMap "readable" map which assigns a 
+  /// specified value to each key.
+  /// In other aspects it is equivalent to \c NullMap.
   template<typename K, typename V, V v>
   class ConstMap<K, Const<V, v> > : public MapBase<K, V> {
@@ -148,5 +157,5 @@
   };
 
-  ///Returns a \c ConstMap class
+  ///Returns a \c ConstMap class with inlined value
 
   ///This function just returns a \c ConstMap class with inlined value.
@@ -157,23 +166,26 @@
   }
 
-  ///Map based on std::map
-
-  ///This is essentially a wrapper for \c std::map. With addition that
+  ///Map based on \c std::map
+
+  ///This is essentially a wrapper for \c std::map with addition that
   ///you can specify a default value different from \c Value() .
+  ///It meets the \ref concepts::ReferenceMap "ReferenceMap" concept.
   template <typename K, typename T, typename Compare = std::less<K> >
-  class StdMap {
+  class StdMap : public MapBase<K, T> {
     template <typename K1, typename T1, typename C1>
     friend class StdMap;
   public:
 
+    typedef MapBase<K, T> Parent;
+    ///Key type
+    typedef typename Parent::Key Key;
+    ///Value type
+    typedef typename Parent::Value Value;
+    ///Reference Type
+    typedef T& Reference;
+    ///Const reference type
+    typedef const T& ConstReference;
+
     typedef True ReferenceMapTag;
-    ///\e
-    typedef K Key;
-    ///\e
-    typedef T Value;
-    ///\e
-    typedef T& Reference;
-    ///\e
-    typedef const T& ConstReference;
 
   private:
@@ -187,11 +199,11 @@
     /// Constructor with specified default value
     StdMap(const T& value = T()) : _value(value) {}
-    /// \brief Constructs the map from an appropriate std::map, and explicitly
-    /// specifies a default value.
+    /// \brief Constructs the map from an appropriate \c std::map, and 
+    /// explicitly specifies a default value.
     template <typename T1, typename Comp1>
     StdMap(const std::map<Key, T1, Comp1> &map, const T& value = T()) 
       : _map(map.begin(), map.end()), _value(value) {}
     
-    /// \brief Constructs a map from an other StdMap.
+    /// \brief Constructs a map from an other \ref StdMap.
     template<typename T1, typename Comp1>
     StdMap(const StdMap<Key, T1, Comp1> &c) 
@@ -243,12 +255,38 @@
   };
 
-  /// \brief Map for storing values for the range \c [0..size-1] range keys
-  ///
-  /// The current map has the \c [0..size-1] keyset and the values
+  ///Returns a \c StdMap class
+
+  ///This function just returns a \c StdMap class with specified 
+  ///default value.
+  ///\relates StdMap
+  template<typename K, typename V, typename Compare> 
+  inline StdMap<K, V, Compare> stdMap(const V& value = V()) {
+    return StdMap<K, V, Compare>(value);
+  }
+  
+  template<typename K, typename V> 
+  inline StdMap<K, V, std::less<K> > stdMap(const V& value = V()) {
+    return StdMap<K, V, std::less<K> >(value);
+  }
+  
+  ///Returns a \c StdMap class created from an appropriate \c std::map
+
+  ///This function just returns a \c StdMap class created from an 
+  ///appropriate \c std::map.
+  ///\relates StdMap
+  template<typename K, typename V, typename Compare> 
+  inline StdMap<K, V, Compare> stdMap( const std::map<K, V, Compare> &map, 
+                                       const V& value = V() ) {
+    return StdMap<K, V, Compare>(map, value);
+  }
+
+  /// \brief Map for storing values for keys from the range <tt>[0..size-1]</tt>
+  ///
+  /// This map has the <tt>[0..size-1]</tt> keyset and the values
   /// are stored in a \c std::vector<T>  container. It can be used with
   /// some data structures, for example \c UnionFind, \c BinHeap, when 
   /// the used items are small integer numbers.
   template <typename T>
-  class IntegerMap {
+  class IntegerMap : public MapBase<int, T> {
 
     template <typename T1>
@@ -257,13 +295,15 @@
   public:
 
+    typedef MapBase<int, T> Parent;
+    ///\e
+    typedef typename Parent::Key Key;
+    ///\e
+    typedef typename Parent::Value Value;
+    ///\e
+    typedef T& Reference;
+    ///\e
+    typedef const T& ConstReference;
+
     typedef True ReferenceMapTag;
-    ///\e
-    typedef int Key;
-    ///\e
-    typedef T Value;
-    ///\e
-    typedef T& Reference;
-    ///\e
-    typedef const T& ConstReference;
 
   private:
@@ -277,10 +317,10 @@
     IntegerMap(int size = 0, const T& value = T()) : _vector(size, value) {}
 
-    /// \brief Constructs the map from an appropriate std::vector.
+    /// \brief Constructs the map from an appropriate \c std::vector.
     template <typename T1>
     IntegerMap(const std::vector<T1>& vector) 
       : _vector(vector.begin(), vector.end()) {}
     
-    /// \brief Constructs a map from an other IntegerMap.
+    /// \brief Constructs a map from an other \ref IntegerMap.
     template <typename T1>
     IntegerMap(const IntegerMap<T1> &c) 
@@ -315,4 +355,13 @@
   };
 
+  ///Returns an \c IntegerMap class
+
+  ///This function just returns an \c IntegerMap class.
+  ///\relates IntegerMap
+  template<typename T>
+  inline IntegerMap<T> integerMap(int size = 0, const T& value = T()) {
+    return IntegerMap<T>(size, value);
+  }
+
   /// @}
 
@@ -320,7 +369,7 @@
   /// @{
 
-  /// \brief Identity mapping.
-  ///
-  /// This mapping gives back the given key as value without any
+  /// \brief Identity map.
+  ///
+  /// This map gives back the given key as value without any
   /// modification. 
   template <typename T>
@@ -347,8 +396,9 @@
   
 
-  ///Convert the \c Value of a map to another type.
-
-  ///This \c concepts::ReadMap "read only map"
-  ///converts the \c Value of a maps to type \c T.
+  ///\brief Convert the \c Value of a map to another type using
+  ///the default conversion.
+  ///
+  ///This \ref concepts::ReadMap "read only map"
+  ///converts the \c Value of a map to type \c T.
   ///Its \c Key is inherited from \c M.
   template <typename M, typename T> 
@@ -366,15 +416,11 @@
     ConvertMap(const M &_m) : m(_m) {};
 
-    /// \brief The subscript operator.
-    ///
-    /// The subscript operator.
-    /// \param k The key
-    /// \return The target of the edge 
+    ///\e
     Value operator[](const Key& k) const {return m[k];}
   };
   
-  ///Returns an \c ConvertMap class
-
-  ///This function just returns an \c ConvertMap class.
+  ///Returns a \c ConvertMap class
+
+  ///This function just returns a \c ConvertMap class.
   ///\relates ConvertMap
   template<typename T, typename M>
@@ -383,10 +429,14 @@
   }
 
-  ///Simple wrapping of the map
-
-  ///This \c concepts::ReadMap "read only map" returns the simple
+  ///Simple wrapping of a map
+
+  ///This \ref concepts::ReadMap "read only map" returns the simple
   ///wrapping of the given map. Sometimes the reference maps cannot be
   ///combined with simple read maps. This map adaptor wraps the given
   ///map to simple read map.
+  ///
+  ///\sa SimpleWriteMap
+  ///
+  /// \todo Revise the misleading name 
   template<typename M> 
   class SimpleMap : public MapBase<typename M::Key, typename M::Value> {
@@ -404,10 +454,23 @@
   };
 
-  ///Simple writeable wrapping of the map
-
-  ///This \c concepts::ReadMap "read only map" returns the simple
+  ///Returns a \c SimpleMap class
+
+  ///This function just returns a \c SimpleMap class.
+  ///\relates SimpleMap
+  template<typename M>
+  inline SimpleMap<M> simpleMap(const M &m) {
+    return SimpleMap<M>(m);
+  }
+
+  ///Simple writable wrapping of a map
+
+  ///This \ref concepts::ReadWriteMap "read-write map" returns the simple
   ///wrapping of the given map. Sometimes the reference maps cannot be
   ///combined with simple read-write maps. This map adaptor wraps the
   ///given map to simple read-write map.
+  ///
+  ///\sa SimpleMap
+  ///
+  /// \todo Revise the misleading name
   template<typename M> 
   class SimpleWriteMap : public MapBase<typename M::Key, typename M::Value> {
@@ -427,10 +490,19 @@
   };
 
+  ///Returns a \c SimpleWriteMap class
+
+  ///This function just returns a \c SimpleWriteMap class.
+  ///\relates SimpleWriteMap
+  template<typename M>
+  inline SimpleWriteMap<M> simpleWriteMap(M &m) {
+    return SimpleWriteMap<M>(m);
+  }
+
   ///Sum of two maps
 
-  ///This \c concepts::ReadMap "read only map" returns the sum of the two
-  ///given maps. Its \c Key and \c Value will be inherited from \c M1.
-  ///The \c Key and \c Value of M2 must be convertible to those of \c M1.
-
+  ///This \ref concepts::ReadMap "read only map" returns the sum of the two
+  ///given maps.
+  ///Its \c Key and \c Value are inherited from \c M1.
+  ///The \c Key and \c Value of \c M2 must be convertible to those of \c M1.
   template<typename M1, typename M2> 
   class AddMap : public MapBase<typename M1::Key, typename M1::Value> {
@@ -462,5 +534,5 @@
   ///Shift a map with a constant.
 
-  ///This \c concepts::ReadMap "read only map" returns the sum of the
+  ///This \ref concepts::ReadMap "read only map" returns the sum of the
   ///given map and a constant value.
   ///Its \c Key and \c Value is inherited from \c M.
@@ -470,9 +542,11 @@
   ///  ShiftMap<X> sh(x,v);
   ///\endcode
-  ///is equivalent with
+  ///is equivalent to
   ///\code
   ///  ConstMap<X::Key, X::Value> c_tmp(v);
   ///  AddMap<X, ConstMap<X::Key, X::Value> > sh(x,v);
   ///\endcode
+  ///
+  ///\sa ShiftWriteMap
   template<typename M, typename C = typename M::Value> 
   class ShiftMap : public MapBase<typename M::Key, typename M::Value> {
@@ -494,19 +568,11 @@
   };
 
-  ///Shift a map with a constant.
-
-  ///This \c concepts::ReadWriteMap "read-write map" returns the sum of the
+  ///Shift a map with a constant (ReadWrite version).
+
+  ///This \ref concepts::ReadWriteMap "read-write map" returns the sum of the
   ///given map and a constant value. It makes also possible to write the map.
-  ///Its \c Key and \c Value is inherited from \c M.
-  ///
-  ///Actually,
-  ///\code
-  ///  ShiftMap<X> sh(x,v);
-  ///\endcode
-  ///is equivalent with
-  ///\code
-  ///  ConstMap<X::Key, X::Value> c_tmp(v);
-  ///  AddMap<X, ConstMap<X::Key, X::Value> > sh(x,v);
-  ///\endcode
+  ///Its \c Key and \c Value are inherited from \c M.
+  ///
+  ///\sa ShiftMap
   template<typename M, typename C = typename M::Value> 
   class ShiftWriteMap : public MapBase<typename M::Key, typename M::Value> {
@@ -530,5 +596,5 @@
   };
   
-  ///Returns an \c ShiftMap class
+  ///Returns a \c ShiftMap class
 
   ///This function just returns an \c ShiftMap class.
@@ -539,4 +605,8 @@
   }
 
+  ///Returns a \c ShiftWriteMap class
+
+  ///This function just returns a \c ShiftWriteMap class.
+  ///\relates ShiftWriteMap
   template<typename M, typename C> 
   inline ShiftWriteMap<M, C> shiftMap(M &m,const C &v) {
@@ -546,7 +616,7 @@
   ///Difference of two maps
 
-  ///This \c concepts::ReadMap "read only map" returns the difference
-  ///of the values of the two
-  ///given maps. Its \c Key and \c Value will be inherited from \c M1.
+  ///This \ref concepts::ReadMap "read only map" returns the difference
+  ///of the values of the two given maps.
+  ///Its \c Key and \c Value are inherited from \c M1.
   ///The \c Key and \c Value of \c M2 must be convertible to those of \c M1.
 
@@ -578,10 +648,8 @@
   ///Product of two maps
 
-  ///This \c concepts::ReadMap "read only map" returns the product of the
-  ///values of the two
-  ///given
-  ///maps. Its \c Key and \c Value will be inherited from \c M1.
+  ///This \ref concepts::ReadMap "read only map" returns the product of the
+  ///values of the two given maps.
+  ///Its \c Key and \c Value are inherited from \c M1.
   ///The \c Key and \c Value of \c M2 must be convertible to those of \c M1.
-
   template<typename M1, typename M2> 
   class MulMap : public MapBase<typename M1::Key, typename M1::Value> {
@@ -608,9 +676,9 @@
   }
  
-  ///Scales a maps with a constant.
-
-  ///This \c concepts::ReadMap "read only map" returns the value of the
+  ///Scales a map with a constant.
+
+  ///This \ref concepts::ReadMap "read only map" returns the value of the
   ///given map multiplied from the left side with a constant value.
-  ///Its \c Key and \c Value is inherited from \c M.
+  ///Its \c Key and \c Value are inherited from \c M.
   ///
   ///Actually,
@@ -618,9 +686,11 @@
   ///  ScaleMap<X> sc(x,v);
   ///\endcode
-  ///is equivalent with
+  ///is equivalent to
   ///\code
   ///  ConstMap<X::Key, X::Value> c_tmp(v);
   ///  MulMap<X, ConstMap<X::Key, X::Value> > sc(x,v);
   ///\endcode
+  ///
+  ///\sa ScaleWriteMap
   template<typename M, typename C = typename M::Value> 
   class ScaleMap : public MapBase<typename M::Key, typename M::Value> {
@@ -642,10 +712,13 @@
   };
 
-  ///Scales a maps with a constant.
-
-  ///This \c concepts::ReadWriteMap "read-write map" returns the value of the
+  ///Scales a map with a constant (ReadWrite version).
+
+  ///This \ref concepts::ReadWriteMap "read-write map" returns the value of the
   ///given map multiplied from the left side with a constant value. It can
-  ///be used as write map also if the given multiplier is not zero.
-  ///Its \c Key and \c Value is inherited from \c M.
+  ///also be used as write map if the \c / operator is defined between
+  ///\c Value and \c C and the given multiplier is not zero.
+  ///Its \c Key and \c Value are inherited from \c M.
+  ///
+  ///\sa ScaleMap
   template<typename M, typename C = typename M::Value> 
   class ScaleWriteMap : public MapBase<typename M::Key, typename M::Value> {
@@ -669,7 +742,7 @@
   };
   
-  ///Returns an \c ScaleMap class
-
-  ///This function just returns an \c ScaleMap class.
+  ///Returns a \c ScaleMap class
+
+  ///This function just returns a \c ScaleMap class.
   ///\relates ScaleMap
   template<typename M, typename C> 
@@ -678,4 +751,8 @@
   }
 
+  ///Returns a \c ScaleWriteMap class
+
+  ///This function just returns a \c ScaleWriteMap class.
+  ///\relates ScaleWriteMap
   template<typename M, typename C> 
   inline ScaleWriteMap<M, C> scaleMap(M &m,const C &v) {
@@ -685,9 +762,8 @@
   ///Quotient of two maps
 
-  ///This \c concepts::ReadMap "read only map" returns the quotient of the
-  ///values of the two
-  ///given maps. Its \c Key and \c Value will be inherited from \c M1.
+  ///This \ref concepts::ReadMap "read only map" returns the quotient of the
+  ///values of the two given maps.
+  ///Its \c Key and \c Value are inherited from \c M1.
   ///The \c Key and \c Value of \c M2 must be convertible to those of \c M1.
-
   template<typename M1, typename M2> 
   class DivMap : public MapBase<typename M1::Key, typename M1::Value> {
@@ -716,17 +792,18 @@
   ///Composition of two maps
 
-  ///This \c concepts::ReadMap "read only map" returns the composition of
-  ///two
-  ///given maps. That is to say, if \c m1 is of type \c M1 and \c m2 is
-  ///of \c M2,
+  ///This \ref concepts::ReadMap "read only map" returns the composition of
+  ///two given maps.
+  ///That is to say, if \c m1 is of type \c M1 and \c m2 is of \c M2,
   ///then for
   ///\code
   ///  ComposeMap<M1, M2> cm(m1,m2);
   ///\endcode
-  /// <tt>cm[x]</tt> will be equal to <tt>m1[m2[x]]</tt>
-  ///
-  ///Its \c Key is inherited from \c M2 and its \c Value is from
-  ///\c M1.
-  ///The \c M2::Value must be convertible to \c M1::Key.
+  /// <tt>cm[x]</tt> will be equal to <tt>m1[m2[x]]</tt>.
+  ///
+  ///Its \c Key is inherited from \c M2 and its \c Value is from \c M1.
+  ///\c M2::Value must be convertible to \c M1::Key.
+  ///
+  ///\sa CombineMap
+  ///
   ///\todo Check the requirements.
   template <typename M1, typename M2> 
@@ -756,16 +833,13 @@
   }
   
-  ///Combines of two maps using an STL (binary) functor.
-
-  ///Combines of two maps using an STL (binary) functor.
-  ///
-  ///
-  ///This \c concepts::ReadMap "read only map" takes two maps and a
-  ///binary functor and returns the composition of
-  ///the two
+  ///Combine of two maps using an STL (binary) functor.
+
+  ///Combine of two maps using an STL (binary) functor.
+  ///
+  ///This \ref concepts::ReadMap "read only map" takes two maps and a
+  ///binary functor and returns the composition of the two
   ///given maps unsing the functor. 
   ///That is to say, if \c m1 and \c m2 is of type \c M1 and \c M2
-  ///and \c f is of \c F,
-  ///then for
+  ///and \c f is of \c F, then for
   ///\code
   ///  CombineMap<M1, M2,F,V> cm(m1,m2,f);
@@ -774,7 +848,10 @@
   ///
   ///Its \c Key is inherited from \c M1 and its \c Value is \c V.
-  ///The \c M2::Value and \c M1::Value must be convertible to the corresponding
+  ///\c M2::Value and \c M1::Value must be convertible to the corresponding
   ///input parameter of \c F and the return type of \c F must be convertible
   ///to \c V.
+  ///
+  ///\sa ComposeMap
+  ///
   ///\todo Check the requirements.
   template<typename M1, typename M2, typename F,
@@ -802,7 +879,7 @@
   ///For example if \c m1 and \c m2 are both \c double valued maps, then 
   ///\code
-  ///combineMap<double>(m1,m2,std::plus<double>())
+  ///combineMap(m1,m2,std::plus<double>())
   ///\endcode
-  ///is equivalent with
+  ///is equivalent to
   ///\code
   ///addMap(m1,m2)
@@ -810,5 +887,5 @@
   ///
   ///This function is specialized for adaptable binary function
-  ///classes and c++ functions.
+  ///classes and C++ functions.
   ///
   ///\relates CombineMap
@@ -833,10 +910,10 @@
   ///Negative value of a map
 
-  ///This \c concepts::ReadMap "read only map" returns the negative
-  ///value of the
-  ///value returned by the
-  ///given map. Its \c Key and \c Value will be inherited from \c M.
+  ///This \ref concepts::ReadMap "read only map" returns the negative
+  ///value of the value returned by the given map.
+  ///Its \c Key and \c Value are inherited from \c M.
   ///The unary \c - operator must be defined for \c Value, of course.
-
+  ///
+  ///\sa NegWriteMap
   template<typename M> 
   class NegMap : public MapBase<typename M::Key, typename M::Value> {
@@ -853,11 +930,12 @@
   };
   
-  ///Negative value of a map
-
-  ///This \c concepts::ReadWriteMap "read-write map" returns the negative
-  ///value of the value returned by the
-  ///given map. Its \c Key and \c Value will be inherited from \c M.
+  ///Negative value of a map (ReadWrite version)
+
+  ///This \ref concepts::ReadWriteMap "read-write map" returns the negative
+  ///value of the value returned by the given map.
+  ///Its \c Key and \c Value are inherited from \c M.
   ///The unary \c - operator must be defined for \c Value, of course.
-
+  ///
+  /// \sa NegMap
   template<typename M> 
   class NegWriteMap : public MapBase<typename M::Key, typename M::Value> {
@@ -885,4 +963,8 @@
   }
 
+  ///Returns a \c NegWriteMap class
+
+  ///This function just returns a \c NegWriteMap class.
+  ///\relates NegWriteMap
   template <typename M> 
   inline NegWriteMap<M> negMap(M &m) {
@@ -892,10 +974,8 @@
   ///Absolute value of a map
 
-  ///This \c concepts::ReadMap "read only map" returns the absolute value
-  ///of the
-  ///value returned by the
-  ///given map. Its \c Key and \c Value will be inherited
-  ///from <tt>M</tt>. <tt>Value</tt>
-  ///must be comparable to <tt>0</tt> and the unary <tt>-</tt>
+  ///This \ref concepts::ReadMap "read only map" returns the absolute value
+  ///of the value returned by the given map.
+  ///Its \c Key and \c Value are inherited from \c M. 
+  ///\c Value must be comparable to \c 0 and the unary \c -
   ///operator must be defined for it, of course.
   ///
@@ -931,7 +1011,7 @@
   };
   
-  ///Returns a \c AbsMap class
-
-  ///This function just returns a \c AbsMap class.
+  ///Returns an \c AbsMap class
+
+  ///This function just returns an \c AbsMap class.
   ///\relates AbsMap
   template<typename M> 
@@ -942,13 +1022,16 @@
   ///Converts an STL style functor to a map
 
-  ///This \c concepts::ReadMap "read only map" returns the value
-  ///of a
-  ///given map.
+  ///This \ref concepts::ReadMap "read only map" returns the value
+  ///of a given functor.
   ///
   ///Template parameters \c K and \c V will become its
-  ///\c Key and \c Value. They must be given explicitely
-  ///because a functor does not provide such typedefs.
+  ///\c Key and \c Value. 
+  ///In most cases they have to be given explicitly because a 
+  ///functor typically does not provide \c argument_type and 
+  ///\c result_type typedefs.
   ///
   ///Parameter \c F is the type of the used functor.
+  ///
+  ///\sa MapFunctor
   template<typename F, 
 	   typename K = typename F::argument_type, 
@@ -971,6 +1054,7 @@
   ///This function just returns a \c FunctorMap class.
   ///
-  ///It is specialized for adaptable function classes and
-  ///c++ functions.
+  ///This function is specialized for adaptable binary function
+  ///classes and C++ functions.
+  ///
   ///\relates FunctorMap
   template<typename K, typename V, typename F> inline 
@@ -995,9 +1079,11 @@
 
   ///This class Converts a map to an STL style (unary) functor.
-  ///that is it provides an <tt>operator()</tt> to read its values.
+  ///That is it provides an <tt>operator()</tt> to read its values.
   ///
   ///For the sake of convenience it also works as
-  ///a ususal \c concepts::ReadMap "readable map",
+  ///a ususal \ref concepts::ReadMap "readable map",
   ///i.e. <tt>operator[]</tt> and the \c Key and \c Value typedefs also exist.
+  ///
+  ///\sa FunctorMap
   template <typename M> 
   class MapFunctor : public MapBase<typename M::Key, typename M::Value> {
@@ -1028,12 +1114,15 @@
   }
 
-  ///Applies all map setting operations to two maps
-
-  ///This map has two \c concepts::ReadMap "readable map"
+  ///Just readable version of \ref ForkWriteMap
+
+  ///This map has two \ref concepts::ReadMap "readable map"
   ///parameters and each read request will be passed just to the
-  ///first map. This class is the just readable map type of the ForkWriteMap.
-  ///
-  ///The \c Key and \c Value will be inherited from \c M1.
-  ///The \c Key and \c Value of M2 must be convertible from those of \c M1.
+  ///first map. This class is the just readable map type of \c ForkWriteMap.
+  ///
+  ///The \c Key and \c Value are inherited from \c M1.
+  ///The \c Key and \c Value of \c M2 must be convertible from those of \c M1.
+  ///
+  ///\sa ForkWriteMap
+
   template<typename  M1, typename M2> 
   class ForkMap : public MapBase<typename M1::Key, typename M1::Value> {
@@ -1054,12 +1143,14 @@
   ///Applies all map setting operations to two maps
 
-  ///This map has two \c concepts::WriteMap "writable map"
+  ///This map has two \ref concepts::WriteMap "writable map"
   ///parameters and each write request will be passed to both of them.
-  ///If \c M1 is also \c concepts::ReadMap "readable",
+  ///If \c M1 is also \ref concepts::ReadMap "readable",
   ///then the read operations will return the
   ///corresponding values of \c M1.
   ///
-  ///The \c Key and \c Value will be inherited from \c M1.
-  ///The \c Key and \c Value of M2 must be convertible from those of \c M1.
+  ///The \c Key and \c Value are inherited from \c M1.
+  ///The \c Key and \c Value of \c M2 must be convertible from those of \c M1.
+  ///
+  ///\sa ForkMap
   template<typename  M1, typename M2> 
   class ForkWriteMap : public MapBase<typename M1::Key, typename M1::Value> {
@@ -1079,8 +1170,7 @@
   };
   
-  ///Returns an \c ForkMap class
-
-  ///This function just returns an \c ForkMap class.
-  ///
+  ///Returns a \c ForkMap class
+
+  ///This function just returns a \c ForkMap class.
   ///\relates ForkMap
   template <typename M1, typename M2> 
@@ -1089,4 +1179,8 @@
   }
 
+  ///Returns a \c ForkWriteMap class
+
+  ///This function just returns a \c ForkWriteMap class.
+  ///\relates ForkWriteMap
   template <typename M1, typename M2> 
   inline ForkWriteMap<M1, M2> forkMap(M1 &m1, M2 &m2) {
@@ -1100,9 +1194,9 @@
   ///Logical 'not' of a map
   
-  ///This bool \c concepts::ReadMap "read only map" returns the 
-  ///logical negation of
-  ///value returned by the
-  ///given map. Its \c Key and will be inherited from \c M,
-  ///its Value is <tt>bool</tt>.
+  ///This bool \ref concepts::ReadMap "read only map" returns the 
+  ///logical negation of the value returned by the given map.
+  ///Its \c Key is inherited from \c M, its \c Value is \c bool.
+  ///
+  ///\sa NotWriteMap
   template <typename M> 
   class NotMap : public MapBase<typename M::Key, bool> {
@@ -1119,11 +1213,12 @@
   };
 
-  ///Logical 'not' of a map with writing possibility
-  
-  ///This bool \c concepts::ReadWriteMap "read-write map" returns the 
-  ///logical negation of value returned by the given map. When it is set,
+  ///Logical 'not' of a map (ReadWrie version)
+  
+  ///This bool \ref concepts::ReadWriteMap "read-write map" returns the 
+  ///logical negation of the value returned by the given map. When it is set,
   ///the opposite value is set to the original map.
-  ///Its \c Key and will be inherited from \c M,
-  ///its Value is <tt>bool</tt>.
+  ///Its \c Key is inherited from \c M, its \c Value is \c bool.
+  ///
+  ///\sa NotMap
   template <typename M> 
   class NotWriteMap : public MapBase<typename M::Key, bool> {
@@ -1151,4 +1246,8 @@
   }
   
+  ///Returns a \c NotWriteMap class
+  
+  ///This function just returns a \c NotWriteMap class.
+  ///\relates NotWriteMap
   template <typename M> 
   inline NotWriteMap<M> notMap(M &m) {
@@ -1182,14 +1281,15 @@
   
 
-  /// \brief Writable bool map for store each true assigned elements.
-  ///
-  /// Writable bool map to store each true assigned elements. It will
-  /// copies all the keys set to true to the given iterator.
+  /// \brief Writable bool map for logging each \c true assigned element
+  ///
+  /// A \ref concepts::ReadWriteMap "read-write" bool map for logging 
+  /// each \c true assigned element, i.e it copies all the keys set 
+  /// to \c true to the given iterator.
   ///
   /// \note The container of the iterator should contain space 
   /// for each element.
   ///
-  /// The next example shows how can you write the nodes directly
-  /// to the standard output.
+  /// The following example shows how you can write the edges found by 
+  /// the \ref Prim algorithm directly to the standard output.
   ///\code
   /// typedef IdMap<UGraph, UEdge> UEdgeIdMap;
@@ -1204,4 +1304,8 @@
   /// prim(ugraph, cost, writerMap);
   ///\endcode
+  ///
+  ///\sa BackInserterBoolMap 
+  ///\sa FrontInserterBoolMap 
+  ///\sa InserterBoolMap 
   template <typename _Iterator, 
             typename _Functor =
@@ -1221,15 +1325,15 @@
       : _begin(it), _end(it), _functor(functor) {}
 
-    /// Gives back the given iterator set for the first time.
+    /// Gives back the given iterator set for the first key
     Iterator begin() const {
       return _begin;
     }
  
-    /// Gives back the iterator after the last set operation.
+    /// Gives back the the 'after the last' iterator
     Iterator end() const {
       return _end;
     }
 
-    /// Setter function of the map
+    /// The \c set function of the map
     void set(const Key& key, Value value) const {
       if (value) {
@@ -1244,12 +1348,12 @@
   };
 
-  /// \brief Writable bool map for store each true assigned elements in 
+  /// \brief Writable bool map for logging each \c true assigned element in 
   /// a back insertable container.
   ///
-  /// Writable bool map for store each true assigned elements in a back 
-  /// insertable container. It will push back all the keys set to true into
-  /// the container. It can be used to retrieve the items into a standard
-  /// container. The next example shows how can you store the undirected
-  /// edges in a vector with prim algorithm.
+  /// Writable bool map for logging each \c true assigned element by pushing
+  /// them into a back insertable container.
+  /// It can be used to retrieve the items into a standard
+  /// container. The next example shows how you can store the
+  /// edges found by the Prim algorithm in a vector.
   ///
   ///\code
@@ -1258,4 +1362,8 @@
   /// prim(ugraph, cost, inserter_map);
   ///\endcode
+  ///
+  ///\sa StoreBoolMap
+  ///\sa FrontInserterBoolMap
+  ///\sa InserterBoolMap
   template <typename Container,
             typename Functor =
@@ -1263,5 +1371,5 @@
   class BackInserterBoolMap {
   public:
-    typedef typename Container::value_type Key;
+    typedef typename Functor::argument_type Key;
     typedef bool Value;
 
@@ -1271,5 +1379,5 @@
       : container(_container), functor(_functor) {}
 
-    /// Setter function of the map
+    /// The \c set function of the map
     void set(const Key& key, Value value) {
       if (value) {
@@ -1283,10 +1391,14 @@
   };
 
-  /// \brief Writable bool map for store each true assigned elements in 
+  /// \brief Writable bool map for logging each \c true assigned element in 
   /// a front insertable container.
   ///
-  /// Writable bool map for store each true assigned elements in a front 
-  /// insertable container. It will push front all the keys set to \c true into
-  /// the container. For example see the BackInserterBoolMap.
+  /// Writable bool map for logging each \c true assigned element by pushing
+  /// them into a front insertable container.
+  /// It can be used to retrieve the items into a standard
+  /// container. For example see \ref BackInserterBoolMap.
+  ///
+  ///\sa BackInserterBoolMap
+  ///\sa InserterBoolMap
   template <typename Container,
             typename Functor =
@@ -1294,5 +1406,5 @@
   class FrontInserterBoolMap {
   public:
-    typedef typename Container::value_type Key;
+    typedef typename Functor::argument_type Key;
     typedef bool Value;
 
@@ -1302,8 +1414,8 @@
       : container(_container), functor(_functor) {}
 
-    /// Setter function of the map
+    /// The \c set function of the map
     void set(const Key& key, Value value) {
       if (value) {
-	container.push_front(key);
+	container.push_front(functor(key));
       }
     }
@@ -1314,10 +1426,12 @@
   };
 
-  /// \brief Writable bool map for store each true assigned elements in 
+  /// \brief Writable bool map for storing each \c true assigned element in 
   /// an insertable container.
   ///
-  /// Writable bool map for store each true assigned elements in an 
+  /// Writable bool map for storing each \c true assigned element in an 
   /// insertable container. It will insert all the keys set to \c true into
-  /// the container. If you want to store the cut edges of the strongly
+  /// the container.
+  ///
+  /// For example, if you want to store the cut arcs of the strongly
   /// connected components in a set you can use the next code:
   ///
@@ -1327,4 +1441,7 @@
   /// stronglyConnectedCutEdges(graph, cost, inserter_map);
   ///\endcode
+  ///
+  ///\sa BackInserterBoolMap
+  ///\sa FrontInserterBoolMap
   template <typename Container,
             typename Functor =
@@ -1335,5 +1452,10 @@
     typedef bool Value;
 
-    /// Constructor
+    /// Constructor with specified iterator
+    
+    /// Constructor with specified iterator.
+    /// \param _container The container for storing the elements.
+    /// \param _it The elements will be inserted before this iterator.
+    /// \param _functor The functor that is used when an element is stored.
     InserterBoolMap(Container& _container, typename Container::iterator _it,
                     const Functor& _functor = Functor()) 
@@ -1341,11 +1463,16 @@
 
     /// Constructor
+
+    /// Constructor without specified iterator.
+    /// The elements will be inserted before <tt>_container.end()</tt>.
+    /// \param _container The container for storing the elements.
+    /// \param _functor The functor that is used when an element is stored.
     InserterBoolMap(Container& _container, const Functor& _functor = Functor())
       : container(_container), it(_container.end()), functor(_functor) {}
 
-    /// Setter function of the map
+    /// The \c set function of the map
     void set(const Key& key, Value value) {
       if (value) {
-	it = container.insert(it, key);
+	it = container.insert(it, functor(key));
         ++it;
       }
@@ -1358,11 +1485,11 @@
   };
 
-  /// \brief Fill the true set elements with a given value.
-  ///
-  /// Writable bool map to fill the elements set to \c true with a given value.
-  /// The value can set 
-  /// the container.
-  ///
-  /// The next code finds the connected components of the undirected graph
+  /// \brief Writable bool map for filling each \c true assigned element with a 
+  /// given value.
+  ///
+  /// Writable bool map for filling each \c true assigned element with a 
+  /// given value. The value can set the container.
+  ///
+  /// The following code finds the connected components of a graph
   /// and stores it in the \c comp map:
   ///\code
@@ -1412,5 +1539,5 @@
     } 
 
-    /// Setter function of the map
+    /// The \c set function of the map
     void set(const Key& key, Value value) {
       if (value) {
@@ -1425,9 +1552,10 @@
 
 
-  /// \brief Writable bool map which stores for each true assigned elements  
-  /// the setting order number.
-  ///
-  /// Writable bool map which stores for each true assigned elements  
-  /// the setting order number. It make easy to calculate the leaving
+  /// \brief Writable bool map for storing the sequence number of 
+  /// \c true assignments.  
+  ///
+  /// Writable bool map that stores for each \c true assigned elements  
+  /// the sequence number of this setting.
+  /// It makes it easy to calculate the leaving
   /// order of the nodes in the \c Dfs algorithm.
   ///
@@ -1448,7 +1576,7 @@
   ///\endcode
   ///
-  /// The discovering order can be stored a little harder because the
+  /// The storing of the discovering order is more difficult because the
   /// ReachedMap should be readable in the dfs algorithm but the setting
-  /// order map is not readable. Now we should use the fork map:
+  /// order map is not readable. Thus we must use the fork map:
   ///
   ///\code
@@ -1488,5 +1616,5 @@
     }
 
-    /// Setter function of the map
+    /// The \c set function of the map
     void set(const Key& key, Value value) {
       if (value) {
