popo scheme, with help from @aphexcx