split iterate into accept_move and __call__