Oh, I understand what you mean... The ReadChannel returned by first is passed as a parameter of the second, so on, and since the "to" channel is passed to all of them, they can either pass the message on, or not, but then be force to send to the "to" channel. That could probably work! And you're right, my peek wouldn't be too good for concurrency. Thanks!