@Override
	public  
	boolean saveResult(ProgressReporter reporter) throws IOException, InterruptedException {
		Path p;
		String fileURL;
		synchronized (this) {
			p = Paths.get(getTrackFileName());
			fileURL = getProperty("mediaLink");
		}
		
		boolean wasDownloaded = 
				WebDownloader.fetchWebFile(fileURL, p.toString(), reporter) != 0;
		
		String statusReport = null; // defaults to "skipped"
		
		// tagging does not require synchronization as it is operating with Properties object which is thread-safe. 
		//XXX: this is not strictly true, but as properties are read much later than written in different PageJobs, we may assume those operations do not overlap. 
		if (tagAudioFile(Main.forceTagging))
			statusReport = "file updated";
		if (wasDownloaded)
			statusReport = "file downloaded";
		
		if (statusReport != null) {
			reporter.report(statusReport, 1);
			return true;
		} else {
			return false;
		}
		
	}