diff --git a/test/test-automation/logger.c b/test/test-automation/logger.c
index a134a41d4be7eb4da682e6bc741d3045f38b54b2..2060f2b070cb8ca6beeb7d088d784cfc7ff68561 100644
--- a/test/test-automation/logger.c
+++ b/test/test-automation/logger.c
@@ -27,13 +27,6 @@ LogFp Log = 0;
 int
 LogGenericOutput(const char *message)
 {
-	/*
-	int depth = indentDepth;
-	while(depth--) {
-		fprintf(stderr, " ");
-	}
-	*/
-
 	fprintf(stderr, "%s\n", message);
 	fflush(stderr);
 }
@@ -73,17 +66,17 @@ main(int argc, char *argv[])
 		Log = PlainLog;
 	}
 
-	RunStarted(LogGenericOutput, "All the data from harness", 0);
+	RunStarted(LogGenericOutput, "some_data_here", 0);
 	SuiteStarted("Suite data here", 0);
 
-	TestStarted("test1", "desc", 0);
-	TestEnded("test1", "desc", 0, 0, 0, 0);
+	TestStarted("test1", "suite", "desc", 0);
+	TestEnded("test1", "suite", 0, 0, 0, 0);
 
 	//XMLTestStarted("test2", "desc", 0);
 	//XMLTestEnded("test2", "desc", 0, 0, 0, 0);
 
 	SuiteEnded(0, 0, 0, 0.0f, 0);
-	RunEnded(0, 0);
+	RunEnded(0, 0, 0, 0, 0, 0);
 
 	return 0;
 }
diff --git a/test/test-automation/logger.h b/test/test-automation/logger.h
index db84e340f896294fc3d98e180dfa6de73bd7b120..917c1a757f1946f78308e0d48735c726e2df953c 100644
--- a/test/test-automation/logger.h
+++ b/test/test-automation/logger.h
@@ -32,14 +32,16 @@ typedef int (*LogOutputFp)(const char *);
  *
  */
 typedef	void (*RunStartedFp)(LogOutputFp outputFn, const char *runnerParameters, time_t eventTime);
-typedef	void (*RunEndedFp)(time_t endTime, time_t totalRuntime);
+typedef	void (*RunEndedFp)(int testCount, int suiteCount, int testPassCount, int testFailCount,
+                           time_t endTime, time_t totalRuntime);
 
 typedef	void (*SuiteStartedFp)(const char *suiteName, time_t eventTime);
 typedef	void (*SuiteEndedFp)(int testsPassed, int testsFailed, int testsSkipped,
 		                double endTime, time_t totalRuntime);
 
-typedef	void (*TestStartedFp)(const char *testName, const char *testDescription, time_t startTime);
-typedef	void (*TestEndedFp)(const char *testName, const char *testDescription, int testResult,
+typedef	void (*TestStartedFp)(const char *testName, const char *suiteName,
+                              const char *testDescription, time_t startTime);
+typedef	void (*TestEndedFp)(const char *testName, const char *suiteName, int testResult,
 		               int numAsserts, time_t endTime, time_t totalRuntime);
 
 typedef	void (*AssertFp)(const char *assertName, int assertResult, const char *assertMessage,
diff --git a/test/test-automation/plain_logger.c b/test/test-automation/plain_logger.c
index 8dd6f58a60fd84d3d46d74251957d8d1d05f82b6..1da76e2daf3ef8e29cd6305686fb69e3715eefad 100644
--- a/test/test-automation/plain_logger.c
+++ b/test/test-automation/plain_logger.c
@@ -16,7 +16,8 @@ PlainRunStarted(LogOutputFp outputFn, const char *runnerParameters, time_t event
 }
 
 void
-PlainRunEnded(time_t endTime, time_t totalRuntime)
+PlainRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
+              time_t endTime, time_t totalRuntime)
 {
 	// \todo add total number of tests, suites, pass/failure test count
 }
@@ -35,12 +36,12 @@ PlainSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
 }
 
 void
-PlainTestStarted(const char *testName, const char *testDescription, time_t startTime)
+PlainTestStarted(const char *testName, const char *suiteName, const char *testDescription, time_t startTime)
 {
 }
 
 void
