diff --git a/src/handle.cc b/src/handle.cc
index 9fdea11b3ec95b73cce8b3db454e5739a245e6d5..1ef224ab3d5db2271f0fe64be724800330bb3863 100644
--- a/src/handle.cc
+++ b/src/handle.cc
@@ -140,15 +140,18 @@ namespace hpp {
       } else {
         // TODO handle cases where rotations or translation are allowed.
         std::vector<bool> Cmask = complementMask(mask_);
-        return NumericalConstraintPtr_t
-          (NumericalConstraint::create (RelativeTransformation::create
-                                        ("Transformation_" + maskToStr(Cmask) + "_" + name ()
-                                         + "_" + gripper->name (),
-                                         gripper->joint()->robot(),
-                                         gripper->joint (), joint (),
-                                         gripper->objectPositionInJoint (),
-                                         localPosition(), Cmask),
-                                        core::Equality::create ()));
+        RelativeTransformationPtr_t function = RelativeTransformation::create
+          ("Transformation_" + maskToStr(Cmask) + "_" + name ()
+           + "_" + gripper->name (),
+           gripper->joint()->robot(),
+           gripper->joint (), joint (),
+           gripper->objectPositionInJoint (),
+           localPosition(), Cmask);
+        return NumericalConstraintPtr_t (NumericalConstraint::create
+            (function,
+             core::ComparisonTypes::create(function->outputSize(),
+                                           core::ComparisonType::Equality)
+             ));
       }
     }