anchor.diff:  %%%-------------------------------------------------------------------
   -module(prfHost).
   
  --export([start/3, stop/1,config/3]).
  +-export([start/3,start/4,stop/1,config/3]).
   -export([loop/1]).				%internal
   
   -record(ld, {node, server=[], collectors, config=[], 
  -             consumer, consumer_data, data=[]}).
  +             proxy, consumer, consumer_data, data=[]}).
   
   -define(LOOP, ?MODULE:loop).
   
   -include("log.hrl").
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  +%% runs in the shell
   
  -start(Name,{watchdog,Node},Consumer) -> start(Name,Node,Consumer,[prfDog]);
  -start(Name,Node,Consumer) -> start(Name,Node,Consumer,Consumer:collectors()).
  -
  -start(Name, Node, Consumer, Colls) 
  -  when is_atom(Name),is_atom(Node),is_atom(Consumer) -> 
  -  SpawnFun = fun()->init(Node,Consumer,Colls) end,
  +start(Name,Node,Consumer) -> start(Name,Node,Consumer,no_proxy).
  +start(Name,Node,Consumer,Proxy)
  +  when is_atom(Name),is_atom(Node),is_atom(Consumer),is_atom(Proxy) -> 
  +  assert_proxy(Proxy),
  +  SpawnFun = fun()->init(Consumer,Node,Proxy) end,
     case whereis(Name) of
       undefined -> register(Name, spawn_link(SpawnFun));
       Pid -> Pid
  
positive.code: 
  get_data(LD) -> 
    case {get_datas(LD#ld.node), LD#ld.data} of
      {[],[]} -> {[],LD};
      {[],[Data]} -> {Data,LD#ld{data=[]}};
      {[Data],_} -> {Data,LD#ld{data=[]}};
      {[Data,D2|_],_} ->{Data,LD#ld{data=[D2]}}
    end.
  
  get_datas(Node) -> 
  
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) ->
  