anchor.diff:  add_subscriber(undefined, Password, Product, Characteristics, Buckets, Attributes, EnabledStatus, MultiSession)
   		when is_binary(Password), is_list(Product), is_list(Buckets), is_list(Attributes),
   		is_boolean(EnabledStatus), is_boolean(MultiSession) ->
  -	F2 = fun() ->
  -				ProdId = case Product of
  +	Now = erlang:system_time(?MILLISECOND),
  +	F1 = fun() ->
  +				ProductId = case Product of
   					[] ->
   						case mnesia:first(product) of
   							'$end_of_table' ->
   								throw(product_not_found);
  -							ProId ->
  -								ProId
  +							ProdId ->
  +								ProdId
   						end;
   					Product ->
   						Product
   				end,
  -				case mnesia:read(product, ProdId, read) of
  -					[#product{start_date = SD, end_date = TD, status = Status }] ->
  -						F1 = fun(_, _, 0) ->
  +				case mnesia:read(product, ProductId, read) of
  +					[#product{} = P] ->
  +						N = erlang:unique_integer([positive]),
  +						S1 = #subscriber{password = Password,
  +						attributes = Attributes, buckets = Buckets,
  +						enabled = EnabledStatus, multisession = MultiSession,
  +						last_modified = {Now, N}},
  +						S2 = subscription(S1, P, Characteristics),
  +						F3 = fun(_, _, 0) ->
   									mnesia:abort(retries);
   								(F, Identity, I) ->
   									case mnesia:read(subscriber, Identity, read) of
   										[] ->
  -											TS = erlang:system_time(?MILLISECOND),
  -											N = erlang:unique_integer([positive]),
  -											NewBuckets = [B#bucket{last_modified = {TS, N}}
  -													|| B <- Buckets],
  -											P = #product_instance{start_date = SD,
  -													termination_date = TD, status = Status,
  -													product = Product, characteristics = Characteristics,
  -													last_modified = {TS, N}},
  -											S = #subscriber{name = Identity,
  -													password = Password, attributes = Attributes,
  -													buckets = NewBuckets, enabled = EnabledStatus,
  -													multisession = MultiSession, product = P,
  -													last_modified = {TS, N}},
  -											ok = mnesia:write(S),
  -											S;
  +											S3 = S2#subscriber{name = Identity},
  +											ok = mnesia:write(S3),
  +											S3;
   										[_] ->
   											F(F, list_to_binary(generate_identity()), I - 1)
   									end
   						end,
  -						F1(F1, list_to_binary(generate_identity()), 5);
  +						F3(F3, list_to_binary(generate_identity()), 5);
   					[] ->
   						throw(product_not_found)
   				end
   	end,
  -	case mnesia:transaction(F2) of
  +	case mnesia:transaction(F1) of
   		{atomic, Subscriber} ->
   			{ok, Subscriber};
   		{aborted, Reason} ->
  
positive.code: 			exit(not_found)
  	end.
  
  
negative.code: add_subscriber(Identity, Password, Product, Characteristics, Buckets, Attributes, EnabledStatus, MultiSession)
  		when is_binary(Identity), is_binary(Password), is_list(Product),
  		is_list(Buckets), is_list(Attributes), is_boolean(EnabledStatus), is_boolean(MultiSession) ->
  	Now = erlang:system_time(?MILLISECOND),
  	F1 = fun() ->
  				ProductId = case Product of
  					[] ->
  						case mnesia:first(product) of
  							'$end_of_table' ->
  								throw(product_not_found);
  							ProdId ->
  								ProdId
  						end;
  					Product ->
  						Product
  				end,
  				case mnesia:read(product, ProductId, read) of
  					[#product{} = P] ->
  						N = erlang:unique_integer([positive]),
  						S1 = #subscriber{name = Identity, password = Password,
  						attributes = Attributes, buckets = Buckets,
  						enabled = EnabledStatus, multisession = MultiSession,
  						last_modified = {Now, N}},
  						S2 = subscription(S1, P, Characteristics),
  						ok = mnesia:write(S2),
  						S2;
  					[] ->
  						throw(product_not_found)
  				end
  