pipe now uses only message streams as input/output