-PlainTestEnded(const char *testName, const char *testDescription,
+PlainTestEnded(const char *testName, const char *suiteName,
           int testResult, int numAsserts, time_t endTime, time_t totalRuntime)
 {
 	printf("Asserts:%d\n", numAsserts);
diff --git a/test/test-automation/plain_logger.h b/test/test-automation/plain_logger.h
index 05e0f28eecf3bca455f1a5d45282bbc1c63d4837..4bfb9226e9d2eb6d4f2c936941cf3a8b5dc5cf3d 100644
--- a/test/test-automation/plain_logger.h
+++ b/test/test-automation/plain_logger.h
@@ -5,16 +5,18 @@
 
 void PlainRunStarted(LogOutputFp outputFn, const char *runnerParameters, time_t eventTime);
 
-void PlainRunEnded(time_t endTime, time_t totalRuntime);
+void PlainRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
+                   time_t endTime, time_t totalRuntime);
 
 void PlainSuiteStarted(const char *suiteName, time_t eventTime);
 
 void PlainSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
            double endTime, time_t totalRuntime);
 
-void PlainTestStarted(const char *testName, const char *testDescription, time_t startTime);
+void PlainTestStarted(const char *testName, const char *suiteName,
+                      const char *testDescription, time_t startTime);
 
