public boolean blockUntilUsersFinished() throws InterruptedException,
			IOException {
		
		// 30 second timeout
		for (int timeout = 0; timeout < 300; timeout++) {
			if (usersHaveData >= currentGameMembers.size()) {
				// return
				waiterSub.remove();
				return true;
			}
			Thread.sleep(100);
		}
		waiterSub.remove();
		return false;
	}