work in progress: pipe protocol