rewrote pipe using -> macro