let main () : unit Deferred.t = pipe_interleave () >>= fun () -> pipe_broadcast () >>= fun () -> pipe_pub_sub () >>= fun () -> return ()