anchor.diff:      _ -> {Name,not_running}
     end.
   
  -init(Node, Consumer, Collectors) ->
  +assert_proxy(no_proxy) -> ok;
  +assert_proxy(Node) ->
  +  erlang:set_cookie(Node,watchdog),
  +  case net_adm:ping(Node) of
  +    pong -> ok;
  +    _    -> exit({no_proxy,Node})
  +end.
  +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  +%% runs in the consumer process
  +
  +init(Consumer, Node, Proxy) ->
     process_flag(trap_exit,true),
     prf:ticker_even(),
  -  loop(#ld{node = Node, 
  -           consumer = Consumer, 
  -           collectors = subscribe(Node,Collectors),
  -           consumer_data = Consumer:init(Node)}).
  +  case Proxy of
  +    no_proxy ->
  +      loop(#ld{node = Node, 
  +	       proxy = [],
  +	       consumer = Consumer, 
  +	       collectors = subscribe(Node,Consumer:collectors()),
  +	       consumer_data = Consumer:init(Node)});
  +    _ ->
  +      loop(#ld{node = Proxy,
  +	       proxy = {Node,Consumer:collectors()},
  +	       consumer = Consumer, 
  +	       collectors = subscribe(Proxy,[prfDog]),
  +	       consumer_data = Consumer:init(Node)})
  +  end.
   
   loop(LD) ->
     receive
  
positive.code:     {timeout, _, {tick}} -> 
        prf:ticker_even(),
        {Data,NLD} = get_data(LD),
        Cdata = (NLD#ld.consumer):tick(NLD#ld.consumer_data, Data),
        ?LOOP(NLD#ld{consumer_data = Cdata});
      {'EXIT',Pid,Reason} when Pid == LD#ld.server ->
        ?log({lost_target, Reason}),
  
negative.code:       Cdata = (LD#ld.consumer):config(LD#ld.consumer_data, Data),
        ?LOOP(LD#ld{consumer_data = Cdata});
      {config,CollData} ->
        ?LOOP(maybe_conf(CollData, LD))
    end.
  
  de_proxy(LD,Data) ->
    case LD#ld.proxy of
      [] -> Data;
      {Node,Collectors} -> de_proxy(Data,Node,Collectors)
    end.
  
  de_proxy([{prfDog,DogData}|_],Node,Collectors) ->
    try Trigger = trigger(Collectors),
        CollectorDatas = orddict:fetch({Node,Trigger},DogData),
        [C || C={Coll,_} <- CollectorDatas, lists:member(Coll,Collectors)]
    catch _:_ -> 
        []
    end.
  
  trigger(Collectors) -> 
    case lists:member(prfSys,Collectors) of 
      true -> ticker
    end.
  
  maybe_conf(CollData, LD) ->
    case LD#ld.proxy == [] of
      true -> do_config(CollData, LD);
      false-> ?log({no_config,running_with_proxy}),LD
    end.
  
  do_config(CollData, LD) ->
  