FIXED perform_move