product using decorator