anchor.diff:  get_usagespec([] = _Query) ->
   	RespHeaders = [{content_type, "application/json"}],
   	Body = mochijson:encode({array, [spec_aaa_auth(),
  -			spec_aaa_acct(), spec_public_wlan()]}),
  +			spec_aaa_acct(), spec_public_wlan(),
  +			spec_voip()]}),
   	{ok, RespHeaders, Body};
   get_usagespec(Query) ->
   	RespHeaders = [{content_type, "application/json"}],
  
positive.code: 			Body = mochijson:encode({array, [spec_public_wlan()]}),
  			{ok, RespHeaders, Body};
  		{_, {_, "PublicWLANAccessUsageSpec"}, _} ->
  			{error, 400};
  		{_, {_, "HTTPTransferUsageSpec"}, []} ->
  			Body = mochijson:encode({array, [spec_http_transfer()]}),
  
negative.code: 	Chars = ipdr_wlan_characteristics(Event),
  	Object = {struct, [{"id", ID}, {"href", Href}, {"date", Date}, {"type", Type},
  			{"status", Status}, {"usageSpecification", UsageSpec},
  			{"usageCharacteristic", {array, Chars}}]},
  	case Filters of
  		[] ->
  			Object;
  		_ ->
  			ocs_rest:fields("id,href," ++ Filters, Object)
  	end;
  usage_aaa_ipdr(Event, Filters) when is_record(Event, ipdr_voip) ->
  	UsageSpec = {struct, [{"id", "VoIPUsageSpec"},
  			{"href", ?usageSpecPath ++ "VoIPUsageSpec"},
  			{"name", "VoIPUsageSpec"}]},
  	Type = "VoIPUsageSpec",
  	Status = "rated",
  	Chars = ipdr_voip_characteristics(Event),
  	Object = {struct, [{"type", Type}, {"status", Status},
  			{"usageSpecification", UsageSpec},
  			{"usageCharacteristic", {array, Chars}}]},
  	case Filters of
  		[] ->
  