anchor.diff:  					RadiusID, [], RequestAuthenticator, Secret, RadiusFsm),
   			{stop, {shutdown, SessionID}, StateData};
   		_ ->
  -			wait_for_commit3(RadiusFsm, AccessRequest, StateData)
  -	end.
  -%% @hidden
  -wait_for_commit3(RadiusFsm, #radius{id = RadiusID,
  +			commit3(RadiusFsm, AccessRequest, StateData)
  +	end.
  +%% @hidden
  +commit3(RadiusFsm, #radius{id = RadiusID,
   		authenticator = RequestAuthenticator} = AccessRequest,
   		#statedata{scalar_p = ScalarP, secret = Secret,
   		eap_id = EapID, session_id = SessionID} = StateData)->
   	case ScalarP of
   		<<ScalarP_Valid:256>> when 1 < ScalarP_Valid, ScalarP_Valid < ?R ->
  -			wait_for_commit4(RadiusFsm, AccessRequest, StateData);
  +			commit4(RadiusFsm, AccessRequest, StateData);
   		_ScalarP_Out_of_Range ->
   			send_response(failure, EapID, <<>>, ?AccessReject, RadiusID,
   					[], RequestAuthenticator, Secret, RadiusFsm),
   			{stop, {shutdown, SessionID}, StateData}
   	end.
   %% @hidden
  -wait_for_commit4(RadiusFsm, #radius{id = RadiusID,
  +commit4(RadiusFsm, #radius{id = RadiusID,
   		authenticator = RequestAuthenticator} = _AccessRequest,
   		#statedata{eap_id = EapID, secret = Secret,
   		scalar_p = ScalarP, element_p = ElementP,
  
positive.code: 	case ocs_eap_pwd:h([Ks, ElementP, ScalarP,
  			ElementS, ScalarS, Ciphersuite]) of
  		ConfirmP ->
  			wait_for_confirm3(RadiusFsm, AccessRequest, StateData);
  		_ ->
  			send_response(failure, EapID, <<>>, ?AccessReject, RadiusID,
  					[], RequestAuthenticator, Secret, RadiusFsm),
  			{stop, {shutdown, SessionID}, StateData}
  	end.
  %% @hidden
  wait_for_confirm3(RadiusFsm, #radius{id = RadiusID,
  		authenticator = RequestAuthenticator} = _AccessRequest,
  		#statedata{secret = Secret, eap_id = EapID, ks = Ks,
  		confirm_p = ConfirmP, confirm_s = ConfirmS, scalar_s = ScalarS,
  
negative.code: 					RadiusID, [], RequestAuthenticator, Secret, RadiusFsm),
  			NewStateData = StateData#statedata{eap_id = NewEapID, ks = Ks,
  					confirm_s = ConfirmS},
  			{next_state, confirm, NewStateData, ?TIMEOUT}
  	end.
  
  -spec confirm(Event :: timeout | term(), StateData :: #statedata{}) ->
  	Result :: {next_state, NextStateName :: atom(), NewStateData :: #statedata{}}
  		| {next_state, NextStateName :: atom(), NewStateData :: #statedata{},
  		Timeout :: non_neg_integer() | infinity}
  		| {next_state, NextStateName :: atom(), NewStateData :: #statedata{}, hibernate}
  		| {stop, Reason :: normal | term(), NewStateData :: #statedata{}}.
  %% @doc Handle events sent with {@link //stdlib/gen_fsm:send_event/2.
  %%		gen_fsm:send_event/2} in the <b>confirm</b> state.
  %% @@see //stdlib/gen_fsm:StateName/2
  %% @private
  %%
  confirm(timeout, #statedata{session_id = SessionID} = StateData)->
  	{stop, {shutdown, SessionID}, StateData};
  confirm({#radius{attributes = Attributes} = AccessRequest, RadiusFsm},
  		#statedata{session_id = SessionID, eap_id = EapID} = StateData)->
  	try
  		EapMessage = radius_attributes:fetch(?EAPMessage, Attributes),
  		EapData = ocs_eap_codec:eap_packet(EapMessage),
  		#eap_packet{code = response, type = ?PWD,
  				identifier = EapID, data = Data} = EapData,
  		EapHeader = ocs_eap_codec:eap_pwd(Data),
  