separate condition variables.  feels scary!
all highly theoretical and untested but maybe we are nearly there.