anchor.diff:  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
  +		Name = prod_name(erlang_term, Object),
  +		IsBundle = prod_isBundle(erlang_term, Object),
  +		Status = prod_status(erlang_term, Object),
  +		Descirption = prod_description(erlang_term, Object),
  +		case prod_offering_price(erlang_term, Object) of
   			{error, StatusCode} ->
   				{error, StatusCode};
   			Price ->
  
positive.code: %%----------------------------------------------------------------------
  %%  internal functions
  %%----------------------------------------------------------------------
  
  -spec product_offering_price(POfPrice) -> Result when
  	POfPrice	:: list(),
  	Result 	:: Prices | {error, StatusCode},
  	Prices	:: [#price{}],
  	StatusCode	:: 400.
  %% @doc construct list of product
  %% @private
  product_offering_price([]) ->
  	{error, 400};
  product_offering_price(POfPrice) ->
  	po_price(POfPrice, []).
  %% @hidden
  po_price([], Prices) ->
  	Prices;
  po_price([{struct, Object} | T], Prices) ->
  	try
  		{_, ProdName} = lists:keyfind("name", 1, Object),
  		{_,  {struct, VFObj}} = lists:keyfind("validFor", 1, Object),
  
negative.code: 					amount = ProdAmount},
  				case lists:keyfind("productOfferPriceAlteration", 1, Object) of
  					false ->
  						po_price(erlang_term, T, [Price1 | Prices]);
  					{_, {struct, ProdAlterObj}} ->
  						case po_alteration(erlang_term, ProdAlterObj) of
  							{error, Status} ->
  								{error, Status};
  							Alteration ->
  								Price2 = Price1#price{alteration = Alteration},
  								po_price(erlang_term, T, [Price2 | Prices])
  						end
  				end;
  			true ->
  