self-pipe stuff