product functs update 4