utility methods
implement pusher with Incomplete for MemProducer
producer is now a trait