added FactoryProducer class