diff --git a/include/hpp/manipulation/graph/helper.hh b/include/hpp/manipulation/graph/helper.hh
index 6ad3c141daf7e804c71e1dec49f4b902e2e5394b..fef32a1067eba98860aea92e61b477a02886652a 100644
--- a/include/hpp/manipulation/graph/helper.hh
+++ b/include/hpp/manipulation/graph/helper.hh
@@ -98,6 +98,18 @@ namespace hpp {
           WithPrePlace = 1 << 4
         };
 
+	struct Rule {
+	  std::string gripper_;
+	  std::string handle_;
+	  bool link_;
+	  Rule() : gripper_(""), handle_(""), link_(false) {}
+	  Rule(std::string gripper, std::string handle, bool link) {
+	    gripper_ = gripper;
+	    handle_ = handle;
+	    link_ = link;
+	  }
+	};
+
         /// Create edges according to the case.
         /// gCase is a logical OR combination of GraspingCase and PlacementCase
         ///
@@ -191,6 +203,7 @@ namespace hpp {
             const StringList_t& griNames,
             const std::list <ObjectDef_t>& objs,
             const StringList_t& envNames,
+	    const std::vector<Rule>& rules,
             const value_type& prePlaceWidth = 0.05);
         /// \}
       } // namespace helper
diff --git a/src/graph/helper.cc b/src/graph/helper.cc
index eb8a2ee49946b72fdecfaf91aed564f418eea6df..b705dd5cb1a26e090b649a299b7a2125e06aea51 100644
--- a/src/graph/helper.cc
+++ b/src/graph/helper.cc
@@ -878,6 +878,7 @@ namespace hpp {
             const StringList_t& griNames,
             const std::list <ObjectDef_t>& objs,
             const StringList_t& envNames,
+	    const std::vector <Rule>& rules,
             const value_type& prePlaceWidth)
         {
           const Device& robot = *(ps->robot ());