diff --git a/src/graph/validation.cc b/src/graph/validation.cc
index 2c36740d6ac4d91366a73c0053c54dd732ae6d2a..3cad101963db3a2583a8ec6a1b3c5ed72953b588 100644
--- a/src/graph/validation.cc
+++ b/src/graph/validation.cc
@@ -147,16 +147,8 @@ namespace hpp {
         bool success = true;
 
         States_t states = graph->stateSelector()->getStates();
-        for (States_t::const_iterator _state = states.begin();
-            _state != states.end(); ++_state) {
-          if (!validateState(*_state)) success = false;
-        }
-
-        states = graph->stateSelector()->getWaypointStates();
-        for (States_t::const_iterator _state = states.begin();
-            _state != states.end(); ++_state) {
-          if (!validateState(*_state)) success = false;
-        }
+        for (std::size_t i = 1; i < graph->nbComponents(); ++i)
+          if (!validate(graph->get(i).lock())) success = false;
 
         return success;
       }