anchor.diff:  	IDReqHeader = ocs_eap_codec:eap_pwd(Header),
   	IDRequest = <<IDReqHeader/binary, IDReqBody/binary>>,
   	radius:response(RadiusFsm, IDRequest),
  -	NewStateData = StateData#statedata{group_desc = <<"19">>, random_func = <<"1">>, prf = <<"1">>,
  -		token = Token, prep = <<"0">>},
  -	{next_state, wait_for_commit, NewStateData, ?TIMEOUT}.
  +	NewStateData = StateData#statedata{group_desc = <<"19">>, random_func = <<"1">>,
  +		prf = <<"1">>, token = Token, prep = <<"0">>},
  +	{next_state, wait_for_id, NewStateData}.
  +
  +-spec wait_for_id(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>wait_for_id</b> state. This state is responsible
  +%%		for sending EAP-PWD-ID request to peer.
  +%% @@see //stdlib/gen_fsm:StateName/2
  +%% @private
  +%%
  +wait_for_id(timeout, #statedata{identifier = Identifier} = StateData)->
  +	{stop, {shutdown, Identifier}, StateData};
  +wait_for_id({request, _Address, _Port, _Packet} , StateData)->
  +	{next_state, wait_for_commit, StateData, ?TIMEOUT}.
   
   -spec wait_for_commit(Event :: timeout | term(), StateData :: #statedata{}) ->
   	Result :: {next_state, NextStateName :: atom(), NewStateData :: #statedata{}}
  
positive.code: %% @@see //stdlib/gen_fsm:StateName/2
  %% @private
  %% @todo send EAP-pwd-ID request to peer
  idle(timeout, #statedata{identifier = Identifier} = StateData)->
  	{stop, {shutdown, Identifier}, StateData};
  idle({request, _Address, _Port, #eap_packet{data = Data} = Packet}, StateData) when is_binary(Packet) ->
  	{next_state, wait_for_id, StateData, ?TIMEOUT}.
  
  -spec wait_for_id(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>wait_for_id</b> state. This state is responsible
  %%		for sending EAP-PWD-ID request to peer.
  %% @@see //stdlib/gen_fsm:StateName/2
  %% @private
  %%
  wait_for_id(timeout, #statedata{identifier = Identifier} = StateData)->
  	{stop, {shutdown, Identifier}, StateData};
  wait_for_id({request, _Address, _Port, _Packet} , #statedata{identifier = Identifier,
  		radius_fsm = RadiusFsm} = StateData)->
  	{ok, Token} = crypto:rand_bytes(4),
  	{ok, HostName} = inet:gethostname(),
  	Body = #eap_pwd_id{group_desc = 19, random_fun = 16#1, prf = 16#1, token = Token,
  
negative.code: 	process_flag(trap_exit, true),
  	StateData = #statedata{radius_fsm = RadiusFsm, address = Address,
  			port = Port, identifier = Identifier},
  	{ok, idle, StateData, 0}.
  
  -spec idle(Event :: timeout | term(), StateData :: #statedata{}) ->
  	Result :: {next_state, NextStateName :: atom(), NewStateData :: #statedata{}}
  