pipe, tee, and wye implemented in terms of uber combinator