PP is now circular, still need to reimplement it using cond & mutex