anchor.diff:  %% ====================================================================
   
   init([InstanceName]) ->
  +	erlang:process_flag(trap_exit, true),
       {ok, #state{global_alias=allocate_global_name(InstanceName, 10)}}.
   
  -handle_call({subscribe, SubscriberPid, SendMethod}, 
  +handle_call({subscribe, SubscriberRef, SendMethod}, 
   			_From, 
   			#state{registry=Reg}=State) ->
  -	case lists:keymember(SubscriberPid, 1, Reg) of
  +	case lists:keymember(SubscriberRef, 1, Reg) of
   		false -> 
  -			SendMethodR=resolve_send_method(SendMethod),
  -			{reply, ok, State#state{registry=[{SubscriberPid,SendMethodR}|Reg]}};
  +			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) ->
  
positive.code: %%% Internal functions
  %% --------------------------------------------------------------------
  
  
negative.code: handle_cast(Info, #state{registry=Reg}=State) ->
      Timestamp=now(),
      Event={Timestamp, Info},
      {noreply, State#state{registry=notify_subs(Reg, Event)}}.
  
  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, 
  