added product struct