product functs update 3