diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
index 75c424de60410e5b8c0b327fe9eaed329b56aa0f..5a9e0034efc7490a91c4245e03bb7bec71240217 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -23,15 +23,15 @@ exception-traces.h
 signal-cast.h
 
 #matrix
-sotBinaryOp.h
-sotDerivator.h
-sotFIRFilter.h
-sotIntegratorAbstract.h
-sotIntegratorEuler.h
-sotMatrixConstant.h
-sotUnaryOp.h
-sotVectorConstant.h
-sotVectorToRotation.h
+binary-op.h
+derivator.h
+fir-filter.h
+integrator-abstract.h
+integrator-euler.h
+matrix-constant.h
+unary-op.h
+vector-constant.h
+vector-to-rotation.h
 
 #factory
 additional-functions.h
@@ -40,15 +40,15 @@ macros-signal.h
 pool.h
 
 #math
-sotMatrixForce.h
-sotMatrixHomogeneous.h
-sotMatrixRotation.h
-sotMatrixTwist.h
-sotOpPointModifior.h
-sotVectorQuaternion.h
-sotVectorRollPitchYaw.h
-sotVectorRotation.h
-sotVectorUTheta.h
+matrix-force.h
+matrix-homogeneous.h
+matrix-rotation.h
+matrix-twist.h
+op-point-modifier.h
+vector-quaternion.h
+vector-roll-pitch-yaw.h
+vector-rotation.h
+vector-utheta.h
 
 #feature
 sotFeaturePoint6d.h
diff --git a/include/sot-core/additional-functions.h b/include/sot-core/additional-functions.h
new file mode 100644
index 0000000000000000000000000000000000000000..91134b944478a3863eaa44295b496fb35a771485
--- /dev/null
+++ b/include/sot-core/additional-functions.h
@@ -0,0 +1,51 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      additional-functions.h
+ * Project:   SOT
+ * Author:    François Bleibel
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+/* SOT */
+#include <dynamic-graph/signal-base.h>
+#include <sot-core/exception-factory.h>
+#include <dynamic-graph/pool.h>
+#include <sot-core/pool.h>
+#include <sot-core/sot-core-api.h>
+
+/* --- STD --- */
+#include <string>
+#include <map>
+#include <sstream>
+
+/* --- BOOST --- */
+#include <boost/function.hpp>
+#include <boost/bind.hpp>
+
+/*! @ingroup factory
+  \brief This helper class dynamically overloads the "new" shell command
+  to allow creation of tasks and features as well as entities.
+ */
+class sotAdditionalFunctions
+{
+public:
+	sotAdditionalFunctions();
+	~sotAdditionalFunctions();
+	static void cmdNew( const std::string& cmd,std::istringstream& args,
+						   std::ostream& os );
+	static void cmdMatrixDisplay( const std::string& cmd,std::istringstream& args,
+						   std::ostream& os );
+	static void cmdFlagSet( const std::string& cmd,std::istringstream& args,
+						   std::ostream& os );
+};
diff --git a/include/sot-core/sotBinaryOp.h b/include/sot-core/binary-op.h
similarity index 97%
rename from include/sot-core/sotBinaryOp.h
rename to include/sot-core/binary-op.h
index 73a63d25d0a478868dc45498024421491259c9d5..82e25233079d7681553e3ec19732812f6def203b 100644
--- a/include/sot-core/sotBinaryOp.h
+++ b/include/sot-core/binary-op.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotBinaryOp.h
+ * File:      binary-op.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -36,7 +36,7 @@ namespace ml = maal::boost;
 #include <sot-core/pool.h>
 #include <dynamic-graph/all-signals.h>
 #include <dynamic-graph/all-signals.h>
-#include <sot-core/sotVectorQuaternion.h>
+#include <sot-core/vector-quaternion.h>
 
 /* STD */
 #include <string>
