refactored the pipe() function and improved API for filters using it