public void run() {
		while(true){
			if(client.isConnected()){
				while(!client.isGameStarted()) { //listens to server for the go signal
					client.listenToServer();
				}
				//
				// game components revealed
				//
				setButton.setVisible(true);
				lblNumberOfCards.setVisible(true);
				numberOfCardsInDeck.setVisible(true);
				playersPointsPane.setVisible(true);
				playersPane.setVisible(true);
				addCardsButton.setVisible(true);
				//
				// title components hidden
				//
				start.setVisible(false);
				startGamePane.setVisible(false);
				lblTitle.setVisible(false);
				nameField.setVisible(false);
				validate();
			
				updateGUI(); //visual update
				while(client.isGameStarted() && client.isConnected()){ //constantly listens to server and refreshes until game ends
					if (client.isCanCallSet()) {
						updateGUI();
						client.listenToServer();
						updateGUI();
					}
				}
				reset("" + client.getWinner()); //resets game when finished
			}else{
				try { //if not connected, will wait until checking again
					Thread.sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace(); //should never happen
				}
			}
		}
	}