diff --git a/include/hpp/manipulation/graph/graph.hh b/include/hpp/manipulation/graph/graph.hh
index b4a0838f31e3a01391a8fb2d86f90d01abb5acdd..26644ba11c6295073b7172a1e0a4122018046b47 100644
--- a/include/hpp/manipulation/graph/graph.hh
+++ b/include/hpp/manipulation/graph/graph.hh
@@ -17,6 +17,7 @@
 #ifndef HPP_MANIPULATION_GRAPH_GRAPH_HH
 # define HPP_MANIPULATION_GRAPH_GRAPH_HH
 
+# include "hpp/manipulation/robot.hh"
 # include "hpp/manipulation/graph/node-selector.hh"
 
 # include "hpp/manipulation/fwd.hh"
@@ -39,11 +40,11 @@ namespace hpp {
       {
         public:
           /// Create a new Graph.
-          static GraphPtr_t create()
+          static GraphPtr_t create(RobotPtr_t robot)
           {
             Graph* ptr = new Graph;
             GraphPtr_t shPtr (ptr);
-            ptr->init (shPtr);
+            ptr->init (shPtr, robot);
             return shPtr;
           }
 
@@ -63,8 +64,9 @@ namespace hpp {
 
         protected:
           /// Initialization of the object.
-          void init (const GraphWkPtr_t& weak)
+          void init (const GraphWkPtr_t& weak, RobotPtr_t robot)
           {
+            robot_ = robot;
             wkPtr_ = weak;
           }
 
@@ -80,6 +82,9 @@ namespace hpp {
           /// stability constraints.
           ConstraintPtr_t constraints_;
 
+          /// Keep a pointer to the composite robot.
+          RobotPtr_t robot_;
+
           /// Weak pointer to itself.
           GraphWkPtr_t wkPtr_;
       }; // Class Graph