diff --git a/CMakeLists.txt b/CMakeLists.txt
index 134d7a5767981f34fabc72833a450dea4fae5211..dc4b724f519fe0ab86b6862de0be077852292fd9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -57,9 +57,6 @@ SET (${PROJECT_NAME}_HEADERS
   include/hpp/manipulation/robot.hh
   include/hpp/manipulation/roadmap.hh
   include/hpp/manipulation/manipulation-planner.hh
-  include/hpp/manipulation/path-projector.hh
-  include/hpp/manipulation/path-projector/dichotomy.hh
-  include/hpp/manipulation/path-projector/progressive.hh
   include/hpp/manipulation/graph-path-validation.hh
   include/hpp/manipulation/graph-steering-method.hh
   include/hpp/manipulation/graph/node.hh
diff --git a/include/hpp/manipulation/fwd.hh b/include/hpp/manipulation/fwd.hh
index 846babf04c1fc3f6f1ec242688721c1c369cee6d..35e728983024919ee18535fa18278557c55bbdbd 100644
--- a/include/hpp/manipulation/fwd.hh
+++ b/include/hpp/manipulation/fwd.hh
@@ -76,11 +76,7 @@ namespace hpp {
     typedef boost::shared_ptr < GraphPathValidation > GraphPathValidationPtr_t;
     HPP_PREDEF_CLASS (GraphSteeringMethod);
     typedef boost::shared_ptr < GraphSteeringMethod > GraphSteeringMethodPtr_t;
-    HPP_PREDEF_CLASS (PathProjector);
-    typedef PathProjector* PathProjectorPtr_t;
-    namespace pathProjector {
-      HPP_PREDEF_CLASS (Dichotomy);
-    }
+    typedef core::PathProjectorPtr_t PathProjectorPtr_t;
 
     typedef std::vector <DevicePtr_t> Devices_t;
     typedef std::vector <ObjectPtr_t> Objects_t;
diff --git a/include/hpp/manipulation/manipulation-planner.hh b/include/hpp/manipulation/manipulation-planner.hh
index ca3dafa8b1184a34ecfe4f9f7e4533d0e979ae3e..fcd3a054e3c1b6e03067cf6fcd6457efa4393d6d 100644
--- a/include/hpp/manipulation/manipulation-planner.hh
+++ b/include/hpp/manipulation/manipulation-planner.hh
@@ -122,8 +122,6 @@ namespace hpp {
 
         void addFailure (TypeOfFailure t, const graph::EdgePtr_t& edge);
 
-        PathProjectorPtr_t pathProjector_;
-
         mutable Configuration_t qProj_;
     };
     /// \}
diff --git a/include/hpp/manipulation/path-projector.hh b/include/hpp/manipulation/path-projector.hh
deleted file mode 100644
index f1ba4fc26511f1311bdc4b213eddbb09edc6e580..0000000000000000000000000000000000000000
--- a/include/hpp/manipulation/path-projector.hh
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2014, LAAS-CNRS
-// 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_PATHPROJECTOR_HH
-# define HPP_MANIPULATION_PATHPROJECTOR_HH
-
-# include "hpp/manipulation/config.hh"
-# include "hpp/manipulation/fwd.hh"
-
-# include <hpp/core/path.hh>
-# include <hpp/core/straight-path.hh>
-
-namespace hpp {
-  namespace manipulation {
-    /// This class projects a path using constraints.
-    class HPP_MANIPULATION_DLLAPI PathProjector
-    {
-      public:
-        typedef hpp::core::Path Path;
-        typedef hpp::core::PathPtr_t PathPtr_t;
-        typedef hpp::core::StraightPath StraightPath;
-        typedef hpp::core::StraightPathPtr_t StraightPathPtr_t;
-        typedef hpp::core::PathVector PathVector;
-        typedef hpp::core::PathVectorPtr_t PathVectorPtr_t;
-
-        /// Destructor
-        virtual ~PathProjector ();
-
-        /// Apply the constraints to the path.
-        /// \param[in] the input path,
-        /// \param[out] the output path.
-        /// \return True if projection succeded
-        bool apply (const PathPtr_t path, PathPtr_t& projection) const;
-
-      protected:
-        /// Constructor
-        PathProjector (const core::DistancePtr_t distance);
-
-        /// Method to be reimplemented by inherited class.
-        virtual bool impl_apply (const StraightPathPtr_t path, PathPtr_t& projection) const = 0;
-
-        value_type d (ConfigurationIn_t q1, ConfigurationIn_t q2) const;
-
-      private:
-        core::DistancePtr_t distance_;
-    };
-  } // namespace manipulation
-} // namespace hpp
-
-#endif // HPP_MANIPULATION_PATHPROJECTOR_HH
diff --git a/include/hpp/manipulation/path-projector/dichotomy.hh b/include/hpp/manipulation/path-projector/dichotomy.hh
deleted file mode 100644
index 6e9871b3e188feaa9d635193064ecbbd2689feef..0000000000000000000000000000000000000000
--- a/include/hpp/manipulation/path-projector/dichotomy.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2014, LAAS-CNRS
-// 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_PATHPROJECTOR_DICHOTOMY_HH
-# define HPP_MANIPULATION_PATHPROJECTOR_DICHOTOMY_HH
-
-# include "hpp/manipulation/path-projector.hh"
-namespace hpp {
-  namespace manipulation {
-    namespace pathProjector {
-      class HPP_MANIPULATION_DLLAPI Dichotomy : public PathProjector
-      {
-        public:
-          Dichotomy (const core::DistancePtr_t distance, value_type maxPathLength);
-
-        protected:
-          bool impl_apply (const StraightPathPtr_t path, PathPtr_t& projection) const;
-
-        private:
-          value_type maxPathLength_;
-      };
-    } // namespace pathProjector
-  } // namespace manipulation
-} // namespace hpp
-#endif // HPP_MANIPULATION_PATHPROJECTOR_DICHOTOMY_HH
diff --git a/include/hpp/manipulation/path-projector/progressive.hh b/include/hpp/manipulation/path-projector/progressive.hh
deleted file mode 100644
index 2598443df7a18fcbea5708ccc38e89b558d993a5..0000000000000000000000000000000000000000
--- a/include/hpp/manipulation/path-projector/progressive.hh
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, LAAS-CNRS
-// 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_PATHPROJECTOR_PROGRESSIVE_HH
-# define HPP_MANIPULATION_PATHPROJECTOR_PROGRESSIVE_HH
-
-# include "hpp/manipulation/path-projector.hh"
-
-namespace hpp {
-  namespace manipulation {
-    namespace pathProjector {
-      class HPP_MANIPULATION_DLLAPI Progressive : public PathProjector
-      {
-        public:
-          Progressive (const core::DistancePtr_t distance, value_type step);
-
-        protected:
-          bool impl_apply (const StraightPathPtr_t path, PathPtr_t& projection) const;
-
-        private:
-          value_type step_;
-      };
-    } // namespace pathProjector
-  } // namespace manipulation
-} // namespace hpp
-
-#endif // HPP_MANIPULATION_PATHPROJECTOR_PROGRESSIVE_HH
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8e101e59b28190f03bc424c9f465487c8a765bc9..3073519ccdb3e474d0606410f935a304c20b8ec5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -29,10 +29,6 @@ ADD_LIBRARY(${LIBRARY_NAME} SHARED
   graph-path-validation.cc
   graph-steering-method.cc
 
-  path-projector.cc
-  path-projector/dichotomy.cc
-  path-projector/progressive.cc
-
   graph/node.cc
   graph/edge.cc
   graph/graph.cc
diff --git a/src/manipulation-planner.cc b/src/manipulation-planner.cc
index d047805a690fed516ff331d677c917f67d434149..68394bcb034c9c641e7dc0b124c6515f874167a3 100644
--- a/src/manipulation-planner.cc
+++ b/src/manipulation-planner.cc
@@ -20,13 +20,11 @@
 
 #include <hpp/core/path-validation.hh>
 #include <hpp/core/connected-component.hh>
+#include "hpp/core/path-projector.hh"
 
 #include "hpp/manipulation/graph/statistics.hh"
 #include "hpp/manipulation/robot.hh"
 #include "hpp/manipulation/problem.hh"
-#include "hpp/manipulation/path-projector.hh"
-#include "hpp/manipulation/path-projector/dichotomy.hh"
-#include "hpp/manipulation/path-projector/progressive.hh"
 #include "hpp/manipulation/graph/edge.hh"
 
 namespace hpp {
@@ -105,6 +103,7 @@ namespace hpp {
         core::PathPtr_t& validPath)
     {
       graph::GraphPtr_t graph = problem_.constraintGraph ();
+      PathProjectorPtr_t pathProjector = problem_.pathProjector ();
       // Select next node in the constraint graph.
       const ConfigurationPtr_t q_near = n_near->configuration ();
       graph::NodePtr_t node = graph->getNode (*q_near);
@@ -123,15 +122,16 @@ namespace hpp {
         addFailure (STEERING_METHOD, edge);
         return false;
       }
-      //core::PathPtr_t projPath = path;
       core::PathPtr_t projPath;
-      if (!pathProjector_->apply (path, projPath)) {
-        if (!projPath || projPath->length () == 0) {
-          addFailure (PATH_PROJECTION_ZERO, edge);
-          return false;
+      if (pathProjector) {
+        if (!pathProjector->apply (path, projPath)) {
+          if (!projPath || projPath->length () == 0) {
+            addFailure (PATH_PROJECTION_ZERO, edge);
+            return false;
+          }
+          addFailure (PATH_PROJECTION_SHORTER, edge);
         }
-        addFailure (PATH_PROJECTION_SHORTER, edge);
-      }
+      } else projPath = path;
       GraphPathValidationPtr_t pathValidation (problem_.pathValidation ());
       pathValidation->validate (projPath, false, validPath);
       if (validPath->length () == 0)
@@ -168,6 +168,7 @@ namespace hpp {
     {
       const core::SteeringMethodPtr_t& sm (problem ().steeringMethod ());
       core::PathValidationPtr_t pathValidation (problem ().pathValidation ());
+      PathProjectorPtr_t pathProjector (problem().pathProjector ());
       core::PathPtr_t path, projPath, validPath;
       graph::GraphPtr_t graph = problem_.constraintGraph ();
       bool connectSucceed = false;
@@ -186,7 +187,9 @@ namespace hpp {
             assert (*q1 != *q2);
             path = (*sm) (*q1, *q2);
             if (!path) continue;
-            if (!pathProjector_->apply (path, projPath)) continue;
+            if (pathProjector) {
+              if (!pathProjector->apply (path, projPath)) continue;
+            } else projPath = path;
             if (pathValidation->validate (projPath, false, validPath)) {
               roadmap ()->addEdge (*itn1, *itn2, projPath);
               core::interval_t timeRange = projPath->timeRange ();
@@ -206,8 +209,7 @@ namespace hpp {
         const core::RoadmapPtr_t& roadmap) :
       core::PathPlanner (problem, roadmap),
       shooter_ (new core::BasicConfigurationShooter (problem.robot ())),
-      problem_ (problem), pathProjector_ (new pathProjector::Progressive (problem_.distance (), 0.2)),
-      qProj_ (problem.robot ()->configSize ())
+      problem_ (problem), qProj_ (problem.robot ()->configSize ())
     {}
 
     void ManipulationPlanner::init (const ManipulationPlannerWkPtr_t& weak)
diff --git a/src/path-projector.cc b/src/path-projector.cc
deleted file mode 100644
index dcd5a6faec6d4fcc3c424257dacced730238f410..0000000000000000000000000000000000000000
--- a/src/path-projector.cc
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2014, LAAS-CNRS
-// 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-projector.hh"
-
-#include <hpp/util/pointer.hh>
-#include <hpp/core/path-vector.hh>
-#include <hpp/core/distance.hh>
-
-namespace hpp {
-  namespace manipulation {
-    PathProjector::PathProjector (const core::DistancePtr_t distance) :
-      distance_ (distance)
-    {}
-
-    PathProjector::~PathProjector ()
-    {}
-
-    value_type PathProjector::d (ConfigurationIn_t q1, ConfigurationIn_t q2) const
-    {
-      assert (distance_ != NULL);
-      return (*distance_) (q1, q2);
-    }
-
-    bool PathProjector::apply (const PathPtr_t path, PathPtr_t& proj) const
-    {
-      assert (path);
-      bool success = false;
-      PathVectorPtr_t pv = HPP_DYNAMIC_PTR_CAST (PathVector, path);
-      if (!pv) {
-        StraightPathPtr_t sp = HPP_DYNAMIC_PTR_CAST (StraightPath, path);
-        if (!sp) throw std::invalid_argument ("Unknow inherited class of Path");
-        success = impl_apply (sp, proj);
-      } else {
-        PathVectorPtr_t res = PathVector::create (pv->outputSize (), pv->outputDerivativeSize ());
-        PathPtr_t part;
-        success = true;
-        for (size_t i = 0; i < pv->numberPaths (); i++) {
-          if (!apply (pv->pathAtRank (i), part)) {
-            // We add the path only if part is not NULL and:
-            // - either its length is not zero,
-            // - or it's not the first one.
-            if (part && (part->length () > 0 || i == 0)) res->appendPath (part);
-            success = false;
-            break;
-          }
-          res->appendPath (part);
-        }
-        proj = res;
-      }
-      assert (proj);
-      assert (((*proj)(proj->timeRange ().first) - (*path)(path->timeRange ().first)).isZero());
-      assert (!success || ((*proj)(proj->timeRange ().second) - (*path)(path->timeRange ().second)).isZero());
-      return success;
-    }
-  } // namespace manipulation
-} // namespace hpp
diff --git a/src/path-projector/dichotomy.cc b/src/path-projector/dichotomy.cc
deleted file mode 100644
index 4cb27194e49f05fa017656cfc0d80a44a750b3aa..0000000000000000000000000000000000000000
--- a/src/path-projector/dichotomy.cc
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright (c) 2014, LAAS-CNRS
-// 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-projector/dichotomy.hh"
-
-#include <hpp/core/path-vector.hh>
-#include <hpp/core/config-projector.hh>
-
-#include <queue>
-#include <stack>
-
-namespace hpp {
-  namespace manipulation {
-    namespace pathProjector {
-      Dichotomy::Dichotomy (const core::DistancePtr_t d, value_type maxPathLength) :
-        PathProjector (d), maxPathLength_ (maxPathLength)
-      {}
-
-      bool Dichotomy::impl_apply (const StraightPathPtr_t path, PathPtr_t& projection) const
-      {
-        ConstraintSetPtr_t constraints = path->constraints ();
-        const ConfigProjectorPtr_t& cp = constraints->configProjector ();
-        const StraightPath& sp = *path;
-        core::interval_t timeRange = sp.timeRange ();
-        const Configuration_t& q1 = sp(timeRange.first);
-        const Configuration_t& q2 = sp(timeRange.second);
-        if (cp) cp->rightHandSideFromConfig(q1);
-        if (!constraints->isSatisfied (q1) || !constraints->isSatisfied (q2)) {
-          return false;
-        }
-        if (!cp) {
-          projection = path;
-          return true;
-        }
-
-        bool pathIsFullyProjected = true;
-        std::queue <core::StraightPathPtr_t> paths;
-        std::stack <core::StraightPathPtr_t> pathToSplit;
-        Configuration_t qi (q1.size());
-        core::StraightPathPtr_t sPath = core::StraightPath::create (sp.device (), q1, q2, d (q1, q2));
-        pathToSplit.push (sPath);
-        while (!pathToSplit.empty ()) {
-          sPath = pathToSplit.top ();
-          const StraightPath& sPathRef = *sPath;
-          pathToSplit.pop ();
-          double l = sPathRef.length ();
-          if (l < maxPathLength_) {
-            paths.push (sPath);
-            continue;
-          }
-          timeRange = sPathRef.timeRange ();
-          const Configuration_t& qb = sPathRef (timeRange.first);
-          sPathRef (qi, timeRange.first + l / 2);
-          const Configuration_t& qe = sPathRef (timeRange.second);
-          if (!constraints->apply (qi)) {
-            pathIsFullyProjected = false;
-            break;
-          }
-          StraightPathPtr_t firstPart =
-            core::StraightPath::create (sp.device (), qb, qi, d (qb, qi));
-          StraightPathPtr_t secondPart =
-            core::StraightPath::create (sp.device (), qi, qe, d (qi, qe));
-          if (secondPart->length () == 0 || firstPart->length () == 0) {
-            pathIsFullyProjected = false;
-            break;
-          }
-          pathToSplit.push (secondPart);
-          pathToSplit.push (firstPart);
-        }
-        switch (paths.size ()) {
-          case 0:
-            return false;
-            break;
-          case 1:
-            projection = paths.front ();
-            projection->constraints (constraints);
-            break;
-          default:
-            core::PathVectorPtr_t pv = core::PathVector::create (sp.outputSize (), sp.outputDerivativeSize ());
-            while (!paths.empty ()) {
-              paths.front ()->constraints (constraints);
-              pv->appendPath (paths.front ());
-              paths.pop ();
-            }
-            projection = pv;
-            break;
-        }
-        return pathIsFullyProjected;
-      }
-    } // namespace pathProjector
-  } // namespace manipulation
-} // namespace hpp
diff --git a/src/path-projector/progressive.cc b/src/path-projector/progressive.cc
deleted file mode 100644
index d046e3927864702ef0eb7cbeab70ea337f2cc1f5..0000000000000000000000000000000000000000
--- a/src/path-projector/progressive.cc
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright (c) 2014, LAAS-CNRS
-// 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-projector/progressive.hh"
-
-#include <hpp/core/path-vector.hh>
-#include <hpp/core/config-projector.hh>
-
-#include <limits>
-#include <queue>
-#include <stack>
-
-namespace hpp {
-  namespace manipulation {
-    namespace pathProjector {
-      Progressive::Progressive (const core::DistancePtr_t d, value_type step) :
-        PathProjector (d), step_ (step)
-      {}
-
-      bool Progressive::impl_apply (const StraightPathPtr_t path, PathPtr_t& projection) const
-      {
-        ConstraintSetPtr_t constraints = path->constraints ();
-        const ConfigProjectorPtr_t& cp = constraints->configProjector ();
-        const StraightPath& sp = *path;
-        core::interval_t timeRange = sp.timeRange ();
-        const Configuration_t& q1 = sp(timeRange.first);
-        const Configuration_t& q2 = sp(timeRange.second);
-        if (cp) cp->rightHandSideFromConfig(q1);
-        if (!constraints->isSatisfied (q1) || !constraints->isSatisfied (q2)) {
-          return false;
-        }
-        if (!cp) {
-          projection = path;
-          return true;
-        }
-
-        bool pathIsFullyProjected = false;
-        std::queue <core::StraightPathPtr_t> paths;
-        StraightPathPtr_t toSplit =
-            core::StraightPath::create (sp.device (), q1, q2, d (q1, q2));
-        Configuration_t qi (q1.size());
-        value_type curStep, curLength;
-        while (true) {
-          const StraightPath& toSplitRef = *toSplit;
-          if (toSplitRef.length () < step_) {
-            paths.push (toSplit);
-            pathIsFullyProjected = true;
-            break;
-          }
-          timeRange = toSplitRef.timeRange ();
-          const Configuration_t& qb = toSplitRef (timeRange.first);
-          curStep = step_;
-          curLength = std::numeric_limits <value_type>::max();
-          bool stop = false;
-          /// Find the good length.
-          /// Here, it would be good to have an upper bound of the Hessian
-          /// of the constraint.
-          do {
-            if (curStep < 0.02) {
-              stop = true;
-              break;
-            }
-            toSplitRef (qi, curStep);
-            if (constraints->apply (qi)) {
-              curLength = d (qb, qi);
-            }
-            curStep /= 2;
-          } while (curLength > step_);
-          if (stop) break;
-          StraightPathPtr_t part =
-            core::StraightPath::create (sp.device (), qb, qi, curLength);
-          paths.push (part);
-          toSplit =
-            core::StraightPath::create (sp.device (), qi, q2, d (qi, q2));
-        }
-        switch (paths.size ()) {
-          case 0:
-            timeRange = sp.timeRange();
-            projection = sp.extract (std::make_pair (timeRange.first, timeRange.first));
-            return false;
-            break;
-          case 1:
-            projection = paths.front ();
-            projection->constraints (constraints);
-            break;
-          default:
-            core::PathVectorPtr_t pv = core::PathVector::create (sp.outputSize (), sp.outputDerivativeSize ());
-            qi = q1;
-            while (!paths.empty ()) {
-              assert ((qi - (*paths.front ())(paths.front ()->timeRange().first)).isZero ());
-              assert (constraints->isSatisfied (qi));
-              qi = (*paths.front ())(paths.front ()->timeRange().second);
-              assert (constraints->isSatisfied (qi));
-              paths.front ()->constraints (constraints);
-              pv->appendPath (paths.front ());
-              paths.pop ();
-            }
-            projection = pv;
-            break;
-        }
-        assert (((*projection)(projection->timeRange ().first) - (*path)(path->timeRange ().first)).isZero());
-        assert (!pathIsFullyProjected || ((*projection)(projection->timeRange ().second) - (*path)(path->timeRange ().second)).isZero());
-        return pathIsFullyProjected;
-      }
-    } // namespace pathProjector
-  } // namespace manipulation
-} // namespace hpp
diff --git a/tests/path-projection.cc b/tests/path-projection.cc
index 53c88f8c026f57f989389aa15033f267d0d55824..1f0b00486f92012b402d0ef7d8e0869132235912 100644
--- a/tests/path-projection.cc
+++ b/tests/path-projection.cc
@@ -14,7 +14,7 @@
 // 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-projector/progressive.hh>
+#include <hpp/core/path-projector/progressive.hh>
 
 #define ARM_LENGTH 1
 #define FOREARM_LENGTH 1
@@ -67,7 +67,8 @@ using hpp::core::ConfigProjectorPtr_t;
 
 using boost::assign::list_of;
 
-using hpp::manipulation::pathProjector::Progressive;
+using hpp::core::pathProjector::ProgressivePtr_t;
+using hpp::core::pathProjector::Progressive;
 
 static matrix3_t identity () { matrix3_t R; R.setIdentity (); return R;}
 
@@ -173,7 +174,8 @@ int main (int , char**) {
   cs->addConstraint (proj);
   WeighedDistancePtr_t dist = WeighedDistance::create (r, list_of (1)(1));
   const WeighedDistance& d = *dist;
-  Progressive pp (dist, 0.1);
+  ProgressivePtr_t pp_ptr = Progressive::create (dist, 0.1);
+  Progressive pp = *pp_ptr;
 
   Configuration_t qinit (2), qgoal (2);
   qinit[0] =  M_PI / 3; qinit[1] = -M_PI / 3;