public void load() {
		Frame frame = new Frame();
		FileDialog fileDialog = new FileDialog(frame, "open", FileDialog.LOAD);
		fileDialog.setVisible(true);
		filePath = fileDialog.getDirectory();
		fileName = fileDialog.getFile();
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

		Vector<Track> tracks = new Vector<Track>();

		try {
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document library = builder.parse(filePath + fileName);
			Element root = library.getDocumentElement();
			Element[] trackNodes = getElementsByTagName(root, "track");
			int highestId = 0;
			for (int i = 0; i < trackNodes.length; i++) {
				int thisId = Integer.parseInt(trackNodes[i].getAttribute("id"));
				if (thisId > highestId)
					highestId = thisId;
			}
			for (int i = 0; i < trackNodes.length; i++) {
				int id = Integer.parseInt(trackNodes[i].getAttribute("id"));
				String author = trackNodes[i].getAttribute("author");
				String title = trackNodes[i].getAttribute("title");
				int part = Integer.parseInt(trackNodes[i].getAttribute("part"));
				float bpm = Float.parseFloat(trackNodes[i].getAttribute("bpm"));
				float keyFr = Float.parseFloat(trackNodes[i].getAttribute("keyFr"));
				float frPerBpm = Float.parseFloat(trackNodes[i].getAttribute("frPerBpm"));
				float tempoForRef = Float.parseFloat(trackNodes[i].getAttribute("tempoForRef"));
				float refFr = Float.parseFloat(trackNodes[i].getAttribute("refFr"));
				String keyNotes = trackNodes[i].getAttribute("keyNotes");
				int[] matches = new int[highestId + 1];
				Element allMatches = getElementsByTagName(trackNodes[i], "matches")[0];
				Element[] matchesNodes = getElementsByTagName(allMatches, "match");
				for (int j = 0; j < trackNodes.length; j++)
					matches[j] = 0;
				for (int j = 0; j < matchesNodes.length; j++)
					matches[Integer.parseInt(matchesNodes[j].getAttribute("id"))] = Integer.parseInt(matchesNodes[j].getAttribute("type"));
				tracks.add(new Track(id, author, title, part, bpm, keyFr, frPerBpm, tempoForRef, refFr, keyNotes, matches));
			}

		} catch (Exception e) {
			System.out.println("exception : " + e.getMessage());
		}
		parent.tracks = tracks;
		parent.tracksManager.keepOnlyDuplexes();
		parent.tracksManager.currentTrack = tracks.get((int) Math.floor(Math.random() * tracks.size())).getId();
		parent.tracksManager.makeTheList("all");
		parent.tracksManager.sortTheList("close");
		parent.cellsManager.updateEditTrack();
		parent.cellsManager.updateList();
	}