anchor.diff:  -export([start/1
            , start/2
            , stop/1
  -         , print_state/1]).
  +         , print_state/1
  +         , unlink/0]).
   
  -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  -%% gen_server boiler plate
   
  +%% the gen_server boilerplate
   -behaviour(gen_server).
   -export([handle_call/3
            , handle_cast/2
  
positive.code:   gen_server:start_link({local, Mod}, ?MODULE, {Mod,Args}, []).
  
  stop(Mod) -> 
    try gen_server:call(Mod,stop) 
    catch exit:{noproc,_} -> ok
    end.
  
  print_state(Mod) ->
    gen_server:call(Mod,print_state).
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% implementation
  
  applie(LD,F,As) ->
    case hd(As) of
      print_state ->
        print_state(LD#ld.mod,last(As)),
        {ok,LD};
      _ ->
        {Reply,CLD} = applier(LD#ld.mod,F,As),
        {Reply,LD#ld{cld=CLD}}
    end.
  
  applier(M,F,As) ->
    case F of
      handle_call -> safer(M,F,As,{ok,last(As)});
      _           -> {ok,safer(M,F,As,last(As))}
    end.
  
  safer(M,F,As,Default) ->
    case erlang:function_exported(M,F,length(As)) of
      false-> Default;
      true ->
        try apply(M,F,As) 
        catch _:_ -> Default
        end
    end.
  
  last(L) -> hd(lists:reverse(L)).
  
  
negative.code:          , terminate/2
           , code_change/3]).
  
  -include_lib("eper/src/log.hrl").
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% the API
  
  