add product struct