create product functional