weak successor generator

also refactors successor generators