preliminary conditional variable work