diff --git a/CMakeLists.txt b/CMakeLists.txt
index 63aaac3dab6514c7d654e6f541ebcae5571b357a..a7beb9e6d70ec3b3a6cdd3c060f624769455cff2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -37,15 +37,9 @@ LIST(APPEND PKG_CONFIG_ADDITIONAL_VARIABLES cmake_plugin)
 # Ask Doxygen to create a tree view in html documentation
 SET(DOXYGEN_TREEVIEW "NO" CACHE STRING "Set to YES to generate a tree view in the html documentation")
 
-SET(HPP_MANIPULATION_HAS_WHOLEBODY_STEP TRUE
-  CACHE BOOL "Compile with dependency to hpp-wholebody-step")
-
 ADD_PROJECT_DEPENDENCY(Boost REQUIRED COMPONENTS regex)
 
 ADD_PROJECT_DEPENDENCY("hpp-core" REQUIRED)
-IF(HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
-  ADD_PROJECT_DEPENDENCY("hpp-wholebody-step" REQUIRED)
-ENDIF()
 IF(BUILD_TESTING)
   FIND_PACKAGE(Boost REQUIRED COMPONENTS unit_test_framework)
   ADD_PROJECT_DEPENDENCY("example-robot-data" REQUIRED)
@@ -82,7 +76,6 @@ SET(${PROJECT_NAME}_HEADERS
   include/hpp/manipulation/graph/helper.hh
   include/hpp/manipulation/graph/validation.hh
 
-  include/hpp/manipulation/path-optimization/small-steps.hh
   include/hpp/manipulation/path-optimization/enforce-transition-semantic.hh
   include/hpp/manipulation/path-optimization/random-shortcut.hh
   include/hpp/manipulation/path-optimization/spline-gradient-based.hh
@@ -140,19 +133,9 @@ SET(${PROJECT_NAME}_SOURCES
   src/steering-method/graph.cc
   )
 
-IF(HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
-  SET(${PROJECT_NAME}_SOURCES
-    ${${PROJECT_NAME}_SOURCES}
-    src/path-optimization/small-steps.cc
-    )
-ENDIF(HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
-
 ADD_LIBRARY(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS})
 TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
 TARGET_LINK_LIBRARIES(${PROJECT_NAME} hpp-core::hpp-core Boost::regex)
-IF(HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
-  TARGET_LINK_LIBRARIES(${PROJECT_NAME} hpp-wholebody-step::hpp-wholebody-step)
-ENDIF(HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
 
 INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
 
diff --git a/NEWS b/NEWS
index b145194cf23bdcbf70c65a1f082158c6dc45b5a2..2c7e97af0f3001b48a3f404f09c6563be6edc782 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,5 @@
                                                                 -*- outline -*-
+* Dependency to hpp-wholebody-step has been removed.
 New in 4.10.0
 * In graph::steeringMethod, if q1 == q2, the steering method calls the problem
   inner steering method. This avoids a failure if no loop transition has been
diff --git a/include/hpp/manipulation/path-optimization/small-steps.hh b/include/hpp/manipulation/path-optimization/small-steps.hh
deleted file mode 100644
index b1341557e7efc5ca3987c27dedb2abd8f4dd0df6..0000000000000000000000000000000000000000
--- a/include/hpp/manipulation/path-optimization/small-steps.hh
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (c) 2016, Joseph Mirabel
-// Authors: Joseph Mirabel (joseph.mirabel@laas.fr)
-//
-// This file is part of hpp-manipulation.
-// hpp-manipulation is free software: you can redistribute it
-// and/or modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation, either version
-// 3 of the License, or (at your option) any later version.
-//
-// hpp-manipulation is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// General Lesser Public License for more details.  You should have
-// received a copy of the GNU Lesser General Public License along with
-// hpp-manipulation. If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef HPP_MANIPULATION_PATHOPTIMIZATION_SMALLSTEPS_HH
-#define HPP_MANIPULATION_PATHOPTIMIZATION_SMALLSTEPS_HH
-
-#include <hpp/manipulation/fwd.hh>
-#include <hpp/manipulation/config.hh>
-
-#include <hpp/core/path-optimizer.hh>
-
-namespace hpp {
-  namespace manipulation {
-    namespace pathOptimization {
-      using hpp::core::Path;
-      using hpp::core::PathPtr_t;
-      using hpp::core::PathVector;
-      using hpp::core::PathVectorPtr_t;
-
-      /// \addtogroup path_optimization
-      /// \{
-
-      /// Walking trajectory generator for paths created with the constraint graph
-      ///
-      /// This class encapsulates hpp::wholebodyStep::SmallSteps.
-      class HPP_MANIPULATION_DLLAPI SmallSteps : public PathOptimizer
-      {
-        public:
-          static SmallStepsPtr_t create (const core::ProblemConstPtr_t& problem)
-          {
-            SmallSteps* ptr (new SmallSteps (problem));
-            return SmallStepsPtr_t (ptr);
-          }
-
-          PathVectorPtr_t optimize (const PathVectorPtr_t& path);
-
-        protected:
-          /// Constructor
-          SmallSteps (const core::ProblemConstPtr_t& problem) :
-            PathOptimizer (problem)
-        {}
-      };
-      /// \}
-
-    } // namespace pathOptimization
-  } // namespace manipulation
-} // namespace hpp
-
-#endif // HPP_MANIPULATION_PATHOPTIMIZATION_SMALLSTEPS_HH
diff --git a/src/path-optimization/small-steps.cc b/src/path-optimization/small-steps.cc
deleted file mode 100644
index 9689c66773e2f9556b6473828cd84bbef67ad010..0000000000000000000000000000000000000000
--- a/src/path-optimization/small-steps.cc
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2016, Joseph Mirabel
-// Authors: Joseph Mirabel (joseph.mirabel@laas.fr)
-//
-// This file is part of hpp-manipulation.
-// hpp-manipulation is free software: you can redistribute it
-// and/or modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation, either version
-// 3 of the License, or (at your option) any later version.
-//
-// hpp-manipulation is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// General Lesser Public License for more details.  You should have
-// received a copy of the GNU Lesser General Public License along with
-// hpp-manipulation. If not, see <http://www.gnu.org/licenses/>.
-
-#include <hpp/manipulation/path-optimization/small-steps.hh>
-
-#include <hpp/core/problem.hh>
-#include <hpp/core/path-vector.hh>
-
-#include <hpp/wholebody-step/small-steps.hh>
-
-#include <hpp/manipulation/graph/edge.hh>
-#include <hpp/manipulation/constraint-set.hh>
-#include <hpp/manipulation/graph-path-validation.hh>
-
-namespace hpp {
-  namespace manipulation {
-    namespace pathOptimization {
-      PathVectorPtr_t SmallSteps::optimize (const PathVectorPtr_t& path)
-      {
-        PathVectorPtr_t
-          opted = PathVector::create (path->outputSize(),
-                                      path->outputDerivativeSize()),
-          flat =  PathVector::create (path->outputSize(),
-                                      path->outputDerivativeSize()),
-          toConcat;
-        path->flatten (flat);
-
-        GraphPathValidationPtr_t gpv(HPP_DYNAMIC_PTR_CAST(GraphPathValidation,
-					    this->problem()->pathValidation()));
-        const_cast<core::Problem&>(*this->problem()).pathValidation
-	  (gpv->innerValidation());
-
-        wholebodyStep::SmallStepsPtr_t stepPtr
-          (wholebodyStep::SmallSteps::create(problem()));
-        wholebodyStep::SmallSteps& step (*stepPtr);
-        step.leftHand_.active = true;
-
-        ConstraintSetPtr_t c;
-        for (std::size_t i_s = 0; i_s < flat->numberPaths ();) {
-          PathVectorPtr_t toOpt = PathVector::create (
-              path->outputSize(), path->outputDerivativeSize()); 
-          PathPtr_t current = flat->pathAtRank (i_s);
-          toOpt->appendPath (current);
-          graph::EdgePtr_t edge;
-          c = HPP_DYNAMIC_PTR_CAST (ConstraintSet, current->constraints ());
-          if (c) edge = c->edge ();
-          std::size_t i_e = i_s + 1;
-          for (; i_e < flat->numberPaths (); ++i_e) {
-            current = flat->pathAtRank (i_e);
-            c = HPP_DYNAMIC_PTR_CAST (ConstraintSet, current->constraints ());
-            if (!c && edge) break;
-            if (c && edge->state() != c->edge ()->state()) break;
-            toOpt->appendPath (current);
-          }
-          toConcat = step.optimize (toOpt);
-          i_s = i_e;
-          opted->concatenate (toConcat);
-        }
-
-        const_cast<core::Problem&>(*this->problem ()).pathValidation (gpv);
-        return opted;
-      }
-    } // namespace pathOptimization
-  } // namespace manipulation
-} // namespace hpp
diff --git a/src/problem-solver.cc b/src/problem-solver.cc
index b7bc3f03d4ff41d49d40071eb5b740b0c9da9f3f..c7ee81619dd0e79e037c8a8e7b187ca3175044e2 100644
--- a/src/problem-solver.cc
+++ b/src/problem-solver.cc
@@ -62,11 +62,6 @@
 #include "hpp/manipulation/steering-method/graph.hh"
 #include "hpp/manipulation/steering-method/end-effector-trajectory.hh"
 
-#if HPP_MANIPULATION_HAS_WHOLEBODY_STEP
-#include <hpp/wholebody-step/small-steps.hh>
-#include "hpp/manipulation/path-optimization/small-steps.hh"
-#endif
-
 namespace hpp {
   namespace manipulation {
     typedef constraints::Implicit Implicit;
@@ -177,11 +172,6 @@ namespace hpp {
           createSMWithGuess <steeringMethod::CrossStateOptimization, core::steeringMethod::Snibud>);
       steeringMethods.add ("EndEffectorTrajectory", steeringMethod::EndEffectorTrajectory::create);
 
-#if HPP_MANIPULATION_HAS_WHOLEBODY_STEP
-      pathOptimizers.add ("Walkgen", wholebodyStep::SmallSteps::create);
-      pathOptimizers.add ("Graph-Walkgen", pathOptimization::SmallSteps::create);
-#endif
-
       pathPlannerType ("M-RRT");
       steeringMethodType ("Graph-SteeringMethodStraight");
     }