Index: Makefile.am
===================================================================
--- Makefile.am	(revision 314)
+++ Makefile.am	(revision 227)
@@ -25,5 +25,4 @@
 bin_PROGRAMS =
 check_PROGRAMS =
-dist_bin_SCRIPTS =
 TESTS =
 XFAIL_TESTS =
@@ -33,4 +32,5 @@
 include doc/Makefile.am
 include demo/Makefile.am
+include benchmark/Makefile.am
 include tools/Makefile.am
 
Index: README
===================================================================
--- README	(revision 314)
+++ README	(revision 246)
@@ -38,4 +38,8 @@
    Contains programs to check the integrity and correctness of LEMON.
 
+benchmark/
+  
+   Contains programs for measuring the performance of algorithms.
+
 tools/
 
Index: benchmark/Makefile.am
===================================================================
--- benchmark/Makefile.am	(revision 146)
+++ benchmark/Makefile.am	(revision 146)
@@ -0,0 +1,7 @@
+if WANT_BENCHMARK
+
+noinst_HEADERS +=
+
+noinst_PROGRAMS +=
+
+endif WANT_BENCHMARK
Index: configure.ac
===================================================================
--- configure.ac	(revision 314)
+++ configure.ac	(revision 296)
@@ -82,4 +82,17 @@
 AM_CONDITIONAL([WANT_TOOLS], [test x"$enable_tools" != x"no"])
 
+dnl Disable/enable building the benchmarks.
+AC_ARG_ENABLE([benchmark],
+AS_HELP_STRING([--enable-benchmark], [build the benchmarks])
+AS_HELP_STRING([--disable-benchmark], [do not build the benchmarks @<:@default@:>@]),
+              [], [enable_benchmark=no])
+AC_MSG_CHECKING([whether to build the benchmarks])
+if test x"$enable_benchmark" != x"no"; then
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+AM_CONDITIONAL([WANT_BENCHMARK], [test x"$enable_benchmark" != x"no"])
+
 dnl Checks for header files.
 AC_CHECK_HEADERS(limits.h sys/time.h sys/times.h unistd.h)
@@ -120,4 +133,5 @@
 #echo SOPLEX support................ : $lx_soplex_found
 #echo
+echo Build benchmarks.............. : $enable_benchmark
 echo Build demo programs........... : $enable_demo
 echo Build additional tools........ : $enable_tools
Index: demo/arg_parser_demo.cc
===================================================================
--- demo/arg_parser_demo.cc	(revision 315)
+++ demo/arg_parser_demo.cc	(revision 209)
@@ -28,5 +28,5 @@
 
 using namespace lemon;
-int main(int argc, char **argv)
+int main(int argc, const char **argv)
 {
   // Initialize the argument parser
Index: demo/graph_to_eps_demo.cc
===================================================================
--- demo/graph_to_eps_demo.cc	(revision 317)
+++ demo/graph_to_eps_demo.cc	(revision 220)
@@ -27,5 +27,5 @@
 /// how to handle parallel egdes, how to change the properties (like
 /// color, shape, size, title etc.) of nodes and arcs individually
-/// using appropriate graph maps.
+/// using appropriate \ref maps-page "graph maps".
 ///
 /// \include graph_to_eps_demo.cc
Index: doc/Doxyfile.in
===================================================================
--- doc/Doxyfile.in	(revision 299)
+++ doc/Doxyfile.in	(revision 321)
@@ -1,3 +1,3 @@
-# Doxyfile 1.5.5
+# Doxyfile 1.5.7.1
 
 #---------------------------------------------------------------------------
@@ -34,7 +34,9 @@
 CPP_CLI_SUPPORT        = NO
 SIP_SUPPORT            = NO
+IDL_PROPERTY_SUPPORT   = YES
 DISTRIBUTE_GROUP_DOC   = NO
 SUBGROUPING            = YES
 TYPEDEF_HIDES_STRUCT   = NO
+SYMBOL_CACHE_SIZE      = 0
 #---------------------------------------------------------------------------
 # Build related configuration options
@@ -67,5 +69,8 @@
 SHOW_USED_FILES        = YES
 SHOW_DIRECTORIES       = YES
+SHOW_FILES             = YES
+SHOW_NAMESPACES        = YES
 FILE_VERSION_FILTER    = 
+LAYOUT_FILE            = DoxygenLayout.xml
 #---------------------------------------------------------------------------
 # configuration options related to warning and progress messages
@@ -76,5 +81,5 @@
 WARN_IF_DOC_ERROR      = YES
 WARN_NO_PARAMDOC       = NO
-WARN_FORMAT            = "$file:$line: $text  "
+WARN_FORMAT            = "$file:$line: $text"
 WARN_LOGFILE           = doxygen.log
 #---------------------------------------------------------------------------
@@ -134,18 +139,25 @@
 HTML_STYLESHEET        = 
 HTML_ALIGN_MEMBERS     = YES
-GENERATE_HTMLHELP      = NO
+HTML_DYNAMIC_SECTIONS  = NO
 GENERATE_DOCSET        = NO
 DOCSET_FEEDNAME        = "Doxygen generated docs"
 DOCSET_BUNDLE_ID       = org.doxygen.Project
-HTML_DYNAMIC_SECTIONS  = NO
+GENERATE_HTMLHELP      = NO
 CHM_FILE               = 
 HHC_LOCATION           = 
 GENERATE_CHI           = NO
+CHM_INDEX_ENCODING     = 
 BINARY_TOC             = NO
 TOC_EXPAND             = NO
+GENERATE_QHP           = NO
+QCH_FILE               = 
+QHP_NAMESPACE          = org.doxygen.Project
+QHP_VIRTUAL_FOLDER     = doc
+QHG_LOCATION           = 
 DISABLE_INDEX          = NO
 ENUM_VALUES_PER_LINE   = 4
 GENERATE_TREEVIEW      = NO
 TREEVIEW_WIDTH         = 250
+FORMULA_FONTSIZE       = 10
 #---------------------------------------------------------------------------
 # configuration options related to the LaTeX output
@@ -226,4 +238,7 @@
 HIDE_UNDOC_RELATIONS   = YES
 HAVE_DOT               = YES
+DOT_FONTNAME           = FreeSans
+DOT_FONTSIZE           = 10
+DOT_FONTPATH           = 
 CLASS_GRAPH            = YES
 COLLABORATION_GRAPH    = NO
Index: doc/DoxygenLayout.xml
===================================================================
--- doc/DoxygenLayout.xml	(revision 321)
+++ doc/DoxygenLayout.xml	(revision 321)
@@ -0,0 +1,182 @@
+<doxygenlayout version="1.0">
+  <!-- Navigation index tabs for HTML output -->
+  <navindex>
+    <tab type="mainpage" visible="yes" title=""/>
+    <tab type="modules" visible="yes" title=""/>
+    <tab type="classes" visible="yes" title="">
+      <tab type="classes" visible="yes" title=""/>
+      <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> 
+      <tab type="hierarchy" visible="yes" title=""/>
+      <tab type="classmembers" visible="yes" title=""/>
+    </tab>
+    <tab type="namespaces" visible="yes" title="">
+      <tab type="namespaces" visible="yes" title=""/>
+      <tab type="namespacemembers" visible="yes" title=""/>
+    </tab>
+    <tab type="files" visible="yes" title="">
+      <tab type="files" visible="yes" title=""/>
+      <tab type="globals" visible="yes" title=""/>
+    </tab>
+    <tab type="dirs" visible="yes" title=""/>
+    <tab type="examples" visible="yes" title=""/>  
+    <tab type="pages" visible="yes" title=""/>
+  </navindex>
+
+  <!-- Layout definition for a class page -->
+  <class>
+    <briefdescription visible="no"/>
+    <detaileddescription title=""/>
+    <includes visible="$SHOW_INCLUDE_FILES"/>
+    <inheritancegraph visible="$CLASS_GRAPH"/>
+    <collaborationgraph visible="$COLLABORATION_GRAPH"/>
+    <allmemberslink visible="yes"/>
+    <memberdecl>
+      <membergroups visible="yes"/>
+      <nestedclasses visible="yes" title=""/>
+      <publictypes title=""/>
+      <publicslots title=""/>
+      <signals title=""/>
+      <publicmethods title=""/>
+      <publicstaticmethods title=""/>
+      <publicattributes title=""/>
+      <publicstaticattributes title=""/>
+      <protectedtypes title=""/>
+      <protectedslots title=""/>
+      <protectedmethods title=""/>
+      <protectedstaticmethods title=""/>
+      <protectedattributes title=""/>
+      <protectedstaticattributes title=""/>
+      <packagetypes title=""/>
+      <packagemethods title=""/>
+      <packagestaticmethods title=""/>
+      <packageattributes title=""/>
+      <packagestaticattributes title=""/>
+      <properties title=""/>
+      <events title=""/>
+      <privatetypes title=""/>
+      <privateslots title=""/>
+      <privatemethods title=""/>
+      <privatestaticmethods title=""/>
+      <privateattributes title=""/>
+      <privatestaticattributes title=""/>
+      <friends title=""/>
+      <related title="" subtitle=""/>
+    </memberdecl>
+    <memberdef>
+      <typedefs title=""/>
+      <enums title=""/>
+      <constructors title=""/>
+      <functions title=""/>
+      <related title=""/>
+      <variables title=""/>
+      <properties title=""/>
+      <events title=""/>
+    </memberdef>
+    <usedfiles visible="$SHOW_USED_FILES"/>
+    <authorsection visible="yes"/>
+  </class>
+
+  <!-- Layout definition for a namespace page -->
+  <namespace>
+    <briefdescription visible="no"/>
+    <detaileddescription title=""/>
+    <memberdecl>
+      <nestednamespaces visible="yes" title=""/>
+      <classes visible="yes" title=""/>
+      <membergroups visible="yes"/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+    </memberdecl>
+    <memberdef>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+    </memberdef>
+    <authorsection visible="yes"/>
+  </namespace>
+
+  <!-- Layout definition for a file page -->
+  <file>
+    <briefdescription visible="no"/>
+    <detaileddescription title=""/>
+    <includes visible="$SHOW_INCLUDE_FILES"/>
+    <includegraph visible="$INCLUDE_GRAPH"/>
+    <includedbygraph visible="$INCLUDED_BY_GRAPH"/>
+    <sourcelink visible="yes"/>
+    <memberdecl>
+      <classes visible="yes" title=""/>
+      <namespaces visible="yes" title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+    </memberdecl>
+    <memberdef>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+    </memberdef>
+    <authorsection/>
+  </file>
+
+  <!-- Layout definition for a group page -->
+  <group>
+    <briefdescription visible="no"/>
+    <detaileddescription title=""/>
+    <groupgraph visible="$GROUP_GRAPHS"/>
+    <memberdecl>
+      <classes visible="yes" title=""/>
+      <namespaces visible="yes" title=""/>
+      <dirs visible="yes" title=""/>
+      <nestedgroups visible="yes" title=""/>
+      <files visible="yes" title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <enumvalues title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <signals title=""/>
+      <publicslots title=""/>
+      <protectedslots title=""/>
+      <privateslots title=""/>
+      <events title=""/>
+      <properties title=""/>
+      <friends title=""/>
+    </memberdecl>
+    <memberdef>
+      <pagedocs/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <enumvalues title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <signals title=""/>
+      <publicslots title=""/>
+      <protectedslots title=""/>
+      <privateslots title=""/>
+      <events title=""/>
+      <properties title=""/>
+      <friends title=""/>
+    </memberdef>
+    <authorsection visible="yes"/>
+  </group>
+
+  <!-- Layout definition for a directory page -->
+  <directory>
+    <briefdescription visible="no"/>
+    <detaileddescription title=""/>
+    <directorygraph visible="yes"/>
+    <memberdecl>
+      <dirs visible="yes"/>
+      <files visible="yes"/>
+    </memberdecl>
+  </directory>
+</doxygenlayout>
Index: doc/Makefile.am
===================================================================
--- doc/Makefile.am	(revision 310)
+++ doc/Makefile.am	(revision 321)
@@ -1,4 +1,5 @@
 EXTRA_DIST += \
 	doc/Doxyfile.in \
+	doc/DoxygenLayout.xml \
 	doc/coding_style.dox \
 	doc/dirs.dox \
@@ -7,5 +8,4 @@
 	doc/license.dox \
 	doc/mainpage.dox \
-	doc/migration.dox \
 	doc/named-param.dox \
 	doc/namespaces.dox \
Index: doc/groups.dox
===================================================================
--- doc/groups.dox	(revision 320)
+++ doc/groups.dox	(revision 236)
@@ -41,9 +41,29 @@
 some graph features like arc/edge or node deletion.
 
+Alteration of standard containers need a very limited number of
+operations, these together satisfy the everyday requirements.
+In the case of graph structures, different operations are needed which do
+not alter the physical graph, but gives another view. If some nodes or
+arcs have to be hidden or the reverse oriented graph have to be used, then
+this is the case. It also may happen that in a flow implementation
+the residual graph can be accessed by another algorithm, or a node-set
+is to be shrunk for another algorithm.
+LEMON also provides a variety of graphs for these requirements called
+\ref graph_adaptors "graph adaptors". Adaptors cannot be used alone but only
+in conjunction with other graph representations.
+
 You are free to use the graph structure that fit your requirements
 the best, most graph algorithms and auxiliary data structures can be used
-with any graph structure.
-
-<b>See also:</b> \ref graph_concepts "Graph Structure Concepts".
+with any graph structures.
+*/
+
+/**
+@defgroup semi_adaptors Semi-Adaptor Classes for Graphs
+@ingroup graphs
+\brief Graph types between real graphs and graph adaptors.
+
+This group describes some graph types between real graphs and graph adaptors.
+These classes wrap graphs to give new functionality as the adaptors do it.
+On the other hand they are not light-weight structures as the adaptors.
 */
 
@@ -55,8 +75,6 @@
 This group describes the map structures implemented in LEMON.
 
-LEMON provides several special purpose maps and map adaptors that e.g. combine
+LEMON provides several special purpose maps that e.g. combine
 new maps from existing ones.
-
-<b>See also:</b> \ref map_concepts "Map Concepts".
 */
 
@@ -69,4 +87,5 @@
 values to the nodes and arcs of graphs.
 */
+
 
 /**
@@ -86,5 +105,5 @@
 algorithms.  If a function type algorithm is called then the function
 type map adaptors can be used comfortable. For example let's see the
-usage of map adaptors with the \c graphToEps() function.
+usage of map adaptors with the \c digraphToEps() function.
 \code
   Color nodeColor(int deg) {
@@ -100,5 +119,5 @@
   Digraph::NodeMap<int> degree_map(graph);
 
-  graphToEps(graph, "graph.eps")
+  digraphToEps(graph, "graph.eps")
     .coords(coords).scaleToA4().undirected()
     .nodeColors(composeMap(functorToMap(nodeColor), degree_map))
@@ -106,5 +125,5 @@
 \endcode
 The \c functorToMap() function makes an \c int to \c Color map from the
-\c nodeColor() function. The \c composeMap() compose the \c degree_map
+\e nodeColor() function. The \c composeMap() compose the \e degree_map
 and the previously created map. The composed map is a proper function to
 get the color of each node.
@@ -134,4 +153,12 @@
 
 /**
+@defgroup matrices Matrices
+@ingroup datas
+\brief Two dimensional data storages implemented in LEMON.
+
+This group describes two dimensional data storages implemented in LEMON.
+*/
+
+/**
 @defgroup paths Path Structures
 @ingroup datas
@@ -147,4 +174,5 @@
 
 \sa lemon::concepts::Path
+
 */
 
@@ -158,4 +186,5 @@
 */
 
+
 /**
 @defgroup algs Algorithms
@@ -173,9 +202,9 @@
 
 This group describes the common graph search algorithms like
-Breadth-First Search (BFS) and Depth-First Search (DFS).
-*/
-
-/**
-@defgroup shortest_path Shortest Path Algorithms
+Breadth-first search (Bfs) and Depth-first search (Dfs).
+*/
+
+/**
+@defgroup shortest_path Shortest Path algorithms
 @ingroup algs
 \brief Algorithms for finding shortest paths.
@@ -185,5 +214,144 @@
 
 /**
-@defgroup spantree Minimum Spanning Tree Algorithms
+@defgroup max_flow Maximum Flow algorithms
+@ingroup algs
+\brief Algorithms for finding maximum flows.
+
+This group describes the algorithms for finding maximum flows and
+feasible circulations.
+
+The maximum flow problem is to find a flow between a single source and
+a single target that is maximum. Formally, there is a \f$G=(V,A)\f$
+directed graph, an \f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity
+function and given \f$s, t \in V\f$ source and target node. The
+maximum flow is the \f$f_a\f$ solution of the next optimization problem:
+
+\f[ 0 \le f_a \le c_a \f]
+\f[ \sum_{v\in\delta^{-}(u)}f_{vu}=\sum_{v\in\delta^{+}(u)}f_{uv}
+\qquad \forall u \in V \setminus \{s,t\}\f]
+\f[ \max \sum_{v\in\delta^{+}(s)}f_{uv} - \sum_{v\in\delta^{-}(s)}f_{vu}\f]
+
+LEMON contains several algorithms for solving maximum flow problems:
+- \ref lemon::EdmondsKarp "Edmonds-Karp"
+- \ref lemon::Preflow "Goldberg's Preflow algorithm"
+- \ref lemon::DinitzSleatorTarjan "Dinitz's blocking flow algorithm with dynamic trees"
+- \ref lemon::GoldbergTarjan "Preflow algorithm with dynamic trees"
+
+In most cases the \ref lemon::Preflow "Preflow" algorithm provides the
+fastest method to compute the maximum flow. All impelementations
+provides functions to query the minimum cut, which is the dual linear
+programming problem of the maximum flow.
+
+*/
+
+/**
+@defgroup min_cost_flow Minimum Cost Flow algorithms
+@ingroup algs
+
+\brief Algorithms for finding minimum cost flows and circulations.
+
+This group describes the algorithms for finding minimum cost flows and
+circulations.
+*/
+
+/**
+@defgroup min_cut Minimum Cut algorithms
+@ingroup algs
+
+\brief Algorithms for finding minimum cut in graphs.
+
+This group describes the algorithms for finding minimum cut in graphs.
+
+The minimum cut problem is to find a non-empty and non-complete
+\f$X\f$ subset of the vertices with minimum overall capacity on
+outgoing arcs. Formally, there is \f$G=(V,A)\f$ directed graph, an
+\f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum
+cut is the \f$X\f$ solution of the next optimization problem:
+
+\f[ \min_{X \subset V, X\not\in \{\emptyset, V\}}
+\sum_{uv\in A, u\in X, v\not\in X}c_{uv}\f]
+
+LEMON contains several algorithms related to minimum cut problems:
+
+- \ref lemon::HaoOrlin "Hao-Orlin algorithm" to calculate minimum cut
+  in directed graphs
+- \ref lemon::NagamochiIbaraki "Nagamochi-Ibaraki algorithm" to
+  calculate minimum cut in undirected graphs
+- \ref lemon::GomoryHuTree "Gomory-Hu tree computation" to calculate all
+  pairs minimum cut in undirected graphs
+
+If you want to find minimum cut just between two distinict nodes,
+please see the \ref max_flow "Maximum Flow page".
+
+*/
+
+/**
+@defgroup graph_prop Connectivity and other graph properties
+@ingroup algs
+\brief Algorithms for discovering the graph properties
+
+This group describes the algorithms for discovering the graph properties
+like connectivity, bipartiteness, euler property, simplicity etc.
+
+\image html edge_biconnected_components.png
+\image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
+*/
+
+/**
+@defgroup planar Planarity embedding and drawing
+@ingroup algs
+\brief Algorithms for planarity checking, embedding and drawing
+
+This group describes the algorithms for planarity checking,
+embedding and drawing.
+
+\image html planar.png
+\image latex planar.eps "Plane graph" width=\textwidth
+*/
+
+/**
+@defgroup matching Matching algorithms
+@ingroup algs
+\brief Algorithms for finding matchings in graphs and bipartite graphs.
+
+This group contains algorithm objects and functions to calculate
+matchings in graphs and bipartite graphs. The general matching problem is
+finding a subset of the arcs which does not shares common endpoints.
+
+There are several different algorithms for calculate matchings in
+graphs.  The matching problems in bipartite graphs are generally
+easier than in general graphs. The goal of the matching optimization
+can be the finding maximum cardinality, maximum weight or minimum cost
+matching. The search can be constrained to find perfect or
+maximum cardinality matching.
+
+LEMON contains the next algorithms:
+- \ref lemon::MaxBipartiteMatching "MaxBipartiteMatching" Hopcroft-Karp
+  augmenting path algorithm for calculate maximum cardinality matching in
+  bipartite graphs
+- \ref lemon::PrBipartiteMatching "PrBipartiteMatching" Push-Relabel
+  algorithm for calculate maximum cardinality matching in bipartite graphs
+- \ref lemon::MaxWeightedBipartiteMatching "MaxWeightedBipartiteMatching"
+  Successive shortest path algorithm for calculate maximum weighted matching
+  and maximum weighted bipartite matching in bipartite graph
+- \ref lemon::MinCostMaxBipartiteMatching "MinCostMaxBipartiteMatching"
+  Successive shortest path algorithm for calculate minimum cost maximum
+  matching in bipartite graph
+- \ref lemon::MaxMatching "MaxMatching" Edmond's blossom shrinking algorithm
+  for calculate maximum cardinality matching in general graph
+- \ref lemon::MaxWeightedMatching "MaxWeightedMatching" Edmond's blossom
+  shrinking algorithm for calculate maximum weighted matching in general
+  graph
+- \ref lemon::MaxWeightedPerfectMatching "MaxWeightedPerfectMatching"
+  Edmond's blossom shrinking algorithm for calculate maximum weighted
+  perfect matching in general graph
+
+\image html bipartite_matching.png
+\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
+
+*/
+
+/**
+@defgroup spantree Minimum Spanning Tree algorithms
 @ingroup algs
 \brief Algorithms for finding a minimum cost spanning tree in a graph.
@@ -193,5 +361,60 @@
 */
 
-@ingroup algs
+
+/**
+@defgroup auxalg Auxiliary algorithms
+@ingroup algs
+\brief Auxiliary algorithms implemented in LEMON.
+
+This group describes some algorithms implemented in LEMON
+in order to make it easier to implement complex algorithms.
+*/
+
+/**
+@defgroup approx Approximation algorithms
+\brief Approximation algorithms.
+
+This group describes the approximation and heuristic algorithms
+implemented in LEMON.
+*/
+
+/**
+@defgroup gen_opt_group General Optimization Tools
+\brief This group describes some general optimization frameworks
+implemented in LEMON.
+
+This group describes some general optimization frameworks
+implemented in LEMON.
+
+*/
+
+/**
+@defgroup lp_group Lp and Mip solvers
+@ingroup gen_opt_group
+\brief Lp and Mip solver interfaces for LEMON.
+
+This group describes Lp and Mip solver interfaces for LEMON. The
+various LP solvers could be used in the same manner with this
+interface.
+
+*/
+
+/**
+@defgroup lp_utils Tools for Lp and Mip solvers
+@ingroup lp_group
+\brief Helper tools to the Lp and Mip solvers.
+
+This group adds some helper tools to general optimization framework
+implemented in LEMON.
+*/
+
+/**
+@defgroup metah Metaheuristics
+@ingroup gen_opt_group
+\brief Metaheuristics for LEMON library.
+
+This group describes some metaheuristic optimization tools.
+*/
+
 /**
 @defgroup utils Tools and Utilities
@@ -219,5 +442,5 @@
 
 /**
-@defgroup timecount Time Measuring and Counting
+@defgroup timecount Time measuring and Counting
 @ingroup misc
 \brief Simple tools for measuring the performance of algorithms.
@@ -225,4 +448,13 @@
 This group describes simple tools for measuring the performance
 of algorithms.
+*/
+
+/**
+@defgroup graphbits Tools for Graph Implementation
+@ingroup utils
+\brief Tools to make it easier to create graphs.
+
+This group describes the tools that makes it easier to create graphs and
+the maps that dynamically update with the graph changes.
 */
 
@@ -240,7 +472,6 @@
 
 This group describes the tools for importing and exporting graphs
-and graph related data. Now it supports the LEMON format
-and the encapsulated postscript (EPS) format.
-postscript (EPS) format.
+and graph related data. Now it supports the LEMON format, the
+\c DIMACS format and the encapsulated postscript (EPS) format.
 */
 
@@ -248,5 +479,5 @@
 @defgroup lemon_io LEMON Input-Output
 @ingroup io_group
-\brief Reading and writing LEMON Graph Format.
+\brief Reading and writing \ref lgf-format "LEMON Graph Format".
 
 This group describes methods for reading and writing
@@ -255,5 +486,5 @@
 
 /**
-@defgroup eps_io Postscript Exporting
+@defgroup eps_io Postscript exporting
 @ingroup io_group
 \brief General \c EPS drawer and graph exporter
@@ -262,4 +493,5 @@
 graph exporting tools.
 */
+
 
 /**
@@ -290,5 +522,7 @@
 
 - Finally, They can serve as a skeleton of a new implementation of a concept.
-*/
+
+*/
+
 
 /**
@@ -301,6 +535,10 @@
 */
 
-
-This group describes the skeletons and concept checking classes of maps.
+/* --- Unused group
+@defgroup experimental Experimental Structures and Algorithms
+This group describes some Experimental structures and algorithms.
+The stuff here is subject to change.
+*/
+
 /**
 \anchor demoprograms
@@ -314,2 +552,12 @@
 build the library.
 */
+
+/**
+@defgroup tools Standalone utility applications
+
+Some utility applications are listed here.
+
+The standard compilation procedure (<tt>./configure;make</tt>) will compile
+them, as well.
+*/
+
Index: doc/lgf.dox
===================================================================
--- doc/lgf.dox	(revision 317)
+++ doc/lgf.dox	(revision 236)
@@ -79,5 +79,5 @@
 \endcode
 
-The \c \@edges is just a synonym of \c \@arcs. The \@arcs section can
+The \c \@edges is just a synonym of \c \@arcs. The @arcs section can
 also store the edge set of an undirected graph. In such case there is
 a conventional method for store arc maps in the file, if two columns
Index: doc/mainpage.dox
===================================================================
--- doc/mainpage.dox	(revision 320)
+++ doc/mainpage.dox	(revision 209)
@@ -42,7 +42,14 @@
 \subsection howtoread How to read the documentation
 
+If you want to get a quick start and see the most important features then
+take a look at our \ref quicktour
+"Quick Tour to LEMON" which will guide you along.
+
+If you already feel like using our library, see the page that tells you
+\ref getstart "How to start using LEMON".
+
 If you
 want to see how LEMON works, see
-some \ref demoprograms "demo programs".
+some \ref demoprograms "demo programs"!
 
 If you know what you are looking for then try to find it under the
@@ -50,5 +57,4 @@
 section.
 
-If you are a user of the old (0.x) series of LEMON, please check out the
-\ref migration "Migration Guide" for the backward incompatibilities.
+
 */
Index: c/migration.dox
===================================================================
--- doc/migration.dox	(revision 318)
+++ 	(revision )
@@ -1,143 +1,0 @@
-/* -*- mode: C++; indent-tabs-mode: nil; -*-
- *
- * This file is a part of LEMON, a generic C++ optimization library.
- *
- * Copyright (C) 2003-2008
- * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
- * (Egervary Research Group on Combinatorial Optimization, EGRES).
- *
- * Permission to use, modify and distribute this software is granted
- * provided that this copyright notice appears in all copies. For
- * precise terms see the accompanying LICENSE file.
- *
- * This software is provided "AS IS" with no warranty of any kind,
- * express or implied, and with no claim as to its suitability for any
- * purpose.
- *
- */
-
-namespace lemon {
-/*!
-
-\page migration Migration from the 0.x Series
-
-This guide gives an in depth description on what has changed compared
-to the 0.x release series.
-
-Many of these changes adjusted automatically by the
-<tt>script/lemon-0.x-to-1.x.sh</tt> tool. Those requiring manual
-update are typeset <b>boldface</b>.
-
-\section migration-graph Graph Related Name Changes
-
-- \ref concepts::Digraph "Directed graphs" are called \c Digraph and
-  they have <tt>Arc</tt>s (instead of <tt>Edge</tt>s), while
-  \ref concepts::Graph "undirected graphs" are called \c Graph
-  (instead of \c UGraph) and they have <tt>Edge</tt>s (instead of
-  <tt>UEdge</tt>s). These changes reflected thoroughly everywhere in
-  the library. Namely,
-  - \c Graph -> \c Digraph
-    - \c %ListGraph -> \c ListDigraph, \c %SmartGraph -> \c SmartDigraph etc.
-  - \c UGraph -> \c Graph
-    - \c ListUGraph -> \c ListGraph, \c SmartUGraph -> \c SmartGraph etc.
-  - \c Edge -> \c Arc, \c UEdge -> \c Edge
-  - \c EdgeMap -> \c ArcMap, \c UEdgeMap -> \c EdgeMap
-  - \c EdgeIt -> \c ArcIt, \c UEdgeIt -> \c EdgeIt
-  - Class names and function names containing the words \c graph,
-    \c ugraph, \e edge or \e arc should also be updated.
-- <b>The two endpoints of an (\e undirected) \c Edge can be obtained by the
-  <tt>u()</tt> and <tt>v()</tt> member function of the graph
-  (instead of <tt>source()</tt> and <tt>target()</tt>). This change
-  must be done by hand.</b>
-  \n Of course, you can still use <tt>source()</tt> and <tt>target()</tt>
-  for <tt>Arc</tt>s (directed edges).
-
-\warning
-<b>The <tt>script/lemon-0.x-to-1.x.sh</tt> tool replaces all instances of
-the words \c graph, \c digraph, \c edge and \c arc, so it replaces them
-in strings, comments etc. as well as in all identifiers.</b>
-
-\section migration-lgf LGF tools
- - The \ref lgf-format "LGF file format" has changed,
-   <tt>\@nodeset</tt> has changed to <tt>\@nodes</tt>,
-   <tt>\@edgeset</tt> and <tt>\@uedgeset</tt> to <tt>\@arcs</tt> or
-   <tt>\@edges</tt>, which become completely equivalents. The
-   <tt>\@nodes</tt>, <tt>\@edges</tt> and <tt>\@uedges</tt> sections are
-   removed from the format, the content of them should be
-   the part of <tt>\@attributes</tt> section. The data fields in
-   the sections must follow a strict format, they must be either character
-   sequences without whitespaces or quoted strings.
- - The <tt>LemonReader</tt> and <tt>LemonWriter</tt> core interfaces
-   are no longer available.
- - The implementation of the general section readers and writers has changed
-   they are simple functors now. Beside the old
-   stream based section handling, currently line oriented section
-   reading and writing are also supported. In the
-   section readers the lines must be counted manually. The sections
-   should be read and written with the SectionWriter and SectionReader
-   classes.
- - Instead of the item readers and writers, item converters should be
-   used. The converters are functors, which map the type to
-   std::string or std::string to the type. The converters for standard
-   containers hasn't yet been implemented in the new LEMON. The converters
-   can return strings in any format, because if it is necessary, the LGF
-   writer and reader will quote and unquote the given value.
- - The DigraphReader and DigraphWriter can used similarly to the
-   0.x series, however the <tt>read</tt> or <tt>write</tt> prefix of
-   the member functions are removed.
- - The new LEMON supports the function like interface, the \c
-   digraphReader and \c digraphWriter functions are more convenient than
-   using the classes directly.
-
-\section migration-search BFS, DFS and Dijkstra
-- <b>Using the function interface of BFS, DFS and %Dijkstra both source and
-  target nodes can be given as parameters of the <tt>run()</tt> function
-  (instead of \c bfs(), \c dfs() or \c dijkstra() itself).</b>
-- \ref named-templ-param "Named class template parameters" of \c Bfs,
-  \c Dfs, \c Dijkstra, \c BfsVisit, \c DfsVisit are renamed to start
-  with "Set" instead of "Def". Namely,
-  - \c DefPredMap -> \c SetPredMap
-  - \c DefDistMap -> \c SetDistMap
-  - \c DefReachedMap -> \c SetReachedMap
-  - \c DefProcessedMap -> \c SetProcessedMap
-  - \c DefHeap -> \c SetHeap
-  - \c DefStandardHeap -> \c SetStandardHeap
-  - \c DefOperationTraits -> \c SetOperationTraits
-  - \c DefProcessedMapToBeDefaultMap -> \c SetStandardProcessedMap
-
-\section migration-error Exceptions and Debug tools
-
-<b>The class hierarchy of exceptions has largely been simplified. Now,
-only the i/o related tools may throw exceptions. All other exceptions
-have been replaced with either the \c LEMON_ASSERT or the \c LEMON_DEBUG
-macros.</b>
-
-<b>On the other hand, the parameter order of constructors of the
-exceptions has been changed. See \ref IoError and \ref FormatError for
-more details.</b>
-
-\section migration-other Others
-- <b>The contents of <tt>graph_utils.h</tt> are moved to <tt>core.h</tt>
-  and <tt>maps.h</tt>. <tt>core.h</tt> is included by all graph types,
-  therefore it usually do not have to be included directly.</b>
-- <b><tt>path_utils.h</tt> is merged to \c path.h.</b>
-- <b>The semantic of the assignment operations and copy constructors of maps
-  are still under discussion. So, you must copy them by hand (i.e. copy
-  each entry one-by-one)</b>
-- <b>The parameters of the graph copying tools (i.e. \c GraphCopy,
-  \c DigraphCopy) have to be given in the from-to order.</b>
-- \c copyDigraph() and \c copyGraph() are renamed to \c digraphCopy()
-  and \c graphCopy(), respectively.
-- <b>The interface of \ref DynArcLookUp has changed. It is now the same as
-  of \ref ArcLookUp and \ref AllArcLookUp</b>
-- Some map types should also been renamed. Namely,
-  - \c IntegerMap -> \c RangeMap
-  - \c StdMap -> \c SparseMap
-  - \c FunctorMap -> \c FunctorToMap
-  - \c MapFunctor -> \c MapToFunctor
-  - \c ForkWriteMap -> \c ForkMap
-  - \c StoreBoolMap -> \c LoggerBoolMap
-- \c dim2::BoundingBox -> \c dim2::Box
-
-*/
-}
Index: lemon/arg_parser.cc
===================================================================
--- lemon/arg_parser.cc	(revision 315)
+++ lemon/arg_parser.cc	(revision 214)
@@ -27,9 +27,10 @@
   }
 
