Pull perform_move! into its own method