diff --git a/include/sot-core/contiifstream.h b/include/sot-core/contiifstream.h
new file mode 100644
index 0000000000000000000000000000000000000000..f4f8fd6562e03a9bd37d70614ae876ab36aa2d9b
--- /dev/null
+++ b/include/sot-core/contiifstream.h
@@ -0,0 +1,88 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotContiifstream.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+
+#ifndef __SOT_CONTIIFSTREAM_HH__
+#define __SOT_CONTIIFSTREAM_HH__
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+#include <list>
+
+#include <dynamic-graph/interpreter.h>
+#ifndef WIN32
+#include <pthread.h>
+#endif
+/* --------------------------------------------------------------------- */
+/* --- API ------------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+#if defined (WIN32) 
+#  if defined (sotContiifstream_EXPORTS)
+#    define SOTCONTIIFSTREAM_EXPORT __declspec(dllexport)
+#  else  
+#    define SOTCONTIIFSTREAM_EXPORT __declspec(dllimport)
+#  endif 
+#else
+#  define SOTCONTIIFSTREAM_EXPORT
+#endif
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+class SOTCONTIIFSTREAM_EXPORT sotContiifstream
+{
+protected:
+  std::string filename;
+  unsigned int cursor;
+  static const unsigned int BUFFER_SIZE = 256;
+  char buffer[BUFFER_SIZE];
+  std::list< std::string > reader;
+  bool first;
+ 
+public: /* --- Constructor --- */
+  sotContiifstream( const std::string& n="" );
+  ~sotContiifstream( void );
+  void open( const std::string& n ) { filename=n; cursor=0; }
+  
+public: /* --- READ FILE --- */
+  bool loop( void );
+  
+public: /* --- READ LIST --- */
+  inline bool ready( void ) { return 0<reader.size();}
+  std::string next( void ) ;
+  
+
+};
+
+
+#endif /* #ifndef __SOT_CONTIIFSTREAM_HH__ */
+
+
+
+
diff --git a/include/sot-core/debug.h b/include/sot-core/debug.h
new file mode 100644
index 0000000000000000000000000000000000000000..40815fadb67dcb103ea84c2a20e53d3ec11011d1
--- /dev/null
+++ b/include/sot-core/debug.h
@@ -0,0 +1,166 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet Lagadic, 2005
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotDebug.h
+ * Project:   STack of Tasks
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ * Macro de trace et de debugage
+ *
+ *   - TRACAGE:    TRACE et ERROR_TRACE fonctionnent comme des printf
+ * avec retour chariot en fin de fonction.
+ *                 CERROR et CTRACE fonctionnent comme les flux de sortie
+ * C++ cout et cerr.
+ *   - DEBUGAGE:   DEBUG_TRACE(niv,  et DERROR_TRACE(niv, fonctionnent
+ * comme des printf, n'imprimant que si le niveau de trace 'niv' est
+ * superieur au mode de debugage VP_DEBUG_MODE.
+ *                 CDEBUG(niv) fonctionne comme le flux de sortie C++ cout.
+ *                 DEBUG_ENABLE(niv) vaut 1 ssi le niveau de tracage 'niv'
+ * est superieur au  mode de debugage DEBUG_MODE. Il vaut 0 sinon.
+ *   - PROG DEFENSIVE: DEFENSIF(a) vaut a ssi le mode defensif est active,
+ * et vaut 0 sinon.
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+
+
+#ifndef __VS_DEBUG_HH
+#define __VS_DEBUG_HH
+
+#include <stdio.h>
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <stdarg.h>
+#include <sot-core/sot-core-api.h>
+
+ 
+/* -------------------------------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+
+/* -------------------------------------------------------------------------- */
+
+#ifndef VP_DEBUG_MODE
+#define VP_DEBUG_MODE 0
+#endif 
+#ifndef VP_TEMPLATE_DEBUG_MODE
+#define VP_TEMPLATE_DEBUG_MODE 0
+#endif
+
+#define SOT_COMMON_TRACES do {  \
+		    va_list arg; \
+		    va_start(arg,format); \
+		    vsnprintf( charbuffer,SIZE,format,arg ); \
+		    va_end(arg); \
+		    outputbuffer << tmpbuffer.str() << charbuffer <<std::endl; \
+		} while(0)
+
+class SOT_CORE_EXPORT sotDebugTrace
+{
+ public:
+    static const int SIZE = 512;
+
+    std::stringstream tmpbuffer;
+    std::ostream& outputbuffer;
+    char charbuffer[SIZE+1];
+    int traceLevel;
+    int traceLevelTemplate; 
+
+    sotDebugTrace( std::ostream& os ): outputbuffer(os) {}
+
+    inline void trace( const int level,const char* format,...)
+	{ if( level<=traceLevel ) SOT_COMMON_TRACES; tmpbuffer.str(""); }
+    inline void trace( const char* format,...){ SOT_COMMON_TRACES;  tmpbuffer.str(""); }
+    inline void trace( const int level=-1 ) 
+	{ if( level<=traceLevel ) outputbuffer << tmpbuffer.str(); tmpbuffer.str("");  }
+
+    inline void traceTemplate( const int level,const char* format,...)
+	{ if( level<=traceLevelTemplate ) SOT_COMMON_TRACES; tmpbuffer.str(""); }
+    inline void traceTemplate( const char* format,...)
+	{ SOT_COMMON_TRACES; tmpbuffer.str("");  }
+
+    inline sotDebugTrace& pre( const std::ostream& dummy ) { return *this; }
+    inline sotDebugTrace& pre( const std::ostream& dummy,int level ) 
+	{ traceLevel = level; return *this; }
+/*     inline sotDebugTrace& preTemplate( const std::ostream& dummy,int level )  */
+/* 	{ traceLevelTemplate = level; return *this; } */
+
+
+    static const char * DEBUG_FILENAME_DEFAULT;
+    static void openFile( const char * filename = DEBUG_FILENAME_DEFAULT );
+    static void closeFile( const char * filename = DEBUG_FILENAME_DEFAULT );
+
+};
+
+
+SOT_CORE_EXPORT extern sotDebugTrace sotDEBUGFLOW;
+SOT_CORE_EXPORT extern sotDebugTrace sotERRORFLOW;
+
+#ifdef VP_DEBUG
+#define sotPREDEBUG  __FILE__ << ": " <<__FUNCTION__  \
+                              << "(#" << __LINE__ << ") :" 
+#define sotPREERROR  "\t!! "<<__FILE__ << ": " <<__FUNCTION__  \
+                            << "(#" << __LINE__ << ") :" 
+
+#  define sotDEBUG(level) if( (level>VP_DEBUG_MODE)||(!sotDEBUGFLOW.outputbuffer.good()) ) ;\
+    else sotDEBUGFLOW.outputbuffer << sotPREDEBUG
+#  define sotDEBUGMUTE(level) if( (level>VP_DEBUG_MODE)||(!sotDEBUGFLOW.outputbuffer.good()) ) ;\
+    else sotDEBUGFLOW.outputbuffer 
+#  define sotERROR  if(!sotDEBUGFLOW.outputbuffer.good()); else sotERRORFLOW.outputbuffer << sotPREERROR
+#  define sotDEBUGF if(!sotDEBUGFLOW.outputbuffer.good()); else sotDEBUGFLOW.pre(sotDEBUGFLOW.tmpbuffer<<sotPREDEBUG,VP_DEBUG_MODE).trace
+#  define sotERRORF if(!sotDEBUGFLOW.outputbuffer.good()); else sotERRORFLOW.pre(sotERRORFLOW.tmpbuffer<<sotPREERROR).trace
+// TEMPLATE
+#  define sotTDEBUG(level) if( (level>VP_TEMPLATE_DEBUG_MODE)||(!sotDEBUGFLOW.outputbuffer.good()) ) ;\
+    else sotDEBUGFLOW.outputbuffer << sotPREDEBUG
+#  define sotTDEBUGF  if(!sotDEBUGFLOW.outputbuffer.good()); else sotDEBUGFLOW.pre(sotDEBUGFLOW.tmpbuffer<<sotPREDEBUG,VP_TEMPLATE_DEBUG_MODE).trace
+inline bool sotDEBUG_ENABLE( const int & level ) { return level<=VP_DEBUG_MODE; }
+inline bool sotTDEBUG_ENABLE( const int & level ) { return level<=VP_TEMPLATE_DEBUG_MODE; }
+
+/* -------------------------------------------------------------------------- */
+#else // #ifdef VP_DEBUG
+#define sotPREERROR  "\t!! "<<__FILE__ << ": " <<__FUNCTION__  \
+                            << "(#" << __LINE__ << ") :" 
+#  define sotDEBUG(level) if( 1 ) ; else std::cout 
+#  define sotDEBUGMUTE(level) if( 1 ) ; else std::cout 
+#  define sotERROR sotERRORFLOW.outputbuffer << sotPREERROR
+inline void sotDEBUGF( const int level,const char* format,...) { return; }
+inline void sotDEBUGF( const char* format,...) { return; }
+inline void sotERRORF( const int level,const char* format,...) { return; }
+inline void sotERRORF( const char* format,...) { return; }
+// TEMPLATE
+#  define sotTDEBUG(level) if( 1 ) ; else std::cout 
+inline void sotTDEBUGF( const int level,const char* format,...) { return; }
+inline void sotTDEBUGF( const char* format,...) { return; }
+#define sotDEBUG_ENABLE(level) false
+#define sotTDEBUG_ENABLE(level) false
+
+#endif // #ifdef VP_DEBUG
+/* -------------------------------------------------------------------------- */
+
+#define sotDEBUGIN(level) sotDEBUG(level) << "# In {" << std::endl
+#define sotDEBUGOUT(level) sotDEBUG(level) << "# Out }" << std::endl
+#define sotDEBUGINOUT(level) sotDEBUG(level) << "# In/Out { }" << std::endl
+
+#define sotTDEBUGIN(level) sotTDEBUG(level) << "# In {" << std::endl
+#define sotTDEBUGOUT(level) sotTDEBUG(level) << "# Out }" << std::endl
+#define sotTDEBUGINOUT(level) sotTDEBUG(level) << "# In/Out { }" << std::endl
+
+
+#endif /* #ifdef __VS_DEBUG_HH */
+
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * End:
+ */
diff --git a/include/sot-core/sotDerivator.h b/include/sot-core/derivator.h
similarity index 97%
rename from include/sot-core/sotDerivator.h
rename to include/sot-core/derivator.h
index 94b9d4cd86864375effc4dbdca2f75a916ea6293..a2cd7a796e730d3bbbcf1f9f1d11a3fa73c49c79 100644
--- a/include/sot-core/sotDerivator.h
+++ b/include/sot-core/derivator.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotDerivator.h
+ * File:      derivator.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -35,7 +35,7 @@ namespace ml = maal::boost;
 #include <dynamic-graph/entity.h>
 #include <sot-core/pool.h>
 #include <dynamic-graph/all-signals.h>
-#include <sot-core/sotVectorQuaternion.h>
+#include <sot-core/vector-quaternion.h>
 
 /* STD */
 #include <string>
diff --git a/include/sot-core/exception-abstract.h b/include/sot-core/exception-abstract.h
new file mode 100644
index 0000000000000000000000000000000000000000..c84791faa8791c72bf64359b5bae35ce96dae528
--- /dev/null
+++ b/include/sot-core/exception-abstract.h
@@ -0,0 +1,147 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      exception-abstract.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+#ifndef __SOT_ABSTRACT_EXCEPTION_H
+#define __SOT_ABSTRACT_EXCEPTION_H
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+/* Classes standards. */
+#include <iostream>                /* Classe ostream.    */
+#include <string>                  /* Classe string.     */
+#include <sot-core/sot-core-api.h>
+
+// Uncomment this macros to have lines parameter on the throw display
+// #define SOT_EXCEPTION_PASSING_PARAM 
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+/* \class sotExceptionAbstract
+ */
+class SOT_CORE_EXPORT sotExceptionAbstract 
+{
+
+ public:
+
+  enum ExceptionEnum
+    {
+      ABSTRACT = 0
+      ,SIGNAL = 100
+      ,TASK = 200
+      ,FEATURE = 300
+      ,FACTORY = 400
+      ,DYNAMIC = 500
+      ,TRACES = 600
+      ,TOOLS = 700
+      ,PATTERN_GENERATOR= 800
+    };
+
+  static const std::string EXCEPTION_NAME;
+  virtual const std::string& getExceptionName( void ) const { return EXCEPTION_NAME; }
+
+ protected:
+  /** Error code.
+   * \sa ErrorCodeEnum */
+  int code;
+
+  /**  Error message (can be empty). */
+  std::string message;
+
+private:
+
+  /**  forbid the empty constructor (private). */
+  sotExceptionAbstract( void );
+public:
+
+  sotExceptionAbstract( const int& code, const std::string & msg = "" );
+  virtual ~sotExceptionAbstract( void ){}
+
+  /**  Access to the error code. */
+  int getCode (void);
+
+  /** Reference access to the error message (can be empty). */
+  const std::string &getStringMessage (void);
+
+  /** Access to the pointer on the array of  \e char related to the error string.
+   * Cannot be  \e NULL.
+   */
+  const char *getMessage (void);
+
+  
+  /** Print the error structure. */
+  SOT_CORE_EXPORT friend std::ostream & operator << (std::ostream & os,
+				     const sotExceptionAbstract & err);
+
+#ifdef SOT_EXCEPTION_PASSING_PARAM 
+ public:
+  class Param
+    {
+    public:
+      static const int BUFFER_SIZE = 80;
+
+      const char * functionPTR;
+      char function[ BUFFER_SIZE ];
+      int line;
+      const char * filePTR;
+      char file[ BUFFER_SIZE ];
+      bool pointersSet,set;
+    public:
+      Param( const int& _line, const char * _function, const char * _file );
+      Param( void ) : pointersSet(false),set(false) {}
+      Param& initCopy( const Param& p );
+	
+    };
+
+ protected:
+  mutable Param p;
+
+  template<class Exc>
+    friend const Exc& operator+ ( const sotExceptionAbstract::Param& p, const Exc& e ) 
+    { e.p.initCopy(p);   return e;    }
+  template<class Exc>
+    friend Exc& operator+ ( const sotExceptionAbstract::Param& p, Exc& e ) 
+    { e.p.initCopy(p);   return e;    }
+#endif //#ifdef SOT_EXCEPTION_PASSING_PARAM 
+};
+
+#define SOT_RETHROW ( const sotExceptionAbstract& err ) { throw err; }
+
+
+
+#ifdef SOT_EXCEPTION_PASSING_PARAM 
+#  define SOT_THROW throw sotExceptionAbstract::Param(__LINE__,__FUNCTION__,__FILE__) +
+#else //#ifdef SOT_EXCEPTION_PASSING_PARAM 
+#  define SOT_THROW throw
+#endif //#ifdef SOT_EXCEPTION_PASSING_PARAM 
+
+
+#endif /* #ifndef __SOT_ABSTRACT_EXCEPTION_H */
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/include/sot-core/exception-dynamic.h b/include/sot-core/exception-dynamic.h
new file mode 100644
index 0000000000000000000000000000000000000000..8f73310835390051ff51dbff379b785277290b1c
--- /dev/null
+++ b/include/sot-core/exception-dynamic.h
@@ -0,0 +1,78 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      exception-dynamic.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+#ifndef __SOT_DYNAMIC_EXCEPTION_H
+#define __SOT_DYNAMIC_EXCEPTION_H
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+#include <sot-core/exception-abstract.h>
+#include <sot-core/sot-core-api.h>
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+/* \class sotExceptionDynamic
+ */
+class SOT_CORE_EXPORT sotExceptionDynamic 
+:public sotExceptionAbstract
+
+{
+ public:
+  enum ErrorCodeEnum
+    {
+      GENERIC = sotExceptionAbstract::DYNAMIC
+
+      ,CANT_DESTROY_SIGNAL
+      ,JOINT_RANK
+      ,DYNAMIC_JRL
+      ,JOINT_SIZE
+      ,INTEGRATION
+    };
+
+  static const std::string EXCEPTION_NAME;
+  virtual const std::string& getExceptionName( void ) const { return EXCEPTION_NAME; }
+
+public:
+
+  sotExceptionDynamic ( const sotExceptionDynamic::ErrorCodeEnum& errcode,
+		       const std::string & msg = "" );
+  sotExceptionDynamic( const sotExceptionDynamic::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... );
+  virtual ~sotExceptionDynamic( void ){}
+
+
+};
+
+
+
+
+
+#endif /* #ifndef __SOT_DYNAMIC_EXCEPTION_H */
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/include/sot-core/exception-factory.h b/include/sot-core/exception-factory.h
new file mode 100644
index 0000000000000000000000000000000000000000..feedd21257000217b11c60fad72b8d940e519079
--- /dev/null
+++ b/include/sot-core/exception-factory.h
@@ -0,0 +1,79 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      exception-factory.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+#ifndef __SOT_EXCEPTION_FACTORY_H
+#define __SOT_EXCEPTION_FACTORY_H
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+#include <sot-core/exception-abstract.h>
+#include <sot-core/sot-core-api.h>
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+/* \class sotExceptionFactory
+ */
+class SOT_CORE_EXPORT sotExceptionFactory 
+:public sotExceptionAbstract
+
+{
+public:
+
+  enum ErrorCodeEnum
+    {
+      GENERIC = sotExceptionAbstract::FACTORY
+      ,UNREFERED_OBJECT
+      ,UNREFERED_SIGNAL
+      ,UNREFERED_FUNCTION
+      ,DYNAMIC_LOADING
+      ,SIGNAL_CONFLICT
+      ,FUNCTION_CONFLICT
+      ,OBJECT_CONFLICT
+      ,SYNTAX_ERROR    // j' aime bien FATAL_ERROR aussi faut que je la case qq part...
+      ,READ_FILE
+    };
+
+  static const std::string EXCEPTION_NAME;
+  virtual const std::string& getExceptionName( void )const{ return sotExceptionFactory::EXCEPTION_NAME; }
+
+  sotExceptionFactory ( const sotExceptionFactory::ErrorCodeEnum& errcode,
+			const std::string & msg = "" );
+  sotExceptionFactory ( const sotExceptionFactory::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... );
+  virtual ~sotExceptionFactory( void ){}
+
+};
+
+
+
+
+
+#endif /* #ifndef __SOT_EXCEPTION_FACTORY_H */
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/include/sot-core/exception-feature.h b/include/sot-core/exception-feature.h
new file mode 100644
index 0000000000000000000000000000000000000000..71e4c2c890f84b098a3484a52eff2df1bec02bb0
--- /dev/null
+++ b/include/sot-core/exception-feature.h
@@ -0,0 +1,73 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      exception-feature.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+#ifndef __SOT_EXCEPTION_FEATURE_H
+#define __SOT_EXCEPTION_FEATURE_H
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+#include <sot-core/exception-abstract.h>
+#include <sot-core/sot-core-api.h>
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+/* \class sotExceptionFeature
+ */
+class SOT_CORE_EXPORT sotExceptionFeature 
+:public sotExceptionAbstract
+
+{
+public:
+
+  enum ErrorCodeEnum
+    {
+      GENERIC = sotExceptionAbstract::FEATURE
+      ,BAD_INIT
+      ,UNCOMPATIBLE_SIZE
+    };
+
+  static const std::string EXCEPTION_NAME;
+  virtual const std::string& getExceptionName( void ) const { return sotExceptionFeature::EXCEPTION_NAME; }
+
+  sotExceptionFeature ( const sotExceptionFeature::ErrorCodeEnum& errcode,
+		     const std::string & msg = "" );
+
+  sotExceptionFeature ( const sotExceptionFeature::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... );
+
+  virtual ~sotExceptionFeature( void ){}
+};
+
+
+
+
+
+#endif /* #ifndef __SOT_EXCEPTION_FEATURE_H */
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/include/sot-core/exception-signal.h b/include/sot-core/exception-signal.h
new file mode 100644
index 0000000000000000000000000000000000000000..e091c39940aa492ff1d4c6156f760f1de790fda7
--- /dev/null
+++ b/include/sot-core/exception-signal.h
@@ -0,0 +1,79 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      exception-signal.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+#ifndef __SOT_SIGNAL_EXCEPTION_H
+#define __SOT_SIGNAL_EXCEPTION_H
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+#include <sot-core/exception-abstract.h>
+#include <sot-core/sot-core-api.h>
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+/* \class sotExceptionSignal
+ */
+class SOT_CORE_EXPORT sotExceptionSignal 
+:public sotExceptionAbstract
+
+{
+ public:
+  enum ErrorCodeEnum
+    {
+      GENERIC = sotExceptionAbstract::SIGNAL
+
+      ,READWRITE_LOCK
+      ,COPY_NOT_INITIALIZED
+      ,NOT_INITIALIZED
+      ,PLUG_IMPOSSIBLE
+      ,SET_IMPOSSIBLE
+      ,BAD_CAST
+    };
+
+  static const std::string EXCEPTION_NAME;
+  virtual const std::string& getExceptionName( void ) const { return EXCEPTION_NAME; }
+
+public:
+
+  sotExceptionSignal ( const sotExceptionSignal::ErrorCodeEnum& errcode,
+		       const std::string & msg = "" );
+  sotExceptionSignal( const sotExceptionSignal::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... );
+  virtual ~sotExceptionSignal( void ){}
+
+
+};
+
+
+
+
+
+#endif /* #ifndef __SOT_SIGNAL_EXCEPTION_H */
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/include/sot-core/exception-task.h b/include/sot-core/exception-task.h
new file mode 100644
index 0000000000000000000000000000000000000000..b5845ab2921295c3abd9de04dd002e3d043003da
--- /dev/null
+++ b/include/sot-core/exception-task.h
@@ -0,0 +1,75 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      exception-task.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+#ifndef __SOT_EXCEPTION_TASK_H
+#define __SOT_EXCEPTION_TASK_H
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+#include <sot-core/exception-abstract.h>
+#include <sot-core/sot-core-api.h>
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+/* \class sotExceptionTask
+ */
+class SOT_CORE_EXPORT sotExceptionTask 
+:public sotExceptionAbstract
+
+{
+public:
+
+  enum ErrorCodeEnum
+    {
+      GENERIC = sotExceptionAbstract::TASK
+      ,EMPTY_LIST
+      ,NON_ADEQUATE_FEATURES
+      ,MATRIX_SIZE
+      ,BOUND_TYPE
+      ,PARSER_MULTI_BOUND
+    };
+
+  static const std::string EXCEPTION_NAME;
+  virtual const std::string& getExceptionName( void ) const { return EXCEPTION_NAME; }
+
+  sotExceptionTask ( const sotExceptionTask::ErrorCodeEnum& errcode,
+		     const std::string & msg = "" );
+  sotExceptionTask( const sotExceptionTask::ErrorCodeEnum& errcode,
+		    const std::string & msg,const char* format, ... );
+  virtual ~sotExceptionTask( void ){}
+
+};
+
+
+
+
+
+#endif /* #ifndef __SOT_EXCEPTION_TASK_H */
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/include/sot-core/exception-tools.h b/include/sot-core/exception-tools.h
new file mode 100644
index 0000000000000000000000000000000000000000..9e1236d618dfb99a1b1f2ff6b337b58272635fbc
--- /dev/null
+++ b/include/sot-core/exception-tools.h
@@ -0,0 +1,75 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      exception-tools.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+#ifndef __SOT_TOOLS_EXCEPTION_H
+#define __SOT_TOOLS_EXCEPTION_H
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+#include <sot-core/exception-abstract.h>
+#include <sot-core/sot-core-api.h>
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+/* \class sotExceptionTools
+ */
+class SOT_CORE_EXPORT sotExceptionTools 
+:public sotExceptionAbstract
+
+{
+ public:
+  enum ErrorCodeEnum
+    {
+      GENERIC = sotExceptionAbstract::TOOLS
+
+      ,CORBA
+      ,KALMAN_SIZE
+    };
+
+  static const std::string EXCEPTION_NAME;
+  virtual const std::string& getExceptionName( void ) const { return EXCEPTION_NAME; }
+
+public:
+
+  sotExceptionTools ( const sotExceptionTools::ErrorCodeEnum& errcode,
+		       const std::string & msg = "" );
+  sotExceptionTools( const sotExceptionTools::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... );
+  virtual ~sotExceptionTools( void ){}
+
+
+};
+
+
+
+
+
+#endif /* #ifndef __SOT_TOOLS_EXCEPTION_H */
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/include/sot-core/exception-traces.h b/include/sot-core/exception-traces.h
new file mode 100644
index 0000000000000000000000000000000000000000..1ab6e84864e17e769668e971af230c12b8e002bc
--- /dev/null
+++ b/include/sot-core/exception-traces.h
@@ -0,0 +1,74 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      exception-traces.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+#ifndef __SOT_TRACES_EXCEPTION_H
+#define __SOT_TRACES_EXCEPTION_H
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+#include <sot-core/exception-abstract.h>
+#include <sot-core/sot-core-api.h>
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+/* \class sotExceptionTraces
+ */
+class SOT_CORE_EXPORT sotExceptionTraces 
+:public sotExceptionAbstract
+
+{
+ public:
+  enum ErrorCodeEnum
+    {
+      GENERIC = sotExceptionAbstract::TRACES
+
+      ,NOT_OPEN
+    };
+
+  static const std::string EXCEPTION_NAME;
+  virtual const std::string& getExceptionName( void ) const { return EXCEPTION_NAME; }
+
+public:
+
+  sotExceptionTraces ( const sotExceptionTraces::ErrorCodeEnum& errcode,
+		       const std::string & msg = "" );
+  sotExceptionTraces( const sotExceptionTraces::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... );
+  virtual ~sotExceptionTraces( void ){}
+
+
+};
+
+
+
+
+
+#endif /* #ifndef __SOT_TRACES_EXCEPTION_H */
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/include/sot-core/factory.h b/include/sot-core/factory.h
new file mode 100644
index 0000000000000000000000000000000000000000..e37fad4da588fbccd0844a0c06481857768fe07c
--- /dev/null
+++ b/include/sot-core/factory.h
@@ -0,0 +1,158 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      factory.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+
+#ifndef __SOT_FACTORY_HH__
+#define __SOT_FACTORY_HH__
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+/* --- STD --- */
+#include <map>
+#include <string>
+
+/* --- SOT --- */
+class sotFeatureAbstract;
+class sotTaskAbstract;
+#include <sot-core/exception-factory.h>
+#include <sot-core/sot-core-api.h>
+#include <dynamic-graph/factory.h>
+
+/* --------------------------------------------------------------------- */
+/* --- FACTORY ---------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+/*! @ingroup factory
+  \brief This class implements the factory that allows creation of
+  objects loaded from dynamic link libraries. Objects are referenced by their
+  class names, and can be created by passing this string to one of the three
+  public "new" methods (newEntity, newFeature or newTask).
+  The factory instance (singleton) is publicly available under the name sotFactory
+  (include factory.h).  A task, feature or entity can register itself by
+   using the SOT_FACTORY_{ENTITY,TASK,FEATURE}_PLUGIN macro. See sotTask.cpp for
+   an example.
+*/
+class SOT_CORE_EXPORT sotFactoryStorage
+{
+ public:
+  typedef sotFeatureAbstract* (*FeatureConstructor_ptr)( const std::string& );
+  typedef sotTaskAbstract* (*TaskConstructor_ptr)( const std::string& );
+  
+ protected:
+  typedef std::map< std::string,TaskConstructor_ptr > TaskMap;
+  typedef std::map< std::string,FeatureConstructor_ptr > FeatureMap;
+
+  FeatureMap featureMap;
+  TaskMap taskMap;
+
+ public:
+
+  ~sotFactoryStorage( void );
+
+  void registerTask( const std::string& entname,TaskConstructor_ptr ent );
+  sotTaskAbstract* newTask( const std::string& name,const std::string& objname );
+  bool existTask( const std::string& name, TaskMap::iterator& entPtr );
+  bool existTask( const std::string& name );
+
+  void registerFeature( const std::string& entname,FeatureConstructor_ptr ent );
+  sotFeatureAbstract* newFeature( const std::string& name,const std::string& objname );
+  bool existFeature( const std::string& name, FeatureMap::iterator& entPtr );
+  bool existFeature( const std::string& name );
+
+  void  commandLine( const std::string& cmdLine,std::istringstream& cmdArgs,
+		     std::ostream& os );
+
+
+};
+
+SOT_CORE_EXPORT extern sotFactoryStorage sotFactory;
+
+/* --- REGISTERER ----------------------------------------------------------- */
+/* --- REGISTERER ----------------------------------------------------------- */
+/* --- REGISTERER ----------------------------------------------------------- */
+
+/* -------------------------------------------------------------------------- */
+/* --- ENTITY REGISTERER ---------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+typedef dynamicgraph::EntityRegisterer sotEntityRegisterer;
+
+#define SOT_FACTORY_ENTITY_PLUGIN(sotClassType,className) \
+	DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN(sotClassType, className)
+
+/* -------------------------------------------------------------------------- */
+/* --- FEATURE REGISTERER --------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+
+class SOT_CORE_EXPORT sotFeatureRegisterer
+{
+ private:
+  sotFeatureRegisterer( void );
+
+ public:
+  sotFeatureRegisterer( const std::string& featureClassName,
+			sotFactoryStorage::FeatureConstructor_ptr maker);
+};
+
+#define SOT_FACTORY_FEATURE_PLUGIN(sotFeatureType,className) \
+  const std::string sotFeatureType::CLASS_NAME = className;  \
+  extern "C" {                                               \
+    sotFeatureAbstract *sotFeatureMaker##_##sotFeatureType( const std::string& objname )\
+    {                                                        \
+      return new sotFeatureType( objname );                  \
+    }                                                        \
+  sotFeatureRegisterer reg##_##sotFeatureType( className,    \
+					       &sotFeatureMaker##_##sotFeatureType );   \
+  }                                                          \
+
+
+/* -------------------------------------------------------------------------- */
+/* --- TASK REGISTERER ------------------------------------------------------ */
+/* -------------------------------------------------------------------------- */
+
+class SOT_CORE_EXPORT sotTaskRegisterer
+{
+ private:
+  sotTaskRegisterer( void );
+
+ public:
+  sotTaskRegisterer( const std::string& taskClassName,
+		     sotFactoryStorage::TaskConstructor_ptr maker);
+};
+
+
+#define SOT_FACTORY_TASK_PLUGIN(sotTaskType,className) \
+  const std::string sotTaskType::CLASS_NAME = className; \
+  extern "C" {                                            \
+    sotTaskAbstract *sotTaskMaker##_##sotTaskType( const std::string& objname )    \
+    {                                                     \
+      return new sotTaskType( objname );                 \
+    }                                                     \
+  sotTaskRegisterer reg##_##sotTaskType( className,&sotTaskMaker##_##sotTaskType );   \
+  }                                                       \
+
+
+
+#endif /* #ifndef __SOT_FACTORY_HH__ */
+
+
+
+
diff --git a/include/sot-core/sotFIRFilter.h b/include/sot-core/fir-filter.h
similarity index 99%
rename from include/sot-core/sotFIRFilter.h
rename to include/sot-core/fir-filter.h
index d365666386dfdfc5050569ad7bf51bc340316028..144abde7c5f3cd042e1145ee1a771a50c22f4170 100644
--- a/include/sot-core/sotFIRFilter.h
+++ b/include/sot-core/fir-filter.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2008
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotFIRFilter.h
+ * File:      fir-filter.h
  * Project:   SOT
  * Author:    Paul Evrard
  *
diff --git a/include/sot-core/sotIntegratorAbstract.h b/include/sot-core/integrator-abstract.h
similarity index 99%
rename from include/sot-core/sotIntegratorAbstract.h
rename to include/sot-core/integrator-abstract.h
index 4b77e8a9d1e30103d7381bc96dc21e95240b5380..de43b02c9227bd075c06675b591877cc68bbe265 100644
--- a/include/sot-core/sotIntegratorAbstract.h
+++ b/include/sot-core/integrator-abstract.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotIntegratorAbstract.h
+ * File:      integrator-abstract.h
  * Project:   SOT
  * Author:    Paul Evrard and Nicolas Mansard
  *
diff --git a/include/sot-core/sotIntegratorEuler.h b/include/sot-core/integrator-euler.h
similarity index 97%
rename from include/sot-core/sotIntegratorEuler.h
rename to include/sot-core/integrator-euler.h
index 74b3b79d4f1461f910073bee4365bb99e8e677f1..efbeda93b7eda54a498ed3a17e13155bb15ddae2 100644
--- a/include/sot-core/sotIntegratorEuler.h
+++ b/include/sot-core/integrator-euler.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotIntegratorEuler.h
+ * File:      integrator-euler.h
  * Project:   SOT
  * Author:    Paul Evrard and Nicolas Mansard
  *
@@ -27,7 +27,7 @@
 /* --------------------------------------------------------------------- */
 
 /* SOT */
-#include <sot-core/sotIntegratorAbstract.h>
+#include <sot-core/integrator-abstract.h>
 
 /* --------------------------------------------------------------------- */
 /* --- CLASS ----------------------------------------------------------- */
diff --git a/include/sot-core/macros-signal.h b/include/sot-core/macros-signal.h
new file mode 100644
index 0000000000000000000000000000000000000000..6a8e4a8ab233a96117baae552dfa3e65a1739c3a
--- /dev/null
+++ b/include/sot-core/macros-signal.h
@@ -0,0 +1,161 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      macros-signal.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+/* --- GENERIC MACROS ------------------------------------------------------- */
+/* --- GENERIC MACROS ------------------------------------------------------- */
+/* --- GENERIC MACROS ------------------------------------------------------- */
+
+#define SOT_CALL_SIG(sotName,sotType)          \
+  boost::bind(&Signal<sotType,int>::access, \
+	      &sotName,_2)
+
+/* --- STATIC MACROS -------------------------------------------------------- */
+/* --- STATIC MACROS -------------------------------------------------------- */
+/* --- STATIC MACROS -------------------------------------------------------- */
+
+#define SOT_INIT_SIGNAL_1(sotFunction,             \
+			  sotArg1,sotArg1Type)     \
+boost::bind(&sotFunction,                          \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),_1), \
+  sotArg1
+
+#define SOT_INIT_SIGNAL_2(sotFunction,             \
+			  sotArg1,sotArg1Type,     \
+			  sotArg2,sotArg2Type)     \
+boost::bind(&sotFunction,                          \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),     \
+	    SOT_CALL_SIG(sotArg2,sotArg2Type),_1), \
+  sotArg1<<sotArg2
+#define SOT_INIT_SIGNAL_3(sotFunction,             \
+			  sotArg1,sotArg1Type,     \
+			  sotArg2,sotArg2Type,     \
+			  sotArg3,sotArg3Type)     \
+boost::bind(&sotFunction,                          \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),     \
+	    SOT_CALL_SIG(sotArg2,sotArg2Type),     \
+	    SOT_CALL_SIG(sotArg3,sotArg3Type),_1), \
+  sotArg1<<sotArg2<<sotArg3
+
+#define SOT_INIT_SIGNAL_4(sotFunction,             \
+			  sotArg1,sotArg1Type,     \
+			  sotArg2,sotArg2Type,     \
+			  sotArg3,sotArg3Type,     \
+			  sotArg4,sotArg4Type)     \
+boost::bind(&sotFunction,                          \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),     \
+	    SOT_CALL_SIG(sotArg2,sotArg2Type),     \
+	    SOT_CALL_SIG(sotArg3,sotArg3Type),     \
+	    SOT_CALL_SIG(sotArg4,sotArg4Type),_1), \
+  sotArg1<<sotArg2<<sotArg3<<sotArg4
+
+#define SOT_INIT_SIGNAL_5(sotFunction,             \
+			  sotArg1,sotArg1Type,     \
+			  sotArg2,sotArg2Type,     \
+			  sotArg3,sotArg3Type,     \
+			  sotArg4,sotArg4Type,     \
+			  sotArg5,sotArg5Type)     \
+boost::bind(&sotFunction,                          \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),     \
+	    SOT_CALL_SIG(sotArg2,sotArg2Type),     \
+	    SOT_CALL_SIG(sotArg3,sotArg3Type),     \
+	    SOT_CALL_SIG(sotArg4,sotArg4Type),     \
+	    SOT_CALL_SIG(sotArg5,sotArg5Type),_1), \
+  sotArg1<<sotArg2<<sotArg3<<sotArg4<<sotArg5
+
+#define SOT_INIT_SIGNAL_6(sotFunction,             \
+			  sotArg1,sotArg1Type,     \
+			  sotArg2,sotArg2Type,     \
+			  sotArg3,sotArg3Type,     \
+			  sotArg4,sotArg4Type,     \
+			  sotArg5,sotArg5Type,     \
+			  sotArg6,sotArg6Type)     \
+boost::bind(&sotFunction,                          \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),     \
+	    SOT_CALL_SIG(sotArg2,sotArg2Type),     \
+	    SOT_CALL_SIG(sotArg3,sotArg3Type),     \
+	    SOT_CALL_SIG(sotArg4,sotArg4Type),     \
+	    SOT_CALL_SIG(sotArg5,sotArg5Type),     \
+	    SOT_CALL_SIG(sotArg6,sotArg6Type),_1), \
+  sotArg1<<sotArg2<<sotArg3<<sotArg4<<sotArg5<<sotArg6
+
+#define SOT_INIT_SIGNAL_7(sotFunction,             \
+			  sotArg1,sotArg1Type,     \
+			  sotArg2,sotArg2Type,     \
+			  sotArg3,sotArg3Type,     \
+			  sotArg4,sotArg4Type,     \
+			  sotArg5,sotArg5Type,     \
+			  sotArg6,sotArg6Type,     \
+			  sotArg7,sotArg7Type)     \
+boost::bind(&sotFunction,                          \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),     \
+	    SOT_CALL_SIG(sotArg2,sotArg2Type),     \
+	    SOT_CALL_SIG(sotArg3,sotArg3Type),     \
+	    SOT_CALL_SIG(sotArg4,sotArg4Type),     \
+	    SOT_CALL_SIG(sotArg5,sotArg5Type),     \
+	    SOT_CALL_SIG(sotArg6,sotArg6Type),     \
+	    SOT_CALL_SIG(sotArg7,sotArg7Type),_1), \
+  sotArg1<<sotArg2<<sotArg3<<sotArg4<<sotArg5<<sotArg6<<sotArg7
+
+/* --- MEMBERS MACROS ------------------------------------------------------- */
+/* --- MEMBERS MACROS ------------------------------------------------------- */
+/* --- MEMBERS MACROS ------------------------------------------------------- */
+
+
+#define SOT_MEMBER_SIGNAL_1(sotFunction,             \
+			    sotArg1,sotArg1Type)    \
+boost::bind(&sotFunction,this,                       \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),_1),   \
+  sotArg1
+
+#define SOT_MEMBER_SIGNAL_2(sotFunction,             \
+			    sotArg1,sotArg1Type,     \
+			    sotArg2,sotArg2Type)     \
+boost::bind(&sotFunction,this,                       \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),       \
+	    SOT_CALL_SIG(sotArg2,sotArg2Type),_1),   \
+  sotArg1<<sotArg2
+#define SOT_MEMBER_SIGNAL_5(sotFunction,             \
+			    sotArg1,sotArg1Type,     \
+			    sotArg2,sotArg2Type,     \
+			    sotArg3,sotArg3Type,     \
+			    sotArg4,sotArg4Type,     \
+			    sotArg5,sotArg5Type)     \
+boost::bind(&sotFunction,this,                       \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),       \
+	    SOT_CALL_SIG(sotArg2,sotArg2Type),       \
+	    SOT_CALL_SIG(sotArg3,sotArg3Type),       \
+	    SOT_CALL_SIG(sotArg4,sotArg4Type),       \
+	    SOT_CALL_SIG(sotArg5,sotArg5Type),_1),   \
+  sotArg1<<sotArg2<<sotArg3<<sotArg4<<sotArg5
+
+#define SOT_MEMBER_SIGNAL_6(sotFunction,             \
+			    sotArg1,sotArg1Type,     \
+			    sotArg2,sotArg2Type,     \
+			    sotArg3,sotArg3Type,     \
+			    sotArg4,sotArg4Type,     \
+			    sotArg5,sotArg5Type,     \
+			    sotArg6,sotArg6Type)     \
+boost::bind(&sotFunction,this,                       \
+	    SOT_CALL_SIG(sotArg1,sotArg1Type),       \
+	    SOT_CALL_SIG(sotArg2,sotArg2Type),       \
+	    SOT_CALL_SIG(sotArg3,sotArg3Type),       \
+	    SOT_CALL_SIG(sotArg4,sotArg4Type),       \
+	    SOT_CALL_SIG(sotArg5,sotArg5Type),       \
+	    SOT_CALL_SIG(sotArg6,sotArg6Type),_1),   \
+  sotArg1<<sotArg2<<sotArg3<<sotArg4<<sotArg5<<sotArg6
diff --git a/include/sot-core/sotMatrixConstant.h b/include/sot-core/matrix-constant.h
similarity index 97%
rename from include/sot-core/sotMatrixConstant.h
rename to include/sot-core/matrix-constant.h
index d1e1af9e9160ff23a574964d855a0798822b8d9b..ef0c264f30483a9d8f9fad796344a15a86673f65 100644
--- a/include/sot-core/sotMatrixConstant.h
+++ b/include/sot-core/matrix-constant.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotMatrixConstant.h
+ * File:      matrix-constant.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
diff --git a/include/sot-core/sotMatrixForce.h b/include/sot-core/matrix-force.h
similarity index 98%
rename from include/sot-core/sotMatrixForce.h
rename to include/sot-core/matrix-force.h
index 3a09ce46096ee75673d96281d6160758d254d82e..ca89c9e9811a5a0a84b0fce39f26b032f250bb04 100644
--- a/include/sot-core/sotMatrixForce.h
+++ b/include/sot-core/matrix-force.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotMatrixForce.h
+ * File:      matrix-force.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
diff --git a/include/sot-core/sotMatrixHomogeneous.h b/include/sot-core/matrix-homogeneous.h
similarity index 97%
rename from include/sot-core/sotMatrixHomogeneous.h
rename to include/sot-core/matrix-homogeneous.h
index f5087edb515ce2061b28eb8542470d937cdc2747..e46c062e1731b4ef7f2834c1e676d0ed501d685e 100644
--- a/include/sot-core/sotMatrixHomogeneous.h
+++ b/include/sot-core/matrix-homogeneous.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotMatrixHomogeneous.h
+ * File:      matrix-homogeneous.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
diff --git a/include/sot-core/sotMatrixRotation.h b/include/sot-core/matrix-rotation.h
similarity index 97%
rename from include/sot-core/sotMatrixRotation.h
rename to include/sot-core/matrix-rotation.h
index 3ec591cafa1e7d1d2ab1761313db8bcaec39f21f..f558d40c2c86e6d8e6c813c5f1bc27d8c6ff6913 100644
--- a/include/sot-core/sotMatrixRotation.h
+++ b/include/sot-core/matrix-rotation.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotMatrixRotation.h
+ * File:      matrix-rotation.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
diff --git a/include/sot-core/sotMatrixTwist.h b/include/sot-core/matrix-twist.h
similarity index 98%
rename from include/sot-core/sotMatrixTwist.h
rename to include/sot-core/matrix-twist.h
index 2c164f4aec0a4647cf27c11b2e9cc40805ad3e7e..9e6a1f530c651ff02b900e8abf5026e2fca6795c 100644
--- a/include/sot-core/sotMatrixTwist.h
+++ b/include/sot-core/matrix-twist.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotMatrixTwist.h
+ * File:      matrix-twist.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
diff --git a/include/sot-core/sotOpPointModifior.h b/include/sot-core/op-point-modifier.h
similarity index 96%
rename from include/sot-core/sotOpPointModifior.h
rename to include/sot-core/op-point-modifier.h
index 6e852516f65b025c3888ca878b071c92a372a081..4b256d7c6f06e505e2ae10731999426029ed79da 100644
--- a/include/sot-core/sotOpPointModifior.h
+++ b/include/sot-core/op-point-modifier.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotOpPointModifior.h
+ * File:      op-point-modifier.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -24,7 +24,7 @@
 
 #include <dynamic-graph/all-signals.h>
 #include <sot-core/sotDebug.h>
