rename reachable -> upstream, move pipe methods into ShellTypedPipe