anchor.diff:              ?THROW(Reason)
       end.
   
  -init_apps(Opts) ->
  -    lists:foldl(fun app_acc/2, [], lists:reverse(Opts)).
  -
  -app_acc({application, Opts} = T, Acc) ->
  +init_app({application, Opts} = T) ->
       is_list(Opts) orelse ?THROW(T),
   
       [Dict, Mod] = get_opt([dictionary, module], Opts),
  
positive.code:     M = get_opt(call_mutates_state, Opts, false, [true]),
      A = get_opt(answer_errors, Opts, discard, [callback, report]),
      P = get_opt(request_errors, Opts, answer_3xxx, [answer, callback]),
      [#diameter_app{alias = Alias,
                     dictionary = Dict,
                     id = cb(Dict, id),
                     module = init_mod(Mod),
                     init_state = ModS,
                     mutable = M,
                     options = [{answer_errors, A},
                                {request_errors, P}]}
       | Acc].
  
  init_mod(#diameter_callback{} = R) ->
      init_mod([diameter_callback, R]);
  
negative.code: 
  make_config(SvcName, Opts) ->
      AppOpts = [T || {application, _} = T <- Opts],
      Apps = [init_app(T) || T <- AppOpts],
  
      [] == Apps andalso ?THROW(no_apps),
  
  