-#include <sot-core/sotMatrixHomogeneous.h>
+#include <sot-core/matrix-homogeneous.h>
 
 /* Matrix */
 #include <MatrixAbstractLayer/boost.h>
diff --git a/include/sot-core/pool.h b/include/sot-core/pool.h
new file mode 100644
index 0000000000000000000000000000000000000000..7f21be7a4161fb10a2f161a36a4724c84a3102cc
--- /dev/null
+++ b/include/sot-core/pool.h
@@ -0,0 +1,144 @@
+
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      pool.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+
+#ifndef __SOT_POOL_HH__
+#define __SOT_POOL_HH__
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+/* --- STD --- */
+#include <map>
+#include <string>
+#include <sstream>
+
+/* --- SOT --- */
+#include <sot-core/exception-factory.h>
+#include <dynamic-graph/signal-base.h>
+#include <sot-core/sot-core-api.h>
+#include <dynamic-graph/pool.h>
+
+class sotFeatureAbstract;
+class sotTaskAbstract;
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+/*! @ingroup factory
+  \brief This class keep tracks of all the objects in the stack of Tasks.
+
+  Three kinds of objects are handled:
+  \li The controllers, i.e. the tasks which inherits from sotTaskAbstract.
+  \li The features, i.e. the information which inherits from sotFeatureAbstract.
+
+  \li Any object which need to be inside the SoT and which inherits from Entity.
+
+  This class provides the necessary operations to register, unregister each
+  instance of thoses classes.
+  As tasks and features derived from Entities, they should be registered
+  as such.
+
+  \note From the code it is not very clear why we should not unregister
+  from the tasks and the features...
+
+  The role of this class is also to look for the object supporting
+  a command, and to apply this command.
+
+  It also returns references to signals from their fully-qualified names.
+ */
+class SOT_CORE_EXPORT sotPoolStorage
+{
+ public:
+  /*! \name Define types to simplify the writing
+    @{
+   */
+  /*! \brief Sorted set of tasks with unique key (name). */
+  typedef std::map< std::string,sotTaskAbstract* > Tasks;
+
+  /*! \brief Sorted set of features with unique key (name). */
+  typedef std::map< std::string,sotFeatureAbstract* > Features;
+  /*! @} */
+
+ protected:
+  /*! \name Fields of the class to manage the three entities.
+    Also the name is singular, those are true sets.
+    @{
+  */
+
+  /*! \brief Set of controllers */
+  Tasks task;
+
+  /*! \brief Set of features */
+  Features feature;
+  /*! @} */
+
+ public:
+  /*! \brief Default destructor */
+  ~sotPoolStorage( void );
+
+  /*! \name Methods related to the handling of the features
+    @{
+   */
+  /*! \brief Registering a feature. */
+  void registerFeature( const std::string& entname,sotFeatureAbstract* ent );
+
+  /*! \brief Get a reference to a feature. */
+  sotFeatureAbstract& getFeature( const std::string& name );
+  /*! @} */
+
+  /*! \name Methods related to the handling of the tasks
+    @{
+   */
+  /*! \brief Registering a task. */
+  void registerTask( const std::string& entname,sotTaskAbstract* ent );
+  /*! \brief Get a reference to a task. */
+  sotTaskAbstract& getTask( const std::string& name );
+  /*! @} */
+
+  /*! \brief This method looks for the object named objectName,
+    and ask to provide the function functionName with the arguments cmdArg.
+    If the method of the object displays some information this will
+    be done on os.
+
+    The commands specific to the <b>pool<\b> object are:
+    \li <b>list</b> : List all the entities registered in the pool.
+    \li <b>listFeature</b> : List all the features registered in the pool.
+    \li <b>listTask</b> : List all the tasks registered in the pool.
+  */
+  void commandLine( const std::string& objectName,const std::string& functionName,
+		    std::istringstream& cmdArg, std::ostream& os );
+
+  /*! \brief This method write a graph description on the file named FileName. */
+  void writeGraph(const std::string &aFileName);
+  void writeCompletionList(std::ostream& os);
+};
+
+
+SOT_CORE_EXPORT extern sotPoolStorage sotPool;
+
+#endif /* #ifndef __SOT_POOL_HH__ */
+
+
+
+
diff --git a/include/sot-core/signal-cast.h b/include/sot-core/signal-cast.h
new file mode 100644
index 0000000000000000000000000000000000000000..ad8b51b6d9696bb9d4d10ba0c3a03403ae798b9f
--- /dev/null
+++ b/include/sot-core/signal-cast.h
@@ -0,0 +1,201 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      SignalCast.h
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+
+#ifndef __SOT_SIGNAL_CAST_HH__
+#define __SOT_SIGNAL_CAST_HH__
+
+
+#include <sot-core/sotFlags.h>
+#include <MatrixAbstractLayer/boost.h>
+#include <sot-core/matrix-homogeneous.h>
+#include <sot-core/matrix-twist.h>
+#include <sot-core/vector-utheta.h>
+#include <sot-core/vector-quaternion.h>
+#include <sot-core/vector-roll-pitch-yaw.h>
+#include <sot-core/matrix-force.h>
+#include <sot-core/sotMultiBound.h>
+#include <sot-core/sot-core-api.h>
+#ifdef WIN32
+#include <sot-core/sotUtilsWindows.h>
+#endif
+#include <dynamic-graph/signal-caster.h>
+
+/* -------------------------------------------------------------------------- */
+/* --- CLASS ---------------------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+class sotFeatureAbstract;
+
+
+/*!
+ * This class is only used to group together static functions who differ by
+ * a template parameter. It is never actually instanced (the private constructor
+ * makes sure of that).
+ */
+template< class T >
+class SignalCast
+{
+public:
+  SOT_CORE_EXPORT static T cast( std::istringstream& stringValue ) { throw 1;}
+  SOT_CORE_EXPORT static void disp( const T& t,std::ostream& os )  { throw 1;  }
+  SOT_CORE_EXPORT static void trace( const T& t,std::ostream& os ) { disp(t,os); }
+public:
+  // adapter functions for SignalCast
+  static boost::any cast_( std::istringstream& stringValue ) {
+	  return boost::any_cast<T>(cast(stringValue));
+  }
+  static void disp_( const boost::any& t,std::ostream& os )  {
+	  disp(boost::any_cast<T>(t), os);
+  }
+  static void trace_( const boost::any& t,std::ostream& os ) {
+	  trace(boost::any_cast<T>(t),os);
+  }
+private:
+  SignalCast() {}
+};
+
+
+/* -------------------------------------------------------------------------- */
+/* --- MACROS --------------------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+
+/* Declaration macro: one instance of each class needs to be present in
+ * order for casts to be registered.
+ */
+
+#define SOT_SIGNAL_CAST_DECLARATION(TYPE) \
+		SignalCastRegisterer sotCastRegisterer_##TYPE \
+				(typeid(TYPE), \
+				SignalCast<TYPE>::disp_, \
+				SignalCast<TYPE>::cast_, \
+				SignalCast<TYPE>::trace_);
+
+#define SOT_SIGNAL_CAST_DECLARATION_NAMED(TYPE,NAME) \
+		SignalCastRegisterer sotCastRegisterer_##NAME \
+				(typeid(TYPE), \
+				SignalCast<TYPE>::disp_, \
+				SignalCast<TYPE>::cast_, \
+				SignalCast<TYPE>::trace_);
+
+/* Standard definition macros: the three functions can be specified
+ * in the macros. To define then in the cpp, just put ';' in the args.
+ */
+#define SOT_SIGNAL_CAST_FULL_DEFINITION(TYPE,CAST,DISP,TRACE)            \
+template<>                                                               \
+class SignalCast<TYPE>												\
+{                                                                        \
+public:                                                                  \
+    SOT_CORE_EXPORT static TYPE cast( std::istringstream& iss )         CAST         \
+    SOT_CORE_EXPORT static void disp( const TYPE& t,std::ostream& os )  DISP         \
+    SOT_CORE_EXPORT static void trace( const TYPE& t,std::ostream& os ) TRACE        \
+public:            																\
+	static boost::any cast_( std::istringstream& stringValue ) {           		\
+		  return boost::any_cast<TYPE>(cast(stringValue));           			\
+	}            																\
+	static void disp_( const boost::any& t,std::ostream& os )  {       			\
+	  disp(boost::any_cast<TYPE>(t), os);         								\
+	}            																\
+	static void trace_( const boost::any& t,std::ostream& os ) {      			\
+		  trace(boost::any_cast<TYPE>(t),os);      							    \
+	}          																	\
+}
+
+/* Standard definition macros: the functions <cast> and <disp> have
+ * to be implemented in the cpp files. The function <trace> is
+ * implemented as a proxy on <disp>.
+ */
+#define SOT_SIGNAL_CAST_DEFINITION_HPP(TYPE)                             \
+ SOT_SIGNAL_CAST_FULL_DEFINITION(TYPE,;,;,{ disp(t,os); })
+
+/* Lazy definition: <cast> and <disp> are to proxys on the standard
+ * std input (>>) and output (<<). The function <trace> has to be 
+ * implemented in the cpp.
+ */
+#define SOT_SIGNAL_CAST_DEFINITION_TRACE_HPP(TYPE,TRACE)                 \
+ SOT_SIGNAL_CAST_FULL_DEFINITION(TYPE,                                   \
+ {TYPE res; iss >> res; return res; },                                   \
+ { os << t <<std::endl; },                                               \
+ TRACE )
+
+/* Lazy lazy definition: the three functions are implemented as
+ * proxys on std::io operation. 
+ */
+#define SOT_SIGNAL_CAST_DEFINITION(TYPE)                                 \
+ SOT_SIGNAL_CAST_FULL_DEFINITION(TYPE,                                   \
+ {TYPE res; iss >> res; return res; },                                   \
+ { os << t <<std::endl; },                                               \
+ { disp(t,os); })
+
+/* Lazy definition of <cast> and <disp> with implementation of
+ * <trace> in the cpp. 
+ */
+#define SOT_SIGNAL_CAST_DEFINITION_TRACE(TYPE)         \
+ SOT_SIGNAL_CAST_FULL_DEFINITION(TYPE,                                   \
+ {TYPE res; iss >> res; return res; },                                   \
+ { os << t <<std::endl; },                                               \
+ ;)
+
+/* -------------------------------------------------------------------------- */
+/* --- MACROS --------------------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+
+/* --- OTHER --- */
+SOT_SIGNAL_CAST_DEFINITION(sotFlags);
+SOT_SIGNAL_CAST_DEFINITION_TRACE(sotVectorMultiBound);
+
+typedef sotFeatureAbstract* SignalCast_sotFeatureAbstractPtr  ;
+
+SOT_SIGNAL_CAST_DEFINITION_HPP( SignalCast_sotFeatureAbstractPtr );
+SOT_SIGNAL_CAST_DEFINITION_HPP( struct timeval );
+
+/* --- Matrices and Vectors --- */
+#define SOT_SIGNAL_CAST_DEFINITION_MATRIX(TYPE)         \
+SOT_SIGNAL_CAST_FULL_DEFINITION(TYPE,{TYPE res; iss >> res; return res; }, \
+                                { SignalCast<ml::Matrix>::disp(t,os); }, \
+                                { SignalCast<ml::Matrix>::trace(t,os); })
+//SOT_SIGNAL_CAST_DEFINITION_TRACE_HPP(TYPE,{ SignalCast<ml::Matrix>::trace(t,os); })
+
+#define SOT_SIGNAL_CAST_DEFINITION_VECTOR(TYPE)         \
+SOT_SIGNAL_CAST_FULL_DEFINITION(TYPE,{TYPE res; iss >> res; return res; }, \
+                                { SignalCast<ml::Vector>::disp(t,os); }, \
+                                { SignalCast<ml::Vector>::trace(t,os); })
+//SOT_SIGNAL_CAST_DEFINITION_TRACE_HPP(TYPE,{ SignalCast<ml::Vector>::trace(t,os); })
+
+SOT_SIGNAL_CAST_FULL_DEFINITION(maal::boost::Vector,; SOT_CORE_EXPORT static maal::boost::DisplayType displayType;,;,;);
+SOT_SIGNAL_CAST_FULL_DEFINITION(maal::boost::Matrix,;,;,;);
+
+/* All the followings are defined with proxys on the equivalent
+ * functions ml:: based.
+ */
+SOT_SIGNAL_CAST_DEFINITION_VECTOR(sotVectorUTheta);
+SOT_SIGNAL_CAST_DEFINITION_VECTOR(sotVectorQuaternion);
+SOT_SIGNAL_CAST_DEFINITION_VECTOR(sotVectorRollPitchYaw);
+SOT_SIGNAL_CAST_DEFINITION_MATRIX(sotMatrixRotation);
+SOT_SIGNAL_CAST_DEFINITION_MATRIX(sotMatrixHomogeneous);
+SOT_SIGNAL_CAST_DEFINITION_MATRIX(sotMatrixTwist);
+SOT_SIGNAL_CAST_DEFINITION_MATRIX(sotMatrixForce);
+
+
+
+
+#endif // #ifndef __SOT_SIGNAL_CAST_HH__
+
+
+
diff --git a/include/sot-core/sotFeatureLineDistance.h b/include/sot-core/sotFeatureLineDistance.h
index 3651fd24cf9874898b6cc7be5b7104e3277c32ec..f2d03acca89941459f5650795a873743cd659eb9 100644
--- a/include/sot-core/sotFeatureLineDistance.h
+++ b/include/sot-core/sotFeatureLineDistance.h
@@ -28,7 +28,7 @@
 /* SOT */
 #include <sot-core/sotFeatureAbstract.h>
 #include <sot-core/exception-task.h>
