Refactor ProducerFactories