public void playGameAsHost(ArrayList<User> gameUsers, HostGameTask hgt)
			throws InterruptedException, IOException, InvalidKeySpecException,
			NoSuchAlgorithmException, NoSuchPaddingException,
			NoSuchProviderException, InvalidKeyException, BadPaddingException,
			IllegalBlockSizeException {
		EncryptedDeck encDeck;
		RSAService rsaService = new RSAService();

		// if more types of poker were added this would be a parameter and
		// SwingUI would instantiate it
		GamePlay thGamePlay = new TexasHoldEmGamePlay();
		thGamePlay.init();

		gameUser.setDecryptionKey(rsaService.getD());

		// broadcast p and q
		comServ.broadcastPQ(rsaService.getP(), rsaService.getQ(),
				gameUsers.size());
		System.out.println(rsaService.getP().toString() + "\n"
				+ rsaService.getQ().toString());

		// create and encrypt the deck
		encDeck = createDeck(rsaService);

		try {
			thGamePlay.hostGamePlay(rsaService, comServ, gameUser, gameUsers,
					sig, encDeck, hgt);

		} catch (Exception e) {
			System.err.println("Error in host gameplay.");
			System.exit(0);
		}

		comServ.shutdown();
		return;

	}