anchor.diff:      mmd_msg:reply(From, CC, Ret),
       {reply,ok,State};
   
  -handle_call({mmd, From, CC=#channel_create{type=sub, id=Id}}, _From, State) ->
  -    All = dispatchDiff(State),
  -    mmd_msg:reply(From, CC, ?map([{added,?array(sets:to_list(All))}])),
  -    ok = p6pg:add(?WATCHERS,From,Id),
  -    {reply, ok, State#state{known=All}};
  -
  -handle_call({mmd, _MMDFrom, #channel_close{}}, _GSFrom, State) ->
  -    %% Auto-removed by p6pg whent he channel dies
  -    {reply,ok, State};
  +handle_call({mmd, From, CC=#channel_create{type=sub}}, _From,
  +	    State=#state{chans=Chans}) ->
  +    case channel_mgr:processIn(Chans, From, CC) of
  +        {NewChans, _Msg} ->
  +	    All = dispatchDiff(State),
  +	    mmd_msg:reply(From, CC, ?map([{added, ?array(sets:to_list(All))}])),
  +	    {reply, ok, State#state{known=All, chans=NewChans}};
  +        NewChans ->
  +	    {reply, ok, State#state{chans=NewChans}}
  +    end;
  +
  +handle_call({mmd, From, M=#channel_close{}}, _From,
  +	    State=#state{chans=Chans}) ->
  +    {NewChans, _Msg} = channel_mgr:processIn(Chans, From, M),
  +    {reply, ok, State#state{chans=NewChans}};
   
   handle_call(Request, From, State) ->
       ?linfo("Unexpected call: ~p from: ~p, with state: ~p",[Request,From,State]),
  
positive.code: -define(WATCHERS,service_watchers).
  -define(P6DMAP,service_map).
  
  -record(state, {known=sets:new()}).
  
  xformEntryAdd(E=#dm{val={SL,HL},node=Node}) ->
      W = service_node_weight:getNodeWeight(Node),
  
negative.code: start_link() ->
      gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
  
  
  %% Channel Messages
  
  