-#include <sot-core/sotMatrixHomogeneous.h>
+#include <sot-core/matrix-homogeneous.h>
 
 /* --------------------------------------------------------------------- */
 /* --- API ------------------------------------------------------------- */
diff --git a/include/sot-core/sotFeaturePoint6d.h b/include/sot-core/sotFeaturePoint6d.h
index 8c017f1626dc215b55ad9b1eef4677e13d654717..887c4e4914c66cec14515807d522de7e77149362 100644
--- a/include/sot-core/sotFeaturePoint6d.h
+++ b/include/sot-core/sotFeaturePoint6d.h
@@ -28,7 +28,7 @@
 /* SOT */
 #include <sot-core/sotFeatureAbstract.h>
 #include <sot-core/exception-task.h>
-#include <sot-core/sotMatrixHomogeneous.h>
+#include <sot-core/matrix-homogeneous.h>
 
 /* --------------------------------------------------------------------- */
 /* --- API ------------------------------------------------------------- */
diff --git a/include/sot-core/sotFeaturePoint6dRelative.h b/include/sot-core/sotFeaturePoint6dRelative.h
index 1ed3deacd5e14292bb67b7db9d58b327e4b97697..cdb9b5113a2c7c1f51471fd7fdd84261499f6b11 100644
--- a/include/sot-core/sotFeaturePoint6dRelative.h
+++ b/include/sot-core/sotFeaturePoint6dRelative.h
@@ -29,7 +29,7 @@
 #include <sot-core/sotFeatureAbstract.h>
 #include <sot-core/sotFeaturePoint6d.h>
 #include <sot-core/exception-task.h>
-#include <sot-core/sotVectorUTheta.h>
+#include <sot-core/vector-utheta.h>
 
 /* --------------------------------------------------------------------- */
 /* --- API ------------------------------------------------------------- */
diff --git a/include/sot-core/sotFeatureVector3.h b/include/sot-core/sotFeatureVector3.h
index de61b19b01c03179e423f9e77df60a651244e404..da3bd622320af5d9140995d4f60479ef8a5b6c98 100644
--- a/include/sot-core/sotFeatureVector3.h
+++ b/include/sot-core/sotFeatureVector3.h
@@ -28,7 +28,7 @@
 /* SOT */
 #include <sot-core/sotFeatureAbstract.h>
 #include <sot-core/exception-task.h>
-#include <sot-core/sotMatrixHomogeneous.h>
+#include <sot-core/matrix-homogeneous.h>
 
 /* --------------------------------------------------------------------- */
 /* --- API ------------------------------------------------------------- */
diff --git a/include/sot-core/sotUnaryOp.h b/include/sot-core/unary-op.h
similarity index 98%
rename from include/sot-core/sotUnaryOp.h
rename to include/sot-core/unary-op.h
index 358051eb036fb2ddf8d949b6358a265fdda6f2bb..c21280f52f8f7201a4705d22b99c789027fa1a69 100644
--- a/include/sot-core/sotUnaryOp.h
+++ b/include/sot-core/unary-op.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotUnaryOp.h
+ * File:      unary-op.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
diff --git a/include/sot-core/sotVectorConstant.h b/include/sot-core/vector-constant.h
similarity index 97%
rename from include/sot-core/sotVectorConstant.h
rename to include/sot-core/vector-constant.h
index 41badbdd460dbf0a3c3682f89f7186c977234c28..b39ec1016eb527a90b7ef78b1920f6befa3a917e 100644
--- a/include/sot-core/sotVectorConstant.h
+++ b/include/sot-core/vector-constant.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotVectorConstant.h
+ * File:      vector-constant.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
diff --git a/include/sot-core/sotVectorQuaternion.h b/include/sot-core/vector-quaternion.h
similarity index 94%
rename from include/sot-core/sotVectorQuaternion.h
rename to include/sot-core/vector-quaternion.h
index 8c3dd604e2da50a2c31fed6c3b0817e1dcf02cde..8d4771acd861896b06b15c374960aaf547c2534b 100644
--- a/include/sot-core/sotVectorQuaternion.h
+++ b/include/sot-core/vector-quaternion.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotVectorQuaternion.h
+ * File:      vector-quaternion.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -21,7 +21,7 @@
 #define __SOT_VECTOR_QUATERNION_H__
 
 /* --- SOT --- */
-#include <sot-core/sotVectorRotation.h>
+#include <sot-core/vector-rotation.h>
 #include <sot-core/sot-core-api.h>
 
 /* --------------------------------------------------------------------- */
diff --git a/include/sot-core/sotVectorRollPitchYaw.h b/include/sot-core/vector-roll-pitch-yaw.h
similarity index 93%
rename from include/sot-core/sotVectorRollPitchYaw.h
rename to include/sot-core/vector-roll-pitch-yaw.h
index 54f2ce363241fa1f3039fec47230c7c5680c3440..5fecfa041940e6b851f8a6c332b3c4cf30e58b4c 100644
--- a/include/sot-core/sotVectorRollPitchYaw.h
+++ b/include/sot-core/vector-roll-pitch-yaw.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotVectorRollPitchYaw.h
+ * File:      vector-roll-pitch-yaw.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -21,7 +21,7 @@
 #define __SOT_VECTOR_ROLLPITCHYAW_H__
 
 /* --- SOT --- */
