support pre_move