anchor.diff:  send_request(timeout, #statedata{nas_ip = Address, port = Port,
   		id = Id, secret = SharedSecret, attributes = Attributes,
   		retry_time = Retry} = StateData) ->
  -	IdAttrs = [?NasIpAddress, ?NasIdentifier, ?UserName, ?NasPort, ?FramedIpAddress,
  -			?CallingStationId, ?CalledStationId, ?AcctSessionId, ?AcctMultiSessionId,
  -			?NasPortType, ?NasPortId],
  -	DiscAttrList  = extract_attributes(IdAttrs, Attributes, radius_attributes:new()),
  +	DiscAttrList  = extract_attributes(Attributes),
   	DiscAttr = radius_attributes:codec(DiscAttrList),
   	Length = size(DiscAttr) + 20,
   	RequestAuthenticator = crypto:hash(md5,
  
positive.code: %%  internal functions
  %%----------------------------------------------------------------------
  
  -spec extract_attributes(Attributes, AttrList, CurrentAttrList) -> NewAttrList
  	when
  		Attributes :: [integer()],
  		AttrList :: radius_attributes:attributes(),
  		CurrentAttrList :: radius_attributes:attributes(),
  		NewAttrList :: radius_attributes:attributes().
  %% @doc Appends radius attributes needed for a Disconnect/Request
  %% @private
  %%
  extract_attributes([ H | T ] = _Attributes, AttrList, CurrentAttrList) ->
  	NewAttrList = case radius_attributes:find(H, AttrList) of
  		{error, not_found} ->
  			CurrentAttrList;
  		{ok, Value}->
  			radius_attributes:add(H, Value, CurrentAttrList)
  	end,
  	extract_attributes(T, AttrList, NewAttrList);
  extract_attributes([], _AttrList, CurrentAttrList) ->
  	CurrentAttrList.
  
  
negative.code: 		{error, _Reason} ->
  				{next_state, send_request, StateData, ?TIMEOUT}
  	end.
  
  
  -spec receive_response(Event, StateData) -> Result
  	when
  