public void pick(Deck deck) {
		PickResult pair = PickResult.pair;
		Card cards[] = new Card[2];

		// the bot will continue to pick cards while it knows a pair,
		// this could be unfair, the bot should "think" (wait) before
		// picking more cards, currently it will gain lots of bonus points.
		while (pair == PickResult.pair) {

			// if there is a pair in the known cards pick them.
			if (hasPair(cards, deck)) {
				memory.pickCard(cards[0]);
				pair = memory.pickCard(cards[1]);
			} else {
				do {
					// no pair in known cards, generate two random cards.
					cards[0] = deck.get(rand.nextInt(deck.getSize()));
					cards[1] = deck.get(rand.nextInt(deck.getSize()));
				} while ((cards[0].getMode() == Mode.Removed || cards[1]
						.getMode() == Mode.Removed)
						|| (cards[0].equals(cards[1])));

				memory.pickCard(cards[0]);
				pair = memory.pickCard(cards[1]);
			}
		}

		// at the end of turn, remove a card. The bot acts human,
		// forgetting where the cards are.
		if (knownCards.size() > minimumCapacity) {
			if (rand.nextInt(mindfulness) == 0) {
				knownCards.remove(rand.nextInt(knownCards.size()));
			}
		}
	}