anchor.diff:           , terminate/2
            , code_change/3]).
   
  --record(ld,{mod,args,cld}).
  -
  -init({Mod,Args}) ->
  -  {_,NLD} = applie(#ld{mod=Mod,args=Args},init,[Args]),
  -  {ok,NLD}.
  -
  -terminate(Reason,LD) -> 
  -  applie(LD,terminate,[Reason,LD#ld.cld]).
  -
  -code_change(_,LD,Info) -> 
  -  {_,NLD} = applie(LD,code_change,["",LD#ld.cld,Info]),
  -  {ok,NLD}.
  -
  -handle_cast(Msg,LD) -> 
  -  {_,NLD} = applie(LD,handle_cast,[Msg,LD#ld.cld]),
  -  {noreply,NLD}.
  -
  -handle_call(Msg,From,LD) -> 
  -  {Reply,NLD} = applie(LD,handle_call,[Msg,From,LD#ld.cld]),
  -  {reply,Reply,NLD}.
  -
  -handle_info(Msg,LD) -> 
  -  {_,NLD} = applie(LD,handle_info,[Msg,LD#ld.cld]),
  -  {noreply,NLD}.
  -
  +-include_lib("eper/src/log.hrl").
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %% the API
   
  
positive.code:   case tuple_size(Tup) of
      L when L < 1 -> Tup;
      L ->
        Fields = safer(M,rec_info,[element(1,Tup)],[]),
        case L == length(Fields)+1 of
  	false-> list_to_tuple(expand_recs(M,tuple_to_list(Tup)));
  	true -> expand_recs(M,lists:zip(Fields,tl(tuple_to_list(Tup))))
  
negative.code: -export([start/1
           , start/2
           , stop/1
           , print_state/1
           , unlink/0]).
  
  
  %% the gen_server boilerplate
  -behaviour(gen_server).
  -export([handle_call/3
           , handle_cast/2
  