diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8bfd99b700da45ff4bb9226b21bb9381863b31a3..7da4fbca6d59a3d29706f6a5bd2635d90a5b0960 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,23 +21,14 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 
 SET(CXX_DISABLE_WERROR TRUE)
 INCLUDE(cmake/base.cmake)
+INCLUDE(cmake/hpp.cmake)
 INCLUDE(cmake/boost.cmake)
 
 SET(PROJECT_NAME hpp-manipulation)
 SET(PROJECT_URL "")
 SET(PROJECT_DESCRIPTION "Classes for manipulation planning.")
 
-SETUP_PROJECT()
-
-# Activate hpp-util logging if requested
-SET (HPP_DEBUG FALSE CACHE BOOL "trigger hpp-util debug output")
-IF (HPP_DEBUG)
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHPP_DEBUG")
-ENDIF()
-SET (HPP_BENCHMARK FALSE CACHE BOOL "trigger hpp-util benchmarking output")
-IF (HPP_BENCHMARK)
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHPP_ENABLE_BENCHMARK")
-ENDIF()
+SETUP_HPP_PROJECT()
 
 # Activate test using UR5 if requested
 SET (TEST_UR5 FALSE CACHE BOOL "Activate tests using ur5")
@@ -118,4 +109,4 @@ ADD_SUBDIRECTORY(tests)
 PKG_CONFIG_APPEND_LIBS("hpp-manipulation")
 PKG_CONFIG_APPEND_BOOST_LIBS(${BOOST_INSTALL_COMPONENTS})
 
-SETUP_PROJECT_FINALIZE()
+SETUP_HPP_PROJECT_FINALIZE()
diff --git a/cmake b/cmake
index 2aaf5d18bafc9172f7afb3092a7057a1d3c9e16b..320c636960b03b3bad7c7a08bd2e104951f42bc3 160000
--- a/cmake
+++ b/cmake
@@ -1 +1 @@
-Subproject commit 2aaf5d18bafc9172f7afb3092a7057a1d3c9e16b
+Subproject commit 320c636960b03b3bad7c7a08bd2e104951f42bc3
diff --git a/doc/Doxyfile.extra.in b/doc/Doxyfile.extra.in
index f36a30b8d16c3f7bfd34667bc6b07ef39cbac903..2d1578be3c59d3f9509f581df72d77001ef03c81 100644
--- a/doc/Doxyfile.extra.in
+++ b/doc/Doxyfile.extra.in
@@ -9,5 +9,3 @@ ALIASES   += Link{1}="\ref \1"
 ALIASES   += Link{2}="\ref \1 \"\2\""
 ALIASES   += LHPP{2}="\Link{hpp::\1::\2,\2}"
 ALIASES   += LPinocchio{1}="\LHPP{pinocchio,\1}"
-
-GENERATE_TREEVIEW	 = @DOXYGEN_TREEVIEW@
diff --git a/doc/main.hh.in b/doc/main.hh.in
index 0eff57c0b992622bee113f339a023a6a0221de15..690a62c7aff4e271b5d5150892fa51b35a0b8189 100644
--- a/doc/main.hh.in
+++ b/doc/main.hh.in
@@ -2,9 +2,9 @@ namespace hpp {
   namespace manipulation {
     namespace graph {
 /**
- \mainpage
+ \mainpage hpp-manipulation documentation
 
- \section sec_intro_hpp_manipulation Introduction
+ \par Introduction
 
  This package implements a solver for manipulation planning problems. A
  manipulation planning problem is defined by:
@@ -16,22 +16,21 @@ namespace hpp {
  ManipulationPlanner implements a RRT-based algorithm to solve manipulation
  planning problems.
 
- \section sec_graph_hpp_manipulation Constraint graph
+ \par Constraint graph
  The graph of constraint, also referred to as constraint graph, represents the
  rules of a manipulation problem.  The component of the graph are:
- \li Node represents a state of the Robot with constraints,
- \li Edge represents a transition between two Node with parametric constraints.
+ \li State represents a state of the Robot with constraints,
+ \li Edge represents a transition between two State with parametric constraints.
 
- Node contains a set of \LHPP{core,Constraint} that a configuration of the
+ State contains a set of \LHPP{core,Constraint} that a configuration of the
  Robot should satisfy to be in the represented state. To ensure that a
- configuration is in only one state, the Node are ordered in a NodeSelector.
- The method NodeSelector::getNode(ConfigurationIn_t) const returns a pointer to
- the first Node for which Node::contains(ConfigurationIn_t) const returns true.
+ configuration is in only one state, the State are ordered in a StateSelector.
+ The method StateSelector::getState(ConfigurationIn_t) const returns a pointer to
+ the first State for which State::contains(ConfigurationIn_t) const returns true.
  For optimization only, another set of \LHPP{core,Constraint} is used for
- \LHPP{core,StraightPath} lying in this Node.
+ \LHPP{core,StraightPath} lying in this State.
 
- Edge has methods Edge::isInNodeFrom, to tell if a corresponding path lyes in
- Edge::from() or Edge::to(), and Edge::node(), to retrive this Node.
+ Edge has methods Edge::state() to tell in which State a corresponding path lyes
  Edge also contains two sets of \LHPP{core,Constraint}:
  \li Edge::configConstraint() returns a \LHPP{core,ConstraintSet} used to
      generate a configuration lying in Edge::to() and respecting the
@@ -44,7 +43,7 @@ namespace hpp {
    For more information about parametric and non-parametric constraints, see
    \LHPP{core,DifferentiableFunction} and \LHPP{core,ConfigProjector}
 
- \section sec_solver_hpp_manipulation Manipulation planner
+ \par Manipulation planner
 
  ManipulationPlanner class implements an algorithm based on RRT. See
  <a href="ObjectManipulation_MasterThesis_JosephMirabel.pdf">this master