public subwaySystem buildSubwayFromLineCSV(String filePath) throws Exception {
		subwaySystem subSystem = new subwaySystem();
		MSTMetro mstSub = new MSTMetro();

		CSVReader reader = null;
		try {
			reader = new CSVReader(new FileReader(filePath));
		} catch (IOException e) {
			System.out.println("Invalid File Path");
			e.printStackTrace();
		}

		String[] nextLine, stationAttr;
		Integer sIndex, sPrevDistance, sPrevTime, sPrevCost, sPrev;
		String sName, otherMetroLines, currentMetroLine;

		while ((nextLine = reader.readNext()) != null) {
			currentMetroLine = nextLine[0];
			sPrev = null;
			for (String val : nextLine) {
				if (val.contains(";")) { // Skip first line declaration
					stationAttr = val.split(";");
					sIndex = Integer.parseInt(stationAttr[0]);
					sName = stationAttr[1];
					sPrevDistance = Integer.parseInt(stationAttr[3]);
					sPrevTime = Integer.parseInt(stationAttr[4]);
					sPrevCost = Integer.parseInt(stationAttr[5]);
					otherMetroLines = stationAttr[2];
					subSystem.addLineToStation(currentMetroLine, sIndex);
					if (!subSystem.checkNodeExists(sIndex)) {
						subSystem.addNode(sIndex, sName, currentMetroLine);
					}

					if (otherMetroLines.length() > 0) {
						for (String l : otherMetroLines.split("&")) {
							// TONY Took OUT
							//subSystem.addLineToStation(l, sIndex);
						}
					}

					if (sPrev != null) {
						subSystem.connectStations(sIndex, sPrev, sPrevDistance,
								sPrevCost, sPrevTime);
					}
					sPrev = sIndex;
				}
			}
		}

		return subSystem;
		
		/*mstSub.setNodeSet(subSystem.getNodeSet());
		mstSub.setEdgeSet(subSystem.getEdgeSet());
		mstSub.setLineStationMediator(subSystem.getLineStationMediator());
		mstSub.kruskalAlgorithm();

		return mstSub;*/
	}