-#include <sot-core/sotVectorRotation.h>
+#include <sot-core/vector-rotation.h>
 #include <sot-core/sot-core-api.h>
 
 /* --------------------------------------------------------------------- */
diff --git a/include/sot-core/sotVectorRotation.h b/include/sot-core/vector-rotation.h
similarity index 94%
rename from include/sot-core/sotVectorRotation.h
rename to include/sot-core/vector-rotation.h
index 964a33ee6b84b47ceced30b5336babe2ff06d8f4..9da8469e2e59f7afaa99e78584cd314da76ae33e 100644
--- a/include/sot-core/sotVectorRotation.h
+++ b/include/sot-core/vector-rotation.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotVectorRotation.h
+ * File:      vector-rotation.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -25,7 +25,7 @@
 namespace ml = maal::boost;
 
 /* --- SOT --- */
-#include <sot-core/sotMatrixRotation.h>
+#include <sot-core/matrix-rotation.h>
 #include <sot-core/sot-core-api.h>
 
 /* --------------------------------------------------------------------- */
diff --git a/include/sot-core/sotVectorToRotation.h b/include/sot-core/vector-to-rotation.h
similarity index 95%
rename from include/sot-core/sotVectorToRotation.h
rename to include/sot-core/vector-to-rotation.h
index d9302d87b872bb2417c6d195274e8040527c0720..20a4e9ae30ca02feb7d951d0f3d8b5c45c216f67 100644
--- a/include/sot-core/sotVectorToRotation.h
+++ b/include/sot-core/vector-to-rotation.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotVectorToRotation.h
+ * File:      vector-to-rotation.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -23,7 +23,7 @@
 #include <dynamic-graph/entity.h>
 #include <dynamic-graph/all-signals.h>
 #include <dynamic-graph/all-signals.h>
-#include <sot-core/sotMatrixRotation.h>
+#include <sot-core/matrix-rotation.h>
 
 /* Matrix */
 #include <MatrixAbstractLayer/boost.h>
diff --git a/include/sot-core/sotVectorUTheta.h b/include/sot-core/vector-utheta.h
similarity index 93%
rename from include/sot-core/sotVectorUTheta.h
rename to include/sot-core/vector-utheta.h
index 9779cf3cfd0bdc93adb17e0100f93500b808bc72..983d89c03dab3b9b8f2c397fdf700d1eba110d2d 100644
--- a/include/sot-core/sotVectorUTheta.h
+++ b/include/sot-core/vector-utheta.h
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotVectorUTheta.h
+ * File:      vector-utheta.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -21,7 +21,7 @@
 #define __SOT_VECTOR_UTHETA_H__
 
 /* --- SOT --- */
