public String summary(){
		if(!isTracked(name)){
			return NTSummary();
		}
		ArrayList<QueueSummary> summaries;
		try{
			summaries = RiotAPI.getSummary(id);
		}
		catch(Exception e){
			summaries = new ArrayList<QueueSummary>();
		}
		int wins = 0, streak = 1;
		int kills = 0, deaths = 0, assists = 0, streakK = 0, streakD = 0, streakA = 0;
		boolean winStreak = recent.get(0).stats.isWin(), broken = false;
		String firstGame = Time.setDate(games.get(0).gameDate).date();
		String lastGame = Time.setDate(recent.get(0).createDate).date();
		PlayerStats stats;
		for(int i = games.size()-1; i>0; i--){
			stats = games.get(i).playedAsSummoner.stats;
			int gameKills = stats.getChampionsKilled();
			int gameDeaths = stats.getNumDeaths();
			int gameAssists = stats.getAssists();
			kills += gameKills;
			deaths += gameDeaths;
			assists += gameAssists;
			if(!broken)
				if(stats.isWin() == winStreak){
					streak++;
					streakK += stats.getChampionsKilled();
					streakD += stats.getNumDeaths();
					streakA += stats.getAssists();
				}
				else broken = true;
			if(stats.isWin())
				wins++;
		}
		String streakStr = winStreak ? "win" : "loss";
		String ret = String.format(" %s:%d from %s - %s\n     %dW-%dL %1.2f%% (%d game %s streak)", name, id, firstGame, lastGame, 
										wins, games.size()-wins, (double)wins/(double)(games.size()), streak, streakStr);
		for(QueueSummary qs: summaries){
			String in;
			if(!(in = qs.summary()).equals(""))
					ret += "\n" + in;
		}
		ret += "\n" + String.format("      TOTALS - %02d/%02d/%02d %2.2fKDA", kills, deaths, assists, 
				((double)(kills+assists)/(double)deaths));
		ret += "\n" + String.format("       AVGS  - %02d/%02d/%02d %2.2fKDA", kills/=games.size(), deaths/=games.size(), assists/=games.size(), 
				((double)(kills+assists)/(double)deaths));
		ret += "\n" + String.format("      STREAK - %02d/%02d/%02d %2.2fKDA", streakK/=streak, streakD/=streak, streakA/=streak,
				((double)(streakK+streakA)/(double)streakD));
		ret += "\n";
		return ret;
	}