diff --git a/include/dynamic-graph/tracer.h b/include/dynamic-graph/tracer.h
index c335820a7fb94778355a2dd47c0ab40a6dc5fcad..a56d627bb756387c7d4cdc5e74e0ab215182725e 100644
--- a/include/dynamic-graph/tracer.h
+++ b/include/dynamic-graph/tracer.h
@@ -73,6 +73,8 @@ namespace dynamicgraph
 
     void addSignalToTrace( const SignalBase<int>& sig,
 			   const std::string& filename="" );
+    void addSignalToTraceByName( const std::string& signame,
+				 const std::string& filename="" );
     void clearSignalToTrace  ();
     //void parasite( SignalBase<int>& sig );
     void openFiles( const std::string& rootdir, const std::string& basename,
diff --git a/src/traces/tracer.cpp b/src/traces/tracer.cpp
index 59e30494e27a9ba4a175cb5716f4da50a4184cdf..23dfa18c53cb15be83e5d174ab34656705749445 100644
--- a/src/traces/tracer.cpp
+++ b/src/traces/tracer.cpp
@@ -75,6 +75,17 @@ addSignalToTrace( const SignalBase<int>& sig,
   dgDEBUGOUT(15);
 }
 
+void Tracer::
+addSignalToTraceByName( const string& signame,
+			const string& filename )
+{
+  dgDEBUGIN(15);
+  istringstream iss( signame );
+  SignalBase<int> &sig = g_pool.getSignal(iss);
+  addSignalToTrace(sig,filename);
+  dgDEBUGOUT(15);
+}
+
 /*! Empty the list of signals to trace. This function
  * does not modify the file list (it does not close
  * the files in particular.
@@ -263,6 +274,10 @@ commandLine( const std::string& cmdLine
     }
   else if( cmdLine=="add" )
     {
+      SignalBase<int> &sig = g_pool.getSignal(cmdArgs);
+      string r; cmdArgs>>ws>>r;
+      addSignalToTrace(sig,r);
+      dgDEBUG(14)<<"Add <" <<sig.getName ()<<"> with nick \""<<r<<"\""<<endl;
     }
   else if( cmdLine=="clear" )
     { closeFiles (); toTraceSignals.clear (); }
@@ -279,7 +294,6 @@ commandLine( const std::string& cmdLine
 	    }
 	}
 
-      //>>r>>s;
       dgDEBUGF( 15,"Close files.");
       closeFiles ();
       dgDEBUGF( 15,"Open files \"%s\" \"%s\" \"%s\".",
@@ -290,15 +304,8 @@ commandLine( const std::string& cmdLine
   else if( cmdLine=="trace" ) { trace (); }
   else if( cmdLine=="record" )
     {
-      //unsigned int t;
-      //cmdArgs >> ws>>t; if(! cmdArgs.good () ) t=0;
       record ();
     }
-//   else if( cmdLine=="parasite" )
-//     {
-//        SignalBase<int> &sig = g_pool.getSignal( cmdArgs );
-//        parasite(sig);
-//     }
   else if( cmdLine == "start" )    {  play=true; }
   else if( cmdLine == "stop" )    {  play=false; }
   else if( cmdLine == "timeStart" )