basics for product types