anchor.diff:  							{UserName, Password} when (UserName /= undefined andalso
   									Password /= undefined) ->
   								{Fsm, NewState} = start_fsm(SimpleAuthSup, 1, SessionId, AuthType,
  -										OHost, ORealm, [UserName, Password], State),
  -								Answer = gen_fsm:sync_send_all_state_event(Fsm, diameter_request),
  -								{reply, Answer, NewState};
  +										OHost, ORealm, [UserName, Password], CbFsm, State),
  +								gen_fsm:send_all_state_event(Fsm, diameter_request),
  +								%{reply, Answer, NewState};
  +								{noreply, NewState};
   							_ ->
   								Answer = #diameter_nas_app_AAA{
   										'Result-Code' = ?'DIAMETER_BASE_RESULT-CODE_UNABLE_TO_COMPLY',
  
positive.code: 		{ok, Fsm} ->
  			link(Fsm),
  			NewHandlers = gb_trees:enter(SessId, Fsm, Handlers),
  			{Fsm, State#state{handlers = NewHandlers}};
  		{error, Reason} ->
  			error_logger:error_report(["Error starting session handler",
  					{error, Reason}, {supervisor, AuthSup},{session_id, SessId}]),
  
negative.code: %%  internal functions
  %%----------------------------------------------------------------------
  
  -spec request(Caps, Eap, Request, CbFsm, State) -> Reply
  	when
  		Caps :: capabilities(),
  		Eap :: none | {eap, #eap_packet{}},
  		Request :: #diameter_nas_app_AAR{} | #diameter_nas_app_STR{}
  				| #diameter_eap_app_DER{},
  		CbFsm :: pid(),
  		State :: state(),
  		Reply :: {reply, Answer, State} | {noreply, State},
  		Answer :: #diameter_nas_app_AAA{} | #diameter_nas_app_STA{}
  				| #diameter_eap_app_DEA{}.
  %% @doc Based on the DIAMETER request generate appropriate DIAMETER
  %% answer.
  %% @hidden
  request(Caps, none, Request, CbFsm, State) when is_record(Request, diameter_nas_app_AAR) ->
  	#diameter_caps{origin_host = {OHost,_}, origin_realm = {ORealm,_}} = Caps,
  	request1(none, OHost, ORealm, Request, CbFsm, State);
  request(Caps, {eap, <<_:32, ?Identity, Identity/binary>>}, Request, CbFsm, State)
  		when is_record(Request, diameter_eap_app_DER) ->
  	#diameter_caps{origin_host = {OHost,_}, origin_realm = {ORealm,_}} = Caps,
  	request1({identity, Identity}, OHost, ORealm, Request, CbFsm, State);
  request(Caps, {eap, <<_, EapId, _:16, ?LegacyNak, Data/binary>>}, Request, CbFsm, State)
  		when is_record(Request, diameter_eap_app_DER) ->
  	#diameter_caps{origin_host = {OHost,_}, origin_realm = {ORealm,_}} = Caps,
  	request1({legacy_nak, EapId, Data}, OHost, ORealm, Request, CbFsm, State);
  request(Caps, Eap, Request, CbFsm, State) when is_record(Request, diameter_eap_app_DER) ->
  	#diameter_caps{origin_host = {OHost,_}, origin_realm = {ORealm,_}} = Caps,
  	request1(Eap, OHost, ORealm, Request, CbFsm, State);
  request(Caps, none, Request, _CbFsm, State) when is_record(Request, diameter_nas_app_STR) ->
  	#diameter_caps{origin_host = {OHost,_}, origin_realm = {ORealm,_}} = Caps,
  	SessionId = Request#diameter_nas_app_STR.'Session-Id',
  	try
  