public void setProfile( Profile p ) throws IOException {

		topScoresPanel.removeAll();
		int i = 0;
		for ( Score s : p.getStats().getTopScores() ) {
			InputStream stream = null;
			try {
				ShipBlueprint ship = DataManager.get().getShip( s.getShipType() );
				stream = DataManager.get().getResourceInputStream("img/ship/"+ship.getImg()+"_base.png");
				Image img = frame.getScaledImage( stream );
				TopScorePanel tsp = new TopScorePanel( ++i, img, s.getShipName(), s.getScore(), s.getSector(), s.getDifficulty() );
				topScoresPanel.add( tsp );

			}	finally {
				try {if (stream != null) stream.close();}
				catch (IOException f) {}
			}
		}

		Stats stats = p.getStats();

		sessionRecordsPanel.removeAll();
		sessionRecordsPanel.addRow("Most Ships Defeated", null, null, stats.getMostShipsDefeated());
		sessionRecordsPanel.addRow("Most Beacons Explored", null, null, stats.getMostBeaconsExplored());
		sessionRecordsPanel.addRow("Most Scrap Collected", null, null, stats.getMostScrapCollected());
		sessionRecordsPanel.addRow("Most Crew Hired", null, null, stats.getMostCrewHired());
		sessionRecordsPanel.addFillRow();

		crewRecordsPanel.removeAll();
		CrewRecord repairCrewRecord = stats.getMostRepairs();
		CrewRecord killsCrewRecord = stats.getMostKills();
		CrewRecord evasionsCrewRecord = stats.getMostEvasions();
		CrewRecord jumpsCrewRecord = stats.getMostJumps();
		CrewRecord skillsCrewRecord = stats.getMostSkills();

		crewRecordsPanel.addRow("Most Repairs", frame.getCrewIcon(repairCrewRecord.getRace()), repairCrewRecord.getName(), repairCrewRecord.getScore());
		crewRecordsPanel.addRow("Most Combat Kills", frame.getCrewIcon(killsCrewRecord.getRace()), killsCrewRecord.getName(), killsCrewRecord.getScore());
		crewRecordsPanel.addRow("Most Piloted Evasions", frame.getCrewIcon(evasionsCrewRecord.getRace()), evasionsCrewRecord.getName(), evasionsCrewRecord.getScore());
		crewRecordsPanel.addRow("Most Jumps Survived", frame.getCrewIcon(jumpsCrewRecord.getRace()), jumpsCrewRecord.getName(), jumpsCrewRecord.getScore());
		crewRecordsPanel.addRow("Most Skill Masteries", frame.getCrewIcon(skillsCrewRecord.getRace()), skillsCrewRecord.getName(), skillsCrewRecord.getScore());
		crewRecordsPanel.addFillRow();

		totalStatsPanel.removeAll();
		totalStatsPanel.addRow("Total Ships Defeated", null, null, stats.getTotalShipsDefeated());
		totalStatsPanel.addRow("Total Beacons Explored", null, null, stats.getTotalBeaconsExplored());
		totalStatsPanel.addRow("Total Scrap Collected", null, null, stats.getTotalScrapCollected());
		totalStatsPanel.addRow("Total Crew Hired", null, null, stats.getTotalCrewHired());
		totalStatsPanel.addBlankRow();
		totalStatsPanel.addRow("Total Games Played", null, null, stats.getTotalGamesPlayed());
		totalStatsPanel.addRow("Total Victories", null, null, stats.getTotalVictories());
		totalStatsPanel.addFillRow();

		this.repaint();
	}