implment for product out