anchor.diff:  					amount = ProdAmount},
   				case lists:keyfind("productOfferPriceAlteration", 1, Object) of
   					false ->
  -						po_price(T, [Price1 | Prices]);
  +						po_price(erlang_term, T, [Price1 | Prices]);
   					{_, {struct, ProdAlterObj}} ->
  -						case po_alteration(ProdAlterObj) of
  +						case po_alteration(erlang_term, ProdAlterObj) of
   							{error, Status} ->
   								{error, Status};
   							Alteration ->
   								Price2 = Price1#price{alteration = Alteration},
  -								po_price(T, [Price2 | Prices])
  +								po_price(erlang_term, T, [Price2 | Prices])
   						end
   				end;
   			true ->
  
positive.code: add_product(ReqData) ->
  	try
  		{struct, Object} = mochijson:decode(ReqData),
  		{_, Name} = lists:keyfind("name", 1, Object),
  		IsBundle = case lists:keyfind("isBundle", 1, Object) of
  			{"isBundle", "true"} -> true;
  			_ -> false
  		end,
  		Status  = case lists:keyfind("lifecycleStatus", 1, Object) of
  			{_, FindStatus} ->
  				find_status(FindStatus);
  			false ->
  				"active"
  		end,
  		Descirption = proplists:get_value("description", Object, ""),
  		{_, {array, ProdOfPrice}} = lists:keyfind("productOfferingPrice", 1, Object),
  		case product_offering_price(ProdOfPrice) of
  			{error, StatusCode} ->
  				{error, StatusCode};
  			Price ->
  
negative.code: %%----------------------------------------------------------------------
  %%  internal functions
  %%----------------------------------------------------------------------
  -spec prod_name(Prefix, Json) -> Result
  	when
  		Prefix	:: erlang_term | json,
  		Json		:: list(),
  		Result	:: string() | tuple().
  %% @private
  prod_name(erlang_term, Json) ->
  	{_, Name} = lists:keyfind("name", 1, Json),
  	Name.
  
  -spec prod_isBundle(Prefix, Json) -> Result
  	when
  		Prefix	:: erlang_term | json,
  		Json		:: list(),
  		Result	:: boolean() | tuple().
  %% @private
  prod_isBundle(erlang_term, Json) ->
  	case lists:keyfind("isBundle", 1, Json) of
  		{"isBundle", "true"} -> true;
  		_ -> false
  	end.
  
  -spec prod_status(Prefix, Json) -> Result
  	when
  		Prefix	:: erlang_term | json,
  		Json		:: list(),
  		Result	:: string() | tuple().
  %% @private
  prod_status(erlang_term, Json) ->
  	case lists:keyfind("lifecycleStatus", 1, Json) of
  		{_, FindStatus} ->
  			find_status(FindStatus);
  		false ->
  			"active"
  	end.
  
  -spec prod_description(Prefix, Json) -> Result
  	when
  		Prefix	:: erlang_term | json,
  		Json		:: list(),
  		Result	:: undefined | string() | tuple().
  %% @private
  prod_description(erlang_term, Json) ->
  	proplists:get_value("description", Json, undefined).
  
  -spec prod_offering_price(Prefix, Json) -> Result
  	when
  		Prefix	:: erlang_term | json,
  		Json		:: list(),
  		Result	:: [#price{}] | list() | {error, Status},
  		Status	:: 400.
  %% @doc construct list of product
  %% @private
  prod_offering_price(erlang_term, []) ->
  	{error, 400};
  prod_offering_price(erlang_term, Json) ->
  	{_, {array, ProdOfPrice}} = lists:keyfind("productOfferingPrice", 1, Json),
  	po_price(erlang_term, ProdOfPrice, []).
  
  -spec po_price(Prefix, ProductOfPrice, Prices) -> Result
  	when
  		Prefix	:: erlang_term | json,
  		ProductOfPrice	:: list(),
  		Prices	::	list(),
  		Result	:: [#price{}] | list() | {error, Status},
  		Status	:: 400.
  %% @hidden
  po_price(erlang_term, [], Prices) ->
  	Prices;
  po_price(erlang_term, [{struct, Object} | T], Prices) ->
  	try
  		{_, ProdName} = lists:keyfind("name", 1, Object),
  		{_,  {struct, VFObj}} = lists:keyfind("validFor", 1, Object),
  