diff --git a/include/hpp/manipulation/fwd.hh b/include/hpp/manipulation/fwd.hh
index 7b17ee907de5401071dd37f1de4d46b1c8d55475..c9d1de0a240bf9c06f134b9966e83f22aaa2ee9c 100644
--- a/include/hpp/manipulation/fwd.hh
+++ b/include/hpp/manipulation/fwd.hh
@@ -111,7 +111,7 @@ namespace hpp {
     typedef std::list < NumericalConstraintPtr_t > NumericalConstraints_t;
     typedef std::pair< GripperPtr_t, HandlePtr_t> Grasp_t;
     typedef boost::shared_ptr <Grasp_t> GraspPtr_t;
-    typedef std::map <DifferentiableFunctionPtr_t, GraspPtr_t> GraspsMap_t;
+    typedef std::map <NumericalConstraintPtr_t, GraspPtr_t> GraspsMap_t;
 
     typedef std::vector<core::vector3_t> Shape_t;
     typedef std::pair <JointPtr_t, Shape_t> JointAndShape_t;
diff --git a/include/hpp/manipulation/problem-solver.hh b/include/hpp/manipulation/problem-solver.hh
index 5d5b89f9c373dfd0a92b6e858d56c69d433cf362..d3e77af46d7b215b7d3fffe4a05531a91ef5a7e7 100644
--- a/include/hpp/manipulation/problem-solver.hh
+++ b/include/hpp/manipulation/problem-solver.hh
@@ -70,7 +70,7 @@ namespace hpp {
         /// \}
 
         /// Add grasp
-        void addGrasp( const DifferentiableFunctionPtr_t& constraint,
+        void addGrasp (const NumericalConstraintPtr_t& constraint,
             const model::GripperPtr_t& gripper,
             const HandlePtr_t& handle)
         {
@@ -88,7 +88,7 @@ namespace hpp {
         /// get graps by name
         ///
         /// return NULL if no grasp named graspName
-        GraspPtr_t grasp(const DifferentiableFunctionPtr_t& constraint) const;
+        GraspPtr_t grasp(const NumericalConstraintPtr_t& constraint) const;
 
 	/// Create placement constraint
 	/// \param name name of the placement constraint,
diff --git a/src/problem-solver.cc b/src/problem-solver.cc
index 89754e49765bd9b2de4ffee99e8f6d2df28fcb6a..5356b2ce287f226b2ca3891859923b6a23d73dce 100644
--- a/src/problem-solver.cc
+++ b/src/problem-solver.cc
@@ -123,8 +123,8 @@ namespace hpp {
       return constraintGraph_;
     }
 
-    GraspPtr_t ProblemSolver::grasp (
-                      const DifferentiableFunctionPtr_t& constraint) const
+    GraspPtr_t ProblemSolver::grasp
+    (const NumericalConstraintPtr_t& constraint) const
     {
       GraspsMap_t::const_iterator it =
 	graspsMap_.find (constraint);
@@ -169,9 +169,10 @@ namespace hpp {
 	constraints.first->addFloor (ConvexShape (it->second, it->first));
       }
 
-      addNumericalConstraint (name, constraints.first);
-      addNumericalConstraint (complementName, constraints.second);
-      comparisonType (complementName, core::Equality::create ());
+      addNumericalConstraint (name, NumericalConstraint::create
+			      (constraints.first));
+      addNumericalConstraint (complementName, NumericalConstraint::create
+			      (constraints.second, core::Equality::create ()));
     }
 
 
@@ -201,8 +202,7 @@ namespace hpp {
     {
       core::ProblemSolver::addFunctionToConfigProjector (constraintName,
                                                          functionName);
-      DifferentiableFunctionPtr_t constraint =
-	numericalConstraint (functionName);
+      NumericalConstraintPtr_t constraint (numericalConstraint (functionName));
       if (GraspPtr_t g = grasp (constraint)) {
         GripperPtr_t gripper = g->first;
         HandlePtr_t handle = g->second;