diff --git a/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs
index ab736db2e5498a0f8d8cc9d2d20ec01948ce3c5b..3599ef7fc49356bc5ed6b03b842e476986c6becb 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs
@@ -50,7 +50,7 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 
 		public string JobFile => _jobFile;
 
-		private ConcurrentDictionary<ReportType, string> _writtenReports = new ConcurrentDictionary<ReportType, string>();
+		protected ConcurrentDictionary<ReportType, string> _writtenReports = new ConcurrentDictionary<ReportType, string>();
 		public virtual IDictionary<ReportType, string> GetWrittenFiles()
 		{
 			return _writtenReports;
@@ -151,6 +151,22 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 		}
 
 		public virtual void WriteReport(ReportType type, XDocument data)
+		{
+			var fileName = GetReportFilename(type);
+			using (var writer = new FileStream(fileName, FileMode.Create)) {
+				using (var xmlWriter = new XmlTextWriter(writer, Encoding.UTF8)) {
+					xmlWriter.Formatting = Formatting.Indented;
+					data.WriteTo(xmlWriter);
+					xmlWriter.Flush();
+					xmlWriter.Close();
+				}
+			}
+
+			var added = _writtenReports.TryAdd(type, fileName);
+			System.Diagnostics.Debug.Assert(added);
+		}
+
+		protected virtual string GetReportFilename(ReportType type)
 		{
 			string fileName = null;
 			switch (type) {
@@ -175,20 +191,10 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 				default:
 					throw new ArgumentOutOfRangeException("ReportType");
 			}
-			using (var writer = new FileStream(fileName, FileMode.Create)) {
-				using (var xmlWriter = new XmlTextWriter(writer, Encoding.UTF8)) {
-					xmlWriter.Formatting = Formatting.Indented;
-					data.WriteTo(xmlWriter);
-					xmlWriter.Flush();
-					xmlWriter.Close();
-				}
-			}
 
-			var added = _writtenReports.TryAdd(type, fileName);
-			System.Diagnostics.Debug.Assert(added);
+			return fileName;
 		}
 
-		
 
 		public virtual void WriteReport(ReportType type, Stream data)
 		{
diff --git a/VectoCore/VectoCore/OutputData/FileIO/TempFileOutputWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/TempFileOutputWriter.cs
index 508e37e40c0fcafd2a883a4eca475c2a7bfaf8c5..9780d7daaab9adab21ee3c8918af4c8d769bf537 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/TempFileOutputWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/TempFileOutputWriter.cs
@@ -8,7 +8,7 @@ using TUGraz.VectoCommon.Models;
 
 namespace TUGraz.VectoCore.OutputData.FileIO
 {
-	public class TempFileOutputWriter : LoggingObject, IOutputDataWriter //: FileOutputWriter
+	public class TempFileOutputWriter : FileOutputWriter
     {
 		private readonly Dictionary<ReportType, XDocument> _storedReports = new Dictionary<ReportType, XDocument>();
 		private readonly HashSet<ReportType> _reportsToWrite;
@@ -16,7 +16,7 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 
 		#region Overrides of FileOutputWriter
 
-		public string XMLFullReportName => Path.ChangeExtension(BaseWriter.JobFile, "RSLT_MANUFACTURER_PRIMARY.xml");
+		public override string XMLFullReportName => Path.ChangeExtension(BaseWriter.JobFile, "RSLT_MANUFACTURER_PRIMARY.xml");
 
 		#endregion
 
@@ -25,7 +25,7 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 		/// </summary>
 		/// <param name="jobFile"></param>
 		/// <param name="reportsToWrite">ReportTypes specified here are written to disk</param>
-		public TempFileOutputWriter(IOutputDataWriter baseWriter, params ReportType[] reportsToWrite)
+		public TempFileOutputWriter(IOutputDataWriter baseWriter, params ReportType[] reportsToWrite) : base(baseWriter.JobFile)
 		{
 			BaseWriter = baseWriter;
 			_reportsToWrite = new HashSet<ReportType>();
@@ -38,33 +38,37 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 
 		#region Overrides of FileOutputWriter
 
-		public IDictionary<ReportType, string> GetWrittenFiles()
+		public override IDictionary<ReportType, string> GetWrittenFiles()
 		{
-			return BaseWriter.GetWrittenFiles();
+			return BaseWriter is FileOutputWriter ? base.GetWrittenFiles() : BaseWriter.GetWrittenFiles();
 		}
 
-		public int NumberOfManufacturingStages { get; set; }
+		//public int NumberOfManufacturingStages { get; set; }
 		
-		public XDocument MultistageXmlReport { get; }
+		//public XDocument MultistageXmlReport { get; }
 
 		#endregion
 
 
 		#region Overrides of FileOutputWriter
-		public void WriteReport(ReportType type, XDocument data)
+		public override void WriteReport(ReportType type, XDocument data)
 		{
 			if (type == ReportType.DeclarationReportPdf) {
 				throw new ArgumentOutOfRangeException("PDF is not supported by TempFileOutputWriter");
 			}
 
 			if (_reportsToWrite.Contains(type)) {
-				BaseWriter.WriteReport(type, data);
+				if (BaseWriter is FileOutputWriter) {
+					base.WriteReport(type, data);
+				} else {
+					BaseWriter.WriteReport(type, data);
+				}
 			}
 
 			_storedReports.Add(type, data);
 		}
 
-		public void WriteReport(ReportType type, Stream data)
+		public override void WriteReport(ReportType type, Stream data)
 		{
 			throw new NotImplementedException("PDF is not supported by TempFileOutputWriter");
 		}
@@ -82,7 +86,7 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 
 		#region Implementation of IModalDataWriter
 
-		public void WriteModData(int jobRunId, string runName, string cycleName, string runSuffix, DataTable modData)
+		public override void WriteModData(int jobRunId, string runName, string cycleName, string runSuffix, DataTable modData)
 		{
 			BaseWriter.WriteModData(jobRunId, runName, cycleName, runSuffix, modData);
 		}
@@ -91,7 +95,7 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 
 		#region Implementation of ISummaryWriter
 
-		public void WriteSumData(DataTable sortedAndFilteredTable)
+		public override void WriteSumData(DataTable sortedAndFilteredTable)
 		{
 			BaseWriter.WriteSumData(sortedAndFilteredTable);
 		}
@@ -100,7 +104,7 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 
 		#region Implementation of IOutputDataWriter
 
-		public string JobFile => BaseWriter.JobFile;
+		//public string JobFile => BaseWriter.JobFile;
 
 		#endregion
 	}