pipe: compose transformations