diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/CsvExporter.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/CsvExporter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..929a7914f5cf8501212f020bdc54cc19c43bcd7c
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/CsvExporter.kt
@@ -0,0 +1,43 @@
+package theodolite.evaluation
+
+import theodolite.util.PrometheusResponse
+import java.io.File
+import java.io.PrintWriter
+
+class CsvExporter {
+
+    /**
+     * Uses the PrintWriter to transform a PrometheusResponse to Csv
+     */
+    fun toCsv(name : String,prom: PrometheusResponse){
+        val x = toArray(prom)
+        val csvOutputFile: File = File(name+".csv")
+
+        PrintWriter(csvOutputFile).use { pw ->
+            pw.println(listOf("name","time","value").joinToString())
+            x.forEach{
+                pw.println(it.joinToString())
+            }
+        }
+    }
+
+    /**
+     * Converts a PrometheusResponse into a List of List of Strings
+     */
+    private fun toArray(prom : PrometheusResponse): MutableList<List<String>> {
+
+        val name = prom.data?.result?.get(0)?.metric?.group.toString()
+        val values = prom.data?.result?.get(0)?.values
+        val dataList = mutableListOf<List<String>>()
+
+        if (values != null) {
+            for (x in values){
+                val y = x as List<*>
+
+                dataList.add(listOf(name,"${y[0]}","${y[1]}"))
+            }
+        }
+
+        return dataList
+    }
+}
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
index 19a0cb61c7bc24a00b1c769e77f4174d2f09d2d9..458ff108a1dbbece876146bdb019697cc8561121 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
@@ -25,7 +25,6 @@ class BenchmarkExecutorImpl(
         val benchmarkDeployment = benchmark.buildDeployment(load, res, this.configurationOverrides)
         benchmarkDeployment.setup()
         this.waitAndLog()
-        benchmarkDeployment.teardown()
 
         var result = false
         try {
@@ -46,6 +45,8 @@ class BenchmarkExecutorImpl(
             logger.error { "Evaluation failed for resource: ${res.get()} and load: ${load.get()} error: $e" }
         }
 
+        benchmarkDeployment.teardown()
+
         this.results.setResult(Pair(load, res), result)
         return result
     }