public TurnContext playTurn(Game g) {
		TurnContext state = new TurnContext(g, false);
		currentCx = state;

		if (!getHand().isEmpty())
			switchToHand(state);
		else if (!getFaceUp().isEmpty())
			switchToFaceUp(state);
		else if (!getFaceDown().isEmpty())
			switchToFaceDown(state);

		if (hasValidMove(state) || state.blind) {
			state.selection = chooseCard(state, "Choose first card to play", false, true, true);

			if (state.selection == null) {
				//TODO: let player play an unplayable face up card
				//so they can move that card to their hand along with
				//the picked up pile
				startNewPile(state, "You are unwilling to make any moves.");
			} else if (!state.g.isMoveLegal(state.selection)) {
				assert state.blind;
				putCard(state);
				startNewPile(state, "You flipped an unplayable card.");
			} else {
				finishTurn(state);
			}
		} else {
			startNewPile(state, "You are unable to make any moves.");
		}

		currentCx = null;
		return state;
	}