add a pipe function