implement revisit