don't need pipe listener