anchor.diff:  		Result :: {ok, #product{}} | {error, Reason},
   		Reason :: term().
   %% @doc Add a product invenotry subscription instance.
  -add_product(Offer, ServiceRefs, StartDate, EndDate, Characteristics)
  +add_product(OfferId, ServiceRefs, StartDate, EndDate, Characteristics)
   		when (is_integer(StartDate) orelse (StartDate == undefined)),
   		(is_integer(EndDate) orelse (EndDate == undefined)),
  -		is_list(Characteristics), is_list(Offer), is_list(ServiceRefs) ->
  -	F = fun() ->
  -			case mnesia:read(offer, Offer, read) of
  -				[#offer{char_value_use = CharValueUse}] ->
  +		is_list(Characteristics), is_list(OfferId), is_list(ServiceRefs) ->
  +	F = fun() ->
  +			case mnesia:read(offer, OfferId, read) of
  +				[#offer{char_value_use = CharValueUse} = Offer] ->
   					TS = erlang:system_time(?MILLISECOND),
   					N = erlang:unique_integer([positive]),
   					LM = {TS, N},
  
positive.code: 					end,
  					ok = lists:foreach(F2, ServiceRefs),
  					NewChars = default_chars(CharValueUse, Characteristics),
  					Product = #product{id = Id, product = Offer, start_date = StartDate,
  							termination_date = EndDate, characteristics = NewChars,
  							service = ServiceRefs, last_modified = LM},
  					ok = mnesia:write(Product),
  					Product;
  				[] ->
  					throw(offer_not_found)
  			end
  
negative.code: add_product(Offer, ServiceRefs, Characteristics) ->
  	add_product(Offer, ServiceRefs, undefined, undefined, Characteristics).
  
  -spec add_product(OfferId, ServiceRefs, StartDate, EndDate, Characteristics) -> Result
  	when
  		OfferId :: string(),
  		ServiceRefs :: [ServiceRef],
  		StartDate :: undefined | pos_integer(),
  		EndDate :: undefined | pos_integer(),
  