public void start()
	{		
		if( !requestNewMatch() )
		{
			return;
		}
		
		String gameStatusFromLastLoop = "";
		
		// actual game loop
		while(true)
		{
			//get game status
			String lastGameStatusAnswerString = requestMatchStatus();
			if( lastGameStatusAnswerString.equals(gameStatusFromLastLoop))
			{
				System.out.print(".");
				continue;
			}
			System.out.print("\n");
			
			gameStatusFromLastLoop = lastGameStatusAnswerString;
			
			// get game status
            int[] grid = createGrid(lastGameStatusAnswerString);
            
            AITools.visualizeGrid(grid);
			
			if( isErrorAnswer(lastGameStatusAnswerString) )
			{
				return;
			}
			
			if( isDrawGame(lastGameStatusAnswerString) )
			{
				return;
			}
			
			int winNumber = isGameWon(lastGameStatusAnswerString);
			if( winNumber != 0 )
			{
				if( winNumber == _playerNumber )
				{
					System.out.println("I've won!");
				}
				else
				{
					System.out.println(_opponentName + " has won...");
				}
				return;
			}
			
			if( !isItMyTurn(lastGameStatusAnswerString) )
			{
				//wait a sec, then try again
				try 
				{
					Thread.sleep(AITools.SLEEP_MILLIS);
				} 
				catch (InterruptedException e) 
				{
					e.printStackTrace();
				}
				continue;
			}
			
			//so it's my turn
			String action = _profile.getNextAction(grid, _playerNumber);
			
			// send next action
			System.out.println("sending action: " + action);
			postAction(action);
			
			// continue in loop
			gameStatusFromLastLoop = "";
		}
	}