-void PlainTestEnded(const char *testName, const char *testDescription,
+void PlainTestEnded(const char *testName, const char *suiteName,
           int testResult, int numAsserts, time_t endTime, time_t totalRuntime);
 
 void PlainAssert(const char *assertName, int assertResult, const char *assertMessage,
diff --git a/test/test-automation/xml.c b/test/test-automation/xml.c
index 7b675bfc2fa1821df3d66062e9f8a56eab949451..83e647efaa8109e84eceff0f81727da47e73ab6e 100644
--- a/test/test-automation/xml.c
+++ b/test/test-automation/xml.c
@@ -18,10 +18,6 @@
   3. This notice may not be removed or altered from any source distribution.
 */
 
-
-#ifndef _XML_C
-#define _XML_C
-
 #include <stdio.h>
 #include <string.h>
 #include <assert.h>
@@ -111,7 +107,7 @@ PrintOpenTags()
 /*
 ===================
 
-	Functions to handle XML creation
+	Functions to handle creation of XML elements
 
 ===================
 */
@@ -128,7 +124,7 @@ XMLOpenDocument(const char *rootTag, LogOutputFp log)
 
 	size_t size = SDL_strlen(rootTag) + 3 + 1; /* one extra for '\0', '<' and '>' */
 	char *buffer = SDL_malloc(size);
-	snprintf(buffer, size, "%s%s%s", "<", rootTag, ">");
+	snprintf(buffer, size, "<%s>", rootTag);
 	logger(buffer);
 	SDL_free(buffer);
 
@@ -148,7 +144,7 @@ XMLOpenElement(const char *tag)
 {
 	size_t size = SDL_strlen(tag) + 2 + 1; /* one extra for '\0', '<' */
 	char *buffer = SDL_malloc(size);
-	snprintf(buffer, size, "%s%s%s", "<", tag, ">");
+	snprintf(buffer, size, "<%s>", tag);
 	logger(buffer);
 	SDL_free(buffer);
 
@@ -157,32 +153,20 @@ XMLOpenElement(const char *tag)
 
 
 void
-XMLOpenElementWithAttribute(const char *tag, Attribute attribute)
+XMLOpenElementWithAttribute(const char *tag, Attribute *attribute)
 {
-	size_t size = SDL_strlen(tag) + 2 + 1; /* one extra for '\0', '<' */
-	char *buffer = SDL_malloc(size);
+	const int bufferSize = 1024;
+	char buffer[bufferSize];
+	memset(buffer, 0, bufferSize);
+
+	snprintf(buffer, bufferSize, "<%s %s='%s'>", tag,
+			attribute->attribute, attribute->value);
 
-	snprintf(buffer,  size, "%s%s", "<", tag);
 	logger(buffer);
-	SDL_free(buffer);
 
 	AddOpenTag(tag);
 }
 
-//! \todo make this static and remove from interface?
-void
-XMLAddAttribute(const char *attribute, const char *value)
-{
-	size_t attributeSize = SDL_strlen(attribute);
-	size_t valueSize = SDL_strlen(value);
-
-	size_t size = 1 + attributeSize + 3 + valueSize + 1;
-	char *buffer = SDL_malloc(size); // 1 for '='
-	snprintf(buffer, size, " %s%s\"%s\"", attribute, "=", value);
-	logger(buffer);
-	SDL_free(buffer);
-}
-
 void
 XMLAddContent(const char *content)
 {
@@ -203,7 +187,7 @@ XMLCloseElement(const char *tag)
 
 		size_t size = SDL_strlen(openTag->tag) + 4 + 1; /* one extra for '\0', '<', '/' and '>' */
 		char *buffer = SDL_malloc(size);
-		snprintf(buffer, size, "%s%s%s", "</", openTag->tag, ">");
+		snprintf(buffer, size, "<%s>", openTag->tag);
 		logger(buffer);
 		SDL_free(buffer);
 
@@ -226,5 +210,3 @@ XMLCloseElement(const char *tag)
 	}
 }
 
-
-#endif
diff --git a/test/test-automation/xml.h b/test/test-automation/xml.h
index 646fa2e277d29e00fc7ca028ed5c4f1b6ac5079a..a848f5bce1dd09a71dd232194d567ad4d307744e 100644
--- a/test/test-automation/xml.h
+++ b/test/test-automation/xml.h
@@ -23,6 +23,7 @@
 
 #include "logger.h"
 
+/*! Defines attribute for XML elements */
 typedef struct Attribute {
 	const char *attribute;
 	const char *value;
@@ -52,12 +53,9 @@ void XMLCloseDocument();
 void XMLOpenElement(const char *tag);
 
 /*!
- * Add attribute to currently open element.
- *
- * \param attribute Name of the attribute
- * \param value Value of the given attribute
+ * Opens XML-element with given attributes
  */
-void XMLAddAttribute(const char *attribute, const char *value);
+void XMLOpenElementWithAttribute(const char *tag, Attribute *attribute);
 
 /*!
  * Add content to currently open element.
diff --git a/test/test-automation/xml_logger.c b/test/test-automation/xml_logger.c
index fd063c28276323bffb6c2c1bd1733773f54afef5..db331dcbfb23aa3b224183fa127d51de641457b4 100644
--- a/test/test-automation/xml_logger.c
+++ b/test/test-automation/xml_logger.c
@@ -18,9 +18,6 @@
   3. This notice may not be removed or altered from any source distribution.
 */
 
-#ifndef _XML_LOGGER_C
-#define _XML_LOGGER_C
-
 #include "xml.h"
 #include "logger.h"
 
@@ -37,7 +34,8 @@ XMLRunStarted(LogOutputFp outputFn, const char *runnerParameters, time_t eventTi
 }
 
 void
-XMLRunEnded(time_t endTime, time_t totalRuntime)
+XMLRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
+            time_t endTime, time_t totalRuntime)
 {
 	XMLCloseDocument("testlog");
 }
@@ -60,11 +58,13 @@ XMLSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
 }
 
 void
-XMLTestStarted(const char *testName, const char *testDescription, time_t startTime)
+XMLTestStarted(const char *testName, const char *suiteName, const char *testDescription, time_t startTime)
 {
 	XMLOpenElement("test");
 
-	XMLOpenElement("name");
+	Attribute attribute = {"test", "value"};
+
+	XMLOpenElementWithAttribute("name", &attribute);
 	XMLAddContent(testName);
 	XMLCloseElement("name");
 
@@ -78,7 +78,7 @@ XMLTestStarted(const char *testName, const char *testDescription, time_t startTi
 }
 
 void
-XMLTestEnded(const char *testName, const char *testDescription,
+XMLTestEnded(const char *testName, const char *suiteName,
           int testResult, int numAsserts, time_t endTime, time_t totalRuntime)
 {
 	XMLCloseElement("test");
@@ -108,4 +108,3 @@ XMLLog(const char *logMessage, time_t eventTime)
 	XMLCloseElement("log");
 }
 
-#endif
diff --git a/test/test-automation/xml_logger.h b/test/test-automation/xml_logger.h
index 5c199bdeba5f958f70c0f8970cadba04971c4f44..bd9c5d13529f56a6c4807c381b29c640d1dd4f3a 100644
--- a/test/test-automation/xml_logger.h
+++ b/test/test-automation/xml_logger.h
@@ -5,16 +5,17 @@
 
 void XMLRunStarted(LogOutputFp outputFn, const char *runnerParameters, time_t eventTime);
 
-void XMLRunEnded(time_t endTime, time_t totalRuntime);
+void XMLRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
+                 time_t endTime, time_t totalRuntime);
 
 void XMLSuiteStarted(const char *suiteName, time_t eventTime);
 
 void XMLSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
            double endTime, time_t totalRuntime);
 
-void XMLTestStarted(const char *testName, const char *testDescription, time_t startTime);
+void XMLTestStarted(const char *testName, const char *suiteName, const char *testDescription, time_t startTime);
 
-void XMLTestEnded(const char *testName, const char *testDescription,
+void XMLTestEnded(const char *testName, const char *suiteName,
           int testResult, int numAsserts, time_t endTime, time_t totalRuntime);
 
 void XMLAssert(const char *assertName, int assertResult, const char *assertMessage,