Modified IProducer to return <X extends T> rather than <T>