works with pipes