private void shuffle(boolean new_discard){
		//sanity check...
		assert(draw_count == 0 && discard_count != 0);
		shuffling = true;
		System.arraycopy(discard, 0, draw, 0, discard_count);
		//Simple Fisher-Yates shuffle
		for (int i=discard_count-1, idx; i>0; i--){
			idx = rand.nextInt(i + 1);
			int temp = draw[idx];
			draw[idx] = draw[i];
			draw[i] = temp;
		}
		//Put first draw card in discard pile
		draw_count = discard_count;
		discard_count = 0;
		if (new_discard)
			discard(draw(false));
		shuffling = false;
	}