anchor.diff:  	offer(T, Acc#product{status = offer_status(Status)});
   offer([{"price", Price} | T], Acc) ->
   	offer(T, Acc#product{price = price(Price)});
  -offer([{"characteristic", Chars} | T], Acc) ->
  -	offer(T, Acc#product{characteristics = characterics(Chars)});
  +offer([{"characteristic", Chars} | T], Acc) when is_list(Chars) ->
  +	offer(T, Acc#product{characteristics = characteristics(Chars)});
   offer([{"lastUpdate", Last} | T], Acc) ->
   	offer(T, Acc#product{last_modified = ocs_rest:iso8601(Last)}).
   %% @hidden
  -offer([name | T], #product{name = Name} = P, Acc) ->
  +offer([name | T], #product{name = Name} = P, Acc) when is_list(Name) ->
   	offer(T, P, [{"name", Name} | Acc]);
   offer([description | T], #product{description = Description} = P,
   		Acc) when is_list(Description) ->
  
positive.code: 
  -spec price(Price) -> Price
  	when
  		Price :: #product{} | {struct, ObjectMembers} | ObjectMembers,
  		ObjectMembers :: [tuple()].
  %% @doc CODEC for Product Offering Price.
  %% @private
  price(#price{} = P) ->
  
negative.code: 	offer(T, P, [{"price", price(Price)} | Acc]);
  offer([characteristics | T],
  		#product{characteristics = Chars} = P, Acc) when is_list(Chars) ->
  	offer(T, P, [{"characteristic", characteristics(Chars)} | Acc]);
  offer([last_modified | T], #product{last_modified = Last} = P, Acc)
  		when is_integer(Last) ->
  	offer(T, P, [{"lastUpdate", ocs_rest:iso8601(Last)} | Acc]);
  