-  ArgParser::ArgParser(int argc, const char * const *argv)
-    :_argc(argc), _argv(argv), _command_name(argv[0]) {
+  ArgParser::ArgParser(int argc, const char **argv) :_argc(argc), _argv(argv),
+                                                     _command_name(argv[0]) {
     funcOption("-help","Print a short help message",_showHelp,this);
     synonym("help","-help");
     synonym("h","-help");
+
   }
 
Index: lemon/arg_parser.h
===================================================================
--- lemon/arg_parser.h	(revision 315)
+++ lemon/arg_parser.h	(revision 290)
@@ -47,5 +47,5 @@
 
     int _argc;
-    const char * const *_argv;
+    const char **_argv;
 
     enum OptType { UNKNOWN=0, BOOL=1, STRING=2, DOUBLE=3, INTEGER=4, FUNC=5 };
@@ -120,5 +120,5 @@
 
     ///Constructor
-    ArgParser(int argc, const char * const *argv);
+    ArgParser(int argc, const char **argv);
 
     ~ArgParser();
Index: lemon/bfs.h
===================================================================
--- lemon/bfs.h	(revision 305)
+++ lemon/bfs.h	(revision 292)
@@ -50,9 +50,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap;
-    ///Instantiates a PredMap.
-
-    ///This function instantiates a PredMap.
+    ///Instantiates a \ref PredMap.
+
+    ///This function instantiates a \ref PredMap.
     ///\param g is the digraph, to which we would like to define the
-    ///PredMap.
+    ///\ref PredMap.
     static PredMap *createPredMap(const Digraph &g)
     {
@@ -65,9 +65,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef NullMap<typename Digraph::Node,bool> ProcessedMap;
-    ///Instantiates a ProcessedMap.
-
-    ///This function instantiates a ProcessedMap.
+    ///Instantiates a \ref ProcessedMap.
+
+    ///This function instantiates a \ref ProcessedMap.
     ///\param g is the digraph, to which
-    ///we would like to define the ProcessedMap
+    ///we would like to define the \ref ProcessedMap
 #ifdef DOXYGEN
     static ProcessedMap *createProcessedMap(const Digraph &g)
@@ -84,9 +84,9 @@
     ///It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
     typedef typename Digraph::template NodeMap<bool> ReachedMap;
-    ///Instantiates a ReachedMap.
-
-    ///This function instantiates a ReachedMap.
+    ///Instantiates a \ref ReachedMap.
+
+    ///This function instantiates a \ref ReachedMap.
     ///\param g is the digraph, to which
-    ///we would like to define the ReachedMap.
+    ///we would like to define the \ref ReachedMap.
     static ReachedMap *createReachedMap(const Digraph &g)
     {
@@ -99,9 +99,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<int> DistMap;
-    ///Instantiates a DistMap.
-
-    ///This function instantiates a DistMap.
+    ///Instantiates a \ref DistMap.
+
+    ///This function instantiates a \ref DistMap.
     ///\param g is the digraph, to which we would like to define the
-    ///DistMap.
+    ///\ref DistMap.
     static DistMap *createDistMap(const Digraph &g)
     {
@@ -228,8 +228,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///PredMap type.
+    ///\ref PredMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///PredMap type.
+    ///\ref PredMap type.
     template <class T>
     struct SetPredMap : public Bfs< Digraph, SetPredMapTraits<T> > {
@@ -247,8 +247,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///DistMap type.
+    ///\ref DistMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///DistMap type.
+    ///\ref DistMap type.
     template <class T>
     struct SetDistMap : public Bfs< Digraph, SetDistMapTraits<T> > {
@@ -266,8 +266,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///ReachedMap type.
+    ///\ref ReachedMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///ReachedMap type.
+    ///\ref ReachedMap type.
     template <class T>
     struct SetReachedMap : public Bfs< Digraph, SetReachedMapTraits<T> > {
@@ -285,8 +285,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type.
+    ///\ref ProcessedMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type.
+    ///\ref ProcessedMap type.
     template <class T>
     struct SetProcessedMap : public Bfs< Digraph, SetProcessedMapTraits<T> > {
@@ -303,8 +303,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
+    ///\ref ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
+    ///\ref ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
     ///If you don't set it explicitly, it will be automatically allocated.
     struct SetStandardProcessedMap :
@@ -836,9 +836,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap;
-    ///Instantiates a PredMap.
-
-    ///This function instantiates a PredMap.
+    ///Instantiates a \ref PredMap.
+
+    ///This function instantiates a \ref PredMap.
     ///\param g is the digraph, to which we would like to define the
-    ///PredMap.
+    ///\ref PredMap.
     static PredMap *createPredMap(const Digraph &g)
     {
@@ -852,9 +852,9 @@
     ///By default it is a NullMap.
     typedef NullMap<typename Digraph::Node,bool> ProcessedMap;
-    ///Instantiates a ProcessedMap.
-
-    ///This function instantiates a ProcessedMap.
+    ///Instantiates a \ref ProcessedMap.
+
+    ///This function instantiates a \ref ProcessedMap.
     ///\param g is the digraph, to which
-    ///we would like to define the ProcessedMap.
+    ///we would like to define the \ref ProcessedMap.
 #ifdef DOXYGEN
     static ProcessedMap *createProcessedMap(const Digraph &g)
@@ -871,9 +871,9 @@
     ///It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
     typedef typename Digraph::template NodeMap<bool> ReachedMap;
-    ///Instantiates a ReachedMap.
-
-    ///This function instantiates a ReachedMap.
+    ///Instantiates a \ref ReachedMap.
+
+    ///This function instantiates a \ref ReachedMap.
     ///\param g is the digraph, to which
-    ///we would like to define the ReachedMap.
+    ///we would like to define the \ref ReachedMap.
     static ReachedMap *createReachedMap(const Digraph &g)
     {
@@ -886,9 +886,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<int> DistMap;
-    ///Instantiates a DistMap.
-
-    ///This function instantiates a DistMap.
+    ///Instantiates a \ref DistMap.
+
+    ///This function instantiates a \ref DistMap.
     ///\param g is the digraph, to which we would like to define
-    ///the DistMap
+    ///the \ref DistMap
     static DistMap *createDistMap(const Digraph &g)
     {
@@ -903,5 +903,5 @@
   };
 
-  /// Default traits class used by BfsWizard
+  /// Default traits class used by \ref BfsWizard
 
   /// To make it easier to use Bfs algorithm
@@ -1069,8 +1069,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting PredMap object.
+    ///for setting \ref PredMap object.
     ///
     ///\ref named-func-param "Named parameter"
-    ///for setting PredMap object.
+    ///for setting \ref PredMap object.
     template<class T>
     BfsWizard<SetPredMapBase<T> > predMap(const T &t)
@@ -1087,8 +1087,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting ReachedMap object.
+    ///for setting \ref ReachedMap object.
     ///
     /// \ref named-func-param "Named parameter"
-    ///for setting ReachedMap object.
+    ///for setting \ref ReachedMap object.
     template<class T>
     BfsWizard<SetReachedMapBase<T> > reachedMap(const T &t)
@@ -1105,8 +1105,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting DistMap object.
+    ///for setting \ref DistMap object.
     ///
     /// \ref named-func-param "Named parameter"
-    ///for setting DistMap object.
+    ///for setting \ref DistMap object.
     template<class T>
     BfsWizard<SetDistMapBase<T> > distMap(const T &t)
@@ -1123,8 +1123,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting ProcessedMap object.
+    ///for setting \ref ProcessedMap object.
     ///
     /// \ref named-func-param "Named parameter"
-    ///for setting ProcessedMap object.
+    ///for setting \ref ProcessedMap object.
     template<class T>
     BfsWizard<SetProcessedMapBase<T> > processedMap(const T &t)
@@ -1268,9 +1268,9 @@
     typedef typename Digraph::template NodeMap<bool> ReachedMap;
 
-    /// \brief Instantiates a ReachedMap.
-    ///
-    /// This function instantiates a ReachedMap.
+    /// \brief Instantiates a \ref ReachedMap.
+    ///
+    /// This function instantiates a \ref ReachedMap.
     /// \param digraph is the digraph, to which
-    /// we would like to define the ReachedMap.
+    /// we would like to define the \ref ReachedMap.
     static ReachedMap *createReachedMap(const Digraph &digraph) {
       return new ReachedMap(digraph);
Index: lemon/bits/alteration_notifier.h
===================================================================
--- lemon/bits/alteration_notifier.h	(revision 318)
+++ lemon/bits/alteration_notifier.h	(revision 236)
@@ -25,73 +25,74 @@
 #include <lemon/core.h>
 
-//\ingroup graphbits
-//\file
-//\brief Observer notifier for graph alteration observers.
+///\ingroup graphbits
+///\file
+///\brief Observer notifier for graph alteration observers.
 
 namespace lemon {
 
-  // \ingroup graphbits
-  //
-  // \brief Notifier class to notify observes about alterations in
-  // a container.
-  //
-  // The simple graph's can be refered as two containers, one node container
-  // and one edge container. But they are not standard containers they
-  // does not store values directly they are just key continars for more
-  // value containers which are the node and edge maps.
-  //
-  // The graph's node and edge sets can be changed as we add or erase
-  // nodes and edges in the graph. LEMON would like to handle easily
-  // that the node and edge maps should contain values for all nodes or
-  // edges. If we want to check on every indicing if the map contains
-  // the current indicing key that cause a drawback in the performance
-  // in the library. We use another solution we notify all maps about
-  // an alteration in the graph, which cause only drawback on the
-  // alteration of the graph.
-  //
-  // This class provides an interface to the container. The \e first() and \e
-  // next() member functions make possible to iterate on the keys of the
-  // container. The \e id() function returns an integer id for each key.
-  // The \e maxId() function gives back an upper bound of the ids.
-  //
-  // For the proper functonality of this class, we should notify it
-  // about each alteration in the container. The alterations have four type
-  // as \e add(), \e erase(), \e build() and \e clear(). The \e add() and
-  // \e erase() signals that only one or few items added or erased to or
-  // from the graph. If all items are erased from the graph or from an empty
-  // graph a new graph is builded then it can be signaled with the
-  // clear() and build() members. Important rule that if we erase items
-  // from graph we should first signal the alteration and after that erase
-  // them from the container, on the other way on item addition we should
-  // first extend the container and just after that signal the alteration.
-  //
-  // The alteration can be observed with a class inherited from the
-  // \e ObserverBase nested class. The signals can be handled with
-  // overriding the virtual functions defined in the base class.  The
-  // observer base can be attached to the notifier with the
-  // \e attach() member and can be detached with detach() function. The
-  // alteration handlers should not call any function which signals
-  // an other alteration in the same notifier and should not
-  // detach any observer from the notifier.
-  //
-  // Alteration observers try to be exception safe. If an \e add() or
-  // a \e clear() function throws an exception then the remaining
-  // observeres will not be notified and the fulfilled additions will
-  // be rolled back by calling the \e erase() or \e clear()
-  // functions. Thence the \e erase() and \e clear() should not throw
-  // exception. Actullay, it can be throw only \ref ImmediateDetach
-  // exception which detach the observer from the notifier.
-  //
-  // There are some place when the alteration observing is not completly
-  // reliable. If we want to carry out the node degree in the graph
-  // as in the \ref InDegMap and we use the reverseEdge that cause
-  // unreliable functionality. Because the alteration observing signals
-  // only erasing and adding but not the reversing it will stores bad
-  // degrees. The sub graph adaptors cannot signal the alterations because
-  // just a setting in the filter map can modify the graph and this cannot
-  // be watched in any way.
-  //
-  // \param _Container The container which is observed.
-  // \param _Item The item type which is obserbved.
+  /// \ingroup graphbits
+  ///
+  /// \brief Notifier class to notify observes about alterations in
+  /// a container.
+  ///
+  /// The simple graph's can be refered as two containers, one node container
+  /// and one edge container. But they are not standard containers they
+  /// does not store values directly they are just key continars for more
+  /// value containers which are the node and edge maps.
+  ///
+  /// The graph's node and edge sets can be changed as we add or erase
+  /// nodes and edges in the graph. LEMON would like to handle easily
+  /// that the node and edge maps should contain values for all nodes or
+  /// edges. If we want to check on every indicing if the map contains
+  /// the current indicing key that cause a drawback in the performance
+  /// in the library. We use another solution we notify all maps about
+  /// an alteration in the graph, which cause only drawback on the
+  /// alteration of the graph.
+  ///
+  /// This class provides an interface to the container. The \e first() and \e
+  /// next() member functions make possible to iterate on the keys of the
+  /// container. The \e id() function returns an integer id for each key.
+  /// The \e maxId() function gives back an upper bound of the ids.
+  ///
+  /// For the proper functonality of this class, we should notify it
+  /// about each alteration in the container. The alterations have four type
+  /// as \e add(), \e erase(), \e build() and \e clear(). The \e add() and
+  /// \e erase() signals that only one or few items added or erased to or
+  /// from the graph. If all items are erased from the graph or from an empty
+  /// graph a new graph is builded then it can be signaled with the
+  /// clear() and build() members. Important rule that if we erase items
+  /// from graph we should first signal the alteration and after that erase
+  /// them from the container, on the other way on item addition we should
+  /// first extend the container and just after that signal the alteration.
+  ///
+  /// The alteration can be observed with a class inherited from the
+  /// \e ObserverBase nested class. The signals can be handled with
+  /// overriding the virtual functions defined in the base class.  The
+  /// observer base can be attached to the notifier with the
+  /// \e attach() member and can be detached with detach() function. The
+  /// alteration handlers should not call any function which signals
+  /// an other alteration in the same notifier and should not
+  /// detach any observer from the notifier.
+  ///
+  /// Alteration observers try to be exception safe. If an \e add() or
+  /// a \e clear() function throws an exception then the remaining
+  /// observeres will not be notified and the fulfilled additions will
+  /// be rolled back by calling the \e erase() or \e clear()
+  /// functions. Thence the \e erase() and \e clear() should not throw
+  /// exception. Actullay, it can be throw only
+  /// \ref AlterationObserver::ImmediateDetach ImmediateDetach
+  /// exception which detach the observer from the notifier.
+  ///
+  /// There are some place when the alteration observing is not completly
+  /// reliable. If we want to carry out the node degree in the graph
+  /// as in the \ref InDegMap and we use the reverseEdge that cause
+  /// unreliable functionality. Because the alteration observing signals
+  /// only erasing and adding but not the reversing it will stores bad
+  /// degrees. The sub graph adaptors cannot signal the alterations because
+  /// just a setting in the filter map can modify the graph and this cannot
+  /// be watched in any way.
+  ///
+  /// \param _Container The container which is observed.
+  /// \param _Item The item type which is obserbved.
 
   template <typename _Container, typename _Item>
@@ -104,28 +105,29 @@
     typedef _Item Item;
 
-    // \brief Exception which can be called from \e clear() and
-    // \e erase().
-    //
-    // From the \e clear() and \e erase() function only this
-    // exception is allowed to throw. The exception immediatly
-    // detaches the current observer from the notifier. Because the
-    // \e clear() and \e erase() should not throw other exceptions
-    // it can be used to invalidate the observer.
+    /// \brief Exception which can be called from \e clear() and
+    /// \e erase().
+    ///
+    /// From the \e clear() and \e erase() function only this
+    /// exception is allowed to throw. The exception immediatly
+    /// detaches the current observer from the notifier. Because the
+    /// \e clear() and \e erase() should not throw other exceptions
+    /// it can be used to invalidate the observer.
     struct ImmediateDetach {};
 
-    // \brief ObserverBase is the base class for the observers.
-    //
-    // ObserverBase is the abstract base class for the observers.
-    // It will be notified about an item was inserted into or
-    // erased from the graph.
-    //
-    // The observer interface contains some pure virtual functions
-    // to override. The add() and erase() functions are
-    // to notify the oberver when one item is added or
-    // erased.
-    //
-    // The build() and clear() members are to notify the observer
-    // about the container is built from an empty container or
-    // is cleared to an empty container.
+    /// \brief ObserverBase is the base class for the observers.
+    ///
+    /// ObserverBase is the abstract base class for the observers.
+    /// It will be notified about an item was inserted into or
+    /// erased from the graph.
+    ///
+    /// The observer interface contains some pure virtual functions
+    /// to override. The add() and erase() functions are
+    /// to notify the oberver when one item is added or
+    /// erased.
+    ///
+    /// The build() and clear() members are to notify the observer
+    /// about the container is built from an empty container or
+    /// is cleared to an empty container.
+
     class ObserverBase {
     protected:
@@ -134,20 +136,21 @@
       friend class AlterationNotifier;
 
-      // \brief Default constructor.
-      //
-      // Default constructor for ObserverBase.
+      /// \brief Default constructor.
+      ///
+      /// Default constructor for ObserverBase.
+      ///
       ObserverBase() : _notifier(0) {}
 
-      // \brief Constructor which attach the observer into notifier.
-      //
-      // Constructor which attach the observer into notifier.
+      /// \brief Constructor which attach the observer into notifier.
+      ///
+      /// Constructor which attach the observer into notifier.
       ObserverBase(AlterationNotifier& nf) {
         attach(nf);
       }
 
-      // \brief Constructor which attach the obserever to the same notifier.
-      //
-      // Constructor which attach the obserever to the same notifier as
-      // the other observer is attached to.
+      /// \brief Constructor which attach the obserever to the same notifier.
+      ///
+      /// Constructor which attach the obserever to the same notifier as
+      /// the other observer is attached to.
       ObserverBase(const ObserverBase& copy) {
         if (copy.attached()) {
@@ -156,5 +159,5 @@
       }
 
-      // \brief Destructor
+      /// \brief Destructor
       virtual ~ObserverBase() {
         if (attached()) {
@@ -163,26 +166,29 @@
       }
 
-      // \brief Attaches the observer into an AlterationNotifier.
-      //
-      // This member attaches the observer into an AlterationNotifier.
+      /// \brief Attaches the observer into an AlterationNotifier.
+      ///
+      /// This member attaches the observer into an AlterationNotifier.
+      ///
       void attach(AlterationNotifier& nf) {
         nf.attach(*this);
       }
 
-      // \brief Detaches the observer into an AlterationNotifier.
-      //
-      // This member detaches the observer from an AlterationNotifier.
+      /// \brief Detaches the observer into an AlterationNotifier.
+      ///
+      /// This member detaches the observer from an AlterationNotifier.
+      ///
       void detach() {
         _notifier->detach(*this);
       }
 
-      // \brief Gives back a pointer to the notifier which the map
-      // attached into.
-      //
-      // This function gives back a pointer to the notifier which the map
-      // attached into.
+      /// \brief Gives back a pointer to the notifier which the map
+      /// attached into.
+      ///
+      /// This function gives back a pointer to the notifier which the map
+      /// attached into.
+      ///
       Notifier* notifier() const { return const_cast<Notifier*>(_notifier); }
 
-      // Gives back true when the observer is attached into a notifier.
+      /// Gives back true when the observer is attached into a notifier.
       bool attached() const { return _notifier != 0; }
 
@@ -196,50 +202,51 @@
       typename std::list<ObserverBase*>::iterator _index;
 
-      // \brief The member function to notificate the observer about an
-      // item is added to the container.
-      //
-      // The add() member function notificates the observer about an item
-      // is added to the container. It have to be overrided in the
-      // subclasses.
+      /// \brief The member function to notificate the observer about an
+      /// item is added to the container.
+      ///
+      /// The add() member function notificates the observer about an item
+      /// is added to the container. It have to be overrided in the
+      /// subclasses.
       virtual void add(const Item&) = 0;
 
-      // \brief The member function to notificate the observer about
-      // more item is added to the container.
-      //
-      // The add() member function notificates the observer about more item
-      // is added to the container. It have to be overrided in the
-      // subclasses.
+      /// \brief The member function to notificate the observer about
+      /// more item is added to the container.
+      ///
+      /// The add() member function notificates the observer about more item
+      /// is added to the container. It have to be overrided in the
+      /// subclasses.
       virtual void add(const std::vector<Item>& items) = 0;
 
-      // \brief The member function to notificate the observer about an
-      // item is erased from the container.
-      //
-      // The erase() member function notificates the observer about an
-      // item is erased from the container. It have to be overrided in
-      // the subclasses.
+      /// \brief The member function to notificate the observer about an
+      /// item is erased from the container.
+      ///
+      /// The erase() member function notificates the observer about an
+      /// item is erased from the container. It have to be overrided in
+      /// the subclasses.
       virtual void erase(const Item&) = 0;
 
-      // \brief The member function to notificate the observer about
-      // more item is erased from the container.
-      //
-      // The erase() member function notificates the observer about more item
-      // is erased from the container. It have to be overrided in the
-      // subclasses.
+      /// \brief The member function to notificate the observer about
+      /// more item is erased from the container.
+      ///
+      /// The erase() member function notificates the observer about more item
+      /// is erased from the container. It have to be overrided in the
+      /// subclasses.
       virtual void erase(const std::vector<Item>& items) = 0;
 
-      // \brief The member function to notificate the observer about the
-      // container is built.
-      //
-      // The build() member function notificates the observer about the
-      // container is built from an empty container. It have to be
-      // overrided in the subclasses.
+      /// \brief The member function to notificate the observer about the
+      /// container is built.
+      ///
+      /// The build() member function notificates the observer about the
+      /// container is built from an empty container. It have to be
+      /// overrided in the subclasses.
+
       virtual void build() = 0;
 
-      // \brief The member function to notificate the observer about all
-      // items are erased from the container.
-      //
-      // The clear() member function notificates the observer about all
-      // items are erased from the container. It have to be overrided in
-      // the subclasses.
+      /// \brief The member function to notificate the observer about all
+      /// items are erased from the container.
+      ///
+      /// The clear() member function notificates the observer about all
+      /// items are erased from the container. It have to be overrided in
+      /// the subclasses.
       virtual void clear() = 0;
 
@@ -256,28 +263,29 @@
   public:
 
-    // \brief Default constructor.
-    //
-    // The default constructor of the AlterationNotifier.
-    // It creates an empty notifier.
+    /// \brief Default constructor.
+    ///
+    /// The default constructor of the AlterationNotifier.
+    /// It creates an empty notifier.
     AlterationNotifier()
       : container(0) {}
 
-    // \brief Constructor.
-    //
-    // Constructor with the observed container parameter.
+    /// \brief Constructor.
+    ///
+    /// Constructor with the observed container parameter.
     AlterationNotifier(const Container& _container)
       : container(&_container) {}
 
-    // \brief Copy Constructor of the AlterationNotifier.
-    //
-    // Copy constructor of the AlterationNotifier.
-    // It creates only an empty notifier because the copiable
-    // notifier's observers have to be registered still into that notifier.
+    /// \brief Copy Constructor of the AlterationNotifier.
+    ///
+    /// Copy constructor of the AlterationNotifier.
+    /// It creates only an empty notifier because the copiable
+    /// notifier's observers have to be registered still into that notifier.
     AlterationNotifier(const AlterationNotifier& _notifier)
       : container(_notifier.container) {}
 
-    // \brief Destructor.
-    //
-    // Destructor of the AlterationNotifier.
+    /// \brief Destructor.
+    ///
+    /// Destructor of the AlterationNotifier.
+    ///
     ~AlterationNotifier() {
       typename Observers::iterator it;
@@ -287,7 +295,7 @@
     }
 
-    // \brief Sets the container.
-    //
-    // Sets the container.
+    /// \brief Sets the container.
+    ///
+    /// Sets the container.
     void setContainer(const Container& _container) {
       container = &_container;
@@ -300,30 +308,32 @@
   public:
 
-    // \brief First item in the container.
-    //
-    // Returns the first item in the container. It is
-    // for start the iteration on the container.
+
+
+    /// \brief First item in the container.
+    ///
+    /// Returns the first item in the container. It is
+    /// for start the iteration on the container.
     void first(Item& item) const {
       container->first(item);
     }
 
-    // \brief Next item in the container.
-    //
-    // Returns the next item in the container. It is
-    // for iterate on the container.
+    /// \brief Next item in the container.
+    ///
+    /// Returns the next item in the container. It is
+    /// for iterate on the container.
     void next(Item& item) const {
       container->next(item);
     }
 
-    // \brief Returns the id of the item.
-    //
-    // Returns the id of the item provided by the container.
+    /// \brief Returns the id of the item.
+    ///
+    /// Returns the id of the item provided by the container.
     int id(const Item& item) const {
       return container->id(item);
     }
 
-    // \brief Returns the maximum id of the container.
-    //
-    // Returns the maximum id of the container.
+    /// \brief Returns the maximum id of the container.
+    ///
+    /// Returns the maximum id of the container.
     int maxId() const {
       return container->maxId(Item());
@@ -345,9 +355,10 @@
   public:
 
-    // \brief Notifies all the registed observers about an item added to
-    // the container.
-    //
-    // It notifies all the registed observers about an item added to
-    // the container.
+    /// \brief Notifies all the registed observers about an item added to
+    /// the container.
+    ///
+    /// It notifies all the registed observers about an item added to
+    /// the container.
+    ///
     void add(const Item& item) {
       typename Observers::reverse_iterator it;
@@ -365,9 +376,10 @@
     }
 
-    // \brief Notifies all the registed observers about more item added to
-    // the container.
-    //
-    // It notifies all the registed observers about more item added to
-    // the container.
+    /// \brief Notifies all the registed observers about more item added to
+    /// the container.
+    ///
+    /// It notifies all the registed observers about more item added to
+    /// the container.
+    ///
     void add(const std::vector<Item>& items) {
       typename Observers::reverse_iterator it;
@@ -385,9 +397,10 @@
     }
 
-    // \brief Notifies all the registed observers about an item erased from
-    // the container.
-    //
-    // It notifies all the registed observers about an item erased from
-    // the container.
+    /// \brief Notifies all the registed observers about an item erased from
+    /// the container.
+    ///
+    /// It notifies all the registed observers about an item erased from
+    /// the container.
+    ///
     void erase(const Item& item) throw() {
       typename Observers::iterator it = _observers.begin();
@@ -404,9 +417,10 @@
     }
 
-    // \brief Notifies all the registed observers about more item erased
-    // from the container.
-    //
-    // It notifies all the registed observers about more item erased from
-    // the container.
+    /// \brief Notifies all the registed observers about more item erased
+    /// from the container.
+    ///
+    /// It notifies all the registed observers about more item erased from
+    /// the container.
+    ///
     void erase(const std::vector<Item>& items) {
       typename Observers::iterator it = _observers.begin();
@@ -423,9 +437,9 @@
     }
 
-    // \brief Notifies all the registed observers about the container is
-    // built.
-    //
-    // Notifies all the registed observers about the container is built
-    // from an empty container.
+    /// \brief Notifies all the registed observers about the container is
+    /// built.
+    ///
+    /// Notifies all the registed observers about the container is built
+    /// from an empty container.
     void build() {
       typename Observers::reverse_iterator it;
@@ -443,9 +457,9 @@
     }
 
-    // \brief Notifies all the registed observers about all items are
-    // erased.
-    //
-    // Notifies all the registed observers about all items are erased
-    // from the container.
+    /// \brief Notifies all the registed observers about all items are
+    /// erased.
+    ///
+    /// Notifies all the registed observers about all items are erased
+    /// from the container.
     void clear() {
       typename Observers::iterator it = _observers.begin();
Index: lemon/bits/array_map.h
===================================================================
--- lemon/bits/array_map.h	(revision 318)
+++ lemon/bits/array_map.h	(revision 263)
@@ -27,46 +27,46 @@
 #include <lemon/concepts/maps.h>
 
-// \ingroup graphbits
-// \file
-// \brief Graph map based on the array storage.
+/// \ingroup graphbits
+/// \file
+/// \brief Graph map based on the array storage.
 
 namespace lemon {
 
-  // \ingroup graphbits
-  //
-  // \brief Graph map based on the array storage.
-  //
-  // The ArrayMap template class is graph map structure what
-  // automatically updates the map when a key is added to or erased from
-  // the map. This map uses the allocators to implement
-  // the container functionality.
-  //
-  // The template parameters are the Graph the current Item type and
-  // the Value type of the map.
+  /// \ingroup graphbits
+  ///
+  /// \brief Graph map based on the array storage.
+  ///
+  /// The ArrayMap template class is graph map structure what
+  /// automatically updates the map when a key is added to or erased from
+  /// the map. This map uses the allocators to implement
+  /// the container functionality.
+  ///
+  /// The template parameters are the Graph the current Item type and
+  /// the Value type of the map.
   template <typename _Graph, typename _Item, typename _Value>
   class ArrayMap
     : public ItemSetTraits<_Graph, _Item>::ItemNotifier::ObserverBase {
   public:
-    // The graph type of the maps.
+    /// The graph type of the maps.
     typedef _Graph Graph;
-    // The item type of the map.
+    /// The item type of the map.
     typedef _Item Item;
-    // The reference map tag.
+    /// The reference map tag.
     typedef True ReferenceMapTag;
 
-    // The key type of the maps.
+    /// The key type of the maps.
     typedef _Item Key;
-    // The value type of the map.
+    /// The value type of the map.
     typedef _Value Value;
 
-    // The const reference type of the map.
+    /// The const reference type of the map.
     typedef const _Value& ConstReference;
-    // The reference type of the map.
+    /// The reference type of the map.
     typedef _Value& Reference;
 
-    // The notifier type.
+    /// The notifier type.
     typedef typename ItemSetTraits<_Graph, _Item>::ItemNotifier Notifier;
 
-    // The MapBase of the Map which imlements the core regisitry function.
+    /// The MapBase of the Map which imlements the core regisitry function.
     typedef typename Notifier::ObserverBase Parent;
 
@@ -76,7 +76,7 @@
   public:
 
-    // \brief Graph initialized map constructor.
-    //
-    // Graph initialized map constructor.
+    /// \brief Graph initialized map constructor.
+    ///
+    /// Graph initialized map constructor.
     explicit ArrayMap(const Graph& graph) {
       Parent::attach(graph.notifier(Item()));
@@ -90,7 +90,7 @@
     }
 
-    // \brief Constructor to use default value to initialize the map.
-    //
-    // It constructs a map and initialize all of the the map.
+    /// \brief Constructor to use default value to initialize the map.
+    ///
+    /// It constructs a map and initialize all of the the map.
     ArrayMap(const Graph& graph, const Value& value) {
       Parent::attach(graph.notifier(Item()));
@@ -105,7 +105,7 @@
 
   private:
-    // \brief Constructor to copy a map of the same map type.
-    //
-    // Constructor to copy a map of the same map type.
+    /// \brief Constructor to copy a map of the same map type.
+    ///
+    /// Constructor to copy a map of the same map type.
     ArrayMap(const ArrayMap& copy) : Parent() {
       if (copy.attached()) {
@@ -123,11 +123,11 @@
     }
 
-    // \brief Assign operator.
-    //
-    // This operator assigns for each item in the map the
-    // value mapped to the same item in the copied map.
-    // The parameter map should be indiced with the same
-    // itemset because this assign operator does not change
-    // the container of the map.
+    /// \brief Assign operator.
+    ///
+    /// This operator assigns for each item in the map the
+    /// value mapped to the same item in the copied map.
+    /// The parameter map should be indiced with the same
+    /// itemset because this assign operator does not change
+    /// the container of the map.
     ArrayMap& operator=(const ArrayMap& cmap) {
       return operator=<ArrayMap>(cmap);
@@ -135,10 +135,10 @@
 
 
-    // \brief Template assign operator.
-    //
-    // The given parameter should be conform to the ReadMap
-    // concecpt and could be indiced by the current item set of
-    // the NodeMap. In this case the value for each item
-    // is assigned by the value of the given ReadMap.
+    /// \brief Template assign operator.
+    ///
+    /// The given parameter should be conform to the ReadMap
+    /// concecpt and could be indiced by the current item set of
+    /// the NodeMap. In this case the value for each item
+    /// is assigned by the value of the given ReadMap.
     template <typename CMap>
     ArrayMap& operator=(const CMap& cmap) {
@@ -153,7 +153,7 @@
 
   public:
-    // \brief The destructor of the map.
-    //
-    // The destructor of the map.
+    /// \brief The destructor of the map.
+    ///
+    /// The destructor of the map.
     virtual ~ArrayMap() {
       if (attached()) {
@@ -171,8 +171,8 @@
   public:
 
-    // \brief The subscript operator.
-    //
-    // The subscript operator. The map can be subscripted by the
-    // actual keys of the graph.
+    /// \brief The subscript operator.
+    ///
+    /// The subscript operator. The map can be subscripted by the
+    /// actual keys of the graph.
     Value& operator[](const Key& key) {
       int id = Parent::notifier()->id(key);
@@ -180,8 +180,8 @@
     }
 
-    // \brief The const subscript operator.
-    //
-    // The const subscript operator. The map can be subscripted by the
-    // actual keys of the graph.
+    /// \brief The const subscript operator.
+    ///
+    /// The const subscript operator. The map can be subscripted by the
+    /// actual keys of the graph.
     const Value& operator[](const Key& key) const {
       int id = Parent::notifier()->id(key);
@@ -189,8 +189,8 @@
     }
 
-    // \brief Setter function of the map.
-    //
-    // Setter function of the map. Equivalent with map[key] = val.
-    // This is a compatibility feature with the not dereferable maps.
+    /// \brief Setter function of the map.
+    ///
+    /// Setter function of the map. Equivalent with map[key] = val.
+    /// This is a compatibility feature with the not dereferable maps.
     void set(const Key& key, const Value& val) {
       (*this)[key] = val;
@@ -199,8 +199,8 @@
   protected:
 
-    // \brief Adds a new key to the map.
-    //
-    // It adds a new key to the map. It called by the observer notifier
-    // and it overrides the add() member function of the observer base.
+    /// \brief Adds a new key to the map.
+    ///
+    /// It adds a new key to the map. It called by the observer notifier
+    /// and it overrides the add() member function of the observer base.
     virtual void add(const Key& key) {
       Notifier* nf = Parent::notifier();
@@ -227,8 +227,8 @@
     }
 
-    // \brief Adds more new keys to the map.
-    //
-    // It adds more new keys to the map. It called by the observer notifier
-    // and it overrides the add() member function of the observer base.
+    /// \brief Adds more new keys to the map.
+    ///
+    /// It adds more new keys to the map. It called by the observer notifier
+    /// and it overrides the add() member function of the observer base.
     virtual void add(const std::vector<Key>& keys) {
       Notifier* nf = Parent::notifier();
@@ -271,8 +271,8 @@
     }
 
-    // \brief Erase a key from the map.
-    //
-    // Erase a key from the map. It called by the observer notifier
-    // and it overrides the erase() member function of the observer base.
+    /// \brief Erase a key from the map.
+    ///
+    /// Erase a key from the map. It called by the observer notifier
+    /// and it overrides the erase() member function of the observer base.
     virtual void erase(const Key& key) {
       int id = Parent::notifier()->id(key);
@@ -280,8 +280,8 @@
     }
 
-    // \brief Erase more keys from the map.
-    //
-    // Erase more keys from the map. It called by the observer notifier
-    // and it overrides the erase() member function of the observer base.
+    /// \brief Erase more keys from the map.
+    ///
+    /// Erase more keys from the map. It called by the observer notifier
+    /// and it overrides the erase() member function of the observer base.
     virtual void erase(const std::vector<Key>& keys) {
       for (int i = 0; i < int(keys.size()); ++i) {
@@ -291,8 +291,8 @@
     }
 
-    // \brief Buildes the map.
-    //
-    // It buildes the map. It called by the observer notifier
-    // and it overrides the build() member function of the observer base.
+    /// \brief Buildes the map.
+    ///
+    /// It buildes the map. It called by the observer notifier
+    /// and it overrides the build() member function of the observer base.
     virtual void build() {
       Notifier* nf = Parent::notifier();
@@ -305,8 +305,8 @@
     }
 
-    // \brief Clear the map.
-    //
-    // It erase all items from the map. It called by the observer notifier
-    // and it overrides the clear() member function of the observer base.
+    /// \brief Clear the map.
+    ///
+    /// It erase all items from the map. It called by the observer notifier
+    /// and it overrides the clear() member function of the observer base.
     virtual void clear() {
       Notifier* nf = Parent::notifier();
Index: lemon/bits/base_extender.h
===================================================================
--- lemon/bits/base_extender.h	(revision 318)
+++ lemon/bits/base_extender.h	(revision 289)
@@ -29,12 +29,12 @@
 #include <lemon/concepts/maps.h>
 
-//\ingroup digraphbits
-//\file
-//\brief Extenders for the digraph types
+///\ingroup digraphbits
+///\file
+///\brief Extenders for the digraph types
 namespace lemon {
 
-  // \ingroup digraphbits
-  //
-  // \brief BaseDigraph to BaseGraph extender
+  /// \ingroup digraphbits
+  ///
+  /// \brief BaseDigraph to BaseGraph extender
   template <typename Base>
   class UndirDigraphExtender : public Base {
@@ -75,35 +75,35 @@
     };
 
-    // First node of the edge
+    /// First node of the edge
     Node u(const Edge &e) const {
       return Parent::source(e);
     }
 
-    // Source of the given arc
+    /// Source of the given arc
     Node source(const Arc &e) const {
       return e.forward ? Parent::source(e) : Parent::target(e);
     }
 
-    // Second node of the edge
+    /// Second node of the edge
     Node v(const Edge &e) const {
       return Parent::target(e);
     }
 
-    // Target of the given arc
+    /// Target of the given arc
     Node target(const Arc &e) const {
       return e.forward ? Parent::target(e) : Parent::source(e);
     }
 
-    // \brief Directed arc from an edge.
-    //
-    // Returns a directed arc corresponding to the specified edge.
-    // If the given bool is true, the first node of the given edge and
-    // the source node of the returned arc are the same.
+    /// \brief Directed arc from an edge.
+    ///
+    /// Returns a directed arc corresponding to the specified edge.
+    /// If the given bool is true, the first node of the given edge and
+    /// the source node of the returned arc are the same.
     static Arc direct(const Edge &e, bool d) {
       return Arc(e, d);
     }
 
-    // Returns whether the given directed arc has the same orientation
-    // as the corresponding edge.
+    /// Returns whether the given directed arc has the same orientation
+    /// as the corresponding edge.
     static bool direction(const Arc &a) { return a.forward; }
 
Index: lemon/bits/bezier.h
===================================================================
--- lemon/bits/bezier.h	(revision 318)
+++ lemon/bits/bezier.h	(revision 209)
@@ -20,9 +20,9 @@
 #define LEMON_BEZIER_H
 
-//\ingroup misc
-//\file
-//\brief Classes to compute with Bezier curves.
-//
-//Up to now this file is used internally by \ref graph_to_eps.h
+///\ingroup misc
+///\file
+///\brief Classes to compute with Bezier curves.
+///
+///Up to now this file is used internally by \ref graph_to_eps.h
 
 #include<lemon/dim2.h>
Index: lemon/bits/default_map.h
===================================================================
--- lemon/bits/default_map.h	(revision 318)
+++ lemon/bits/default_map.h	(revision 209)
@@ -20,11 +20,12 @@
 #define LEMON_BITS_DEFAULT_MAP_H
 
+
 #include <lemon/bits/array_map.h>
 #include <lemon/bits/vector_map.h>
 //#include <lemon/bits/debug_map.h>
 
-//\ingroup graphbits
-//\file
-//\brief Graph maps that construct and destruct their elements dynamically.
+///\ingroup graphbits
+///\file
+///\brief Graph maps that construct and destruct their elements dynamically.
 
 namespace lemon {
@@ -149,5 +150,5 @@
 // #endif
 
-  // DefaultMap class
+  /// \e
   template <typename _Graph, typename _Item, typename _Value>
   class DefaultMap
Index: lemon/bits/enable_if.h
===================================================================
--- lemon/bits/enable_if.h	(revision 318)
+++ lemon/bits/enable_if.h	(revision 220)
@@ -36,27 +36,27 @@
 #define LEMON_BITS_ENABLE_IF_H
 
-//\file
-//\brief Miscellaneous basic utilities
+///\file
+///\brief Miscellaneous basic utilities
 
 namespace lemon
 {
 
-  // Basic type for defining "tags". A "YES" condition for \c enable_if.
+  /// Basic type for defining "tags". A "YES" condition for \c enable_if.
 
-  // Basic type for defining "tags". A "YES" condition for \c enable_if.
-  //
-  //\sa False
+  /// Basic type for defining "tags". A "YES" condition for \c enable_if.
+  ///
+  ///\sa False
   struct True {
-    //\e
+    ///\e
     static const bool value = true;
   };
 
-  // Basic type for defining "tags". A "NO" condition for \c enable_if.
+  /// Basic type for defining "tags". A "NO" condition for \c enable_if.
 
-  // Basic type for defining "tags". A "NO" condition for \c enable_if.
-  //
-  //\sa True
+  /// Basic type for defining "tags". A "NO" condition for \c enable_if.
+  ///
+  ///\sa True
   struct False {
-    //\e
+    ///\e
     static const bool value = false;
   };
Index: lemon/bits/graph_extender.h
===================================================================
--- lemon/bits/graph_extender.h	(revision 318)
+++ lemon/bits/graph_extender.h	(revision 263)
@@ -28,12 +28,12 @@
 #include <lemon/concepts/maps.h>
 
-//\ingroup graphbits
-//\file
-//\brief Extenders for the digraph types
+///\ingroup graphbits
+///\file
+///\brief Extenders for the digraph types
 namespace lemon {
 
-  // \ingroup graphbits
-  //
-  // \brief Extender for the Digraphs
+  /// \ingroup graphbits
+  ///
+  /// \brief Extender for the Digraphs
   template <typename Base>
   class DigraphExtender : public Base {
@@ -187,28 +187,28 @@
     };
 
-    // \brief Base node of the iterator
-    //
-    // Returns the base node (i.e. the source in this case) of the iterator
+    /// \brief Base node of the iterator
+    ///
+    /// Returns the base node (i.e. the source in this case) of the iterator
     Node baseNode(const OutArcIt &arc) const {
       return Parent::source(arc);
     }
-    // \brief Running node of the iterator
-    //
-    // Returns the running node (i.e. the target in this case) of the
-    // iterator
+    /// \brief Running node of the iterator
+    ///
+    /// Returns the running node (i.e. the target in this case) of the
+    /// iterator
     Node runningNode(const OutArcIt &arc) const {
       return Parent::target(arc);
     }
 
-    // \brief Base node of the iterator
-    //
-    // Returns the base node (i.e. the target in this case) of the iterator
+    /// \brief Base node of the iterator
+    ///
+    /// Returns the base node (i.e. the target in this case) of the iterator
     Node baseNode(const InArcIt &arc) const {
       return Parent::target(arc);
     }
-    // \brief Running node of the iterator
-    //
-    // Returns the running node (i.e. the source in this case) of the
-    // iterator
+    /// \brief Running node of the iterator
+    ///
+    /// Returns the running node (i.e. the source in this case) of the
+    /// iterator
     Node runningNode(const InArcIt &arc) const {
       return Parent::source(arc);
@@ -326,7 +326,7 @@
   };
 
-  // \ingroup _graphbits
-  //
-  // \brief Extender for the Graphs
+  /// \ingroup _graphbits
+  ///
+  /// \brief Extender for the Graphs
   template <typename Base>
   class GraphExtender : public Base {
@@ -556,41 +556,41 @@
     };
 
-    // \brief Base node of the iterator
-    //
-    // Returns the base node (ie. the source in this case) of the iterator
+    /// \brief Base node of the iterator
+    ///
+    /// Returns the base node (ie. the source in this case) of the iterator
     Node baseNode(const OutArcIt &arc) const {
       return Parent::source(static_cast<const Arc&>(arc));
     }
-    // \brief Running node of the iterator
-    //
-    // Returns the running node (ie. the target in this case) of the
-    // iterator
+    /// \brief Running node of the iterator
+    ///
+    /// Returns the running node (ie. the target in this case) of the
+    /// iterator
     Node runningNode(const OutArcIt &arc) const {
       return Parent::target(static_cast<const Arc&>(arc));
     }
 
-    // \brief Base node of the iterator
-    //
-    // Returns the base node (ie. the target in this case) of the iterator
+    /// \brief Base node of the iterator
+    ///
+    /// Returns the base node (ie. the target in this case) of the iterator
     Node baseNode(const InArcIt &arc) const {
       return Parent::target(static_cast<const Arc&>(arc));
     }
-    // \brief Running node of the iterator
-    //
-    // Returns the running node (ie. the source in this case) of the
-    // iterator
+    /// \brief Running node of the iterator
+    ///
+    /// Returns the running node (ie. the source in this case) of the
+    /// iterator
     Node runningNode(const InArcIt &arc) const {
       return Parent::source(static_cast<const Arc&>(arc));
     }
 
-    // Base node of the iterator
-    //
-    // Returns the base node of the iterator
+    /// Base node of the iterator
+    ///
+    /// Returns the base node of the iterator
     Node baseNode(const IncEdgeIt &edge) const {
       return edge._direction ? u(edge) : v(edge);
     }
-    // Running node of the iterator
-    //
-    // Returns the running node of the iterator
+    /// Running node of the iterator
+    ///
+    /// Returns the running node of the iterator
     Node runningNode(const IncEdgeIt &edge) const {
       return edge._direction ? v(edge) : u(edge);
Index: lemon/bits/map_extender.h
===================================================================
--- lemon/bits/map_extender.h	(revision 318)
+++ lemon/bits/map_extender.h	(revision 263)
@@ -27,12 +27,12 @@
 #include <lemon/concepts/maps.h>
 
-//\file
-//\brief Extenders for iterable maps.
+///\file
+///\brief Extenders for iterable maps.
 
 namespace lemon {
 
-  // \ingroup graphbits
-  //
-  // \brief Extender for maps
+  /// \ingroup graphbits
+  ///
+  /// \brief Extender for maps
   template <typename _Map>
   class MapExtender : public _Map {
@@ -172,7 +172,7 @@
   };
 
-  // \ingroup graphbits
-  //
-  // \brief Extender for maps which use a subset of the items.
+  /// \ingroup graphbits
+  ///
+  /// \brief Extender for maps which use a subset of the items.
   template <typename _Graph, typename _Map>
   class SubMapExtender : public _Map {
Index: lemon/bits/traits.h
===================================================================
--- lemon/bits/traits.h	(revision 318)
+++ lemon/bits/traits.h	(revision 220)
@@ -20,7 +20,7 @@
 #define LEMON_BITS_TRAITS_H
 
-//\file
-//\brief Traits for graphs and maps
-//
+///\file
+///\brief Traits for graphs and maps
+///
 
 #include <lemon/bits/enable_if.h>
Index: lemon/bits/vector_map.h
===================================================================
--- lemon/bits/vector_map.h	(revision 318)
+++ lemon/bits/vector_map.h	(revision 280)
@@ -29,21 +29,21 @@
 #include <lemon/concepts/maps.h>
 
-//\ingroup graphbits
-//
-//\file
-//\brief Vector based graph maps.
+///\ingroup graphbits
+///
+///\file
+///\brief Vector based graph maps.
 namespace lemon {
 
-  // \ingroup graphbits
-  //
-  // \brief Graph map based on the std::vector storage.
-  //
-  // The VectorMap template class is graph map structure what
-  // automatically updates the map when a key is added to or erased from
-  // the map. This map type uses the std::vector to store the values.
-  //
-  // \tparam _Graph The graph this map is attached to.
-  // \tparam _Item The item type of the graph items.
-  // \tparam _Value The value type of the map.
+  /// \ingroup graphbits
+  ///
+  /// \brief Graph map based on the std::vector storage.
+  ///
+  /// The VectorMap template class is graph map structure what
+  /// automatically updates the map when a key is added to or erased from
+  /// the map. This map type uses the std::vector to store the values.
+  ///
+  /// \tparam _Graph The graph this map is attached to.
+  /// \tparam _Item The item type of the graph items.
+  /// \tparam _Value The value type of the map.
   template <typename _Graph, typename _Item, typename _Value>
   class VectorMap
@@ -51,39 +51,39 @@
   private:
 
-    // The container type of the map.
+    /// The container type of the map.
     typedef std::vector<_Value> Container;
 
   public:
 
-    // The graph type of the map.
+    /// The graph type of the map.
     typedef _Graph Graph;
-    // The item type of the map.
+    /// The item type of the map.
     typedef _Item Item;
-    // The reference map tag.
+    /// The reference map tag.
     typedef True ReferenceMapTag;
 
-    // The key type of the map.
+    /// The key type of the map.
     typedef _Item Key;
-    // The value type of the map.
+    /// The value type of the map.
     typedef _Value Value;
 
-    // The notifier type.
+    /// The notifier type.
     typedef typename ItemSetTraits<_Graph, _Item>::ItemNotifier Notifier;
 
-    // The map type.
+    /// The map type.
     typedef VectorMap Map;
-    // The base class of the map.
+    /// The base class of the map.
     typedef typename Notifier::ObserverBase Parent;
 
-    // The reference type of the map;
+    /// The reference type of the map;
     typedef typename Container::reference Reference;
-    // The const reference type of the map;
+    /// The const reference type of the map;
     typedef typename Container::const_reference ConstReference;
 
 
-    // \brief Constructor to attach the new map into the notifier.
-    //
-    // It constructs a map and attachs it into the notifier.
-    // It adds all the items of the graph to the map.
+    /// \brief Constructor to attach the new map into the notifier.
+    ///
+    /// It constructs a map and attachs it into the notifier.
+    /// It adds all the items of the graph to the map.
     VectorMap(const Graph& graph) {
       Parent::attach(graph.notifier(Item()));
@@ -91,8 +91,8 @@
     }
 
-    // \brief Constructor uses given value to initialize the map.
-    //
-    // It constructs a map uses a given value to initialize the map.
-    // It adds all the items of the graph to the map.
+    /// \brief Constructor uses given value to initialize the map.
+    ///
+    /// It constructs a map uses a given value to initialize the map.
+    /// It adds all the items of the graph to the map.
     VectorMap(const Graph& graph, const Value& value) {
       Parent::attach(graph.notifier(Item()));
@@ -101,7 +101,7 @@
 
   private:
-    // \brief Copy constructor
-    //
-    // Copy constructor.
+    /// \brief Copy constructor
+    ///
+    /// Copy constructor.
     VectorMap(const VectorMap& _copy) : Parent() {
       if (_copy.attached()) {
@@ -111,11 +111,11 @@
     }
 
-    // \brief Assign operator.
-    //
-    // This operator assigns for each item in the map the
-    // value mapped to the same item in the copied map.
-    // The parameter map should be indiced with the same
-    // itemset because this assign operator does not change
-    // the container of the map.
+    /// \brief Assign operator.
+    ///
+    /// This operator assigns for each item in the map the
+    /// value mapped to the same item in the copied map.
+    /// The parameter map should be indiced with the same
+    /// itemset because this assign operator does not change
+    /// the container of the map.
     VectorMap& operator=(const VectorMap& cmap) {
       return operator=<VectorMap>(cmap);
@@ -123,10 +123,10 @@
 
 
-    // \brief Template assign operator.
-    //
-    // The given parameter should be conform to the ReadMap
-    // concecpt and could be indiced by the current item set of
-    // the NodeMap. In this case the value for each item
-    // is assigned by the value of the given ReadMap.
+    /// \brief Template assign operator.
+    ///
+    /// The given parameter should be conform to the ReadMap
+    /// concecpt and could be indiced by the current item set of
+    /// the NodeMap. In this case the value for each item
+    /// is assigned by the value of the given ReadMap.
     template <typename CMap>
     VectorMap& operator=(const CMap& cmap) {
@@ -142,16 +142,16 @@
   public:
 
-    // \brief The subcript operator.
-    //
-    // The subscript operator. The map can be subscripted by the
-    // actual items of the graph.
+    /// \brief The subcript operator.
+    ///
+    /// The subscript operator. The map can be subscripted by the
+    /// actual items of the graph.
     Reference operator[](const Key& key) {
       return container[Parent::notifier()->id(key)];
     }
 
-    // \brief The const subcript operator.
-    //
-    // The const subscript operator. The map can be subscripted by the
-    // actual items of the graph.
+    /// \brief The const subcript operator.
+    ///
+    /// The const subscript operator. The map can be subscripted by the
+    /// actual items of the graph.
     ConstReference operator[](const Key& key) const {
       return container[Parent::notifier()->id(key)];
@@ -159,7 +159,7 @@
 
 
-    // \brief The setter function of the map.
-    //
-    // It the same as operator[](key) = value expression.
+    /// \brief The setter function of the map.
+    ///
+    /// It the same as operator[](key) = value expression.
     void set(const Key& key, const Value& value) {
       (*this)[key] = value;
@@ -168,8 +168,8 @@
   protected:
 
-    // \brief Adds a new key to the map.
-    //
-    // It adds a new key to the map. It called by the observer notifier
-    // and it overrides the add() member function of the observer base.
+    /// \brief Adds a new key to the map.
+    ///
+    /// It adds a new key to the map. It called by the observer notifier
+    /// and it overrides the add() member function of the observer base.
     virtual void add(const Key& key) {
       int id = Parent::notifier()->id(key);
@@ -179,8 +179,8 @@
     }
 
-    // \brief Adds more new keys to the map.
-    //
-    // It adds more new keys to the map. It called by the observer notifier
-    // and it overrides the add() member function of the observer base.
+    /// \brief Adds more new keys to the map.
+    ///
+    /// It adds more new keys to the map. It called by the observer notifier
+    /// and it overrides the add() member function of the observer base.
     virtual void add(const std::vector<Key>& keys) {
       int max = container.size() - 1;
@@ -194,16 +194,16 @@
     }
 
-    // \brief Erase a key from the map.
-    //
-    // Erase a key from the map. It called by the observer notifier
-    // and it overrides the erase() member function of the observer base.
+    /// \brief Erase a key from the map.
+    ///
+    /// Erase a key from the map. It called by the observer notifier
+    /// and it overrides the erase() member function of the observer base.
     virtual void erase(const Key& key) {
       container[Parent::notifier()->id(key)] = Value();
     }
 
-    // \brief Erase more keys from the map.
-    //
-    // Erase more keys from the map. It called by the observer notifier
-    // and it overrides the erase() member function of the observer base.
+    /// \brief Erase more keys from the map.
+    ///
+    /// Erase more keys from the map. It called by the observer notifier
+    /// and it overrides the erase() member function of the observer base.
     virtual void erase(const std::vector<Key>& keys) {
       for (int i = 0; i < int(keys.size()); ++i) {
@@ -212,8 +212,8 @@
     }
 
-    // \brief Buildes the map.
-    //
-    // It buildes the map. It called by the observer notifier
-    // and it overrides the build() member function of the observer base.
+    /// \brief Buildes the map.
+    ///
+    /// It buildes the map. It called by the observer notifier
+    /// and it overrides the build() member function of the observer base.
     virtual void build() {
       int size = Parent::notifier()->maxId() + 1;
@@ -222,8 +222,8 @@
     }
 
-    // \brief Clear the map.
-    //
-    // It erase all items from the map. It called by the observer notifier
-    // and it overrides the clear() member function of the observer base.
+    /// \brief Clear the map.
+    ///
+    /// It erase all items from the map. It called by the observer notifier
+    /// and it overrides the clear() member function of the observer base.
     virtual void clear() {
       container.clear();
Index: lemon/color.h
===================================================================
--- lemon/color.h	(revision 317)
+++ lemon/color.h	(revision 209)
@@ -93,5 +93,5 @@
   extern const Color DARK_CYAN;
 
-  ///Map <tt>int</tt>s to different <tt>Color</tt>s
+  ///Map <tt>int</tt>s to different \ref Color "Color"s
 
   ///This map assigns one of the predefined \ref Color "Color"s to
Index: lemon/concepts/graph_components.h
===================================================================
--- lemon/concepts/graph_components.h	(revision 317)
+++ lemon/concepts/graph_components.h	(revision 263)
@@ -983,5 +983,5 @@
     ///
     /// This class describes the common interface of the graph maps
-    /// (NodeMap, ArcMap), that is maps that can be used to
+    /// (NodeMap, ArcMap), that is \ref maps-page "maps" which can be used to
     /// associate data to graph descriptors (nodes or arcs).
     template <typename _Graph, typename _Item, typename _Value>
Index: lemon/concepts/maps.h
===================================================================
--- lemon/concepts/maps.h	(revision 318)
+++ lemon/concepts/maps.h	(revision 220)
@@ -23,5 +23,5 @@
 #include <lemon/concept_check.h>
 
-///\ingroup map_concepts
+///\ingroup concept
 ///\file
 ///\brief The concept of maps.
@@ -31,5 +31,5 @@
   namespace concepts {
 
-    /// \addtogroup map_concepts
+    /// \addtogroup concept
     /// @{
 
Index: lemon/core.h
===================================================================
--- lemon/core.h	(revision 317)
+++ lemon/core.h	(revision 282)
@@ -59,5 +59,5 @@
   /// @{
 
-  ///Create convenience typedefs for the digraph types and iterators
+  ///Create convenient typedefs for the digraph types and iterators
 
   ///This \c \#define creates convenient type definitions for the following
@@ -81,7 +81,7 @@
   typedef Digraph::ArcMap<bool> BoolArcMap;                             \
   typedef Digraph::ArcMap<int> IntArcMap;                               \
-  typedef Digraph::ArcMap<double> DoubleArcMap
-
-  ///Create convenience typedefs for the digraph types and iterators
+  typedef Digraph::ArcMap<double> DoubleArcMap;
+
+  ///Create convenient typedefs for the digraph types and iterators
 
   ///\see DIGRAPH_TYPEDEFS
@@ -101,7 +101,7 @@
   typedef typename Digraph::template ArcMap<bool> BoolArcMap;           \
   typedef typename Digraph::template ArcMap<int> IntArcMap;             \
-  typedef typename Digraph::template ArcMap<double> DoubleArcMap
-
-  ///Create convenience typedefs for the graph types and iterators
+  typedef typename Digraph::template ArcMap<double> DoubleArcMap;
+
+  ///Create convenient typedefs for the graph types and iterators
 
   ///This \c \#define creates the same convenient type definitions as defined
@@ -120,7 +120,7 @@
   typedef Graph::EdgeMap<bool> BoolEdgeMap;                             \
   typedef Graph::EdgeMap<int> IntEdgeMap;                               \
-  typedef Graph::EdgeMap<double> DoubleEdgeMap
-
-  ///Create convenience typedefs for the graph types and iterators
+  typedef Graph::EdgeMap<double> DoubleEdgeMap;
+
+  ///Create convenient typedefs for the graph types and iterators
 
   ///\see GRAPH_TYPEDEFS
@@ -135,5 +135,5 @@
   typedef typename Graph::template EdgeMap<bool> BoolEdgeMap;           \
   typedef typename Graph::template EdgeMap<int> IntEdgeMap;             \
-  typedef typename Graph::template EdgeMap<double> DoubleEdgeMap
+  typedef typename Graph::template EdgeMap<double> DoubleEdgeMap;
 
   /// \brief Function to count the items in a graph.
@@ -1555,5 +1555,5 @@
     ///structure is updated after each graph alteration. Thus although
     ///this data structure is theoretically faster than \ref ArcLookUp
-    ///and \ref AllArcLookUp, it often provides worse performance than
+    ///and \ref AllArcLookup, it often provides worse performance than
     ///them.
     Arc operator()(Node s, Node t, Arc p = INVALID) const  {
@@ -1700,6 +1700,6 @@
     ///Find an arc between two nodes.
 
-    ///Find an arc between two nodes in time <em>O</em>(log<em>d</em>),
-    ///where <em>d</em> is the number of outgoing arcs of \c s.
+    ///Find an arc between two nodes in time <em>O</em>(log<em>d</em>), where
+    ///<em>d</em> is the number of outgoing arcs of \c s.
     ///\param s The source node.
     ///\param t The target node.
@@ -1818,6 +1818,6 @@
     ///\endcode
     ///
-    ///Finding the first arc take <em>O</em>(log<em>d</em>) time,
-    ///where <em>d</em> is the number of outgoing arcs of \c s. Then the
+    ///Finding the first arc take <em>O</em>(log<em>d</em>) time, where
+    ///<em>d</em> is the number of outgoing arcs of \c s. Then, the
     ///consecutive arcs are found in constant time.
     ///
Index: lemon/dfs.h
===================================================================
--- lemon/dfs.h	(revision 317)
+++ lemon/dfs.h	(revision 292)
@@ -51,9 +51,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap;
-    ///Instantiates a PredMap.
-
-    ///This function instantiates a PredMap.
+    ///Instantiates a \ref PredMap.
+
+    ///This function instantiates a \ref PredMap.
     ///\param g is the digraph, to which we would like to define the
-    ///PredMap.
+    ///\ref PredMap.
     static PredMap *createPredMap(const Digraph &g)
     {
@@ -66,9 +66,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef NullMap<typename Digraph::Node,bool> ProcessedMap;
-    ///Instantiates a ProcessedMap.
-
-    ///This function instantiates a ProcessedMap.
+    ///Instantiates a \ref ProcessedMap.
+
+    ///This function instantiates a \ref ProcessedMap.
     ///\param g is the digraph, to which
-    ///we would like to define the ProcessedMap
+    ///we would like to define the \ref ProcessedMap
 #ifdef DOXYGEN
     static ProcessedMap *createProcessedMap(const Digraph &g)
@@ -85,9 +85,9 @@
     ///It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
     typedef typename Digraph::template NodeMap<bool> ReachedMap;
-    ///Instantiates a ReachedMap.
-
-    ///This function instantiates a ReachedMap.
+    ///Instantiates a \ref ReachedMap.
+
+    ///This function instantiates a \ref ReachedMap.
     ///\param g is the digraph, to which
-    ///we would like to define the ReachedMap.
+    ///we would like to define the \ref ReachedMap.
     static ReachedMap *createReachedMap(const Digraph &g)
     {
@@ -100,9 +100,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<int> DistMap;
-    ///Instantiates a DistMap.
-
-    ///This function instantiates a DistMap.
+    ///Instantiates a \ref DistMap.
+
+    ///This function instantiates a \ref DistMap.
     ///\param g is the digraph, to which we would like to define the
-    ///DistMap.
+    ///\ref DistMap.
     static DistMap *createDistMap(const Digraph &g)
     {
@@ -228,8 +228,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///PredMap type.
+    ///\ref PredMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///PredMap type.
+    ///\ref PredMap type.
     template <class T>
     struct SetPredMap : public Dfs<Digraph, SetPredMapTraits<T> > {
@@ -247,8 +247,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///DistMap type.
+    ///\ref DistMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///DistMap type.
+    ///\ref DistMap type.
     template <class T>
     struct SetDistMap : public Dfs< Digraph, SetDistMapTraits<T> > {
@@ -266,8 +266,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///ReachedMap type.
+    ///\ref ReachedMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///ReachedMap type.
+    ///\ref ReachedMap type.
     template <class T>
     struct SetReachedMap : public Dfs< Digraph, SetReachedMapTraits<T> > {
@@ -285,8 +285,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type.
+    ///\ref ProcessedMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type.
+    ///\ref ProcessedMap type.
     template <class T>
     struct SetProcessedMap : public Dfs< Digraph, SetProcessedMapTraits<T> > {
@@ -302,8 +302,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
+    ///\ref ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
+    ///\ref ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
     ///If you don't set it explicitly, it will be automatically allocated.
     struct SetStandardProcessedMap :
@@ -769,9 +769,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap;
-    ///Instantiates a PredMap.
-
-    ///This function instantiates a PredMap.
+    ///Instantiates a \ref PredMap.
+
+    ///This function instantiates a \ref PredMap.
     ///\param g is the digraph, to which we would like to define the
-    ///PredMap.
+    ///\ref PredMap.
     static PredMap *createPredMap(const Digraph &g)
     {
@@ -785,9 +785,9 @@
     ///By default it is a NullMap.
     typedef NullMap<typename Digraph::Node,bool> ProcessedMap;
-    ///Instantiates a ProcessedMap.
-
-    ///This function instantiates a ProcessedMap.
+    ///Instantiates a \ref ProcessedMap.
+
+    ///This function instantiates a \ref ProcessedMap.
     ///\param g is the digraph, to which
-    ///we would like to define the ProcessedMap.
+    ///we would like to define the \ref ProcessedMap.
 #ifdef DOXYGEN
     static ProcessedMap *createProcessedMap(const Digraph &g)
@@ -804,9 +804,9 @@
     ///It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
     typedef typename Digraph::template NodeMap<bool> ReachedMap;
-    ///Instantiates a ReachedMap.
-
-    ///This function instantiates a ReachedMap.
+    ///Instantiates a \ref ReachedMap.
+
+    ///This function instantiates a \ref ReachedMap.
     ///\param g is the digraph, to which
-    ///we would like to define the ReachedMap.
+    ///we would like to define the \ref ReachedMap.
     static ReachedMap *createReachedMap(const Digraph &g)
     {
@@ -819,9 +819,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<int> DistMap;
-    ///Instantiates a DistMap.
-
-    ///This function instantiates a DistMap.
+    ///Instantiates a \ref DistMap.
+
+    ///This function instantiates a \ref DistMap.
     ///\param g is the digraph, to which we would like to define
-    ///the DistMap
+    ///the \ref DistMap
     static DistMap *createDistMap(const Digraph &g)
     {
@@ -836,5 +836,5 @@
   };
 
-  /// Default traits class used by DfsWizard
+  /// Default traits class used by \ref DfsWizard
 
   /// To make it easier to use Dfs algorithm
@@ -1002,8 +1002,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting PredMap object.
+    ///for setting \ref PredMap object.
     ///
     ///\ref named-func-param "Named parameter"
-    ///for setting PredMap object.
+    ///for setting \ref PredMap object.
     template<class T>
     DfsWizard<SetPredMapBase<T> > predMap(const T &t)
@@ -1020,8 +1020,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting ReachedMap object.
+    ///for setting \ref ReachedMap object.
     ///
     /// \ref named-func-param "Named parameter"
-    ///for setting ReachedMap object.
+    ///for setting \ref ReachedMap object.
     template<class T>
     DfsWizard<SetReachedMapBase<T> > reachedMap(const T &t)
@@ -1038,8 +1038,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting DistMap object.
+    ///for setting \ref DistMap object.
     ///
     /// \ref named-func-param "Named parameter"
-    ///for setting DistMap object.
+    ///for setting \ref DistMap object.
     template<class T>
     DfsWizard<SetDistMapBase<T> > distMap(const T &t)
@@ -1056,8 +1056,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting ProcessedMap object.
+    ///for setting \ref ProcessedMap object.
     ///
     /// \ref named-func-param "Named parameter"
-    ///for setting ProcessedMap object.
+    ///for setting \ref ProcessedMap object.
     template<class T>
     DfsWizard<SetProcessedMapBase<T> > processedMap(const T &t)
@@ -1214,9 +1214,9 @@
     typedef typename Digraph::template NodeMap<bool> ReachedMap;
 
-    /// \brief Instantiates a ReachedMap.
-    ///
-    /// This function instantiates a ReachedMap.
+    /// \brief Instantiates a \ref ReachedMap.
+    ///
+    /// This function instantiates a \ref ReachedMap.
     /// \param digraph is the digraph, to which
-    /// we would like to define the ReachedMap.
+    /// we would like to define the \ref ReachedMap.
     static ReachedMap *createReachedMap(const Digraph &digraph) {
       return new ReachedMap(digraph);
Index: lemon/dijkstra.h
===================================================================
--- lemon/dijkstra.h	(revision 317)
+++ lemon/dijkstra.h	(revision 290)
@@ -140,9 +140,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap;
-    ///Instantiates a PredMap.
-
-    ///This function instantiates a PredMap.
+    ///Instantiates a \ref PredMap.
+
+    ///This function instantiates a \ref PredMap.
     ///\param g is the digraph, to which we would like to define the
-    ///PredMap.
+    ///\ref PredMap.
     static PredMap *createPredMap(const Digraph &g)
     {
@@ -156,9 +156,9 @@
     ///By default it is a NullMap.
     typedef NullMap<typename Digraph::Node,bool> ProcessedMap;
-    ///Instantiates a ProcessedMap.
-
-    ///This function instantiates a ProcessedMap.
+    ///Instantiates a \ref ProcessedMap.
+
+    ///This function instantiates a \ref ProcessedMap.
     ///\param g is the digraph, to which
-    ///we would like to define the ProcessedMap
+    ///we would like to define the \ref ProcessedMap
 #ifdef DOXYGEN
     static ProcessedMap *createProcessedMap(const Digraph &g)
@@ -175,9 +175,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<typename LM::Value> DistMap;
-    ///Instantiates a DistMap.
-
-    ///This function instantiates a DistMap.
+    ///Instantiates a \ref DistMap.
+
+    ///This function instantiates a \ref DistMap.
     ///\param g is the digraph, to which we would like to define
-    ///the DistMap
+    ///the \ref DistMap
     static DistMap *createDistMap(const Digraph &g)
     {
@@ -328,8 +328,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///PredMap type.
+    ///\ref PredMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///PredMap type.
+    ///\ref PredMap type.
     template <class T>
     struct SetPredMap
@@ -348,8 +348,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///DistMap type.
+    ///\ref DistMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///DistMap type.
+    ///\ref DistMap type.
     template <class T>
     struct SetDistMap
@@ -368,8 +368,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type.
+    ///\ref ProcessedMap type.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type.
+    ///\ref ProcessedMap type.
     template <class T>
     struct SetProcessedMap
@@ -386,8 +386,8 @@
     };
     ///\brief \ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
+    ///\ref ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
     ///
     ///\ref named-templ-param "Named parameter" for setting
-    ///ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
+    ///\ref ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>.
     ///If you don't set it explicitly, it will be automatically allocated.
     struct SetStandardProcessedMap
@@ -454,5 +454,5 @@
 
     /// \brief \ref named-templ-param "Named parameter" for setting
-    ///\c OperationTraits type
+    ///\ref OperationTraits type
     ///
     ///\ref named-templ-param "Named parameter" for setting
@@ -987,9 +987,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap;
-    ///Instantiates a PredMap.
-
-    ///This function instantiates a PredMap.
+    ///Instantiates a \ref PredMap.
+
+    ///This function instantiates a \ref PredMap.
     ///\param g is the digraph, to which we would like to define the
-    ///PredMap.
+    ///\ref PredMap.
     static PredMap *createPredMap(const Digraph &g)
     {
@@ -1003,9 +1003,9 @@
     ///By default it is a NullMap.
     typedef NullMap<typename Digraph::Node,bool> ProcessedMap;
-    ///Instantiates a ProcessedMap.
-
-    ///This function instantiates a ProcessedMap.
+    ///Instantiates a \ref ProcessedMap.
+
+    ///This function instantiates a \ref ProcessedMap.
     ///\param g is the digraph, to which
-    ///we would like to define the ProcessedMap.
+    ///we would like to define the \ref ProcessedMap.
 #ifdef DOXYGEN
     static ProcessedMap *createProcessedMap(const Digraph &g)
@@ -1022,9 +1022,9 @@
     ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
     typedef typename Digraph::template NodeMap<typename LM::Value> DistMap;
-    ///Instantiates a DistMap.
-
-    ///This function instantiates a DistMap.
+    ///Instantiates a \ref DistMap.
+
+    ///This function instantiates a \ref DistMap.
     ///\param g is the digraph, to which we would like to define
-    ///the DistMap
+    ///the \ref DistMap
     static DistMap *createDistMap(const Digraph &g)
     {
@@ -1039,5 +1039,5 @@
   };
 
-  /// Default traits class used by DijkstraWizard
+  /// Default traits class used by \ref DijkstraWizard
 
   /// To make it easier to use Dijkstra algorithm
@@ -1199,8 +1199,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting PredMap object.
+    ///for setting \ref PredMap object.
     ///
     ///\ref named-func-param "Named parameter"
-    ///for setting PredMap object.
+    ///for setting \ref PredMap object.
     template<class T>
     DijkstraWizard<SetPredMapBase<T> > predMap(const T &t)
@@ -1217,8 +1217,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting DistMap object.
+    ///for setting \ref DistMap object.
     ///
     ///\ref named-func-param "Named parameter"
-    ///for setting DistMap object.
+    ///for setting \ref DistMap object.
     template<class T>
     DijkstraWizard<SetDistMapBase<T> > distMap(const T &t)
@@ -1235,8 +1235,8 @@
     };
     ///\brief \ref named-func-param "Named parameter"
-    ///for setting ProcessedMap object.
+    ///for setting \ref ProcessedMap object.
     ///
     /// \ref named-func-param "Named parameter"
-    ///for setting ProcessedMap object.
+    ///for setting \ref ProcessedMap object.
     template<class T>
     DijkstraWizard<SetProcessedMapBase<T> > processedMap(const T &t)
Index: lemon/dim2.h
===================================================================
--- lemon/dim2.h	(revision 318)
+++ lemon/dim2.h	(revision 253)
@@ -260,8 +260,8 @@
 
 
-  /// Bounding box of plain vectors (points).
+  /// Bounding box of plain vectors (\ref Point points).
 
   /// A class to calculate or store the bounding box of plain vectors
-  /// (\ref Point "points").
+  /// (\ref Point points).
   template<typename T>
   class Box {
@@ -574,6 +574,7 @@
   }
 
-  ///Map of x-coordinates of a <tt>Point</tt>-map
-
+  ///Map of x-coordinates of a \ref Point "Point"-map
+
+  ///\ingroup maps
   ///Map of x-coordinates of a \ref Point "Point"-map.
   ///
@@ -592,7 +593,9 @@
   };
 
-  ///Returns an XMap class
-
-  ///This function just returns an XMap class.
+  ///Returns an \ref XMap class
+
+  ///This function just returns an \ref XMap class.
+  ///
+  ///\ingroup maps
   ///\relates XMap
   template<class M>
@@ -608,7 +611,8 @@
   }
 
-  ///Constant (read only) version of XMap
-
-  ///Constant (read only) version of XMap.
+  ///Constant (read only) version of \ref XMap
+
+  ///\ingroup maps
+  ///Constant (read only) version of \ref XMap
   ///
   template<class M>
@@ -625,7 +629,9 @@
   };
 
-  ///Returns a ConstXMap class
-
-  ///This function just returns a ConstXMap class.
+  ///Returns a \ref ConstXMap class
+
+  ///This function just returns a \ref ConstXMap class.
+  ///
+  ///\ingroup maps
   ///\relates ConstXMap
   template<class M>
@@ -635,6 +641,7 @@
   }
 
-  ///Map of y-coordinates of a <tt>Point</tt>-map
-
+  ///Map of y-coordinates of a \ref Point "Point"-map
+
+  ///\ingroup maps
   ///Map of y-coordinates of a \ref Point "Point"-map.
   ///
@@ -653,7 +660,9 @@
   };
 
-  ///Returns a YMap class
-
-  ///This function just returns a YMap class.
+  ///Returns a \ref YMap class
+
+  ///This function just returns a \ref YMap class.
+  ///
+  ///\ingroup maps
   ///\relates YMap
   template<class M>
@@ -669,7 +678,8 @@
   }
 
-  ///Constant (read only) version of YMap
-
-  ///Constant (read only) version of YMap.
+  ///Constant (read only) version of \ref YMap
+
+  ///\ingroup maps
+  ///Constant (read only) version of \ref YMap
   ///
   template<class M>
@@ -686,7 +696,9 @@
   };
 
-  ///Returns a ConstYMap class
-
-  ///This function just returns a ConstYMap class.
+  ///Returns a \ref ConstYMap class
+
+  ///This function just returns a \ref ConstYMap class.
+  ///
+  ///\ingroup maps
   ///\relates ConstYMap
   template<class M>
@@ -697,8 +709,10 @@
 
 
-  ///\brief Map of the normSquare() of a <tt>Point</tt>-map
+  ///\brief Map of the \ref Point::normSquare() "normSquare()"
+  ///of a \ref Point "Point"-map
   ///
   ///Map of the \ref Point::normSquare() "normSquare()"
   ///of a \ref Point "Point"-map.
+  ///\ingroup maps
   template<class M>
   class NormSquareMap
@@ -714,7 +728,9 @@
   };
 
-  ///Returns a NormSquareMap class
-
-  ///This function just returns a NormSquareMap class.
+  ///Returns a \ref NormSquareMap class
+
+  ///This function just returns a \ref NormSquareMap class.
+  ///
+  ///\ingroup maps
   ///\relates NormSquareMap
   template<class M>
Index: lemon/graph_to_eps.h
===================================================================
--- lemon/graph_to_eps.h	(revision 317)
+++ lemon/graph_to_eps.h	(revision 291)
@@ -63,5 +63,5 @@
   }
 
-///Default traits class of GraphToEps
+///Default traits class of \ref GraphToEps
 
 ///Default traits class of \ref GraphToEps.
Index: lemon/lgf_reader.h
===================================================================
--- lemon/lgf_reader.h	(revision 307)
+++ lemon/lgf_reader.h	(revision 295)
@@ -392,35 +392,13 @@
   class DigraphReader;
 
-  /// \brief Return a \ref DigraphReader class
-  ///
-  /// This function just returns a \ref DigraphReader class.
-  /// \relates DigraphReader
   template <typename Digraph>
   DigraphReader<Digraph> digraphReader(Digraph& digraph,
-                                       std::istream& is = std::cin) {
-    DigraphReader<Digraph> tmp(digraph, is);
-    return tmp;
-  }
-
-  /// \brief Return a \ref DigraphReader class
-  ///
-  /// This function just returns a \ref DigraphReader class.
-  /// \relates DigraphReader
+                                       std::istream& is = std::cin);
+
   template <typename Digraph>
-  DigraphReader<Digraph> digraphReader(Digraph& digraph,
-                                       const std::string& fn) {
-    DigraphReader<Digraph> tmp(digraph, fn);
-    return tmp;
-  }
-
-  /// \brief Return a \ref DigraphReader class
-  ///
-  /// This function just returns a \ref DigraphReader class.
-  /// \relates DigraphReader
+  DigraphReader<Digraph> digraphReader(Digraph& digraph, const std::string& fn);
+
   template <typename Digraph>
-  DigraphReader<Digraph> digraphReader(Digraph& digraph, const char* fn) {
-    DigraphReader<Digraph> tmp(digraph, fn);
-    return tmp;
-  }
+  DigraphReader<Digraph> digraphReader(Digraph& digraph, const char *fn);
 
   /// \ingroup lemon_io
@@ -1212,36 +1190,48 @@
   };
 
+  /// \brief Return a \ref DigraphReader class
+  ///
+  /// This function just returns a \ref DigraphReader class.
+  /// \relates DigraphReader
+  template <typename Digraph>
+  DigraphReader<Digraph> digraphReader(Digraph& digraph,
+                                       std::istream& is = std::cin) {
+    DigraphReader<Digraph> tmp(digraph, is);
+    return tmp;
+  }
+
+  /// \brief Return a \ref DigraphReader class
+  ///
+  /// This function just returns a \ref DigraphReader class.
+  /// \relates DigraphReader
+  template <typename Digraph>
+  DigraphReader<Digraph> digraphReader(Digraph& digraph,
+                                       const std::string& fn) {
+    DigraphReader<Digraph> tmp(digraph, fn);
+    return tmp;
+  }
+
+  /// \brief Return a \ref DigraphReader class
+  ///
+  /// This function just returns a \ref DigraphReader class.
+  /// \relates DigraphReader
+  template <typename Digraph>
+  DigraphReader<Digraph> digraphReader(Digraph& digraph, const char* fn) {
+    DigraphReader<Digraph> tmp(digraph, fn);
+    return tmp;
+  }
+
   template <typename Graph>
   class GraphReader;
 
-  /// \brief Return a \ref GraphReader class
-  ///
-  /// This function just returns a \ref GraphReader class.
-  /// \relates GraphReader
   template <typename Graph>
-  GraphReader<Graph> graphReader(Graph& graph, std::istream& is = std::cin) {
-    GraphReader<Graph> tmp(graph, is);
-    return tmp;
-  }
-
-  /// \brief Return a \ref GraphReader class
-  ///
-  /// This function just returns a \ref GraphReader class.
-  /// \relates GraphReader
+  GraphReader<Graph> graphReader(Graph& graph,
+                                 std::istream& is = std::cin);
+
   template <typename Graph>
-  GraphReader<Graph> graphReader(Graph& graph, const std::string& fn) {
-    GraphReader<Graph> tmp(graph, fn);
-    return tmp;
-  }
-
-  /// \brief Return a \ref GraphReader class
-  ///
-  /// This function just returns a \ref GraphReader class.
-  /// \relates GraphReader
+  GraphReader<Graph> graphReader(Graph& graph, const std::string& fn);
+
   template <typename Graph>
-  GraphReader<Graph> graphReader(Graph& graph, const char* fn) {
-    GraphReader<Graph> tmp(graph, fn);
-    return tmp;
-  }
+  GraphReader<Graph> graphReader(Graph& graph, const char *fn);
 
   /// \ingroup lemon_io
@@ -2041,4 +2031,34 @@
 
   };
+
+  /// \brief Return a \ref GraphReader class
+  ///
+  /// This function just returns a \ref GraphReader class.
+  /// \relates GraphReader
+  template <typename Graph>
+  GraphReader<Graph> graphReader(Graph& graph, std::istream& is = std::cin) {
+    GraphReader<Graph> tmp(graph, is);
+    return tmp;
+  }
+
+  /// \brief Return a \ref GraphReader class
+  ///
+  /// This function just returns a \ref GraphReader class.
+  /// \relates GraphReader
+  template <typename Graph>
+  GraphReader<Graph> graphReader(Graph& graph, const std::string& fn) {
+    GraphReader<Graph> tmp(graph, fn);
+    return tmp;
+  }
+
+  /// \brief Return a \ref GraphReader class
+  ///
+  /// This function just returns a \ref GraphReader class.
+  /// \relates GraphReader
+  template <typename Graph>
+  GraphReader<Graph> graphReader(Graph& graph, const char* fn) {
+    GraphReader<Graph> tmp(graph, fn);
+    return tmp;
+  }
 
   class SectionReader;
Index: lemon/lgf_writer.h
===================================================================
--- lemon/lgf_writer.h	(revision 307)
+++ lemon/lgf_writer.h	(revision 295)
@@ -352,36 +352,15 @@
   class DigraphWriter;
 
-  /// \brief Return a \ref DigraphWriter class
-  ///
-  /// This function just returns a \ref DigraphWriter class.
-  /// \relates DigraphWriter
   template <typename Digraph>
   DigraphWriter<Digraph> digraphWriter(const Digraph& digraph,
-                                       std::ostream& os = std::cout) {
-    DigraphWriter<Digraph> tmp(digraph, os);
-    return tmp;
-  }
-
-  /// \brief Return a \ref DigraphWriter class
-  ///
-  /// This function just returns a \ref DigraphWriter class.
-  /// \relates DigraphWriter
+                                       std::ostream& os = std::cout);
+
   template <typename Digraph>
   DigraphWriter<Digraph> digraphWriter(const Digraph& digraph,
-                                       const std::string& fn) {
-    DigraphWriter<Digraph> tmp(digraph, fn);
-    return tmp;
-  }
-
-  /// \brief Return a \ref DigraphWriter class
-  ///
-  /// This function just returns a \ref DigraphWriter class.
-  /// \relates DigraphWriter
+                                       const std::string& fn);
+
   template <typename Digraph>
   DigraphWriter<Digraph> digraphWriter(const Digraph& digraph,
-                                       const char* fn) {
-    DigraphWriter<Digraph> tmp(digraph, fn);
-    return tmp;
-  }
+                                       const char *fn);
 
   /// \ingroup lemon_io
@@ -935,37 +914,49 @@
   };
 
+  /// \brief Return a \ref DigraphWriter class
+  ///
+  /// This function just returns a \ref DigraphWriter class.
+  /// \relates DigraphWriter
+  template <typename Digraph>
+  DigraphWriter<Digraph> digraphWriter(const Digraph& digraph,
+                                       std::ostream& os = std::cout) {
+    DigraphWriter<Digraph> tmp(digraph, os);
+    return tmp;
+  }
+
+  /// \brief Return a \ref DigraphWriter class
+  ///
+  /// This function just returns a \ref DigraphWriter class.
+  /// \relates DigraphWriter
+  template <typename Digraph>
+  DigraphWriter<Digraph> digraphWriter(const Digraph& digraph,
+                                       const std::string& fn) {
+    DigraphWriter<Digraph> tmp(digraph, fn);
+    return tmp;
+  }
+
+  /// \brief Return a \ref DigraphWriter class
+  ///
+  /// This function just returns a \ref DigraphWriter class.
+  /// \relates DigraphWriter
+  template <typename Digraph>
+  DigraphWriter<Digraph> digraphWriter(const Digraph& digraph,
+                                       const char* fn) {
+    DigraphWriter<Digraph> tmp(digraph, fn);
+    return tmp;
+  }
+
   template <typename Graph>
   class GraphWriter;
 
-  /// \brief Return a \ref GraphWriter class
-  ///
-  /// This function just returns a \ref GraphWriter class.
-  /// \relates GraphWriter
   template <typename Graph>
   GraphWriter<Graph> graphWriter(const Graph& graph,
-                                 std::ostream& os = std::cout) {
-    GraphWriter<Graph> tmp(graph, os);
-    return tmp;
-  }
-
-  /// \brief Return a \ref GraphWriter class
-  ///
-  /// This function just returns a \ref GraphWriter class.
-  /// \relates GraphWriter
+                                 std::ostream& os = std::cout);
+
   template <typename Graph>
-  GraphWriter<Graph> graphWriter(const Graph& graph, const std::string& fn) {
-    GraphWriter<Graph> tmp(graph, fn);
-    return tmp;
-  }
-
-  /// \brief Return a \ref GraphWriter class
-  ///
-  /// This function just returns a \ref GraphWriter class.
-  /// \relates GraphWriter
+  GraphWriter<Graph> graphWriter(const Graph& graph, const std::string& fn);
+
   template <typename Graph>
-  GraphWriter<Graph> graphWriter(const Graph& graph, const char* fn) {
-    GraphWriter<Graph> tmp(graph, fn);
-    return tmp;
-  }
+  GraphWriter<Graph> graphWriter(const Graph& graph, const char *fn);
 
   /// \ingroup lemon_io
@@ -1535,4 +1526,35 @@
     /// @}
   };
+
+  /// \brief Return a \ref GraphWriter class
+  ///
+  /// This function just returns a \ref GraphWriter class.
+  /// \relates GraphWriter
+  template <typename Graph>
+  GraphWriter<Graph> graphWriter(const Graph& graph,
+                                 std::ostream& os = std::cout) {
+    GraphWriter<Graph> tmp(graph, os);
+    return tmp;
+  }
+
+  /// \brief Return a \ref GraphWriter class
+  ///
+  /// This function just returns a \ref GraphWriter class.
+  /// \relates GraphWriter
+  template <typename Graph>
+  GraphWriter<Graph> graphWriter(const Graph& graph, const std::string& fn) {
+    GraphWriter<Graph> tmp(graph, fn);
+    return tmp;
+  }
+
+  /// \brief Return a \ref GraphWriter class
+  ///
+  /// This function just returns a \ref GraphWriter class.
+  /// \relates GraphWriter
+  template <typename Graph>
+  GraphWriter<Graph> graphWriter(const Graph& graph, const char* fn) {
+    GraphWriter<Graph> tmp(graph, fn);
+    return tmp;
+  }
 
   class SectionWriter;
Index: lemon/list_graph.h
===================================================================
--- lemon/list_graph.h	(revision 317)
+++ lemon/list_graph.h	(revision 280)
@@ -414,5 +414,5 @@
     ///
     ///\note The <tt>InArcIt</tt>s referencing the changed arc remain
-    ///valid. However the <tt>ArcIt</tt>s and <tt>OutArcIt</tt>s are
+    ///valid. However the <tt>ArcIt<tt>s and <tt>OutArcIt</tt>s are
     ///invalidated.
     ///
Index: lemon/maps.h
===================================================================
--- lemon/maps.h	(revision 320)
+++ lemon/maps.h	(revision 280)
@@ -44,5 +44,5 @@
   class MapBase {
   public:
-    /// \brief The key type of the map.
+    /// \biref The key type of the map.
     typedef K Key;
     /// \brief The value type of the map.
@@ -74,7 +74,7 @@
   };
 
-  /// Returns a \c NullMap class
-
-  /// This function just returns a \c NullMap class.
+  /// Returns a \ref NullMap class
+
+  /// This function just returns a \ref NullMap class.
   /// \relates NullMap
   template <typename K, typename V>
@@ -89,5 +89,5 @@
   /// value to each key.
   ///
-  /// In other aspects it is equivalent to \c NullMap.
+  /// In other aspects it is equivalent to \ref NullMap.
   /// So it conforms the \ref concepts::ReadWriteMap "ReadWriteMap"
   /// concept, but it absorbs the data written to it.
@@ -134,7 +134,7 @@
   };
 
-  /// Returns a \c ConstMap class
-
-  /// This function just returns a \c ConstMap class.
+  /// Returns a \ref ConstMap class
+
+  /// This function just returns a \ref ConstMap class.
   /// \relates ConstMap
   template<typename K, typename V>
@@ -157,5 +157,5 @@
   /// value to each key.
   ///
-  /// In other aspects it is equivalent to \c NullMap.
+  /// In other aspects it is equivalent to \ref NullMap.
   /// So it conforms the \ref concepts::ReadWriteMap "ReadWriteMap"
   /// concept, but it absorbs the data written to it.
@@ -183,7 +183,7 @@
   };
 
-  /// Returns a \c ConstMap class with inlined constant value
-
-  /// This function just returns a \c ConstMap class with inlined
+  /// Returns a \ref ConstMap class with inlined constant value
+
+  /// This function just returns a \ref ConstMap class with inlined
   /// constant value.
   /// \relates ConstMap
@@ -213,7 +213,7 @@
   };
 
-  /// Returns an \c IdentityMap class
-
-  /// This function just returns an \c IdentityMap class.
+  /// Returns an \ref IdentityMap class
+
+  /// This function just returns an \ref IdentityMap class.
   /// \relates IdentityMap
   template<typename T>
@@ -229,5 +229,5 @@
   /// values to integer keys from the range <tt>[0..size-1]</tt>.
   /// It can be used with some data structures, for example
-  /// \c UnionFind, \c BinHeap, when the used items are small
+  /// \ref UnionFind, \ref BinHeap, when the used items are small
   /// integers. This map conforms the \ref concepts::ReferenceMap
   /// "ReferenceMap" concept.
@@ -269,5 +269,5 @@
       : _vector(vector.begin(), vector.end()) {}
 
-    /// Constructs the map from another \c RangeMap.
+    /// Constructs the map from another \ref RangeMap.
     template <typename V1>
     RangeMap(const RangeMap<V1> &c)
@@ -312,7 +312,7 @@
   };
 
-  /// Returns a \c RangeMap class
-
-  /// This function just returns a \c RangeMap class.
+  /// Returns a \ref RangeMap class
+
+  /// This function just returns a \ref RangeMap class.
   /// \relates RangeMap
   template<typename V>
@@ -321,8 +321,8 @@
   }
 
-  /// \brief Returns a \c RangeMap class created from an appropriate
+  /// \brief Returns a \ref RangeMap class created from an appropriate
   /// \c std::vector
 
-  /// This function just returns a \c RangeMap class created from an
+  /// This function just returns a \ref RangeMap class created from an
   /// appropriate \c std::vector.
   /// \relates RangeMap
@@ -389,5 +389,5 @@
       : _map(map.begin(), map.end()), _value(value) {}
 
-    /// \brief Constructs the map from another \c SparseMap.
+    /// \brief Constructs the map from another \ref SparseMap.
     template<typename V1, typename Comp1>
     SparseMap(const SparseMap<Key, V1, Comp1> &c)
@@ -434,7 +434,7 @@
   };
 
-  /// Returns a \c SparseMap class
-
-  /// This function just returns a \c SparseMap class with specified
+  /// Returns a \ref SparseMap class
+
+  /// This function just returns a \ref SparseMap class with specified
   /// default value.
   /// \relates SparseMap
@@ -449,8 +449,8 @@
   }
 
-  /// \brief Returns a \c SparseMap class created from an appropriate
+  /// \brief Returns a \ref SparseMap class created from an appropriate
   /// \c std::map
 
-  /// This function just returns a \c SparseMap class created from an
+  /// This function just returns a \ref SparseMap class created from an
   /// appropriate \c std::map.
   /// \relates SparseMap
@@ -502,7 +502,7 @@
   };
 
-  /// Returns a \c ComposeMap class
-
-  /// This function just returns a \c ComposeMap class.
+  /// Returns a \ref ComposeMap class
+
+  /// This function just returns a \ref ComposeMap class.
   ///
   /// If \c m1 and \c m2 are maps and the \c Value type of \c m2 is
@@ -557,7 +557,7 @@
   };
 
-  /// Returns a \c CombineMap class
-
-  /// This function just returns a \c CombineMap class.
+  /// Returns a \ref CombineMap class
+
+  /// This function just returns a \ref CombineMap class.
   ///
   /// For example, if \c m1 and \c m2 are both maps with \c double
@@ -626,7 +626,7 @@
   };
 
-  /// Returns a \c FunctorToMap class
-
-  /// This function just returns a \c FunctorToMap class.
+  /// Returns a \ref FunctorToMap class
+
+  /// This function just returns a \ref FunctorToMap class.
   ///
   /// This function is specialized for adaptable binary function
@@ -685,7 +685,7 @@
   };
 
-  /// Returns a \c MapToFunctor class
-
-  /// This function just returns a \c MapToFunctor class.
+  /// Returns a \ref MapToFunctor class
+
+  /// This function just returns a \ref MapToFunctor class.
   /// \relates MapToFunctor
   template<typename M>
@@ -724,7 +724,7 @@
   };
 
-  /// Returns a \c ConvertMap class
-
-  /// This function just returns a \c ConvertMap class.
+  /// Returns a \ref ConvertMap class
+
+  /// This function just returns a \ref ConvertMap class.
   /// \relates ConvertMap
   template<typename V, typename M>
@@ -764,7 +764,7 @@
   };
 
-  /// Returns a \c ForkMap class
-
-  /// This function just returns a \c ForkMap class.
+  /// Returns a \ref ForkMap class
+
+  /// This function just returns a \ref ForkMap class.
   /// \relates ForkMap
   template <typename M1, typename M2>
@@ -808,7 +808,7 @@
   };
 
-  /// Returns an \c AddMap class
-
-  /// This function just returns an \c AddMap class.
+  /// Returns an \ref AddMap class
+
+  /// This function just returns an \ref AddMap class.
   ///
   /// For example, if \c m1 and \c m2 are both maps with \c double
@@ -856,7 +856,7 @@
   };
 
-  /// Returns a \c SubMap class
-
-  /// This function just returns a \c SubMap class.
+  /// Returns a \ref SubMap class
+
+  /// This function just returns a \ref SubMap class.
   ///
   /// For example, if \c m1 and \c m2 are both maps with \c double
@@ -905,7 +905,7 @@
   };
 
-  /// Returns a \c MulMap class
-
-  /// This function just returns a \c MulMap class.
+  /// Returns a \ref MulMap class
+
+  /// This function just returns a \ref MulMap class.
   ///
   /// For example, if \c m1 and \c m2 are both maps with \c double
@@ -953,7 +953,7 @@
   };
 
-  /// Returns a \c DivMap class
-
-  /// This function just returns a \c DivMap class.
+  /// Returns a \ref DivMap class
+
+  /// This function just returns a \ref DivMap class.
   ///
   /// For example, if \c m1 and \c m2 are both maps with \c double
@@ -1039,7 +1039,7 @@
   };
 
-  /// Returns a \c ShiftMap class
-
-  /// This function just returns a \c ShiftMap class.
+  /// Returns a \ref ShiftMap class
+
+  /// This function just returns a \ref ShiftMap class.
   ///
   /// For example, if \c m is a map with \c double values and \c v is
@@ -1053,7 +1053,7 @@
   }
 
-  /// Returns a \c ShiftWriteMap class
-
-  /// This function just returns a \c ShiftWriteMap class.
+  /// Returns a \ref ShiftWriteMap class
+
+  /// This function just returns a \ref ShiftWriteMap class.
   ///
   /// For example, if \c m is a map with \c double values and \c v is
@@ -1141,7 +1141,7 @@
   };
 
-  /// Returns a \c ScaleMap class
-
-  /// This function just returns a \c ScaleMap class.
+  /// Returns a \ref ScaleMap class
+
+  /// This function just returns a \ref ScaleMap class.
   ///
   /// For example, if \c m is a map with \c double values and \c v is
@@ -1155,7 +1155,7 @@
   }
 
-  /// Returns a \c ScaleWriteMap class
-
-  /// This function just returns a \c ScaleWriteMap class.
+  /// Returns a \ref ScaleWriteMap class
+
+  /// This function just returns a \ref ScaleWriteMap class.
   ///
   /// For example, if \c m is a map with \c double values and \c v is
@@ -1241,7 +1241,7 @@
   };
 
-  /// Returns a \c NegMap class
-
-  /// This function just returns a \c NegMap class.
+  /// Returns a \ref NegMap class
+
+  /// This function just returns a \ref NegMap class.
   ///
   /// For example, if \c m is a map with \c double values, then
@@ -1254,7 +1254,7 @@
   }
 
-  /// Returns a \c NegWriteMap class
-
-  /// This function just returns a \c NegWriteMap class.
+  /// Returns a \ref NegWriteMap class
+
+  /// This function just returns a \ref NegWriteMap class.
   ///
   /// For example, if \c m is a map with \c double values, then
@@ -1297,7 +1297,7 @@
   };
 
-  /// Returns an \c AbsMap class
-
-  /// This function just returns an \c AbsMap class.
+  /// Returns an \ref AbsMap class
+
+  /// This function just returns an \ref AbsMap class.
   ///
   /// For example, if \c m is a map with \c double values, then
@@ -1346,7 +1346,7 @@
   };
 
-  /// Returns a \c TrueMap class
-
-  /// This function just returns a \c TrueMap class.
+  /// Returns a \ref TrueMap class
+
+  /// This function just returns a \ref TrueMap class.
   /// \relates TrueMap
   template<typename K>
@@ -1383,7 +1383,7 @@
   };
 
-  /// Returns a \c FalseMap class
-
-  /// This function just returns a \c FalseMap class.
+  /// Returns a \ref FalseMap class
+
+  /// This function just returns a \ref FalseMap class.
   /// \relates FalseMap
   template<typename K>
@@ -1430,7 +1430,7 @@
   };
 
-  /// Returns an \c AndMap class
-
-  /// This function just returns an \c AndMap class.
+  /// Returns an \ref AndMap class
+
+  /// This function just returns an \ref AndMap class.
   ///
   /// For example, if \c m1 and \c m2 are both maps with \c bool values,
@@ -1478,7 +1478,7 @@
   };
 
-  /// Returns an \c OrMap class
-
-  /// This function just returns an \c OrMap class.
+  /// Returns an \ref OrMap class
+
+  /// This function just returns an \ref OrMap class.
   ///
   /// For example, if \c m1 and \c m2 are both maps with \c bool values,
@@ -1545,7 +1545,7 @@
   };
 
-  /// Returns a \c NotMap class
-
-  /// This function just returns a \c NotMap class.
+  /// Returns a \ref NotMap class
+
+  /// This function just returns a \ref NotMap class.
   ///
   /// For example, if \c m is a map with \c bool values, then
@@ -1558,7 +1558,7 @@
   }
 
-  /// Returns a \c NotWriteMap class
-
-  /// This function just returns a \c NotWriteMap class.
+  /// Returns a \ref NotWriteMap class
+
+  /// This function just returns a \ref NotWriteMap class.
   ///
   /// For example, if \c m is a map with \c bool values, then
@@ -1606,7 +1606,7 @@
   };
 
-  /// Returns an \c EqualMap class
-
-  /// This function just returns an \c EqualMap class.
+  /// Returns an \ref EqualMap class
+
+  /// This function just returns an \ref EqualMap class.
   ///
   /// For example, if \c m1 and \c m2 are maps with keys and values of
@@ -1654,7 +1654,7 @@
   };
 
-  /// Returns an \c LessMap class
-
-  /// This function just returns an \c LessMap class.
+  /// Returns an \ref LessMap class
+
+  /// This function just returns an \ref LessMap class.
   ///
   /// For example, if \c m1 and \c m2 are maps with keys and values of
@@ -1683,9 +1683,4 @@
 
   }
-
-  /// @}
-
-  /// \addtogroup maps
-  /// @{
 
   /// \brief Writable bool map for logging each \c true assigned element
@@ -1751,7 +1746,7 @@
   };
 
-  /// Returns a \c LoggerBoolMap class
-
-  /// This function just returns a \c LoggerBoolMap class.
+  /// Returns a \ref LoggerBoolMap class
+
+  /// This function just returns a \ref LoggerBoolMap class.
   ///
   /// The most important usage of it is storing certain nodes or arcs
@@ -1773,5 +1768,5 @@
   /// \note LoggerBoolMap is just \ref concepts::WriteMap "writable", so
   /// it cannot be used when a readable map is needed, for example as
-  /// \c ReachedMap for \c Bfs, \c Dfs and \c Dijkstra algorithms.
+  /// \c ReachedMap for \ref Bfs, \ref Dfs and \ref Dijkstra algorithms.
   ///
   /// \relates LoggerBoolMap
@@ -1780,9 +1775,4 @@
     return LoggerBoolMap<Iterator>(it);
   }
-
-  /// @}
-
-  /// \addtogroup graph_maps
-  /// @{
 
   /// Provides an immutable and unique id for each item in the graph.
@@ -1858,4 +1848,409 @@
   };
 
+
+  /// \brief General invertable graph-map type.
+
+  /// This type provides simple invertable graph-maps.
+  /// The InvertableMap wraps an arbitrary ReadWriteMap
+  /// and if a key is set to a new value then store it
+  /// in the inverse map.
+  ///
+  /// The values of the map can be accessed
+  /// with stl compatible forward iterator.
+  ///
+  /// \tparam _Graph The graph type.
+  /// \tparam _Item The item type of the graph.
+  /// \tparam _Value The value type of the map.
+  ///
+  /// \see IterableValueMap
+  template <typename _Graph, typename _Item, typename _Value>
+  class InvertableMap
+    : protected ItemSetTraits<_Graph, _Item>::template Map<_Value>::Type {
+  private:
+
+    typedef typename ItemSetTraits<_Graph, _Item>::
+    template Map<_Value>::Type Map;
+    typedef _Graph Graph;
+
+    typedef std::map<_Value, _Item> Container;
+    Container _inv_map;
+
+  public:
+
+    /// The key type of InvertableMap (Node, Arc, Edge).
+    typedef typename Map::Key Key;
+    /// The value type of the InvertableMap.
+    typedef typename Map::Value Value;
+
+
+
+    /// \brief Constructor.
+    ///
+    /// Construct a new InvertableMap for the graph.
+    ///
+    explicit InvertableMap(const Graph& graph) : Map(graph) {}
+
+    /// \brief Forward iterator for values.
+    ///
+    /// This iterator is an stl compatible forward
+    /// iterator on the values of the map. The values can
+    /// be accessed in the [beginValue, endValue) range.
+    ///
+    class ValueIterator
+      : public std::iterator<std::forward_iterator_tag, Value> {
+      friend class InvertableMap;
+    private:
+      ValueIterator(typename Container::const_iterator _it)
+        : it(_it) {}
+    public:
+
+      ValueIterator() {}
+
+      ValueIterator& operator++() { ++it; return *this; }
+      ValueIterator operator++(int) {
+        ValueIterator tmp(*this);
+        operator++();
+        return tmp;
+      }
+
+      const Value& operator*() const { return it->first; }
+      const Value* operator->() const { return &(it->first); }
+
+      bool operator==(ValueIterator jt) const { return it == jt.it; }
+      bool operator!=(ValueIterator jt) const { return it != jt.it; }
+
+    private:
+      typename Container::const_iterator it;
+    };
+
+    /// \brief Returns an iterator to the first value.
+    ///
+    /// Returns an stl compatible iterator to the
+    /// first value of the map. The values of the
+    /// map can be accessed in the [beginValue, endValue)
+    /// range.
+    ValueIterator beginValue() const {
+      return ValueIterator(_inv_map.begin());
+    }
+
+    /// \brief Returns an iterator after the last value.
+    ///
+    /// Returns an stl compatible iterator after the
+    /// last value of the map. The values of the
+    /// map can be accessed in the [beginValue, endValue)
+    /// range.
+    ValueIterator endValue() const {
+      return ValueIterator(_inv_map.end());
+    }
+
+    /// \brief The setter function of the map.
+    ///
+    /// Sets the mapped value.
+    void set(const Key& key, const Value& val) {
+      Value oldval = Map::operator[](key);
+      typename Container::iterator it = _inv_map.find(oldval);
+      if (it != _inv_map.end() && it->second == key) {
+        _inv_map.erase(it);
+      }
+      _inv_map.insert(make_pair(val, key));
+      Map::set(key, val);
+    }
+
+    /// \brief The getter function of the map.
+    ///
+    /// It gives back the value associated with the key.
+    typename MapTraits<Map>::ConstReturnValue
+    operator[](const Key& key) const {
+      return Map::operator[](key);
+    }
+
+    /// \brief Gives back the item by its value.
+    ///
+    /// Gives back the item by its value.
+    Key operator()(const Value& key) const {
+      typename Container::const_iterator it = _inv_map.find(key);
+      return it != _inv_map.end() ? it->second : INVALID;
+    }
+
+  protected:
+
+    /// \brief Erase the key from the map.
+    ///
+    /// Erase the key to the map. It is called by the
+    /// \c AlterationNotifier.
+    virtual void erase(const Key& key) {
+      Value val = Map::operator[](key);
+      typename Container::iterator it = _inv_map.find(val);
+      if (it != _inv_map.end() && it->second == key) {
+        _inv_map.erase(it);
+      }
+      Map::erase(key);
+    }
+
+    /// \brief Erase more keys from the map.
+    ///
+    /// Erase more keys from the map. It is called by the
+    /// \c AlterationNotifier.
+    virtual void erase(const std::vector<Key>& keys) {
+      for (int i = 0; i < int(keys.size()); ++i) {
+        Value val = Map::operator[](keys[i]);
+        typename Container::iterator it = _inv_map.find(val);
+        if (it != _inv_map.end() && it->second == keys[i]) {
+          _inv_map.erase(it);
+        }
+      }
+      Map::erase(keys);
+    }
+
+    /// \brief Clear the keys from the map and inverse map.
+    ///
+    /// Clear the keys from the map and inverse map. It is called by the
+    /// \c AlterationNotifier.
+    virtual void clear() {
+      _inv_map.clear();
+      Map::clear();
+    }
+
+  public:
+
+    /// \brief The inverse map type.
+    ///
+    /// The inverse of this map. The subscript operator of the map
+    /// gives back always the item what was last assigned to the value.
+    class InverseMap {
+    public:
+      /// \brief Constructor of the InverseMap.
+      ///
+      /// Constructor of the InverseMap.
+      explicit InverseMap(const InvertableMap& inverted)
+        : _inverted(inverted) {}
+
+      /// The value type of the InverseMap.
+      typedef typename InvertableMap::Key Value;
+      /// The key type of the InverseMap.
+      typedef typename InvertableMap::Value Key;
+
+      /// \brief Subscript operator.
+      ///
+      /// Subscript operator. It gives back always the item
+      /// what was last assigned to the value.
+      Value operator[](const Key& key) const {
+        return _inverted(key);
+      }
+
+    private:
+      const InvertableMap& _inverted;
+    };
+
+    /// \brief It gives back the just readable inverse map.
+    ///
+    /// It gives back the just readable inverse map.
+    InverseMap inverse() const {
+      return InverseMap(*this);
+    }
+
+
+
+  };
+
+  /// \brief Provides a mutable, continuous and unique descriptor for each
+  /// item in the graph.
+  ///
+  /// The DescriptorMap class provides a unique and continuous (but mutable)
+  /// descriptor (id) for each item of the same type (e.g. node) in the
+  /// graph. This id is <ul><li>\b unique: different items (nodes) get
+  /// different ids <li>\b continuous: the range of the ids is the set of
+  /// integers between 0 and \c n-1, where \c n is the number of the items of
+  /// this type (e.g. nodes) (so the id of a node can change if you delete an
+  /// other node, i.e. this id is mutable).  </ul> This map can be inverted
+  /// with its member class \c InverseMap, or with the \c operator() member.
+  ///
+  /// \tparam _Graph The graph class the \c DescriptorMap belongs to.
+  /// \tparam _Item The Item is the Key of the Map. It may be Node, Arc or
+  /// Edge.
+  template <typename _Graph, typename _Item>
+  class DescriptorMap
+    : protected ItemSetTraits<_Graph, _Item>::template Map<int>::Type {
+
+    typedef _Item Item;
+    typedef typename ItemSetTraits<_Graph, _Item>::template Map<int>::Type Map;
+
+  public:
+    /// The graph class of DescriptorMap.
+    typedef _Graph Graph;
+
+    /// The key type of DescriptorMap (Node, Arc, Edge).
+    typedef typename Map::Key Key;
+    /// The value type of DescriptorMap.
+    typedef typename Map::Value Value;
+
+    /// \brief Constructor.
+    ///
+    /// Constructor for descriptor map.
+    explicit DescriptorMap(const Graph& _graph) : Map(_graph) {
+      Item it;
+      const typename Map::Notifier* nf = Map::notifier();
+      for (nf->first(it); it != INVALID; nf->next(it)) {
+        Map::set(it, _inv_map.size());
+        _inv_map.push_back(it);
+      }
+    }
+
+  protected:
+
+    /// \brief Add a new key to the map.
+    ///
+    /// Add a new key to the map. It is called by the
+    /// \c AlterationNotifier.
+    virtual void add(const Item& item) {
+      Map::add(item);
+      Map::set(item, _inv_map.size());
+      _inv_map.push_back(item);
+    }
+
+    /// \brief Add more new keys to the map.
+    ///
+    /// Add more new keys to the map. It is called by the
+    /// \c AlterationNotifier.
+    virtual void add(const std::vector<Item>& items) {
+      Map::add(items);
+      for (int i = 0; i < int(items.size()); ++i) {
+        Map::set(items[i], _inv_map.size());
+        _inv_map.push_back(items[i]);
+      }
+    }
+
+    /// \brief Erase the key from the map.
+    ///
+    /// Erase the key from the map. It is called by the
+    /// \c AlterationNotifier.
+    virtual void erase(const Item& item) {
+      Map::set(_inv_map.back(), Map::operator[](item));
+      _inv_map[Map::operator[](item)] = _inv_map.back();
+      _inv_map.pop_back();
+      Map::erase(item);
+    }
+
+    /// \brief Erase more keys from the map.
+    ///
+    /// Erase more keys from the map. It is called by the
+    /// \c AlterationNotifier.
+    virtual void erase(const std::vector<Item>& items) {
+      for (int i = 0; i < int(items.size()); ++i) {
+        Map::set(_inv_map.back(), Map::operator[](items[i]));
+        _inv_map[Map::operator[](items[i])] = _inv_map.back();
+        _inv_map.pop_back();
+      }
+      Map::erase(items);
+    }
+
+    /// \brief Build the unique map.
+    ///
+    /// Build the unique map. It is called by the
+    /// \c AlterationNotifier.
+    virtual void build() {
+      Map::build();
+      Item it;
+      const typename Map::Notifier* nf = Map::notifier();
+      for (nf->first(it); it != INVALID; nf->next(it)) {
+        Map::set(it, _inv_map.size());
+        _inv_map.push_back(it);
+      }
+    }
+
+    /// \brief Clear the keys from the map.
+    ///
+    /// Clear the keys from the map. It is called by the
+    /// \c AlterationNotifier.
+    virtual void clear() {
+      _inv_map.clear();
+      Map::clear();
+    }
+
+  public:
+
+    /// \brief Returns the maximal value plus one.
+    ///
+    /// Returns the maximal value plus one in the map.
+    unsigned int size() const {
+      return _inv_map.size();
+    }
+
+    /// \brief Swaps the position of the two items in the map.
+    ///
+    /// Swaps the position of the two items in the map.
+    void swap(const Item& p, const Item& q) {
+      int pi = Map::operator[](p);
+      int qi = Map::operator[](q);
+      Map::set(p, qi);
+      _inv_map[qi] = p;
+      Map::set(q, pi);
+      _inv_map[pi] = q;
+    }
+
+    /// \brief Gives back the \e descriptor of the item.
+    ///
+    /// Gives back the mutable and unique \e descriptor of the map.
+    int operator[](const Item& item) const {
+      return Map::operator[](item);
+    }
+
+    /// \brief Gives back the item by its descriptor.
+    ///
+    /// Gives back th item by its descriptor.
+    Item operator()(int id) const {
+      return _inv_map[id];
+    }
+
+  private:
+
+    typedef std::vector<Item> Container;
+    Container _inv_map;
+
+  public:
+    /// \brief The inverse map type of DescriptorMap.
+    ///
+    /// The inverse map type of DescriptorMap.
+    class InverseMap {
+    public:
+      /// \brief Constructor of the InverseMap.
+      ///
+      /// Constructor of the InverseMap.
+      explicit InverseMap(const DescriptorMap& inverted)
+        : _inverted(inverted) {}
+
+
+      /// The value type of the InverseMap.
+      typedef typename DescriptorMap::Key Value;
+      /// The key type of the InverseMap.
+      typedef typename DescriptorMap::Value Key;
+
+      /// \brief Subscript operator.
+      ///
+      /// Subscript operator. It gives back the item
+      /// that the descriptor belongs to currently.
+      Value operator[](const Key& key) const {
+        return _inverted(key);
+      }
+
+      /// \brief Size of the map.
+      ///
+      /// Returns the size of the map.
+      unsigned int size() const {
+        return _inverted.size();
+      }
+
+    private:
+      const DescriptorMap& _inverted;
+    };
+
+    /// \brief Gives back the inverse of the map.
+    ///
+    /// Gives back the inverse of the map.
+    const InverseMap inverse() const {
+      return InverseMap(*this);
+    }
+  };
+
   /// \brief Returns the source of the given arc.
   ///
@@ -1872,5 +2267,5 @@
     ///
     /// Constructor
-    /// \param digraph The digraph that the map belongs to.
+    /// \param _digraph The digraph that the map belongs to.
     explicit SourceMap(const Digraph& digraph) : _digraph(digraph) {}
 
@@ -1888,7 +2283,7 @@
   };
 
-  /// \brief Returns a \c SourceMap class.
-  ///
-  /// This function just returns an \c SourceMap class.
+  /// \brief Returns a \ref SourceMap class.
+  ///
+  /// This function just returns an \ref SourceMap class.
   /// \relates SourceMap
   template <typename Digraph>
@@ -1911,5 +2306,5 @@
     ///
     /// Constructor
-    /// \param digraph The digraph that the map belongs to.
+    /// \param _digraph The digraph that the map belongs to.
     explicit TargetMap(const Digraph& digraph) : _digraph(digraph) {}
 
@@ -1927,7 +2322,7 @@
   };
 
-  /// \brief Returns a \c TargetMap class.
-  ///
-  /// This function just returns a \c TargetMap class.
+  /// \brief Returns a \ref TargetMap class.
+  ///
+  /// This function just returns a \ref TargetMap class.
   /// \relates TargetMap
   template <typename Digraph>
@@ -1950,5 +2345,5 @@
     ///
     /// Constructor
-    /// \param graph The graph that the map belongs to.
+    /// \param _graph The graph that the map belongs to.
     explicit ForwardMap(const Graph& graph) : _graph(graph) {}
 
@@ -1966,7 +2361,7 @@
   };
 
-  /// \brief Returns a \c ForwardMap class.
-  ///
-  /// This function just returns an \c ForwardMap class.
+  /// \brief Returns a \ref ForwardMap class.
+  ///
+  /// This function just returns an \ref ForwardMap class.
   /// \relates ForwardMap
   template <typename Graph>
@@ -1989,5 +2384,5 @@
     ///
     /// Constructor
-    /// \param graph The graph that the map belongs to.
+    /// \param _graph The graph that the map belongs to.
     explicit BackwardMap(const Graph& graph) : _graph(graph) {}
 
@@ -2005,7 +2400,7 @@
   };
 
