anchor.diff:  tracer() -> tracer(node()).
   tracer(Nodes) -> tracer(Nodes,[]).
   tracer(Nodes,Opt) ->
  -    start(),
  +    {PI,Client,Traci} = opt(Opt),
  +    %%We use initial Traci as SessionInfo for loop/2
  +    start(Traci),
       store(tracer,[Nodes,Opt]),
  -    {PI,Client,Traci} = opt(Opt),
       do_tracer(Nodes,PI,Client,Traci).
   
   do_tracer(Nodes0,PI,Client,Traci) ->
  
positive.code: 			%% We will get a nodedown message
  			undefined
  		end,
  	    loop(dict:store(Node,{MetaFile,MetaPid},NodeInfo));
  	{get_nodes,Sender} ->
  	    Sender ! {?MODULE,dict:fetch_keys(NodeInfo)},
  	    loop(NodeInfo);
  	{write_trace_info,Key,What} ->
  	    dict:fold(fun(Node,{_MetaFile,MetaPid},_) -> 
  			      rpc:call(Node,observer_backend,
  
negative.code: 
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %%% Process implementation
  start(SessionInfo) ->
      case whereis(?MODULE) of
  	undefined ->
  	    Parent = self(),
  	    Pid = spawn(fun() -> init(Parent, SessionInfo) end),
  	    receive {started,Pid} -> ok end;
  	Pid when is_pid(Pid) ->
  	    ok
      end.
  
  
  init(Parent, SessionInfo) ->
      register(?MODULE,self()),
      ets:new(?history_table,[ordered_set,named_table,public]),
      Parent ! {started,self()},
      loop(dict:new(), SessionInfo).
  
  loop(NodeInfo, SessionInfo) ->
      receive 
  	{init_node,Node,MetaFile,PI,Traci} ->
  	    erlang:monitor_node(Node,true),
  