product function completed