-  /// \brief Returns a \c BackwardMap class
-
-  /// This function just returns a \c BackwardMap class.
+  /// \brief Returns a \ref BackwardMap class
+
+  /// This function just returns a \ref BackwardMap class.
   /// \relates BackwardMap
   template <typename Graph>
Index: lemon/path.h
===================================================================
--- lemon/path.h	(revision 317)
+++ lemon/path.h	(revision 236)
@@ -850,5 +850,5 @@
     int empty() const { return len == 0; }
 
-    /// \brief Erase all arcs in the digraph.
+    /// \break Erase all arcs in the digraph.
     void clear() {
       len = 0;
Index: lemon/smart_graph.h
===================================================================
--- lemon/smart_graph.h	(revision 317)
+++ lemon/smart_graph.h	(revision 280)
@@ -366,5 +366,5 @@
 
       ///This constructor immediately makes a snapshot of the digraph.
-      ///\param graph The digraph we make a snapshot of.
+      ///\param _g The digraph we make a snapshot of.
       Snapshot(SmartDigraph &graph) : _graph(&graph) {
         node_num=_graph->nodes.size();
@@ -378,5 +378,5 @@
       ///This function can be called more than once. In case of a repeated
       ///call, the previous snapshot gets lost.
-      ///\param graph The digraph we make the snapshot of.
+      ///\param _g The digraph we make the snapshot of.
       void save(SmartDigraph &graph)
       {
@@ -776,5 +776,5 @@
 
       ///This constructor immediately makes a snapshot of the digraph.
-      ///\param graph The digraph we make a snapshot of.
+      ///\param g The digraph we make a snapshot of.
       Snapshot(SmartGraph &graph) {
         graph.saveSnapshot(*this);
@@ -787,5 +787,5 @@
       ///This function can be called more than once. In case of a repeated
       ///call, the previous snapshot gets lost.
-      ///\param graph The digraph we make the snapshot of.
+      ///\param g The digraph we make the snapshot of.
       void save(SmartGraph &graph)
       {
Index: lemon/time_measure.h
===================================================================
--- lemon/time_measure.h	(revision 318)
+++ lemon/time_measure.h	(revision 280)
@@ -312,9 +312,10 @@
     ///Basically a Timer can be either running or stopped,
     ///but it provides a bit finer control on the execution.
-    ///The \ref lemon::Timer "Timer" also counts the number of
-    ///\ref lemon::Timer::start() "start()" executions, and it stops
-    ///only after the same amount (or more) \ref lemon::Timer::stop()
-    ///"stop()"s. This can be useful e.g. to compute the running time
+    ///The \ref Timer also counts the number of \ref start()
+    ///executions, and is stops only after the same amount (or more)
+    ///\ref stop() "stop()"s. This can be useful e.g. to compute
+    ///the running time
     ///of recursive functions.
+    ///
 
     ///@{
@@ -472,5 +473,5 @@
   };
 
-  ///Same as Timer but prints a report on destruction.
+  ///Same as \ref Timer but prints a report on destruction.
 
   ///Same as \ref Timer but prints a report on destruction.
@@ -491,13 +492,13 @@
     std::ostream &_os;
   public:
-    ///Constructor
-
-    ///Constructor.
+    ///\e
+
     ///\param title This text will be printed before the ellapsed time.
     ///\param os The stream to print the report to.
     ///\param run Sets whether the timer should start immediately.
+
     TimeReport(std::string title,std::ostream &os=std::cerr,bool run=true)
       : Timer(run), _title(title), _os(os){}
-    ///Destructor that prints the ellapsed time
+    ///\e Prints the ellapsed time on destruction.
     ~TimeReport()
     {
@@ -506,5 +507,5 @@
   };
 
-  ///'Do nothing' version of TimeReport
+  ///'Do nothing' version of \ref TimeReport
 
   ///\sa TimeReport
Index: test/graph_utils_test.cc
===================================================================
--- test/graph_utils_test.cc	(revision 301)
+++ test/graph_utils_test.cc	(revision 220)
@@ -36,10 +36,9 @@
   {
     Digraph digraph;
-    typename Digraph::template NodeMap<int> nodes(digraph);
-    std::vector<Node> invNodes;
     for (int i = 0; i < 10; ++i) {
-      invNodes.push_back(digraph.addNode());
-      nodes[invNodes.back()]=invNodes.size()-1;
-    }
+      digraph.addNode();
+    }
+    DescriptorMap<Digraph, Node> nodes(digraph);
+    typename DescriptorMap<Digraph, Node>::InverseMap invNodes(nodes);
     for (int i = 0; i < 100; ++i) {
       int src = rnd[invNodes.size()];
@@ -48,4 +47,5 @@
     }
     typename Digraph::template ArcMap<bool> found(digraph, false);
+    DescriptorMap<Digraph, Arc> arcs(digraph);
     for (NodeIt src(digraph); src != INVALID; ++src) {
       for (NodeIt trg(digraph); trg != INVALID; ++trg) {
@@ -111,10 +111,9 @@
   TEMPLATE_GRAPH_TYPEDEFS(Graph);
   Graph graph;
-  typename Graph::template NodeMap<int> nodes(graph);
-  std::vector<Node> invNodes;
   for (int i = 0; i < 10; ++i) {
-    invNodes.push_back(graph.addNode());
-    nodes[invNodes.back()]=invNodes.size()-1;
-  }
+    graph.addNode();
+  }
+  DescriptorMap<Graph, Node> nodes(graph);
+  typename DescriptorMap<Graph, Node>::InverseMap invNodes(nodes);
   for (int i = 0; i < 100; ++i) {
     int src = rnd[invNodes.size()];
@@ -123,4 +122,5 @@
   }
   typename Graph::template EdgeMap<int> found(graph, 0);
+  DescriptorMap<Graph, Edge> edges(graph);
   for (NodeIt src(graph); src != INVALID; ++src) {
     for (NodeIt trg(graph); trg != INVALID; ++trg) {
Index: tools/Makefile.am
===================================================================
--- tools/Makefile.am	(revision 314)
+++ tools/Makefile.am	(revision 146)
@@ -2,5 +2,4 @@
 
 bin_PROGRAMS +=
-dist_bin_SCRIPTS += tools/lemon-0.x-to-1.x.sh
 
 endif WANT_TOOLS
Index: ols/lemon-0.x-to-1.x.sh
===================================================================
--- tools/lemon-0.x-to-1.x.sh	(revision 314)
+++ 	(revision )
@@ -1,127 +1,0 @@
-#!/bin/bash
-
-set -e
-
-if [ $# -eq 0 -o x$1 = "x-h" -o x$1 = "x-help" -o x$1 = "x--help" ]; then
-	echo "Usage:"
-	echo "  $0 source-file"
-	exit
-fi
-
-TMP=`mktemp`
-
-sed	-e "s/undirected graph/_gr_aph_label_/g"\
-	-e "s/undirected edge/_ed_ge_label_/g"\
-	-e "s/graph_/_gr_aph_label__/g"\
-	-e "s/_graph/__gr_aph_label_/g"\
-	-e "s/UGraph/_Gr_aph_label_/g"\
-	-e "s/uGraph/_gr_aph_label_/g"\
-	-e "s/ugraph/_gr_aph_label_/g"\
-	-e "s/Graph/_Digr_aph_label_/g"\
-	-e "s/graph/_digr_aph_label_/g"\
-	-e "s/UEdge/_Ed_ge_label_/g"\
-	-e "s/uEdge/_ed_ge_label_/g"\
-	-e "s/uedge/_ed_ge_label_/g"\
-	-e "s/IncEdgeIt/_In_cEd_geIt_label_/g"\
-	-e "s/Edge/_Ar_c_label_/g"\
-	-e "s/edge/_ar_c_label_/g"\
-	-e "s/ANode/_Re_d_label_/g"\
-	-e "s/BNode/_Blu_e_label_/g"\
-	-e "s/A-Node/_Re_d_label_/g"\
-	-e "s/B-Node/_Blu_e_label_/g"\
-	-e "s/anode/_re_d_label_/g"\
-	-e "s/bnode/_blu_e_label_/g"\
-	-e "s/aNode/_re_d_label_/g"\
-	-e "s/bNode/_blu_e_label_/g"\
-	-e "s/_Digr_aph_label_/Digraph/g"\
-	-e "s/_digr_aph_label_/digraph/g"\
-	-e "s/_Gr_aph_label_/Graph/g"\
-	-e "s/_gr_aph_label_/graph/g"\
-	-e "s/_Ar_c_label_/Arc/g"\
-	-e "s/_ar_c_label_/arc/g"\
-	-e "s/_Ed_ge_label_/Edge/g"\
-	-e "s/_ed_ge_label_/edge/g"\
-	-e "s/_In_cEd_geIt_label_/IncEdgeIt/g"\
-	-e "s/_Re_d_label_/Red/g"\
-	-e "s/_Blu_e_label_/Blue/g"\
-	-e "s/_re_d_label_/red/g"\
-	-e "s/_blu_e_label_/blue/g"\
-	-e "s/\(\W\)DefPredMap\(\W\)/\1SetPredMap\2/g"\
-	-e "s/\(\W\)DefPredMap$/\1SetPredMap/g"\
-	-e "s/^DefPredMap\(\W\)/SetPredMap\1/g"\
-	-e "s/^DefPredMap$/SetPredMap/g"\
-	-e "s/\(\W\)DefDistMap\(\W\)/\1SetDistMap\2/g"\
-	-e "s/\(\W\)DefDistMap$/\1SetDistMap/g"\
-	-e "s/^DefDistMap\(\W\)/SetDistMap\1/g"\
-	-e "s/^DefDistMap$/SetDistMap/g"\
-	-e "s/\(\W\)DefReachedMap\(\W\)/\1SetReachedMap\2/g"\
-	-e "s/\(\W\)DefReachedMap$/\1SetReachedMap/g"\
-	-e "s/^DefReachedMap\(\W\)/SetReachedMap\1/g"\
-	-e "s/^DefReachedMap$/SetReachedMap/g"\
-	-e "s/\(\W\)DefProcessedMap\(\W\)/\1SetProcessedMap\2/g"\
-	-e "s/\(\W\)DefProcessedMap$/\1SetProcessedMap/g"\
-	-e "s/^DefProcessedMap\(\W\)/SetProcessedMap\1/g"\
-	-e "s/^DefProcessedMap$/SetProcessedMap/g"\
-	-e "s/\(\W\)DefHeap\(\W\)/\1SetHeap\2/g"\
-	-e "s/\(\W\)DefHeap$/\1SetHeap/g"\
-	-e "s/^DefHeap\(\W\)/SetHeap\1/g"\
-	-e "s/^DefHeap$/SetHeap/g"\
-	-e "s/\(\W\)DefStandardHeap\(\W\)/\1SetStandradHeap\2/g"\
-	-e "s/\(\W\)DefStandardHeap$/\1SetStandradHeap/g"\
-	-e "s/^DefStandardHeap\(\W\)/SetStandradHeap\1/g"\
-	-e "s/^DefStandardHeap$/SetStandradHeap/g"\
-	-e "s/\(\W\)DefOperationTraits\(\W\)/\1SetOperationTraits\2/g"\
-	-e "s/\(\W\)DefOperationTraits$/\1SetOperationTraits/g"\
-	-e "s/^DefOperationTraits\(\W\)/SetOperationTraits\1/g"\
-	-e "s/^DefOperationTraits$/SetOperationTraits/g"\
-	-e "s/\(\W\)DefProcessedMapToBeDefaultMap\(\W\)/\1SetStandardProcessedMap\2/g"\
-	-e "s/\(\W\)DefProcessedMapToBeDefaultMap$/\1SetStandardProcessedMap/g"\
-	-e "s/^DefProcessedMapToBeDefaultMap\(\W\)/SetStandardProcessedMap\1/g"\
-	-e "s/^DefProcessedMapToBeDefaultMap$/SetStandardProcessedMap/g"\
-	-e "s/\(\W\)IntegerMap\(\W\)/\1RangeMap\2/g"\
-	-e "s/\(\W\)IntegerMap$/\1RangeMap/g"\
-	-e "s/^IntegerMap\(\W\)/RangeMap\1/g"\
-	-e "s/^IntegerMap$/RangeMap/g"\
-	-e "s/\(\W\)integerMap\(\W\)/\1rangeMap\2/g"\
-	-e "s/\(\W\)integerMap$/\1rangeMap/g"\
-	-e "s/^integerMap\(\W\)/rangeMap\1/g"\
-	-e "s/^integerMap$/rangeMap/g"\
-	-e "s/\(\W\)copyGraph\(\W\)/\1graphCopy\2/g"\
-	-e "s/\(\W\)copyGraph$/\1graphCopy/g"\
-	-e "s/^copyGraph\(\W\)/graphCopy\1/g"\
-	-e "s/^copyGraph$/graphCopy/g"\
-	-e "s/\(\W\)copyDigraph\(\W\)/\1digraphCopy\2/g"\
-	-e "s/\(\W\)copyDigraph$/\1digraphCopy/g"\
-	-e "s/^copyDigraph\(\W\)/digraphCopy\1/g"\
-	-e "s/^copyDigraph$/digraphCopy/g"\
-	-e "s/\(\W\)\([sS]\)tdMap\(\W\)/\1\2parseMap\3/g"\
-	-e "s/\(\W\)\([sS]\)tdMap$/\1\2parseMap/g"\
-	-e "s/^\([sS]\)tdMap\(\W\)/\1parseMap\2/g"\
-	-e "s/^\([sS]\)tdMap$/\1parseMap/g"\
-	-e "s/\(\W\)\([Ff]\)unctorMap\(\W\)/\1\2unctorToMap\3/g"\
-	-e "s/\(\W\)\([Ff]\)unctorMap$/\1\2unctorToMap/g"\
-	-e "s/^\([Ff]\)unctorMap\(\W\)/\1unctorToMap\2/g"\
-	-e "s/^\([Ff]\)unctorMap$/\1unctorToMap/g"\
-	-e "s/\(\W\)\([Mm]\)apFunctor\(\W\)/\1\2apToFunctor\3/g"\
-	-e "s/\(\W\)\([Mm]\)apFunctor$/\1\2apToFunctor/g"\
-	-e "s/^\([Mm]\)apFunctor\(\W\)/\1apToFunctor\2/g"\
-	-e "s/^\([Mm]\)apFunctor$/\1apToFunctor/g"\
-	-e "s/\(\W\)\([Ff]\)orkWriteMap\(\W\)/\1\2orkMap\3/g"\
-	-e "s/\(\W\)\([Ff]\)orkWriteMap$/\1\2orkMap/g"\
-	-e "s/^\([Ff]\)orkWriteMap\(\W\)/\1orkMap\2/g"\
-	-e "s/^\([Ff]\)orkWriteMap$/\1orkMap/g"\
-	-e "s/\(\W\)StoreBoolMap\(\W\)/\1LoggerBoolMap\2/g"\
-	-e "s/\(\W\)StoreBoolMap$/\1LoggerBoolMap/g"\
-	-e "s/^StoreBoolMap\(\W\)/LoggerBoolMap\1/g"\
-	-e "s/^StoreBoolMap$/LoggerBoolMap/g"\
-	-e "s/\(\W\)storeBoolMap\(\W\)/\1loggerBoolMap\2/g"\
-	-e "s/\(\W\)storeBoolMap$/\1loggerBoolMap/g"\
-	-e "s/^storeBoolMap\(\W\)/loggerBoolMap\1/g"\
-	-e "s/^storeBoolMap$/loggerBoolMap/g"\
-	-e "s/\(\W\)BoundingBox\(\W\)/\1Box\2/g"\
-	-e "s/\(\W\)BoundingBox$/\1Box/g"\
-	-e "s/^BoundingBox\(\W\)/Box\1/g"\
-	-e "s/^BoundingBox$/Box/g"\
-<$1 > $TMP
-
-mv $TMP $1
