more general cps
merge with more cps case