@Override
	public List<ConcertInfo> getConcertsForArtist(String artist) throws LastFmConnectionException {
		if(artist==null) throw new IllegalArgumentException("artist");
		SimpleDateFormat simpleDate = new SimpleDateFormat("EEE, dd MMM YYYY", Locale.US);
		DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
		domFactory.setNamespaceAware(true);
		DocumentBuilder builder;
		Document configuration;
		XPathFactory xpathFactory = XPathFactory.newInstance();
		XPath xpath = xpathFactory.newXPath();
		XPathExpression expr;
		Object result;

		try {
			builder = domFactory.newDocumentBuilder();
			configuration = builder.parse(baseDir+ "events_" + artist.toLowerCase() +".xml");
			expr = xpath.compile("//event");
			result = expr.evaluate(configuration, XPathConstants.NODESET);
		} catch (Exception e) {
			throw new LastFmConnectionException("Could not load Events XML file", e);
		}

		NodeList nodes = (NodeList) result;
		ArrayList<ConcertInfo> events = new ArrayList<ConcertInfo>();

		String venue;
		String name;
		String dateStr;
		String geoLat;
		String geoLon;
		
		for (int i = 0; i < nodes.getLength(); i++) {
			Node node = nodes.item(i);
			try {
				venue = (String) xpath.compile("venue/location/city/text()").evaluate(node, XPathConstants.STRING);
				name = (String) xpath.compile("venue/name/text()").evaluate(node, XPathConstants.STRING);
				dateStr = (String) xpath.compile("startDate/text()").evaluate(node, XPathConstants.STRING);
				Date date = simpleDate.parse(dateStr);
				geoLat = (String) xpath.compile("venue/location/point/lat/text()").evaluate(node, XPathConstants.STRING);
				geoLon = (String) xpath.compile("venue/location/point/long/text()").evaluate(node, XPathConstants.STRING);
				GeoPoint point = new GeoPoint(geoLat, geoLon);
				ConcertInfo info = new ConcertInfo(artist, venue, name, date, point);
				events.add(info);
			} catch (Exception e){
				throw new LastFmConnectionException("Could not parse XML data",e);
			}
		}
		return events;
	}