diff --git a/include/hpp/manipulation/graph/state-selector.hh b/include/hpp/manipulation/graph/state-selector.hh
index 0bc021d8ba9d3ce3c6b0a3a96d2b55b11c1b5b16..d4b00890ce82b3e419889107a4bfabcf7a3ce3d9 100644
--- a/include/hpp/manipulation/graph/state-selector.hh
+++ b/include/hpp/manipulation/graph/state-selector.hh
@@ -48,6 +48,9 @@ namespace hpp {
           /// Returns a list of all the states
           States_t getStates () const;
 
+          /// Returns a list of all the states
+          States_t getWaypointStates () const;
+
           /// Select randomly an outgoing edge of the given state.
           virtual EdgePtr_t chooseEdge(RoadmapNodePtr_t from) const;
 
diff --git a/src/graph/state-selector.cc b/src/graph/state-selector.cc
index 28d397b1413c834d6be11ad43cd381401a75abf8..657199de108eb64c1ad9ce5f8557c4b7174ead94 100644
--- a/src/graph/state-selector.cc
+++ b/src/graph/state-selector.cc
@@ -72,6 +72,11 @@ namespace hpp {
         return ret;
       }
 
+      States_t StateSelector::getWaypointStates () const
+      {
+        return waypoints_;
+      }
+
       StatePtr_t StateSelector::getState(ConfigurationIn_t config) const
       {
         for (WeighedStates_t::const_iterator it = orderedStates_.begin();