remove the need to the producer to return Box<U>