diff --git a/include/sot-dynamic/dynamic.h b/include/sot-dynamic/dynamic.h
index 15f37b84ebf0f8e84536c2723778c7fc6146561b..8810150db864e1aa688ffc0aebec4a379fe044c9 100644
--- a/include/sot-dynamic/dynamic.h
+++ b/include/sot-dynamic/dynamic.h
@@ -135,22 +135,22 @@ class SOTDYNAMIC_EXPORT Dynamic
  public: /* --- SIGNAL ACTIVATION --- */
   dg::SignalTimeDependent< ml::Matrix,int > &
     createEndeffJacobianSignal( const std::string& signame,
-				   const unsigned int & bodyRank );
+				CjrlJoint* inJoint );
   dg::SignalTimeDependent< ml::Matrix,int > &
     createJacobianSignal( const std::string& signame,
-			  const unsigned int & bodyRank );
+			  CjrlJoint* inJoint );
   void destroyJacobianSignal( const std::string& signame );
   dg::SignalTimeDependent< MatrixHomogeneous,int >&
     createPositionSignal( const std::string& signame,
-			  const unsigned int & bodyRank );
+			  CjrlJoint* inJoint );
   void destroyPositionSignal( const std::string& signame );
   dg::SignalTimeDependent< ml::Vector,int >&
       createVelocitySignal( const std::string& signame,
-  			     const unsigned int & bodyRank );
+  			     CjrlJoint* inJoint );
     void destroyVelocitySignal( const std::string& signame );
   dg::SignalTimeDependent< ml::Vector,int >&
     createAccelerationSignal( const std::string& signame,
-			     const unsigned int & bodyRank );
+			     CjrlJoint* inJoint );
   void destroyAccelerationSignal( const std::string& signame );
 
   bool zmpActivation( void ) { std::string Property("ComputeZMP");
diff --git a/src/dynamic.cpp b/src/dynamic.cpp
index 37adae297de7cebfa88c5c2d1a72574e0aa0c3db..d095a985e86461a34eabda47a9e6ef3163375ebb 100644
--- a/src/dynamic.cpp
+++ b/src/dynamic.cpp
@@ -197,20 +197,8 @@ parseConfigFiles( void )
 /* --- SIGNAL ACTIVATION ---------------------------------------------------- */
 /* --- SIGNAL ACTIVATION ---------------------------------------------------- */
 dg::SignalTimeDependent< ml::Matrix,int > & Dynamic::
-createJacobianSignal( const std::string& signame,const unsigned int& bodyRank )
+createJacobianSignal( const std::string& signame, CjrlJoint* aJoint )
 {
-
-  vector<CjrlJoint *> aVec = m_HDR->jointVector();
-  if( bodyRank>=aVec.size() )
-    {
-      SOT_THROW ExceptionDynamic( ExceptionDynamic::JOINT_RANK,
-				     "Joint rank is too high.",
-				     "(rank=%d, while creating J signal).",
-				     bodyRank );
-    }
-  CjrlJoint * aJoint = aVec[bodyRank];
-
-
   dg::SignalTimeDependent< ml::Matrix,int > * sig
     = new dg::SignalTimeDependent< ml::Matrix,int >
     ( boost::bind(&Dynamic::computeGenericJacobian,this,aJoint,_1,_2),
@@ -223,21 +211,10 @@ createJacobianSignal( const std::string& signame,const unsigned int& bodyRank )
 }
 
 dg::SignalTimeDependent< ml::Matrix,int > & Dynamic::
-createEndeffJacobianSignal( const std::string& signame,const unsigned int& bodyRank )
+createEndeffJacobianSignal( const std::string& signame, CjrlJoint* aJoint )
 {
   sotDEBUGIN(15);
 
-  vector<CjrlJoint *> aVec = m_HDR->jointVector();
-  if( bodyRank>=aVec.size() )
-    {
-      SOT_THROW ExceptionDynamic( ExceptionDynamic::JOINT_RANK,
-				     "Joint rank is too high.",
-				     "(rank=%d, while creating J signal).",
-				     bodyRank );
-    }
-  CjrlJoint * aJoint = aVec[bodyRank];
-
-
   dg::SignalTimeDependent< ml::Matrix,int > * sig
     = new dg::SignalTimeDependent< ml::Matrix,int >
     ( boost::bind(&Dynamic::computeGenericEndeffJacobian,this,aJoint,_1,_2),
@@ -281,21 +258,10 @@ destroyJacobianSignal( const std::string& signame )
 /* --- POINT --- */
 
 dg::SignalTimeDependent< MatrixHomogeneous,int >& Dynamic::
-createPositionSignal( const std::string& signame,const unsigned int& bodyRank )
+createPositionSignal( const std::string& signame, CjrlJoint* aJoint)
 {
   sotDEBUGIN(15);
 
-  vector<CjrlJoint *> aVec = m_HDR->jointVector();
-
-  if( bodyRank>=aVec.size() )
-    {
-      SOT_THROW ExceptionDynamic( ExceptionDynamic::JOINT_RANK,
-				     "Joint rank is too high.",
-				     "(rank=%d, while creating position signal).",
-				     bodyRank );
-    }
-  CjrlJoint * aJoint = aVec[bodyRank];
-
   dg::SignalTimeDependent< MatrixHomogeneous,int > * sig
     = new dg::SignalTimeDependent< MatrixHomogeneous,int >
     ( boost::bind(&Dynamic::computeGenericPosition,this,aJoint,_1,_2),
@@ -340,21 +306,9 @@ destroyPositionSignal( const std::string& signame )
 /* --- VELOCITY --- */
 
 SignalTimeDependent< ml::Vector,int >& Dynamic::
-createVelocitySignal( const std::string& signame,const unsigned int& bodyRank )
+createVelocitySignal( const std::string& signame, CjrlJoint* aJoint )
 {
   sotDEBUGIN(15);
-
-  vector<CjrlJoint *> aVec = m_HDR->jointVector();
-
-  if( bodyRank>=aVec.size() )
-    {
-      SOT_THROW ExceptionDynamic( ExceptionDynamic::JOINT_RANK,
-				     "Joint rank is too high.",
-				     "(rank=%d, while creating velocity signal).",
-				     bodyRank );
-    }
-  CjrlJoint * aJoint = aVec[bodyRank];
-
   SignalTimeDependent< ml::Vector,int > * sig
     = new SignalTimeDependent< ml::Vector,int >
     ( boost::bind(&Dynamic::computeGenericVelocity,this,aJoint,_1,_2),
@@ -398,21 +352,9 @@ destroyVelocitySignal( const std::string& signame )
 /* --- ACCELERATION --- */
 
 dg::SignalTimeDependent< ml::Vector,int >& Dynamic::
-createAccelerationSignal( const std::string& signame,const unsigned int& bodyRank )
+createAccelerationSignal( const std::string& signame, CjrlJoint* aJoint )
 {
   sotDEBUGIN(15);
-
-  vector<CjrlJoint *> aVec = m_HDR->jointVector();
-
-  if( bodyRank>=aVec.size() )
-    {
-      SOT_THROW ExceptionDynamic( ExceptionDynamic::JOINT_RANK,
-				     "Joint rank is too high.",
-				     "(rank=%d, while creating acceleration signal).",
-				     bodyRank );
-    }
-  CjrlJoint * aJoint = aVec[bodyRank];
-
   dg::SignalTimeDependent< ml::Vector,int > * sig
     = new dg::SignalTimeDependent< ml::Vector,int >
     ( boost::bind(&Dynamic::computeGenericAcceleration,this,aJoint,_1,_2),
@@ -1008,7 +950,7 @@ commandLine( const std::string& cmdLine,
     {
       std::string Jname; cmdArgs >> Jname;
       unsigned int rank; cmdArgs >> rank;
-      createJacobianSignal(Jname,rank);
+      //createJacobianSignal(Jname,rank);
     }
   else if( cmdLine == "destroyJacobian" )
     {
@@ -1019,7 +961,7 @@ commandLine( const std::string& cmdLine,
     {
       std::string Jname; cmdArgs >> Jname;
       unsigned int rank; cmdArgs >> rank;
-      createPositionSignal(Jname,rank);
+      //createPositionSignal(Jname,rank);
     }
   else if( cmdLine == "destroyPosition" )
     {
@@ -1030,7 +972,7 @@ commandLine( const std::string& cmdLine,
     {
       std::string Jname; cmdArgs >> Jname;
       unsigned int rank; cmdArgs >> rank;
-      createVelocitySignal(Jname,rank);
+      //createVelocitySignal(Jname,rank);
     }
   else if( cmdLine == "destroyVelocity" )
     {
@@ -1041,7 +983,7 @@ commandLine( const std::string& cmdLine,
     {
       std::string Jname; cmdArgs >> Jname;
       unsigned int rank; cmdArgs >> rank;
-      createAccelerationSignal(Jname,rank);
+      //createAccelerationSignal(Jname,rank);
     }
   else if( cmdLine == "destroyAcceleration" )
     {
@@ -1052,14 +994,14 @@ commandLine( const std::string& cmdLine,
     {
       std::string Jname; cmdArgs >> Jname;
       unsigned int rank; cmdArgs >> rank;
-      createEndeffJacobianSignal(Jname,rank);
+      //createEndeffJacobianSignal(Jname,rank);
     }
   else if( cmdLine == "createOpPoint" )
     {
       std::string Jname; cmdArgs >> Jname;
       unsigned int rank; cmdArgs >> rank;
-      createEndeffJacobianSignal(string("J")+Jname,rank);
-      createPositionSignal(Jname,rank);
+      //createEndeffJacobianSignal(string("J")+Jname,rank);
+      //createPositionSignal(Jname,rank);
       sotDEBUG(15)<<endl;
     }
   else if( cmdLine == "destroyOpPoint" )