Renaming AbstractFactory to GenericFactory