anchor.diff:  
   add_hook(Hook, Mod, Func, Info, Nodes) ->
   	Pid = self(),
  -	gen_server:cast(cpx_hooks, {add_hook, Pid, Hook, Mod, Func, Info, Nodes}).
  +	gen_server:cast(?MODULE, {add_hook, Pid, Hook, Mod, Func, Info, Nodes}).
   
   drop_hook(Pid) ->
  -	gen_server:cast(cpx_hooks, {drop_hook, Pid}).
  +	gen_server:cast(?MODULE, {drop_hook, Pid}).
   
   trigger_hooks(Hook, Args) ->
   	trigger_hooks(Hook, Args, first).
  
positive.code: run_hooks([], _Args, first) ->
  	{error, not_handled};
  
  run_hooks([HookRec | Tail], Args, Mode) ->
  	#hook{mod = Mod, func = Func, info = Info} = HookRec,
  	try erlang:apply(Mode, Func, [Info | Args]) of
  		{ok, Val} when Mode == first ->
  			{ok, Val};
  		{ok, Val} ->
  			run_hooks(Tail, Args, [Val | Mode]);
  		Else ->
  			?debug("hook returned bad value:  ~p.  Hook:  ~p", [Else, HookRec]),
  			run_hooks(Tail, Args, Mode)
  	catch
  		What:Why ->
  			?notice("Hook errored:  ~p:~p.  Hook:  ~p", [What, Why, HookRec]),
  			run_hooks(Tail, Args, Mode)
  	end.
  
negative.code: %% handle_info
  %% -------------------------------------------------------------------
  
  handle_info({'DOWN', _Monref, process, Pid, _Reason}, State) ->
  	ets:delete(?MODULE, Pid),
  	{noreply, State};
  
  