anchor.diff:  handle_cast(Info, #state{registry=Reg}=State) ->
       Timestamp=now(),
       Event={Timestamp, Info},
  -	notify_subs(Reg, Event),
  -    {noreply, State}.
  +    {noreply, State#state{registry=notify_subs(Reg, Event)}}.
   
  -notify_subs(Reg, Event) ->
  -	[SendMethod(Pid, Event) || {Pid, SendMethod} <- Reg].
  -
  -resolve_send_method(send) ->
  -	fun erlang:send/2;
  -resolve_send_method({gen_server, cast}) ->
  -	fun gen_server:cast/2;
  -resolve_send_method({gen_event, notify}) ->
  -	fun gen_event:notify/2;
  -resolve_send_method({Module, Function}) ->
  -	fun(Pid, Event) ->
  -			apply(Module, Function, [Pid, Event])
  -	end.
  -
  +handle_info({'DOWN', MonitorRef, process, _Object, _Info}, 
  +			#state{registry=Reg}=State) ->
  +	Reg1=lists:keydelete(MonitorRef, 3, Reg),
  +    {noreply, State#state{registry=Reg1}};
   handle_info({global_name_conflict, _Name}, 
               #state{global_alias={InstanceName,_}}=State) ->
       {noreply, 
  
positive.code: %%% Internal functions
  %% --------------------------------------------------------------------
  
  
negative.code: %% ====================================================================
  
  init([InstanceName]) ->
  	erlang:process_flag(trap_exit, true),
      {ok, #state{global_alias=allocate_global_name(InstanceName, 10)}}.
  
  handle_call({subscribe, SubscriberRef, SendMethod}, 
  			_From, 
  			#state{registry=Reg}=State) ->
  	case lists:keymember(SubscriberRef, 1, Reg) of
  		false -> 
  			try
  				SendMethodR=resolve_send_method(SendMethod),
  				MonRef=monitor(SubscriberRef),
  				{reply, ok, 
  				 State#state{registry=[{SubscriberRef, SendMethodR, MonRef} | Reg]}}
  			catch
  				_:ErrReason ->
  					{reply, {error, ErrReason}, State}
  			end;
  		true -> {reply, {error, already_subscribed}, State}
  	end;
  handle_call(get_global_alias, _From, #state{global_alias=GlbalAlias}=State) ->
  