public Deck(Player[] players, int rackSize){
		//Official rules are 2-4 players and rack_size == 10
		//However, we'll relax these restrictions...
		assert(players.length > 1 && rackSize > 1);
		this.rack_size = rackSize;
		this.players = players;
		cards = rackSize*players.length + rackSize*2;
		
		//Initialize deck; counts are all zero, since we haven't called "deal()" yet
		turns = 0;
		draw_count = 0;
		discard_count = 0;
		draw = new int[cards];
		discard = new int[cards];
		in_play = new boolean[cards];
		//Initialize memory
		memory = new int[cards];
		memory_hash = new int[cards];
		memory_head = 0;
		memory_count = 0;
		has_shuffled = false;
	}