implement mc_move