anchor.diff:  %%-----------------------------------------------------------------
   %% @private
   -spec init({module(), term()}) -> {ok, #state{}}.
  -init({Callback, Args}) ->
  -    {ok, CState} = Callback:init(Args),
  -    State = #state{callback = Callback, cstate = CState},
  +init({Mod, Args}) ->
  +    {ok, ModState} = Mod:init(Args),
  +    State = #state{mod = Mod, mod_state = ModState},
       {ok, State}.
   
   %% @private
   -spec handle_call(term(), term(), #state{}) -> any().
  -handle_call(Req, From, State) ->
  -    Callback = State#state.callback,
  -    Response = Callback:handle_call(Req, From, State#state.cstate),
  +handle_call(Req, From, #state{mod = Mod, mod_state = ModState} = State) ->
  +    Response = Mod:handle_call(Req, From, ModState),
       handle_response(Response, State).
   
   %% @private
  
positive.code: -include_lib("../sip_common.hrl").
  -include_lib("sip.hrl").
  
  -record(state, {sending = [], callback, cstate}).
  
  %% @doc Creates UA process as part of the supervision tree
  %%
  
negative.code: %%
  %% If no destinations are provided, report error to the callback module.
  %% @end
  send_internal(Id, [], Request, #state{mod = Mod} = State) ->
      % no more destinations -- report to callback
      Mod:request_failed(Id, Request, request_timeout),
      State;
  send_internal(Id, [Top|Fallback], Request, State) ->
      % send request to the top destination, remember the transaction id,
  