replace pair with pipeline, still needs a protocol rework