implemented pipe (no tests)