product component base class