factorized make_traverse for cyclic structures