anchor.diff:  %% export the ocs public API
   -export([add_client/2, add_client/4, find_client/1, update_client/2,
   		update_client/3, get_clients/0, delete_client/1]).
  --export([add_subscriber/3, add_subscriber/4, add_subscriber/7,
  -		find_subscriber/1, delete_subscriber/1, update_password/2,
  -		update_attributes/2, update_attributes/5, get_subscribers/0]).
  +-export([add_subscriber/3, add_subscriber/4, add_subscriber/5,
  +		add_subscriber/7, find_subscriber/1, delete_subscriber/1,
  +		update_password/2, update_attributes/2, update_attributes/5,
  +		get_subscribers/0]).
   -export([add_user/3, list_users/0, get_user/1, delete_user/1]).
   -export([generate_password/0, generate_identity/0]).
   -export([start/4, start/5]).
  
positive.code: 		{aborted, Reason} ->
  			{error, Reason}
  	end;
  add_subscriber(Identity, Password, Attributes, Buckets, Product, EnabledStatus, MultiSession)
  		when is_binary(Identity), is_binary(Password), is_list(Attributes),
  		is_list(Buckets), is_list(Product), is_boolean(EnabledStatus), is_boolean(MultiSession) ->
  	F1 = fun() ->
  				case mnesia:read(product, Product, read) of
  					[_] ->
  
negative.code: 			exit(Reason)
  	end.
  
  -spec add_subscriber(Identity, Password, Product) -> Result
  	when
  		Identity :: string() | binary(),
  		Password :: string() | binary(),
  		Product :: string(),
  		Result :: {ok, #subscriber{}} | {error, Reason},
  		Reason :: term().
  %% @equiv add_subscriber(Identity, Password, Product, [], [], true, false)
  add_subscriber(Identity, Password, Product) ->
  	add_subscriber(Identity, Password, Product, [], [], true, false).
  
  -spec add_subscriber(Identity, Password, Product, Buckets) -> Result
  	when 
  		Identity :: string() | binary(),
  		Password :: string() | binary(),
  		Product :: string(),
  		Buckets :: [#bucket{}],
  		Result :: {ok, #subscriber{}} | {error, Reason},
  		Reason :: term().
  %% @equiv add_subscriber(Identity, Password, Product, Buckets, [], true, false)
  add_subscriber(Identity, Password, Product, Buckets) ->
  	add_subscriber(Identity, Password, Product, Buckets, [], true, false).
  
  -spec add_subscriber(Identity, Password, Product, Buckets, Attributes) -> Result
  	when 
  		Identity :: string() | binary(),
  		Password :: string() | binary(),
  		Product :: string(),
  		Buckets :: [#bucket{}],
  		Attributes :: radius_attributes:attributes() | binary(),
  		Result :: {ok, #subscriber{}} | {error, Reason},
  		Reason :: term().
  %% @equiv add_subscriber(Identity, Password, Product, Buckets, Attributes, true, false)
  add_subscriber(Identity, Password, Product, Buckets, Attributes) ->
  	add_subscriber(Identity, Password, Product, Buckets, Attributes, true, false).
  
  -spec add_subscriber(Identity, Password, Product,
  		Buckets, Attributes, EnabledStatus, MultiSessions) -> Result
  	when
  		Identity :: string() | binary() | undefined,
  		Password :: string() | binary() | undefined,
  		Product :: string() | undefined,
  		Buckets :: [#bucket{}] | undefined,
  		Attributes :: radius_attributes:attributes() | binary(),
  		EnabledStatus :: boolean() | undefined,
  		MultiSessions :: boolean(),
  		Result :: {ok, #subscriber{}} | {error, Reason},
  