Modify AbstractFactoryPattern