-#include <sot-core/sotVectorRotation.h>
+#include <sot-core/vector-rotation.h>
 #include <sot-core/sot-core-api.h>
 
 /* --------------------------------------------------------------------- */
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2befc6a5b16a261ee5d050c8d092ac435dcc98e8..c757a6bbb44b0f38347966705eb21bd971e65076 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -19,28 +19,28 @@ SET(${LIBRARY_NAME}_SOURCES
 	
 	signal/signal-cast.cpp
 	
-	matrix/sotBinaryOp.cpp
-	matrix/sotDerivator.cpp
-	matrix/sotFIRFilter.cpp
-	matrix/sotIntegratorAbstract.cpp
-	matrix/sotIntegratorEuler.cpp
-	matrix/sotMatrixConstant.cpp
-	matrix/sotUnaryOp.cpp
-	matrix/sotVectorConstant.cpp
-	matrix/sotVectorToRotation.cpp
+	matrix/binary-op.cpp
+	matrix/derivator.cpp
+	matrix/fir-filter.cpp
+	matrix/integrator-abstract.cpp
+	matrix/integrator-euler.cpp
+	matrix/matrix-constant.cpp
+	matrix/unary-op.cpp
+	matrix/vector-constant.cpp
+	matrix/vector-to-rotation.cpp
 	
 	factory/additional-functions.cpp
 	factory/factory.cpp
 	factory/pool.cpp
 	
-	math/sotMatrixForce.cpp
-	math/sotMatrixHomogeneous.cpp
-	math/sotMatrixRotation.cpp
-	math/sotMatrixTwist.cpp
-	math/sotOpPointModifior.cpp
-	math/sotVectorQuaternion.cpp
-	math/sotVectorRollPitchYaw.cpp
-	math/sotVectorUTheta.cpp
+	math/matrix-force.cpp
+	math/matrix-homogeneous.cpp
+	math/matrix-rotation.cpp
+	math/matrix-twist.cpp
+	math/op-point-modifior.cpp
+	math/vector-quaternion.cpp
+	math/vector-roll-pitch-yaw.cpp
+	math/vector-utheta.cpp
 	
 	feature/sotFeaturePoint6d.cpp
 	feature/sotFeatureVector3.cpp
diff --git a/src/debug/contiifstream.cpp b/src/debug/contiifstream.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..43c78d49fd6a3e0bcba28a7c4bfa57a0c99622e0
--- /dev/null
+++ b/src/debug/contiifstream.cpp
@@ -0,0 +1,77 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotContiifstream.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+#include <sot-core/sotContiifstream.h>
+#include <sot-core/sotDebug.h>
+
+sotContiifstream::
+sotContiifstream( const std::string& n )
+  :filename(n),cursor(0),first(true) {}
+
+
+sotContiifstream::
+~sotContiifstream( void )
+{
+  sotDEBUGINOUT(5);
+}
+
+
+bool sotContiifstream::
+loop( void )
+{
+  sotDEBUGIN(25);
+  bool res=false;
+  
+  std::fstream file( filename.c_str() );
+
+  file.seekg(cursor);
+  file.sync();
+      
+  while(1)
+    {
+      file.get(buffer,BUFFER_SIZE);
+      if( file.gcount() ) 
+	{ 
+	  res=true;
+	  std::string line(buffer);
+	  if(! first) reader.push_back(line);
+	  cursor=file.tellg(); cursor++;
+	  file.get(*buffer); // get the last char ( = '\n')
+	  sotDEBUG(15) << "line: "<< line<<std::endl;
+	}
+      else { break; }
+    }
+
+  first=false;
+  sotDEBUGOUT(25);
+  return res;
+}
+
+std::string 
+sotContiifstream::next( void ) 
+{
+  std::string res = *reader.begin();
+  reader.pop_front();
+  return res;
+}
+
+
+
+
+
diff --git a/src/debug/debug.cpp b/src/debug/debug.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b6a7517980f17d2248616b5c33c7e02d3aba79fb
--- /dev/null
+++ b/src/debug/debug.cpp
@@ -0,0 +1,86 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet Lagadic, 2005
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotDebug.h
+ * Project:   STack of Tasks
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ * Macro de trace et de debugage
+ *
+ *   - TRACAGE:    TRACE et ERROR_TRACE fonctionnent comme des printf
+ * avec retour chariot en fin de fonction.
+ *                 CERROR et CTRACE fonctionnent comme les flux de sortie
+ * C++ cout et cerr.
+ *   - DEBUGAGE:   DEBUG_TRACE(niv,  et DERROR_TRACE(niv, fonctionnent
+ * comme des printf, n'imprimant que si le niveau de trace 'niv' est
+ * superieur au mode de debugage VP_DEBUG_MODE.
+ *                 CDEBUG(niv) fonctionne comme le flux de sortie C++ cout.
+ *                 DEBUG_ENABLE(niv) vaut 1 ssi le niveau de tracage 'niv'
+ * est superieur au  mode de debugage DEBUG_MODE. Il vaut 0 sinon.
+ *   - PROG DEFENSIVE: DEFENSIF(a) vaut a ssi le mode defensif est active,
+ * et vaut 0 sinon.
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+#include <sot-core/sotDebug.h>
+#include <fstream>
+#include <ios>
+
+#ifdef WIN32
+const char * sotDebugTrace::DEBUG_FILENAME_DEFAULT = "c:/tmp/traces.txt";
+#else	/*WIN32*/
+const char * sotDebugTrace::DEBUG_FILENAME_DEFAULT = "/tmp/traces.txt";
+#endif	/*WIN32*/
+
+
+
+#ifdef VP_DEBUG
+ #ifdef WIN32
+  std::ofstream debugfile( "C:/tmp/traces.txt", std::ios::trunc&std::ios::out );
+ #else	/*WIN32*/
+  std::ofstream debugfile( "/tmp/traces.txt", std::ios::trunc&std::ios::out );
+#endif	/*WIN32*/
+#else
+std::ofstream debugfile; //( "/dev/null", std::ios::trunc&std::ios::out );
+ class __sotDebug_init
+ {
+ public:
+   __sotDebug_init( void ) 
+     { debugfile.setstate( std::ios::failbit ) ; /* debugfile.close(); */ }
+ };
+ __sotDebug_init __sotDebug_initialisator;
+
+#endif
+
+sotDebugTrace sotDEBUGFLOW(debugfile);
+sotDebugTrace sotERRORFLOW(debugfile);
+
+
+void sotDebugTrace::openFile( const char * filename )
+{
+  if( debugfile.good()&&debugfile.is_open() ) debugfile.close();
+  debugfile.clear();
+  debugfile.open( filename, std::ios::trunc&std::ios::out );
+  //std::cout << filename << debugfile.good() << debugfile.is_open() << std::endl;
+}
+
+void sotDebugTrace::closeFile( const char * filename )
+{
+  if( debugfile.good()&&debugfile.is_open() ) { debugfile.close(); }
+  debugfile.setstate( std::ios::failbit ) ;
+}
+
+
+//sotDebugTrace sotDEBUGFLOW(std::cout);
+//sotDebugTrace sotERRORFLOW(std::cerr);
+
diff --git a/src/exception/exception-abstract.cpp b/src/exception/exception-abstract.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..85e705dc0a04b23e255f6b58e5c2baaf78ae8842
--- /dev/null
+++ b/src/exception/exception-abstract.cpp
@@ -0,0 +1,128 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotExceptionAbstract.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+
+#include <sot-core/exception-abstract.h>
+#include <sot-core/sotDebug.h>
+
+using namespace std;
+
+/* ------------------------------------------------------------------------- */
+/* --- CONSTRUCTORS -------------------------------------------------------- */
+/* ------------------------------------------------------------------------- */
+
+const std::string sotExceptionAbstract::EXCEPTION_NAME = "Abstract";
+
+
+sotExceptionAbstract::
+sotExceptionAbstract (const int& _code,
+		      const string & _msg)
+    :
+    code (_code),
+    message (_msg)
+
+{
+    return ;
+
+}
+
+/* ------------------------------------------------------------------------ */
+/* --- ACCESSORS ---------------------------------------------------------- */
+/* ------------------------------------------------------------------------ */
+
+const char *sotExceptionAbstract::
+getMessage (void)
+{
+    return (this->message) .c_str();
+}
+
+const string &sotExceptionAbstract::
+getStringMessage (void)
+{
+    return this->message;
+}
+
+int sotExceptionAbstract::
+getCode (void)
+{
+    return this->code;
+}
+
+
+/* ------------------------------------------------------------------------- */
+/* --- MODIFIORS ----------------------------------------------------------- */
+/* ------------------------------------------------------------------------- */
+#ifdef SOT_EXCEPTION_PASSING_PARAM 
+
+
+sotExceptionAbstract::Param& sotExceptionAbstract::Param::
+initCopy( const Param& p )
+{
+    sotDEBUGIN(25);
+    if( p.pointersSet )
+	{
+	    strncpy( function,p.functionPTR,BUFFER_SIZE);
+	    strncpy( file,p.filePTR,BUFFER_SIZE);
+	    line = p.line;
+	    pointersSet=false;
+	    set=true;
+	} else set=false;
+    sotDEBUGOUT(25);
+    return *this;
+}
+sotExceptionAbstract::Param::
+Param( const int& _line, const char * _function, const char * _file )
+    : functionPTR(_function),line(_line),filePTR(_file),pointersSet(true)
+{
+    sotDEBUGINOUT(25);
+}
+#endif //#ifdef SOT_EXCEPTION_PASSING_PARAM 
+
+/* ------------------------------------------------------------------------- */
+/* --- OP << --------------------------------------------------------------- */
+/* ------------------------------------------------------------------------- */
+
+ostream &
+operator << (ostream & os,
+	     const sotExceptionAbstract & error)
+{
+    os << error.getExceptionName()<<"Error [#" << error.code << "]:  " << error.message << endl;
+
+#ifdef SOT_EXCEPTION_PASSING_PARAM 
+    if( error.p.set )
+	os << "Thrown from "<<error.p.file << ": "<<error.p.function
+	   <<" (#"<<error.p.line << ")"<<endl;
+#endif //#ifdef SOT_EXCEPTION_PASSING_PARAM 
+
+    return os;
+}
+
+
+
+
+
+/** \file $Source$
+ */
+
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * End:
+ */
diff --git a/src/exception/exception-dynamic.cpp b/src/exception/exception-dynamic.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5aa538c39cab1d38fcc0516be422e674eccf964a
--- /dev/null
+++ b/src/exception/exception-dynamic.cpp
@@ -0,0 +1,60 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotExceptionDynamic.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+#include <sot-core/exception-dynamic.h>
+#include <stdarg.h>
+#include <cstdio>
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+const std::string sotExceptionDynamic::EXCEPTION_NAME = "Dynamic";
+
+sotExceptionDynamic::
+sotExceptionDynamic ( const sotExceptionDynamic::ErrorCodeEnum& errcode,
+		     const std::string & msg )
+  :sotExceptionAbstract(errcode,msg)
+{
+}
+
+sotExceptionDynamic::
+sotExceptionDynamic ( const sotExceptionDynamic::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... )
+  :sotExceptionAbstract(errcode,msg)
+{
+  va_list args;
+  va_start(args,format);
+
+  const unsigned int SIZE = 256;
+  char  buffer[SIZE];
+  vsnprintf(buffer,SIZE,format,args);
+
+  message += buffer;
+
+  va_end(args);
+}
+
+
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/src/exception/exception-factory.cpp b/src/exception/exception-factory.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6e27c461ae88271cc9a5f50e047de92597f30cd4
--- /dev/null
+++ b/src/exception/exception-factory.cpp
@@ -0,0 +1,69 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotExceptionFactory.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+#include <sot-core/exception-factory.h>
+#include <sot-core/sotDebug.h>
+#include <stdarg.h>
+#include <cstdio>
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+const std::string sotExceptionFactory::EXCEPTION_NAME = "Factory";
+
+sotExceptionFactory::
+sotExceptionFactory ( const sotExceptionFactory::ErrorCodeEnum& errcode,
+		      const std::string & msg )
+  :sotExceptionAbstract(errcode,msg)
+{
+  sotDEBUGF( 15,"Created with message <%s>.",msg.c_str());
+  sotDEBUG( 1) <<"Created with message <%s>."<<msg<<std::endl;
+}
+
+sotExceptionFactory::
+sotExceptionFactory ( const sotExceptionFactory::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... )
+  :sotExceptionAbstract(errcode,msg)
+{
+  va_list args;
+  va_start(args,format);
+
+  const unsigned int SIZE = 256;
+  char  buffer[SIZE];
+  vsnprintf(buffer,SIZE,format,args);
+
+  sotDEBUG(15) <<"Created "<<" with message <"
+	       <<msg<<"> and buffer <"<<buffer<<">. "<<std::endl;
+
+  message += buffer;
+
+  va_end(args);
+
+  sotDEBUG(1) << "Throw exception " << EXCEPTION_NAME << "[#" << errcode<<"]: " 
+	      <<"<"<< message << ">."<<std::endl;
+
+}
+
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/src/exception/exception-feature.cpp b/src/exception/exception-feature.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bf45cbb2150ef2e4c9b35ae858ca9e3b72675976
--- /dev/null
+++ b/src/exception/exception-feature.cpp
@@ -0,0 +1,60 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotExceptionFeature.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+#include <sot-core/exception-feature.h>
+#include <stdarg.h>
+#include <cstdio>
+
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+const std::string sotExceptionFeature::EXCEPTION_NAME = "Feature";
+
+sotExceptionFeature::
+sotExceptionFeature ( const sotExceptionFeature::ErrorCodeEnum& errcode,
+		      const std::string & msg )
+  :sotExceptionAbstract(errcode,msg)
+{
+}
+
+sotExceptionFeature::
+sotExceptionFeature ( const sotExceptionFeature::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... )
+  :sotExceptionAbstract(errcode,msg)
+{
+  va_list args;
+  va_start(args,format);
+
+  const unsigned int SIZE = 256;
+  char  buffer[SIZE];
+  vsnprintf(buffer,SIZE,format,args);
+
+  message = buffer;
+
+  va_end(args);
+}
+
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/src/exception/exception-signal.cpp b/src/exception/exception-signal.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..890c95b712d6b62c7c347c4183c3662153f2a58b
--- /dev/null
+++ b/src/exception/exception-signal.cpp
@@ -0,0 +1,60 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotExceptionSignal.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+#include <sot-core/exception-signal.h>
+#include <stdarg.h>
+#include <cstdio>
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+const std::string sotExceptionSignal::EXCEPTION_NAME = "Signal";
+
+sotExceptionSignal::
+sotExceptionSignal ( const sotExceptionSignal::ErrorCodeEnum& errcode,
+		     const std::string & msg )
+  :sotExceptionAbstract(errcode,msg)
+{
+}
+
+sotExceptionSignal::
+sotExceptionSignal ( const sotExceptionSignal::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... )
+  :sotExceptionAbstract(errcode,msg)
+{
+  va_list args;
+  va_start(args,format);
+
+  const unsigned int SIZE = 256;
+  char  buffer[SIZE];
+  vsnprintf(buffer,SIZE,format,args);
+
+  message += buffer;
+
+  va_end(args);
+}
+
+
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/src/exception/exception-task.cpp b/src/exception/exception-task.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..99c0df6e83549d5c7cdef4975e4a0f085d28e787
--- /dev/null
+++ b/src/exception/exception-task.cpp
@@ -0,0 +1,60 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotExceptionTask.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+#include <sot-core/exception-task.h>
+#include <stdarg.h>
+#include <cstdio>
+
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+const std::string sotExceptionTask::EXCEPTION_NAME = "Task";
+
+sotExceptionTask::
+sotExceptionTask ( const sotExceptionTask::ErrorCodeEnum& errcode,
+		   const std::string & msg )
+  :sotExceptionAbstract(errcode,msg)
+{
+}
+
+sotExceptionTask::
+sotExceptionTask ( const sotExceptionTask::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... )
+  :sotExceptionAbstract(errcode,msg)
+{
+  va_list args;
+  va_start(args,format);
+
+  const unsigned int SIZE = 256;
+  char  buffer[SIZE];
+  vsnprintf(buffer,SIZE,format,args);
+
+  message = buffer;
+
+  va_end(args);
+}
+
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/src/exception/exception-tools.cpp b/src/exception/exception-tools.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2b77b6ddda2c2c98b808eda12df63babf220f45a
--- /dev/null
+++ b/src/exception/exception-tools.cpp
@@ -0,0 +1,60 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotExceptionTools.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+#include <sot-core/exception-tools.h>
+#include <stdarg.h>
+#include <cstdio>
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+const std::string sotExceptionTools::EXCEPTION_NAME = "Tools";
+
+sotExceptionTools::
+sotExceptionTools ( const sotExceptionTools::ErrorCodeEnum& errcode,
+		     const std::string & msg )
+  :sotExceptionAbstract(errcode,msg)
+{
+}
+
+sotExceptionTools::
+sotExceptionTools ( const sotExceptionTools::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... )
+  :sotExceptionAbstract(errcode,msg)
+{
+  va_list args;
+  va_start(args,format);
+
+  const unsigned int SIZE = 256;
+  char  buffer[SIZE];
+  vsnprintf(buffer,SIZE,format,args);
+
+  message += buffer;
+
+  va_end(args);
+}
+
+
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/src/exception/exception-traces.cpp b/src/exception/exception-traces.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..38c46fc83ab08f4d0b781c4aed71bbcb5d116a85
--- /dev/null
+++ b/src/exception/exception-traces.cpp
@@ -0,0 +1,60 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotExceptionTraces.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+#include <sot-core/exception-traces.h>
+#include <stdarg.h>
+#include <cstdio>
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+const std::string sotExceptionTraces::EXCEPTION_NAME = "Traces";
+
+sotExceptionTraces::
+sotExceptionTraces ( const sotExceptionTraces::ErrorCodeEnum& errcode,
+		     const std::string & msg )
+  :sotExceptionAbstract(errcode,msg)
+{
+}
+
+sotExceptionTraces::
+sotExceptionTraces ( const sotExceptionTraces::ErrorCodeEnum& errcode,
+			const std::string & msg,const char* format, ... )
+  :sotExceptionAbstract(errcode,msg)
+{
+  va_list args;
+  va_start(args,format);
+
+  const unsigned int SIZE = 256;
+  char  buffer[SIZE];
+  vsnprintf(buffer,SIZE,format,args);
+
+  message += buffer;
+
+  va_end(args);
+}
+
+
+
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/src/factory/additional-functions.cpp b/src/factory/additional-functions.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d7f296e9f274528bb0afe587be4a7e40b99c9d87
--- /dev/null
+++ b/src/factory/additional-functions.cpp
@@ -0,0 +1,155 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotAdditionalFunctions.cpp
+ * Project:   SOT
+ * Author:    François Bleibel
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ * SOT-specific functions for the shell
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+
+#include <dynamic-graph/interpreter.h>
+#include <sot-core/sotDebug.h>
+#include <sot-core/factory.h>
+#include <sot-core/additional-functions.h>
+#include <sot-core/signal-cast.h>
+#include <dynamic-graph/all-signals.h>
+#include <sot-core/sotFlags.h>
+using namespace std;
+
+/* \brief Constructor. At creation, overloads (deregisters-then registers
+ * again) the 'new' function in the shell
+ */
+sotAdditionalFunctions::sotAdditionalFunctions() {
+	// overload 'new'
+	Shell.deregisterFunction("new");
+	Shell.registerFunction("new", &sotAdditionalFunctions::cmdNew);
+}
+
+sotAdditionalFunctions::~sotAdditionalFunctions() {
+	Shell.deregisterFunction("new");
+}
+
+void sotAdditionalFunctions::cmdNew( const std::string& cmdLine, istringstream& cmdArg, std::ostream& os )
+{
+  if( cmdLine == "help" )
+    {
+      os << "  - new <class> <object>"
+	 << "\t\t\tCreate a new object (entity, task, or feature)." <<endl;
+      return;
+    }
+  string className;
+  string objName;
+  cmdArg >> className >>objName;
+  sotDEBUG(15) << "New <" << className<<"> requested."<<endl;
+  if( factory.existEntity( className ) )
+    {
+      sotDEBUG(15) << "New entity<"<<className<<"> " <<objName<<std::endl;
+      factory.newEntity(className,objName);
+    }
+  else if( sotFactory.existFeature( className ) )
+    {
+      sotDEBUG(15) << "New feature<"<<className<<"> " <<objName<<std::endl;
+      sotFactory.newFeature(className,objName);
+    }
+  else if( sotFactory.existTask( className ) )
+    {
+      sotDEBUG(15) << "New Task<"<<className<<"> " <<objName<<std::endl;
+      sotFactory.newTask(className,objName);
+    }
+  else os << "  !! Class <" << className << "> does not exist."<<endl;
+}
+
+void sotAdditionalFunctions::
+cmdMatrixDisplay( const std::string& cmdLine, std::istringstream& cmdArg, std::ostream& os )
+{
+   if( cmdLine == "help" )
+    {
+      os << "  - dispmat {simple|complet|matlab}"
+	 << "\t\tChange the display of matrix." <<endl;
+      return;
+    }
+
+   std::string arg;
+   cmdArg >> arg;
+//    dgDEBUG(15) << "Display matrix: arg = \""<< arg
+// 		<<"\" old="<<0+maal::boost::getDisplayType()<<endl;
+//    maal::boost::Vector trojan(3);
+
+//    if( ("simple"==arg)||(arg[0]=='s') )
+//       { trojan.setDisplayType( maal::boost::SIMPLE ); }
+//    else if( ("matlab"==arg)||(arg[0]=='m') )
+//      {
+//        trojan.setDisplayType( maal::boost::MATLAB );
+//        dgDEBUG(15) << "Display matrix: curr = \""
+// 		    <<0+maal::boost::MATLAB<<endl;
+//      }
+//    else if( "cpp"==arg ) { trojan.setDisplayType( maal::boost::CPP ); }
+//    else if( ("complet"==arg)||(arg[0]=='c') )
+//      { trojan.setDisplayType( maal::boost::COMPLET ); }
+//    else { os << "Arg <" << arg << "> is not a valid option."<<endl; }
+
+//    dgDEBUG(15) << "Display matrix: curr = \""
+// 		<<0+maal::boost::getDisplayType()<<endl;
+//    dgDEBUGF(15,"Ptr fun: %p.", maal::boost::getDisplayType);
+   //   dgDEBUG(15) << trojan<<std::endl;
+
+   if( ("simple"==arg)||(arg[0]=='s') )
+     SignalCast<ml::Vector>::displayType = maal::boost::SIMPLE;
+   else if( ("matlab"==arg)||(arg[0]=='m') )
+     SignalCast<ml::Vector>::displayType = maal::boost::MATLAB;
+   else if( "cpp"==arg )
+     SignalCast<ml::Vector>::displayType = maal::boost::CPP;
+   else if( ("complet"==arg)||(arg[0]=='c') )
+     SignalCast<ml::Vector>::displayType = maal::boost::COMPLET;
+   else { os << "Arg <" << arg << "> is not a valid option."<<endl; }
+
+}
+
+void sotAdditionalFunctions::
+cmdFlagSet( const std::string& cmdLine, istringstream& cmdArg, std::ostream& os )
+{
+  if( cmdLine == "help" )
+    {
+      os << "  - set <obj1.sig1(flag type)> {#&|}START:END"
+	 << "\t\tSet or reset the flag value." <<endl;
+      return;
+    }
+
+  try {
+    Signal<sotFlags,int> &sig1
+      = dynamic_cast< Signal<sotFlags,int>& >( pool.getSignal(cmdArg) );
+
+    dgDEBUG(25) << "set..."<<endl;
+    sotFlags fl; try { fl = sig1.accessCopy(); } catch(...) {}
+    cmdArg >> std::ws >> fl;
+    dgDEBUG(15) << "Fl=" << fl <<std::endl;
+    sig1 = fl;
+
+  } catch( ExceptionAbstract & err ) { throw;  }
+  catch( ... ) {
+    DG_THROW ExceptionFactory( ExceptionFactory::SYNTAX_ERROR,
+				   "setflag: sig should be of flag type. ",
+				   "(while calling setflag).");
+  }
+
+}
+
+namespace {
+	sotAdditionalFunctions functions;
+	ShellFunctionRegisterer regFun18
+   ( "setflag",boost::bind(sotAdditionalFunctions::cmdFlagSet,_1,_2,_3) );
+    ShellFunctionRegisterer regFun6
+    ( "dispmat",boost::bind(sotAdditionalFunctions::cmdMatrixDisplay,_1,_2,_3) );
+}
diff --git a/src/factory/factory.cpp b/src/factory/factory.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ef04956da515358da53379403b73be71aaeebe94
--- /dev/null
+++ b/src/factory/factory.cpp
@@ -0,0 +1,207 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotFactory.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+/* --- SOT --- */
+#include <sot-core/sotDebug.h>
+#include <sot-core/factory.h>
+
+using namespace std;
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+
+sotFactoryStorage::
+~sotFactoryStorage( void )
+{
+  sotDEBUGINOUT(25);
+}
+
+/* --------------------------------------------------------------------- */
+void sotFactoryStorage::
+registerTask( const std::string& entname,TaskConstructor_ptr ent )
+{
+  TaskMap::iterator entkey;
+  if( existTask(entname,entkey) ) // key does exist
+    {
+//       SOT_THROW sotExceptionFactory( sotExceptionFactory::OBJECT_CONFLICT,
+// 				 "Another task class already defined with the same name. ",
+// 				 "( while adding task class <%s> inside the factory).",
+// 				 entname.c_str() );
+      sotERRORF("Another task class already defined with the same name. "
+		"( while adding task class <%s> inside the factory).",
+		entname.c_str() );
+    }
+  else
+    {
+ //      sotDEBUG(10) << "Register task <"<< entname 
+// 		   << "> in the factory." <<std::endl;
+      taskMap[entname] = ent;
+    }
+}
+
+sotTaskAbstract* sotFactoryStorage::
+newTask( const std::string& classname,const std::string& objname  )
+{
+  TaskMap::iterator entPtr;
+  if(! existTask(classname,entPtr) ) // key does not exist
+    {
+      SOT_THROW sotExceptionFactory( sotExceptionFactory::UNREFERED_OBJECT,
+				     "Unknown task."," (while calling new_task <%s>)",
+				     classname.c_str() );
+    }
+  return entPtr->second(objname);
+}
+bool sotFactoryStorage::
+existTask( const std::string& name, TaskMap::iterator& entPtr )
+{
+  entPtr = taskMap .find( name );
+  return ( entPtr != taskMap.end() );
+}
+bool sotFactoryStorage::
+existTask( const std::string& name )
+{
+  TaskMap::iterator entPtr;return existTask( name,entPtr );
+}
+
+
+/* --------------------------------------------------------------------- */
+void sotFactoryStorage::
+registerFeature( const std::string& entname,FeatureConstructor_ptr ent )
+{
+  FeatureMap::iterator entkey;
+  if( existFeature(entname,entkey) ) // key does exist
+    {
+//       SOT_THROW sotExceptionFactory( sotExceptionFactory::OBJECT_CONFLICT,
+// 				 "Another feature already defined with the same name. ",
+// 				 "(while adding feature class <%s> inside the factory).",
+// 				 entname.c_str() );
+      sotERRORF("Another feature already defined with the same name. "
+		"(while adding feature class <%s> inside the factory).",
+		entname.c_str() );
+   }
+  else
+    {
+//       sotDEBUG(10) << "Register feature <"<< entname 
+// 		   << "> in the factory." <<std::endl;
+      featureMap[entname] = ent;
+    }
+}
+
+sotFeatureAbstract* sotFactoryStorage::
+newFeature( const std::string& classname,const std::string& objname  )
+{
+  FeatureMap::iterator entPtr;
+  if(! existFeature(classname,entPtr) ) // key does not exist
+    {
+      SOT_THROW sotExceptionFactory( sotExceptionFactory::UNREFERED_OBJECT,
+				     "Unknown feature."," (while calling new_feature <%s>)",
+				     classname.c_str() );
+    }
+  return entPtr->second(objname);
+}
+bool sotFactoryStorage::
+existFeature( const std::string& name, FeatureMap::iterator& entPtr )
+{
+  //  sotDEBUGINOUT(25) << "(name=<"<<name<<">)."<<std::endl;
+  entPtr = featureMap .find( name );
+  //  sotDEBUG(6) << "str: "<< entPtr->first <<std::endl;
+  //  sotDEBUG(6) << "ptr: "<< entPtr->second <<std::endl;
+  return ( entPtr != featureMap.end() );
+}
+bool sotFactoryStorage::
+existFeature( const std::string& name )
+{
+  FeatureMap::iterator entPtr;return existFeature( name,entPtr );
+}
+
+
+
+/* --------------------------------------------------------------------- */
+/* --- REGISTERERS ----------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+sotFeatureRegisterer::
+sotFeatureRegisterer( const std::string& featureClassName,
+		      sotFactoryStorage::FeatureConstructor_ptr maker)
+{ 
+  //sotDEBUG(3) << "Register feature class: "<< featureClassName << std::endl;
+  sotFactory.registerFeature(featureClassName,maker);
+}
+
+sotTaskRegisterer::
+sotTaskRegisterer( const std::string& taskClassName,
+		   sotFactoryStorage::TaskConstructor_ptr maker) 
+{  
+  //sotDEBUG(3) << "Register task class: "<< taskClassName << std::endl;
+  sotFactory.registerTask(taskClassName,maker);
+}
+
+
+/* --------------------------------------------------------------------- */
+/* ---  COMMAND LINE ---------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+void sotFactoryStorage::
+commandLine( const std::string& cmdLine,std::istringstream& cmdArgs,
+	     std::ostream& os )
+{
+  if( cmdLine == "help" )
+    {
+      os<< "factory ";
+      string cmd2; cmdArgs >> cmd2; 
+      if(! cmdArgs.good())  
+	os << " <arg>\t\t\t\taccess to the factory (help <arg> for more detail)" <<endl;
+      else if( cmd2 == "list" ) 
+	os << "list\t\t:List all available creator." << endl;
+      else if( cmd2 == "listFeatures" )
+	os <<"listFeatures\t:List available features." << endl;
+      else if( cmd2 == "listTasks" )
+	os << " - listTasks\t:List available tasks." << endl;
+    }
+  else if( cmdLine == "list" )
+    {
+      commandLine("listTasks",cmdArgs,os);
+      commandLine("listFeatures",cmdArgs,os);
+    }
+  else if( cmdLine == "listFeatures" )
+    {
+      os <<" List of available features:" << endl;
+      for( FeatureMap::iterator iter = featureMap.begin();iter!=featureMap.end();++iter )
+	{ os << "  - " << iter->first << endl; }
+    }
+  else if( cmdLine == "listTasks" )
+    {
+      os <<" List of available tasks:" << endl;
+      for( TaskMap::iterator iter = taskMap.begin();iter!=taskMap.end();++iter )
+	{ os << "  - " << iter->first << endl; }
+    }
+  return;
+}
+
+
+
+
+sotFactoryStorage sotFactory;
+
diff --git a/src/factory/pool.cpp b/src/factory/pool.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a45cf5657a4b14d4a0a78f2acf42b29b8bdd3f4a
--- /dev/null
+++ b/src/factory/pool.cpp
@@ -0,0 +1,249 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      sotPool.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+
+/* --------------------------------------------------------------------- */
+/* --- INCLUDE --------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+/* --- SOT --- */
+#include <sot-core/pool.h>
+#include <sot-core/sotDebug.h>
+#include <dynamic-graph/entity.h>
+#include <list>
+
+/* --------------------------------------------------------------------- */
+/* --- CLASS ----------------------------------------------------------- */
+/* --------------------------------------------------------------------- */
+
+sotPoolStorage::
+~sotPoolStorage( void )
+{
+  sotDEBUGIN(15);
+
+
+  sotDEBUGOUT(15);
+  return;
+}
+
+
+/* --------------------------------------------------------------------- */
+void sotPoolStorage::
+registerTask( const std::string& entname,sotTaskAbstract* ent )
+{
+  Tasks::iterator entkey = task.find(entname);
+  if( entkey != task.end() ) // key does exist
+    {
+      throw sotExceptionFactory( sotExceptionFactory::OBJECT_CONFLICT,
+				 "Another task already defined with the same name. ",
+				 "Task name is <%s>.",entname.c_str() );
+    }
+  else
+    {
+      sotDEBUG(10) << "Register task <"<< entname
+		   << "> in the pool." <<std::endl;
+      task[entname] = ent;
+    }
+}
+
+sotTaskAbstract& sotPoolStorage::
+getTask( const std::string& name )
+{
+  Tasks::iterator entPtr = task .find( name );
+  if( entPtr == task.end() )
+    {
+      SOT_THROW sotExceptionFactory( sotExceptionFactory::UNREFERED_OBJECT,
+				     "Unknown task."," (while calling <%s>)",
+				     name.c_str() );
+    }
+  return *entPtr->second;
+}
+
+
+
+/* --------------------------------------------------------------------- */
+void sotPoolStorage::
+registerFeature( const std::string& entname,sotFeatureAbstract* ent )
+{
+  Features::iterator entkey = feature.find(entname);
+  if( entkey != feature.end() ) // key does exist
+    {
+      throw sotExceptionFactory( sotExceptionFactory::OBJECT_CONFLICT,
+				 "Another feature already defined with the same name. ",
+				 "Feature name is <%s>.",entname.c_str() );
+    }
+  else
+    {
+      sotDEBUG(10) << "Register feature <"<< entname
+		   << "> in the pool." <<std::endl;
+      feature[entname] = ent;
+    }
+}
+
+sotFeatureAbstract& sotPoolStorage::
+getFeature( const std::string& name )
+{
+  Features::iterator entPtr = feature .find( name );
+  if( entPtr == feature.end() )
+    {
+      SOT_THROW sotExceptionFactory( sotExceptionFactory::UNREFERED_OBJECT,
+				     "Unknown feature."," (while calling <%s>)",
+				     name.c_str() );
+    }
+  return *entPtr->second;
+}
+
+
+
+
+/* --------------------------------------------------------------------- */
+
+#include <dynamic-graph/entity.h>
+#include <sot-core/sotTaskAbstract.h>
+#include <sot-core/sotFeatureAbstract.h>
+
+#ifdef WIN32
+#include <time.h>
+#endif /*WIN32*/
+
+void sotPoolStorage::
+writeGraph(const std::string &aFileName)
+{
+  size_t IdxPointFound = aFileName.rfind(".");
+  std::string tmp1 = aFileName.substr(0,IdxPointFound);
+  size_t IdxSeparatorFound = aFileName.rfind("/");
+  std::string GenericName;
+  if (IdxSeparatorFound!=std::string::npos)
+    GenericName = tmp1.substr(IdxSeparatorFound,tmp1.length());
+  else
+    GenericName = tmp1;
+
+  /* Reading local time */
+  time_t ltime;
+  ltime = time(NULL);
+  struct tm ltimeformatted;
+#ifdef WIN32
+  localtime_s(&ltimeformatted,&ltime);
+#else
+  localtime_r(&ltime,&ltimeformatted);
+#endif /*WIN32*/
+
+  /* Opening the file and writing the first comment. */
+  std::ofstream GraphFile;
+  GraphFile.open((char *)aFileName.c_str(),std::ofstream::out);
+  GraphFile << "/* This graph has been automatically generated. " << std::endl;
+  GraphFile << "   " << 1900+ltimeformatted.tm_year
+	    << " Month: " << 1+ltimeformatted.tm_mon
+	    << " Day: " << ltimeformatted.tm_mday
+	    << " Time: " << ltimeformatted.tm_hour
+	    << ":" << ltimeformatted.tm_min;
+  GraphFile << " */" << std::endl;
+  GraphFile << "digraph " << GenericName << " { ";
+  GraphFile << "\t graph [ label=\"" << GenericName << "\" bgcolor = white rankdir=LR ]" << std::endl
+	    << "\t node [ fontcolor = black, color = black, fillcolor = gold1, style=filled, shape=box ] ; " << std::endl;
+  GraphFile << "\tsubgraph cluster_Tasks { " << std::endl;
+  GraphFile << "\t\t color=blue; label=\"Tasks\";" << std::endl;
+
+  for( Tasks::iterator iter=task.begin();
+       iter!=task.end();iter++ )
+    {
+      sotTaskAbstract* ent = iter->second;
+      GraphFile << "\t\t" << ent->getName()
+		<<" [ label = \"" << ent->getName() << "\" ," << std::endl
+		<<"\t\t   fontcolor = black, color = black, fillcolor = magenta, style=filled, shape=box ]" << std::endl;
+
+    }
+
+
+  GraphFile << "}"<< std::endl;
+
+  GraphFile.close();
+}
+
+void sotPoolStorage::
+writeCompletionList(std::ostream& os)
+{
+
+
+}
+
+
+void sotPoolStorage::
+commandLine( const std::string& objectName,const std::string& functionName,
+	     std::istringstream& cmdArg, std::ostream& os )
+{
+  sotDEBUG(15) << "Object <" << objectName<< "> function <"
+	       <<functionName<<">"<<std::endl;
+
+  if( objectName=="pool" )
+    {
+      if( functionName=="help" )
+	{
+	  os <<"Pool: " << std::endl
+	     <<"  - list" << std::endl
+	     <<"  - listFeature" << std::endl
+	     <<"  - listTask" << std::endl
+	     << " - writegraph FileName" << std::endl;
+	}
+      else if( functionName=="list" )
+	{
+	  //FIXME: list entities from dg::pool ?
+
+	}
+      else if( functionName=="listTask" )
+	{
+	  for( Tasks::iterator iter=task.begin();
+	       iter!=task.end();iter++ )
+	    {
+	      sotTaskAbstract* ent = iter->second;
+	      os << ent->getName()
+		 <<" (" << ent->getClassName() << ")" << std::endl;
+	    }
+
+	}
+      else if( functionName=="listFeature" )
+	{
+	  for( Features::iterator iter=feature.begin();
+	       iter!=feature.end();iter++ )
+	    {
+	      sotFeatureAbstract* ent = iter->second;
+	      os << ent->getName()
+		 <<" (" << ent->getClassName() << ")" << std::endl;
+	    }
+
+	}
+      else if (functionName=="writegraph")
+	{
+	  std::string aFileName;
+	  cmdArg >> aFileName;
+	  writeGraph(aFileName);
+	}
+
+    }
+  else
+    {
+      //DISABLED
+	  //Entity& ent = getEntity(objectName);
+      //ent.commandLine(functionName,cmdArg,os);
+    }
+}
+
+
+sotPoolStorage sotPool;
+
diff --git a/src/feature/sotFeatureLineDistance.cpp b/src/feature/sotFeatureLineDistance.cpp
index 1508fe8c9f6226d361abb32367d60c564781208f..397212bef25e5b30a41e8223ad6a56f6ff18eaf3 100644
--- a/src/feature/sotFeatureLineDistance.cpp
+++ b/src/feature/sotFeatureLineDistance.cpp
@@ -27,9 +27,9 @@
 #include <sot-core/sotFeatureLineDistance.h>
 #include <sot-core/exception-feature.h>
 
-#include <sot-core/sotMatrixHomogeneous.h>
-#include <sot-core/sotMatrixRotation.h>
-#include <sot-core/sotVectorUTheta.h>
+#include <sot-core/matrix-homogeneous.h>
+#include <sot-core/matrix-rotation.h>
+#include <sot-core/vector-utheta.h>
 
 using namespace std;
 
diff --git a/src/feature/sotFeaturePoint6d.cpp b/src/feature/sotFeaturePoint6d.cpp
index d9d15959e995e1dc90199cc1fbcfcf4e948c287c..6480eb2df32eb61f74e222b736e6758d043e7818 100644
--- a/src/feature/sotFeaturePoint6d.cpp
+++ b/src/feature/sotFeaturePoint6d.cpp
@@ -29,9 +29,9 @@
 #include <sot-core/sotFeaturePoint6d.h>
 #include <sot-core/exception-feature.h>
 
-#include <sot-core/sotMatrixHomogeneous.h>
-#include <sot-core/sotMatrixRotation.h>
-#include <sot-core/sotVectorUTheta.h>
+#include <sot-core/matrix-homogeneous.h>
+#include <sot-core/matrix-rotation.h>
+#include <sot-core/vector-utheta.h>
 
 using namespace std;
 
diff --git a/src/feature/sotFeaturePoint6dRelative.cpp b/src/feature/sotFeaturePoint6dRelative.cpp
index 79b52ff59ab1d6000fe0eb9f31552ba4ccc09aad..5a2a648a2f19802de3b6a2f046c142725ee2375e 100644
--- a/src/feature/sotFeaturePoint6dRelative.cpp
+++ b/src/feature/sotFeaturePoint6dRelative.cpp
@@ -27,9 +27,9 @@
 #include <sot-core/sotFeaturePoint6dRelative.h>
 #include <sot-core/exception-feature.h>
 
-#include <sot-core/sotMatrixHomogeneous.h>
-#include <sot-core/sotMatrixRotation.h>
-#include <sot-core/sotMatrixTwist.h>
+#include <sot-core/matrix-homogeneous.h>
+#include <sot-core/matrix-rotation.h>
+#include <sot-core/matrix-twist.h>
 #include <dynamic-graph/pool.h>
 
 using namespace std;
diff --git a/src/feature/sotFeatureVector3.cpp b/src/feature/sotFeatureVector3.cpp
index cdbe89eedd66b048ccfcda2368e1e45cf2246dc9..f811f7e5ee7bb4cc6107db6b7cd436c2e0ae7cd1 100644
--- a/src/feature/sotFeatureVector3.cpp
+++ b/src/feature/sotFeatureVector3.cpp
@@ -29,9 +29,9 @@
 #include <sot-core/sotFeatureVector3.h>
 #include <sot-core/exception-feature.h>
 
-#include <sot-core/sotMatrixHomogeneous.h>
-#include <sot-core/sotMatrixRotation.h>
-#include <sot-core/sotVectorUTheta.h>
+#include <sot-core/matrix-homogeneous.h>
+#include <sot-core/matrix-rotation.h>
+#include <sot-core/vector-utheta.h>
 
 using namespace std;
 
diff --git a/src/math/sotMatrixForce.cpp b/src/math/matrix-force.cpp
similarity index 92%
rename from src/math/sotMatrixForce.cpp
rename to src/math/matrix-force.cpp
index a953bd469bf4ad3f9ef66b70595eb4ab05b50796..20f8fbc7b5e9d8c46ea6c2377997a1f297b4ab88 100644
--- a/src/math/sotMatrixForce.cpp
+++ b/src/math/matrix-force.cpp
@@ -17,10 +17,10 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotMatrixForce.h>
-#include <sot-core/sotMatrixHomogeneous.h>
-#include <sot-core/sotMatrixRotation.h>
-#include <sot-core/sotMatrixTwist.h>
+#include <sot-core/matrix-force.h>
+#include <sot-core/matrix-homogeneous.h>
+#include <sot-core/matrix-rotation.h>
+#include <sot-core/matrix-twist.h>
 #include <sot-core/sotDebug.h>
 
 sotMatrixForce& sotMatrixForce::
diff --git a/src/math/sotMatrixHomogeneous.cpp b/src/math/matrix-homogeneous.cpp
similarity index 96%
rename from src/math/sotMatrixHomogeneous.cpp
rename to src/math/matrix-homogeneous.cpp
index f5b2e94a7ed98dfe2112457ef35bb955c9d54f09..f4cb4cbf8d507ddea527ff033009da31e5778e63 100644
--- a/src/math/sotMatrixHomogeneous.cpp
+++ b/src/math/matrix-homogeneous.cpp
@@ -17,8 +17,8 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotMatrixHomogeneous.h>
-#include <sot-core/sotMatrixRotation.h>
+#include <sot-core/matrix-homogeneous.h>
+#include <sot-core/matrix-rotation.h>
 #include <sot-core/sotDebug.h>
 
 sotMatrixHomogeneous& sotMatrixHomogeneous::
diff --git a/src/math/sotMatrixRotation.cpp b/src/math/matrix-rotation.cpp
similarity index 87%
rename from src/math/sotMatrixRotation.cpp
rename to src/math/matrix-rotation.cpp
index 8f302c769395fe4cfa14bfeddf5006c82a4b895a..1ec358b123d750302b655558fc66014f53c05d1c 100644
--- a/src/math/sotMatrixRotation.cpp
+++ b/src/math/matrix-rotation.cpp
@@ -17,8 +17,8 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotMatrixRotation.h>
-#include <sot-core/sotVectorUTheta.h>
+#include <sot-core/matrix-rotation.h>
+#include <sot-core/vector-utheta.h>
 
 using namespace std;
 
diff --git a/src/math/sotMatrixTwist.cpp b/src/math/matrix-twist.cpp
similarity index 92%
rename from src/math/sotMatrixTwist.cpp
rename to src/math/matrix-twist.cpp
index e201804fb8e6702b7074188e12daf283929f866d..46fa848702e4b7f7df8c07d70ed0e768522e34b0 100644
--- a/src/math/sotMatrixTwist.cpp
+++ b/src/math/matrix-twist.cpp
@@ -17,10 +17,10 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotMatrixTwist.h>
-#include <sot-core/sotMatrixHomogeneous.h>
-#include <sot-core/sotMatrixRotation.h>
-#include <sot-core/sotMatrixForce.h>
+#include <sot-core/matrix-twist.h>
+#include <sot-core/matrix-homogeneous.h>
+#include <sot-core/matrix-rotation.h>
+#include <sot-core/matrix-force.h>
 #include <sot-core/sotDebug.h>
 
 sotMatrixTwist& sotMatrixTwist::
diff --git a/src/math/sotOpPointModifior.cpp b/src/math/op-point-modifior.cpp
similarity index 97%
rename from src/math/sotOpPointModifior.cpp
rename to src/math/op-point-modifior.cpp
index c1f5457fcdfcaa9d069bad46f1bd5c7c312303db..ae5b7ced4c1c5237199b93a2c07d2facccea8b87 100644
--- a/src/math/sotOpPointModifior.cpp
+++ b/src/math/op-point-modifior.cpp
@@ -19,8 +19,8 @@
 
 #include <dynamic-graph/all-signals.h>
 
-#include <sot-core/sotOpPointModifior.h>
-#include <sot-core/sotMatrixTwist.h>
+#include <sot-core/op-point-modifier.h>
+#include <sot-core/matrix-twist.h>
 
 #include <dynamic-graph/pool.h>
 #include <sot-core/factory.h>
diff --git a/src/math/sotVectorQuaternion.cpp b/src/math/vector-quaternion.cpp
similarity index 98%
rename from src/math/sotVectorQuaternion.cpp
rename to src/math/vector-quaternion.cpp
index 81fe41b2a1aaddbd9733bc98c7708ef6f942883c..27a3001ccb586024ef2133ff87beb49d5e9651a8 100644
--- a/src/math/sotVectorQuaternion.cpp
+++ b/src/math/vector-quaternion.cpp
@@ -17,7 +17,7 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotVectorQuaternion.h>
+#include <sot-core/vector-quaternion.h>
 #include <sot-core/sotDebug.h>
 using namespace std;
 
@@ -121,7 +121,7 @@ fromMatrix( const sotMatrixRotation& rot )
 }
 
 
-#include <sot-core/sotVectorUTheta.h>
+#include <sot-core/vector-utheta.h>
 
 sotVectorRotation& sotVectorQuaternion::
 fromVector( const sotVectorUTheta& ut )
diff --git a/src/math/sotVectorRollPitchYaw.cpp b/src/math/vector-roll-pitch-yaw.cpp
similarity index 97%
rename from src/math/sotVectorRollPitchYaw.cpp
rename to src/math/vector-roll-pitch-yaw.cpp
index eb031ee0a8b6d38f112a480df897e6ac32bfef34..66339502e84dbb6d487a33a705d9bdd83363d0c8 100644
--- a/src/math/sotVectorRollPitchYaw.cpp
+++ b/src/math/vector-roll-pitch-yaw.cpp
@@ -17,7 +17,7 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotVectorRollPitchYaw.h>
+#include <sot-core/vector-roll-pitch-yaw.h>
 #include <sot-core/sotDebug.h>
 using namespace std;
 
diff --git a/src/math/sotVectorUTheta.cpp b/src/math/vector-utheta.cpp
similarity index 98%
rename from src/math/sotVectorUTheta.cpp
rename to src/math/vector-utheta.cpp
index 5ac6937d69500878f32b36f05a3fd7fa3b1959e1..5d7f31154dc8814bdb4d7f6f9db9e01fa05b8a01 100644
--- a/src/math/sotVectorUTheta.cpp
+++ b/src/math/vector-utheta.cpp
@@ -17,7 +17,7 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotVectorUTheta.h>
+#include <sot-core/vector-utheta.h>
 #include <sot-core/sotDebug.h>
 using namespace std;
 
diff --git a/src/matrix/sotBinaryOp.cpp b/src/matrix/binary-op.cpp
similarity index 98%
rename from src/matrix/sotBinaryOp.cpp
rename to src/matrix/binary-op.cpp
index 3ce2c2d9e54288d7778a343ad2fda2f642b32691..03d8ad6cc7babd81ea3d85483620a1235807ca60 100644
--- a/src/matrix/sotBinaryOp.cpp
+++ b/src/matrix/binary-op.cpp
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotBinaryOp.h
+ * File:      binary-op.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -17,13 +17,13 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotBinaryOp.h>
+#include <sot-core/binary-op.h>
 
 #include <sot-core/factory.h>
-#include <sot-core/sotMatrixHomogeneous.h>
-#include <sot-core/sotVectorRollPitchYaw.h>
-#include <sot-core/sotMatrixRotation.h>
-#include <sot-core/sotMatrixTwist.h>
+#include <sot-core/matrix-homogeneous.h>
+#include <sot-core/vector-roll-pitch-yaw.h>
+#include <sot-core/matrix-rotation.h>
+#include <sot-core/matrix-twist.h>
 #include <sot-core/sotDebug.h>
 
 
diff --git a/src/matrix/sotDerivator.cpp b/src/matrix/derivator.cpp
similarity index 98%
rename from src/matrix/sotDerivator.cpp
rename to src/matrix/derivator.cpp
index eda463eba949c49b289b5487f6e95b4b8a940b28..54209ab325bc8734f85e38ac156a9e6ea18b8155 100644
--- a/src/matrix/sotDerivator.cpp
+++ b/src/matrix/derivator.cpp
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotDerivator.h
+ * File:      derivator.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -17,7 +17,7 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotDerivator.h>
+#include <sot-core/derivator.h>
 #include <sot-core/factory.h>
 
 
diff --git a/src/matrix/sotFIRFilter.cpp b/src/matrix/fir-filter.cpp
similarity index 98%
rename from src/matrix/sotFIRFilter.cpp
rename to src/matrix/fir-filter.cpp
index c107b7547e1243d93268d194245363f3060d5118..ebafaa3b0cb34e0f356c905376c6186d2b6a0a30 100644
--- a/src/matrix/sotFIRFilter.cpp
+++ b/src/matrix/fir-filter.cpp
@@ -17,7 +17,7 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotFIRFilter.h>
+#include <sot-core/fir-filter.h>
 
 #include <sot-core/factory.h>
 
diff --git a/src/matrix/sotIntegratorAbstract.cpp b/src/matrix/integrator-abstract.cpp
similarity index 97%
rename from src/matrix/sotIntegratorAbstract.cpp
rename to src/matrix/integrator-abstract.cpp
index d1b1734f2f4dbc366fa16eda9cc9445a87f51a90..8a82926b2f835e2703ace4860dd3ea104429a2b6 100644
--- a/src/matrix/sotIntegratorAbstract.cpp
+++ b/src/matrix/integrator-abstract.cpp
@@ -17,7 +17,7 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotIntegratorAbstract.h>
+#include <sot-core/integrator-abstract.h>
 
 #include <sot-core/factory.h>
 
diff --git a/src/matrix/sotIntegratorEuler.cpp b/src/matrix/integrator-euler.cpp
similarity index 98%
rename from src/matrix/sotIntegratorEuler.cpp
rename to src/matrix/integrator-euler.cpp
index 168677ecb8e1dd56498a448a7985b01defb5affe..2e64db888df7880a8cdc5c469ade930e8694bd57 100644
--- a/src/matrix/sotIntegratorEuler.cpp
+++ b/src/matrix/integrator-euler.cpp
@@ -17,7 +17,7 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotIntegratorEuler.h>
+#include <sot-core/integrator-euler.h>
 
 #include <sot-core/factory.h>
 
diff --git a/src/matrix/sotMatrixConstant.cpp b/src/matrix/matrix-constant.cpp
similarity index 98%
rename from src/matrix/sotMatrixConstant.cpp
rename to src/matrix/matrix-constant.cpp
index 10a540bbb9631f3230b780f4802bc7a5f12c1200..198475ae7bb07cb2e8a18840819efd7aebb95884 100644
--- a/src/matrix/sotMatrixConstant.cpp
+++ b/src/matrix/matrix-constant.cpp
@@ -17,7 +17,7 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotMatrixConstant.h>
+#include <sot-core/matrix-constant.h>
 
 #include <sot-core/factory.h>
 SOT_FACTORY_ENTITY_PLUGIN(sotMatrixConstant,"MatrixConstant");
diff --git a/src/matrix/sotUnaryOp.cpp b/src/matrix/unary-op.cpp
similarity index 98%
rename from src/matrix/sotUnaryOp.cpp
rename to src/matrix/unary-op.cpp
index 0fa7b63ac6eeb52e2a0470b8372e8b2beae157af..af85041498ea0f57d606f47c4381622eda5f58a0 100644
--- a/src/matrix/sotUnaryOp.cpp
+++ b/src/matrix/unary-op.cpp
@@ -2,7 +2,7 @@
  * Copyright Projet JRL-Japan, 2007
  *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *
- * File:      sotUnaryOp.h
+ * File:      unary-op.h
  * Project:   SOT
  * Author:    Nicolas Mansard
  *
@@ -17,15 +17,15 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotUnaryOp.h>
+#include <sot-core/unary-op.h>
 
 #include <sot-core/factory.h>
 
-#include <sot-core/sotMatrixHomogeneous.h>
-#include <sot-core/sotMatrixTwist.h>
-#include <sot-core/sotVectorUTheta.h>
-#include <sot-core/sotVectorRollPitchYaw.h>
-#include <sot-core/sotVectorQuaternion.h>
+#include <sot-core/matrix-homogeneous.h>
+#include <sot-core/matrix-twist.h>
+#include <sot-core/vector-utheta.h>
+#include <sot-core/vector-roll-pitch-yaw.h>
+#include <sot-core/vector-quaternion.h>
 
 
 
diff --git a/src/matrix/sotVectorConstant.cpp b/src/matrix/vector-constant.cpp
similarity index 98%
rename from src/matrix/sotVectorConstant.cpp
rename to src/matrix/vector-constant.cpp
index fb40bda3d3419a0db17f37b4514f1ff6fdcb1508..49e7c9f195b2e7a23e67a12a586b12406130e492 100644
--- a/src/matrix/sotVectorConstant.cpp
+++ b/src/matrix/vector-constant.cpp
@@ -17,7 +17,7 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotVectorConstant.h>
+#include <sot-core/vector-constant.h>
 
 #include <sot-core/factory.h>
 SOT_FACTORY_ENTITY_PLUGIN(sotVectorConstant,"VectorConstant");
diff --git a/src/matrix/sotVectorToRotation.cpp b/src/matrix/vector-to-rotation.cpp
similarity index 98%
rename from src/matrix/sotVectorToRotation.cpp
rename to src/matrix/vector-to-rotation.cpp
index 5934e44013a6d3f82031b5972c29c3656b415889..770a43bd18499722f9e2d0c5c8a2fa3c50fb067b 100644
--- a/src/matrix/sotVectorToRotation.cpp
+++ b/src/matrix/vector-to-rotation.cpp
@@ -17,7 +17,7 @@
  *
  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 
-#include <sot-core/sotVectorToRotation.h>
+#include <sot-core/vector-to-rotation.h>
 
 #include <sot-core/factory.h>
 #include <sot-core/macros-signal.h>
diff --git a/src/signal/signal-cast.cpp b/src/signal/signal-cast.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e9dd28f9e7ca723635fe7311eb6567168497dd2b
--- /dev/null
+++ b/src/signal/signal-cast.cpp
@@ -0,0 +1,204 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-Japan, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      SignalCast.cpp
+ * Project:   SOT
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+#include <sot-core/pool.h>
+#include <sot-core/signal-cast.h>
+#include <iomanip>
+#include <sot-core/sotFeatureAbstract.h>
+
+using namespace std;
+
+#ifdef WIN32
+#include < Windows.h >
+#endif
+
+SignalCast_sotFeatureAbstractPtr SignalCast<SignalCast_sotFeatureAbstractPtr>::
+cast( std::istringstream& iss )
+{
+  SignalCast_sotFeatureAbstractPtr ref; 
+  std::string name; iss >> name; 
+  if( name.length())
+    {
+      ref = &sotPool.getFeature(name); 
+    }
+  else { ref = NULL; }
+  return ref;
+}
+
+void SignalCast<SignalCast_sotFeatureAbstractPtr>::
+disp(  const SignalCast_sotFeatureAbstractPtr & t,std::ostream& os )
+{
+  if( t ) { t->display(os); os<<std::endl; }
+  else { os << "NULL" << std::endl; }
+}
+
+
+
+struct timeval SignalCast<struct timeval>::
+cast( std::istringstream& iss )
+{
+  int u,s; iss >> s >> u;
+  struct timeval t; t.tv_sec = s; t.tv_usec = u;
+  return t;
+}
+void SignalCast<struct timeval>::
+disp( const struct timeval& t,std::ostream& os )
+{
+  os << t.tv_sec << "s "<< t.tv_usec << "ms";
+}
+
+void SignalCast<sotVectorMultiBound>::
+trace( const sotVectorMultiBound& t,std::ostream& os )
+{
+  for( sotVectorMultiBound::const_iterator iter=t.begin();t.end()!=iter;++iter )
+    {
+      switch( iter->mode )
+        {
+        case sotMultiBound::MODE_SINGLE:
+          os << iter->getSingleBound() << "\t";
+          break;
+        case sotMultiBound::MODE_DOUBLE:
+          if( iter->getDoubleBoundSetup(sotMultiBound::BOUND_INF) )
+            os << iter->getDoubleBound(sotMultiBound::BOUND_INF)<<"\t";
+          else os <<"-inf\t";
+          if( iter->getDoubleBoundSetup(sotMultiBound::BOUND_SUP) )
+            os << iter->getDoubleBound(sotMultiBound::BOUND_SUP)<<"\t";
+          else os <<"+inf\t";
+          break;
+        }
+    }
+}
+
+/* --- VECTOR ---------------------------------------------------------- */
+/* --- VECTOR ---------------------------------------------------------- */
+/* --- VECTOR ---------------------------------------------------------- */
+
+maal::boost::DisplayType SignalCast<ml::Vector>::displayType = maal::boost::MATLAB;
+
+ml::Vector SignalCast<ml::Vector>::
+cast( std::istringstream& iss )
+{
+   ml::Vector res; 
+   iss >> res; 
+   return res;
+}
+void SignalCast<ml::Vector>::
+disp( const ml::Vector& v1,std::ostream& os )
+{
+  switch( displayType )
+    {
+    case maal::boost::COMPLET:
+      for( unsigned int i=0;i<v1.size();++i ) 
+	{ if(fabs(v1(i))>1e-6) os << v1(i) << "\t"; else os<<0.00<<"\t"; } 
+      break;
+    case maal::boost::MATLAB:
+      os << "[ ";
+      for( unsigned int i=0;i<v1.size();++i )
+	{
+	  os <<  v1(i);
+	  if( v1.size()!=i+1 ) { os << ", "; }
+	}
+      os << "]" << std::endl; 
+      break;
+    case maal::boost::SIMPLE:
+    default:
+      os<<v1.accessToMotherLib() << std::endl;
+      break;
+    }
+}
+
+void SignalCast<ml::Vector>::
+trace( const ml::Vector& t,std::ostream& os )
+
+{
+  for( unsigned int i=0;i<t.size();++i ) 
+    { os << std::setprecision(9)<<t(i) << "\t"; } 
+}
+
+
+
+
+/* --- MATRIX --------------------------------------------------- */
+/* --- MATRIX --------------------------------------------------- */
+/* --- MATRIX --------------------------------------------------- */
+
+ml::Matrix SignalCast<ml::Matrix>::
+cast( std::istringstream& iss )
+{
+   ml::Matrix res; 
+   iss >> res; 
+   return res;
+}
+
+void SignalCast<ml::Matrix>::
+disp( const ml::Matrix& m1,std::ostream& os )
+{
+  switch( SignalCast<ml::Vector>::displayType)
+    {
+    case ml::COMPLET:
+      for( unsigned int i=0;i<m1.nbRows();++i ) 
+	{
+	  for( unsigned int j=0;j<m1.nbCols();++j )
+	    { if(fabs(m1(i,j))>1e-6) os << m1(i,j) << "\t"; else os<<0.00<<"\t"; } 
+	  os<<std::endl;
+	}
+      break;
+    case ml::MATLAB:
+      os << "[ ";
+      for( unsigned int i=0;i<m1.nbRows();++i )
+	{
+	  for( unsigned int j=0;j<m1.nbCols();++j )
+	    {
+	      os <<  m1(i,j) << ", ";
+	    }
+	  if( m1.nbRows()!=i+1 ) { os << ";" << std::endl; }
+	  else { os << "]" << std::endl; }
+	}
+      break;
+    case ml::SIMPLE:
+    default:
+      os<<m1.matrix<<std::endl; 
+      break;
+    }   
+}
+
+void SignalCast<ml::Matrix>::
+trace( const ml::Matrix& t,std::ostream& os )
+{  
+   for( unsigned int i=0;i<t.nbRows();++i ) 
+     for( unsigned int j=0;j<t.nbCols();++j )
+       { if(fabs(t(i,j))>1e-6) os << t(i,j) << "\t"; else os<<0.00<<"\t"; } 
+}
+
+namespace {
+	SOT_SIGNAL_CAST_DECLARATION(SignalCast_sotFeatureAbstractPtr);
+	SOT_SIGNAL_CAST_DECLARATION(sotFlags);
+	SOT_SIGNAL_CAST_DECLARATION(sotVectorMultiBound);
+	SOT_SIGNAL_CAST_DECLARATION(timeval );
+	SOT_SIGNAL_CAST_DECLARATION_NAMED(maal::boost::Vector, maal_boost_Vector);
+	SOT_SIGNAL_CAST_DECLARATION_NAMED(maal::boost::Matrix, maal_boost_Matrix);
+	SOT_SIGNAL_CAST_DECLARATION(sotVectorUTheta);
+	SOT_SIGNAL_CAST_DECLARATION(sotVectorQuaternion);
+	SOT_SIGNAL_CAST_DECLARATION(sotVectorRollPitchYaw);
+	SOT_SIGNAL_CAST_DECLARATION(sotMatrixRotation);
+	SOT_SIGNAL_CAST_DECLARATION(sotMatrixHomogeneous);
+	SOT_SIGNAL_CAST_DECLARATION(sotMatrixTwist);
+	SOT_SIGNAL_CAST_DECLARATION(sotMatrixForce);
+
+}