added BaseProduct from AlexHill