public int Save(String filepath) throws IOException {
		// Setup
		int size = jobcomplete.size();
		int SavePointer = 0;
		
		// If there is nothing to save, do not create an empty file
		if (size == 0) {
			return 0;
		}
		
		// Open the file
		PrintWriter writer = new PrintWriter(filepath, "UTF-8");

		// Save each cached set of job results to the file
		while (SavePointer < size) {
			// Load the job
			Jobs looking = jobcomplete.get(0);

			// Extract the data
			String workDone = looking.GetWork();
			ArrayList<String> ReturnedErrors = looking.GetErrorList();
			ArrayList<String> ReturnedOutput = looking.GetOutputList();

			// Write to the file
			if (SavePointer > 0) {
				// If there is more than one job to save, provide separators
				writer.println("##################################################");
			}
			// Write job
			writer.println("Job:" + workDone);
			// Write out error List
			for (String line : ReturnedErrors) {
				writer.println("Error:" + line);
			}
			// Write out output List
			for (String line : ReturnedOutput) {
				writer.println("Output:" + line);
			}

			// Remove that job from the list
			jobcomplete.remove(0);

			SavePointer++;
		}

		writer.println("");

		// Close the file & return
		writer.close();
		return SavePointer;
	}