pipe listener/writer, first try