diff --git a/test/MessageParser.cpp b/test/MessageParser.cpp
index c312ff018fc6d390102436b4949af66bee365cb0..4639d76b875354bf4c7237006d46dc2718ebf5f4 100644
--- a/test/MessageParser.cpp
+++ b/test/MessageParser.cpp
@@ -7,522 +7,6 @@
 #include "Services/ServiceTests.hpp"
 #include "ServicePool.hpp"
 
-TEST_CASE("execute() for the TC packets", "[MessageParser][execute()]") {
-	SECTION("ST[19]") {
-		EventActionService& eventActionService = Services.eventAction;
-
-		SECTION("Add event-action definitions TC[19,1]") {
-			char checkstring[256];
-			Message message(19, 1, Message::TC, 0);
-			message.appendEnum16(0);
-			message.appendEnum16(2);
-			String<64> data = "123";
-			message.appendString(data);
-
-			MessageParser::execute(message);
-			CHECK(eventActionService.eventActionDefinitionArray[0].empty == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[0].applicationId == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[0].eventDefinitionID == 2);
-			CHECK(eventActionService.eventActionDefinitionArray[0].enabled == 1);
-			CHECK(message.readEnum16() == 0);
-			CHECK(message.readEnum16() == 2);
-			message.readString(checkstring, 3);
-			CHECK(eventActionService.eventActionDefinitionArray[0].request.compare(data) == 0);
-
-			Message message2(19, 1, Message::TC, 0);
-			message2.appendEnum16(1);
-			message2.appendEnum16(3);
-			data = "456";
-			message2.appendString(data);
-
-			MessageParser::execute(message2);
-			CHECK(eventActionService.eventActionDefinitionArray[1].empty == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[1].applicationId == 1);
-			CHECK(eventActionService.eventActionDefinitionArray[1].eventDefinitionID == 3);
-			CHECK(eventActionService.eventActionDefinitionArray[1].enabled == 1);
-
-			CHECK(message2.readEnum16() == 1);
-			CHECK(message2.readEnum16() == 3);
-			CHECK(Services.eventAction.eventActionDefinitionArray[1].request.compare(data) == 0);
-		}
-
-		SECTION("Delete event-action definitions TC[19,2]") {
-			EventActionService& eventActionService = Services.eventAction;
-			Services.reset();
-
-			Message message0(19, 1, Message::TC, 0);
-			message0.appendEnum16(1);
-			message0.appendEnum16(0);
-			String<64> data = "0";
-			message0.appendString(data);
-			MessageParser::execute(message0);
-			Message message1(19, 1, Message::TC, 0);
-			message1.appendEnum16(1);
-			message1.appendEnum16(1);
-			data = "1";
-			message1.appendString(data);
-			MessageParser::execute(message1);
-			Message message2(19, 1, Message::TC, 0);
-			message2.appendEnum16(1);
-			message2.appendEnum16(2);
-			data = "2";
-			message2.appendString(data);
-			MessageParser::execute(message2);
-			Message message3(19, 1, Message::TC, 0);
-			message3.appendEnum16(1);
-			message3.appendEnum16(3);
-			data = "3";
-			message3.appendString(data);
-			MessageParser::execute(message3);
-			Message message4(19, 1, Message::TC, 0);
-			message4.appendEnum16(1);
-			message4.appendEnum16(4);
-			data = "4";
-			message4.appendString(data);
-			MessageParser::execute(message4);
-
-			Message message(19, 2, Message::TC, 0);
-			message.appendUint16(2);
-			message.appendEnum16(1);
-			message.appendEnum16(4);
-			message.appendEnum16(1);
-			message.appendEnum16(2);
-			MessageParser::execute(message);
-
-			CHECK(eventActionService.eventActionDefinitionArray[0].empty == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[0].applicationId == 1);
-			CHECK(eventActionService.eventActionDefinitionArray[0].eventDefinitionID == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[0].request.compare("0") == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[0].enabled == 1);
-
-			CHECK(eventActionService.eventActionDefinitionArray[1].empty == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[1].applicationId == 1);
-			CHECK(eventActionService.eventActionDefinitionArray[1].eventDefinitionID == 1);
-			CHECK(eventActionService.eventActionDefinitionArray[1].request.compare("1") == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[1].enabled == 1);
-
-			CHECK(eventActionService.eventActionDefinitionArray[2].empty == 1);
-			CHECK(eventActionService.eventActionDefinitionArray[2].applicationId == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[2].eventDefinitionID == 65535);
-			CHECK(eventActionService.eventActionDefinitionArray[2].request.compare("") == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[2].enabled == 0);
-
-			CHECK(eventActionService.eventActionDefinitionArray[3].empty == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[3].applicationId == 1);
-			CHECK(eventActionService.eventActionDefinitionArray[3].eventDefinitionID == 3);
-			CHECK(eventActionService.eventActionDefinitionArray[3].request.compare("3") == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[3].enabled == 1);
-
-			CHECK(eventActionService.eventActionDefinitionArray[4].empty == 1);
-			CHECK(eventActionService.eventActionDefinitionArray[4].applicationId == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[4].eventDefinitionID == 65535);
-			CHECK(eventActionService.eventActionDefinitionArray[4].request.compare("") == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[4].enabled == 0);
-
-		}
-
-		SECTION("Delete all event-action definitions TC[19,3]") {
-			EventActionService& eventActionService = Services.eventAction;
-			Services.reset();
-
-			Message message0(19, 1, Message::TC, 0);
-			message0.appendEnum16(1);
-			message0.appendEnum16(0);
-			String<64> data = "0";
-			message0.appendString(data);
-			MessageParser::execute(message0);
-			Message message1(19, 1, Message::TC, 0);
-			message1.appendEnum16(1);
-			message1.appendEnum16(1);
-			data = "1";
-			message1.appendString(data);
-			MessageParser::execute(message1);
-			Message message2(19, 1, Message::TC, 0);
-			message2.appendEnum16(1);
-			message2.appendEnum16(2);
-			data = "2";
-			message2.appendString(data);
-			MessageParser::execute(message2);
-			Message message3(19, 1, Message::TC, 0);
-			message3.appendEnum16(1);
-			message3.appendEnum16(3);
-			data = "3";
-			message3.appendString(data);
-			MessageParser::execute(message3);
-			Message message4(19, 1, Message::TC, 0);
-			message4.appendEnum16(1);
-			message4.appendEnum16(4);
-			data = "4";
-			message4.appendString(data);
-			MessageParser::execute(message4);
-
-			Message message(19, 3, Message::TC, 0);
-			MessageParser::execute(message);
-
-			for (int i = 0; i < 256; i++) {
-				CHECK(eventActionService.eventActionDefinitionArray[i].empty == 1);
-				CHECK(eventActionService.eventActionDefinitionArray[i].applicationId == 0);
-				CHECK(eventActionService.eventActionDefinitionArray[i].eventDefinitionID == 65535);
-				CHECK(eventActionService.eventActionDefinitionArray[i].request.compare("") == 0);
-			}
-		}
-
-		SECTION("Enable event-action definitions TC[19,4]") {
-			EventActionService& eventActionService = Services.eventAction;
-			Services.reset();
-
-			Message message0(19, 1, Message::TC, 0);
-			message0.appendEnum16(1);
-			message0.appendEnum16(0);
-			String<64> data = "0";
-			message0.appendString(data);
-			MessageParser::execute(message0);
-			Message message1(19, 1, Message::TC, 0);
-			message1.appendEnum16(1);
-			message1.appendEnum16(1);
-			data = "00";
-			message1.appendString(data);
-			MessageParser::execute(message1);
-			Message message2(19, 4, Message::TC, 0);
-			message2.appendUint16(2);
-			message2.appendEnum16(1);
-			message2.appendEnum16(0);
-			message2.appendEnum16(1);
-			message2.appendEnum16(1);
-			MessageParser::execute(message2);
-			CHECK(eventActionService.eventActionDefinitionArray[0].enabled == 1);
-			CHECK(eventActionService.eventActionDefinitionArray[1].enabled == 1);
-
-		}
-
-		SECTION("Disable event-action definitions TC[19,5]") {
-			EventActionService& eventActionService = Services.eventAction;
-			Services.reset();
-
-			Message message0(19, 1, Message::TC, 0);
-			message0.appendEnum16(1);
-			message0.appendEnum16(0);
-			String<64> data = "0";
-			message0.appendString(data);
-			MessageParser::execute(message0);
-			Message message1(19, 1, Message::TC, 0);
-			message1.appendEnum16(1);
-			message1.appendEnum16(0);
-			data = "00";
-			message1.appendString(data);
-			MessageParser::execute(message1);
-			Message message2(19, 5, Message::TC, 0);
-			message2.appendUint16(1);
-			message2.appendEnum16(1);
-			message2.appendEnum16(0);
-			MessageParser::execute(message2);
-			CHECK(eventActionService.eventActionDefinitionArray[0].enabled == 0);
-			CHECK(eventActionService.eventActionDefinitionArray[1].enabled == 0);
-		}
-
-		SECTION("Request event-action definition status TC[19,6]") {
-			EventActionService& eventActionService = Services.eventAction;
-			Services.reset();
-
-			Message message(19, 6, Message::TC, 0);
-			MessageParser::execute(message);
-			REQUIRE(ServiceTests::hasOneMessage());
-
-			Message report = ServiceTests::get(0);
-			CHECK(report.messageType == 7);
-		}
-
-		SECTION("Event-action status report TM[19,7]") {
-			EventActionService& eventActionService = Services.eventAction;
-			Services.reset();
-			ServiceTests::reset();
-
-			Message message0(19, 1, Message::TC, 0);
-			message0.appendEnum16(1);
-			message0.appendEnum16(0);
-			String<64> data = "0";
-			message0.appendString(data);
-			MessageParser::execute(message0);
-			Message message1(19, 1, Message::TC, 0);
-			message1.appendEnum16(1);
-			message1.appendEnum16(2);
-			data = "2";
-			message1.appendString(data);
-			MessageParser::execute(message1);
-			Message message2(19, 5, Message::TC, 0);
-			message2.appendUint16(1);
-			message2.appendEnum16(1);
-			message2.appendEnum16(0);
-			MessageParser::execute(message2);
-			eventActionService.eventActionStatusReport();
-			REQUIRE(ServiceTests::hasOneMessage());
-
-			Message report = ServiceTests::get(0);
-			CHECK(report.readUint8() == 2);
-			CHECK(report.readEnum16() == 1);
-			CHECK(report.readEnum16() == 0);
-			CHECK(report.readUint8() == 0);
-			CHECK(report.readEnum16() == 1);
-			CHECK(report.readEnum16() == 2);
-			CHECK(report.readUint8() == 1);
-		}
-
-		SECTION("Enable event-action function TC[19,8]") {
-			EventActionService& eventActionService = Services.eventAction;
-			Services.reset();
-
-			Message message(19, 8, Message::TC, 0);
-			MessageParser::execute(message);
-			CHECK(eventActionService.getEventActionFunctionStatus() == true);
-		}
-
-		SECTION("Disable event-action function TC[19,9]") {
-			EventActionService& eventActionService = Services.eventAction;
-			Services.reset();
-
-			Message message(19, 9, Message::TC, 0);
-			MessageParser::execute(message);
-			CHECK(eventActionService.getEventActionFunctionStatus() == false);
-		}
-	}
-
-	SECTION("ST[05]") {
-		SECTION("Enable Report Generation TC[5,5]") {
-			EventReportService& eventReportService = Services.eventReport;
-			Services.reset();
-			ServiceTests::reset();
-
-			eventReportService.getStateOfEvents().reset();
-			EventReportService::Event eventID[] = {EventReportService::AssertionFail,
-				EventReportService::LowSeverityUnknownEvent};
-			Message message(5, 5, Message::TC, 1);
-			message.appendUint16(2);
-			message.appendEnum16(eventID[0]);
-			message.appendEnum16(eventID[1]);
-			MessageParser::execute(message);
-			CHECK(eventReportService.getStateOfEvents()[2] == 1);
-			CHECK(eventReportService.getStateOfEvents()[4] == 1);
-		}
-
-		SECTION("Disable Report Generation TC[5,6]") {
-			EventReportService& eventReportService = Services.eventReport;
-			Services.reset();
-			ServiceTests::reset();
-
-			EventReportService::Event eventID[] = {EventReportService::InformativeUnknownEvent,
-				EventReportService::MediumSeverityUnknownEvent};
-			Message message(5, 6, Message::TC, 1);
-			message.appendUint16(2);
-			message.appendEnum16(eventID[0]);
-			message.appendEnum16(eventID[1]);
-			MessageParser::execute(message);
-			CHECK(eventReportService.getStateOfEvents()[0] == 0);
-			CHECK(eventReportService.getStateOfEvents()[5] == 0);
-
-			const String<64> eventReportData = "HelloWorld";
-			eventReportService.highSeverityAnomalyReport(EventReportService::InformativeUnknownEvent,
-				eventReportData);
-			CHECK(ServiceTests::hasOneMessage() == false);
-		}
-
-		SECTION("Request list of disabled events TC[5,7]") {
-			EventReportService& eventReportService = Services.eventReport;
-			Services.reset();
-			ServiceTests::reset();
-
-
-			Message message(5, 7, Message::TC, 1);
-			MessageParser::execute(message);
-			REQUIRE(ServiceTests::hasOneMessage());
-
-			Message report = ServiceTests::get(0);
-			// Check if there is message of type 8 created
-			CHECK(report.messageType == 8);
-		}
-	}
-
-	SECTION("ST[06]"){
-		SECTION("TC[6,2]") {
-			ServiceTests::reset();
-
-			// Required test variables
-			char *pStr = static_cast<char *>(malloc(4));
-			*pStr = 'T';
-			*(pStr + 1) = 'G';
-			*(pStr + 2) = '\0';
-			uint8_t data[2] = {'h', 'R'};
-
-			Message receivedPacket = Message(6, 2, Message::TC, 1);
-			receivedPacket.appendEnum8(MemoryManagementService::MemoryID::EXTERNAL); // Memory ID
-			receivedPacket.appendUint16(2); // Iteration count
-			receivedPacket.appendUint64(reinterpret_cast<uint64_t >(pStr)); // Start address
-			receivedPacket.appendOctetString(String<2>(data));
-			receivedPacket.appendBits(16, CRCHelper::calculateCRC(data, 2)); // Append CRC
-			receivedPacket.appendUint64(reinterpret_cast<uint64_t >(pStr + 2)); // Start address
-			receivedPacket.appendOctetString(String<1>(data)); // Append CRC
-			receivedPacket.appendBits(16, CRCHelper::calculateCRC(data, 1));
-			MessageParser::execute(receivedPacket);
-
-			CHECK(pStr[0] == 'h');
-			CHECK(pStr[1] == 'R');
-			CHECK(pStr[2] == 'h');
-		}
-
-		SECTION("TC[6,5]") {
-			ServiceTests::reset();
-
-			uint8_t testString_1[6] = "FStrT";
-			uint8_t testString_2[8] = "SecStrT";
-			uint8_t testString_3[2] = {5, 8};
-
-			uint8_t checkString[ECSS_MAX_STRING_SIZE];
-			uint16_t readSize = 0, checksum = 0;
-
-			Message receivedPacket = Message(6, 5, Message::TC, 1);
-			receivedPacket.appendEnum8(MemoryManagementService::MemoryID::EXTERNAL); // Memory ID
-			receivedPacket.appendUint16(3); // Iteration count (Equal to 3 test strings)
-			receivedPacket.appendUint64(reinterpret_cast<uint64_t >(testString_1)); // Start address
-			receivedPacket.appendUint16(sizeof(testString_1) / sizeof(testString_1[0])); // Data read length
-
-			receivedPacket.appendUint64(reinterpret_cast<uint64_t >(testString_2));
-			receivedPacket.appendUint16(sizeof(testString_2) / sizeof(testString_2[0]));
-
-			receivedPacket.appendUint64(reinterpret_cast<uint64_t >(testString_3));
-			receivedPacket.appendUint16(sizeof(testString_3) / sizeof(testString_3[0]));
-			MessageParser::execute(receivedPacket);
-			REQUIRE(ServiceTests::hasOneMessage());
-
-			Message response = ServiceTests::get(0);
-			CHECK(response.serviceType == 6);
-			CHECK(response.messageType == 6);
-			REQUIRE(response.dataSize == 55);
-
-			CHECK(response.readEnum8() == MemoryManagementService::MemoryID::EXTERNAL);
-			CHECK(response.readUint16() == 3);
-			CHECK(response.readUint64() == reinterpret_cast<uint64_t >(testString_1));
-			readSize = response.readOctetString(checkString);
-			checksum = response.readBits(16);
-			CHECK(readSize == sizeof(testString_1) / sizeof(testString_1[0]));
-			CHECK(checkString[0] == 'F');
-			CHECK(checkString[1] == 'S');
-			CHECK(checkString[2] == 't');
-			CHECK(checkString[3] == 'r');
-			CHECK(checkString[4] == 'T');
-			CHECK(checkString[5] == '\0');
-			CHECK(checksum == CRCHelper::calculateCRC(checkString, readSize));
-
-			CHECK(response.readUint64() == reinterpret_cast<uint64_t >(testString_2));
-			readSize = response.readOctetString(checkString);
-			checksum = response.readBits(16);
-			CHECK(readSize == sizeof(testString_2) / sizeof(testString_2[0]));
-			CHECK(checkString[0] == 'S');
-			CHECK(checkString[1] == 'e');
-			CHECK(checkString[2] == 'c');
-			CHECK(checkString[3] == 'S');
-			CHECK(checkString[4] == 't');
-			CHECK(checkString[5] == 'r');
-			CHECK(checkString[6] == 'T');
-			CHECK(checkString[7] == '\0');
-			CHECK(checksum == CRCHelper::calculateCRC(checkString, readSize));
-
-			CHECK(response.readUint64() == reinterpret_cast<uint64_t >(testString_3));
-			readSize = response.readOctetString(checkString);
-			checksum = response.readBits(16);
-			CHECK(readSize == sizeof(testString_3) / sizeof(testString_3[0]));
-			CHECK(checkString[0] == 5);
-			CHECK(checkString[1] == 8);
-			CHECK(checksum == CRCHelper::calculateCRC(checkString, readSize));
-		}
-
-		SECTION("TC[6,9]") {
-			ServiceTests::reset();
-
-			uint8_t testString_1[6] = "FStrT";
-			uint8_t testString_2[8] = "SecStrT";
-			uint16_t readSize = 0, checksum = 0;
-
-			Message receivedPacket = Message(6, 9, Message::TC, 1);
-			receivedPacket.appendEnum8(MemoryManagementService::MemoryID::EXTERNAL); // Memory ID
-			receivedPacket.appendUint16(2); // Iteration count
-			receivedPacket.appendUint64(reinterpret_cast<uint64_t >(testString_1)); // Start address
-			receivedPacket.appendUint16(sizeof(testString_1) / sizeof(testString_1[0])); // Data read length
-
-			receivedPacket.appendUint64(reinterpret_cast<uint64_t >(testString_2));
-			receivedPacket.appendUint16(sizeof(testString_2) / sizeof(testString_2[0]));
-			MessageParser::execute(receivedPacket);
-			REQUIRE(ServiceTests::hasOneMessage());
-
-			Message response = ServiceTests::get(0);
-			CHECK(response.serviceType == 6);
-			CHECK(response.messageType == 10);
-			REQUIRE(response.dataSize == 27);
-
-			CHECK(response.readEnum8() == MemoryManagementService::MemoryID::EXTERNAL);
-			CHECK(response.readUint16() == 2);
-			CHECK(response.readUint64() == reinterpret_cast<uint64_t >(testString_1));
-			readSize = response.readUint16();
-			checksum = response.readBits(16);
-			CHECK(readSize == sizeof(testString_1) / sizeof(testString_1[0]));
-			CHECK(checksum == CRCHelper::calculateCRC(testString_1, readSize));
-
-			CHECK(response.readUint64() == reinterpret_cast<uint64_t >(testString_2));
-			readSize = response.readUint16();
-			checksum = response.readBits(16);
-			CHECK(readSize == sizeof(testString_2) / sizeof(testString_2[0]));
-			CHECK(checksum == CRCHelper::calculateCRC(testString_2, readSize));
-		}
-	}
-
-	SECTION("ST[08]") {
-		FunctionManagementService & fms = Services.functionManagement;
-		void test(String<MAX_ARG_LENGTH> a);
-		SECTION("Malformed name") {
-			ServiceTests::reset();
-			fms.include(String<FUNC_NAME_LENGTH>("test"), &test);
-			Message msg(8, 1, Message::TC, 1);
-			msg.appendString(String<FUNC_NAME_LENGTH>("t3st"));
-			MessageParser::execute(msg);
-			CHECK(ServiceTests::get(0).messageType == 4);
-			CHECK(ServiceTests::get(0).serviceType == 1);
-		}
-
-		SECTION("Too long message") {
-			ServiceTests::reset();
-			fms.include(String<FUNC_NAME_LENGTH>("test"), &test);
-			Message msg(8, 1, Message::TC, 1);
-			msg.appendString(String<FUNC_NAME_LENGTH>("test"));
-			msg.appendString(String<65>
-				("eqrhjweghjhwqgthjkrghthjkdsfhgsdfhjsdjsfdhgkjdfsghfjdgkdfsgdfgsgd"));
-			MessageParser::execute(msg);
-			CHECK(ServiceTests::get(0).messageType == 4);
-			CHECK(ServiceTests::get(0).serviceType == 1);
-		}
-	}
-
-	SECTION("ST[17]") {
-		MessageParser messageParser;
-		TestService& testService = Services.testService;
-		ServiceTests::reset();
-
-		Message message = Message(17, 1, Message::TC, 1);
-		MessageParser::execute(message);
-		Message response = ServiceTests::get(0);
-		CHECK(response.serviceType == 17);
-		CHECK(response.messageType == 2);
-		CHECK(response.packetType == Message::TM);
-
-		message = Message(17, 3, Message::TC, 1);
-		message.appendUint16(7);
-		MessageParser::execute(message);
-		response = ServiceTests::get(1);
-		CHECK(response.serviceType == 17);
-		CHECK(response.messageType == 4);
-		CHECK(response.packetType == Message::TM);
-	}
-
-
-}
-
 TEST_CASE("TC message parsing", "[MessageParser]") {
 	MessageParser messageParser;
 
diff --git a/test/Services/EventActionService.cpp b/test/Services/EventActionService.cpp
index b46e8267e7bf0c59dc8c1f714b7a0b1015b2ea84..3941e548429d1865ad88620271e822323898fab3 100644
--- a/test/Services/EventActionService.cpp
+++ b/test/Services/EventActionService.cpp
@@ -19,7 +19,7 @@ TEST_CASE("Add event-action definitions TC[19,1]", "[service][st19]") {
 	String<64> data = "123";
 	message.appendString(data);
 
-	eventActionService.addEventActionDefinitions(message);
+	Service::execute(message);
 	CHECK(eventActionService.eventActionDefinitionArray[0].empty == 0);
 	CHECK(eventActionService.eventActionDefinitionArray[0].applicationId == 0);
 	CHECK(eventActionService.eventActionDefinitionArray[0].eventDefinitionID == 2);
@@ -35,7 +35,7 @@ TEST_CASE("Add event-action definitions TC[19,1]", "[service][st19]") {
 	data = "456";
 	message2.appendString(data);
 
-	eventActionService.addEventActionDefinitions(message2);
+	Service::execute(message2);
 	CHECK(eventActionService.eventActionDefinitionArray[1].empty == 0);
 	CHECK(eventActionService.eventActionDefinitionArray[1].applicationId == 1);
 	CHECK(eventActionService.eventActionDefinitionArray[1].eventDefinitionID == 3);
@@ -52,31 +52,31 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 	message0.appendEnum16(0);
 	String<64> data = "0";
 	message0.appendString(data);
-	eventActionService.addEventActionDefinitions(message0);
+	Service::execute(message0);
 	Message message1(19, 1, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
 	data = "1";
 	message1.appendString(data);
-	eventActionService.addEventActionDefinitions(message1);
+	Service::execute(message1);
 	Message message2(19, 1, Message::TC, 0);
 	message2.appendEnum16(1);
 	message2.appendEnum16(2);
 	data = "2";
 	message2.appendString(data);
-	eventActionService.addEventActionDefinitions(message2);
+	Service::execute(message2);
 	Message message3(19, 1, Message::TC, 0);
 	message3.appendEnum16(1);
 	message3.appendEnum16(3);
 	data = "3";
 	message3.appendString(data);
-	eventActionService.addEventActionDefinitions(message3);
+	Service::execute(message3);
 	Message message4(19, 1, Message::TC, 0);
 	message4.appendEnum16(1);
 	message4.appendEnum16(4);
 	data = "4";
 	message4.appendString(data);
-	eventActionService.addEventActionDefinitions(message4);
+	Service::execute(message4);
 
 	Message message(19, 2, Message::TC, 0);
 	message.appendUint16(2);
@@ -84,7 +84,7 @@ TEST_CASE("Delete event-action definitions TC[19,2]", "[service][st19]") {
 	message.appendEnum16(4);
 	message.appendEnum16(1);
 	message.appendEnum16(2);
-	eventActionService.deleteEventActionDefinitions(message);
+	Service::execute(message);
 
 	CHECK(eventActionService.eventActionDefinitionArray[0].empty == 0);
 	CHECK(eventActionService.eventActionDefinitionArray[0].applicationId == 1);
@@ -124,31 +124,31 @@ TEST_CASE("Delete all event-action definitions TC[19,3]", "[service][st19]") {
 	message0.appendEnum16(0);
 	String<64> data = "0";
 	message0.appendString(data);
-	eventActionService.addEventActionDefinitions(message0);
+	Service::execute(message0);
 	Message message1(19, 1, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
 	data = "1";
 	message1.appendString(data);
-	eventActionService.addEventActionDefinitions(message1);
+	Service::execute(message1);
 	Message message2(19, 1, Message::TC, 0);
 	message2.appendEnum16(1);
 	message2.appendEnum16(2);
 	data = "2";
 	message2.appendString(data);
-	eventActionService.addEventActionDefinitions(message2);
+	Service::execute(message2);
 	Message message3(19, 1, Message::TC, 0);
 	message3.appendEnum16(1);
 	message3.appendEnum16(3);
 	data = "3";
 	message3.appendString(data);
-	eventActionService.addEventActionDefinitions(message3);
+	Service::execute(message3);
 	Message message4(19, 1, Message::TC, 0);
 	message4.appendEnum16(1);
 	message4.appendEnum16(4);
 	data = "4";
 	message4.appendString(data);
-	eventActionService.addEventActionDefinitions(message4);
+	Service::execute(message4);
 
 	Message message(19, 3, Message::TC, 0);
 	eventActionService.deleteAllEventActionDefinitions(message);
@@ -167,20 +167,20 @@ TEST_CASE("Enable event-action definitions TC[19,4]", "[service][st19]") {
 	message0.appendEnum16(0);
 	String<64> data = "0";
 	message0.appendString(data);
-	eventActionService.addEventActionDefinitions(message0);
+	Service::execute(message0);
 	Message message1(19, 1, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(1);
 	data = "00";
 	message1.appendString(data);
-	eventActionService.addEventActionDefinitions(message1);
+	Service::execute(message1);
 	Message message2(19, 4, Message::TC, 0);
 	message2.appendUint16(2);
 	message2.appendEnum16(1);
 	message2.appendEnum16(0);
 	message2.appendEnum16(1);
 	message2.appendEnum16(1);
-	eventActionService.enableEventActionDefinitions(message2);
+	Service::execute(message2);
 	CHECK(eventActionService.eventActionDefinitionArray[0].enabled == 1);
 	CHECK(eventActionService.eventActionDefinitionArray[1].enabled == 1);
 
@@ -192,25 +192,25 @@ TEST_CASE("Disable event-action definitions TC[19,5]", "[service][st19]") {
 	message0.appendEnum16(0);
 	String<64> data = "0";
 	message0.appendString(data);
-	eventActionService.addEventActionDefinitions(message0);
+	Service::execute(message0);
 	Message message1(19, 1, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(0);
 	data = "00";
 	message1.appendString(data);
-	eventActionService.addEventActionDefinitions(message1);
+	Service::execute(message1);
 	Message message2(19, 5, Message::TC, 0);
 	message2.appendUint16(1);
 	message2.appendEnum16(1);
 	message2.appendEnum16(0);
-	eventActionService.disableEventActionDefinitions(message2);
+	Service::execute(message2);
 	CHECK(eventActionService.eventActionDefinitionArray[0].enabled == 0);
 	CHECK(eventActionService.eventActionDefinitionArray[1].enabled == 0);
 }
 
 TEST_CASE("Request event-action definition status TC[19,6]", "[service][st19]") {
 	Message message(19, 6, Message::TC, 0);
-	eventActionService.requestEventActionDefinitionStatus(message);
+	Service::execute(message);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message report = ServiceTests::get(0);
@@ -223,18 +223,18 @@ TEST_CASE("Event-action status report TM[19,7]", "[service][st19]") {
 	message0.appendEnum16(0);
 	String<64> data = "0";
 	message0.appendString(data);
-	eventActionService.addEventActionDefinitions(message0);
+	Service::execute(message0);
 	Message message1(19, 1, Message::TC, 0);
 	message1.appendEnum16(1);
 	message1.appendEnum16(2);
 	data = "2";
 	message1.appendString(data);
-	eventActionService.addEventActionDefinitions(message1);
+	Service::execute(message1);
 	Message message2(19, 5, Message::TC, 0);
 	message2.appendUint16(1);
 	message2.appendEnum16(1);
 	message2.appendEnum16(0);
-	eventActionService.disableEventActionDefinitions(message2);
+	Service::execute(message2);
 	eventActionService.eventActionStatusReport();
 	REQUIRE(ServiceTests::hasOneMessage());
 
@@ -250,13 +250,13 @@ TEST_CASE("Event-action status report TM[19,7]", "[service][st19]") {
 
 TEST_CASE("Enable event-action function TC[19,8]", "[service][st19]") {
 	Message message(19, 8, Message::TC, 0);
-	eventActionService.enableEventActionFunction(message);
+	Service::execute(message);
 	CHECK(eventActionService.getEventActionFunctionStatus() == true);
 }
 
 TEST_CASE("Disable event-action function TC[19,9]", "[service][st19]") {
 	Message message(19, 9, Message::TC, 0);
-	eventActionService.disableEventActionFunction(message);
+	Service::execute(message);
 	CHECK(eventActionService.getEventActionFunctionStatus() == false);
 }
 
diff --git a/test/Services/EventReportService.cpp b/test/Services/EventReportService.cpp
index e34dbca9de8352bb4c7afd09ff4f874f9f922161..2e3cfee0e41d70f531e8ffcc6098cc6ae3831471 100644
--- a/test/Services/EventReportService.cpp
+++ b/test/Services/EventReportService.cpp
@@ -90,7 +90,7 @@ TEST_CASE("Enable Report Generation TC[5,5]", "[service][st05]") {
 	message.appendUint16(2);
 	message.appendEnum16(eventID[0]);
 	message.appendEnum16(eventID[1]);
-	eventReportService.enableReportGeneration(message);
+	Service::execute(message);
 	CHECK(eventReportService.getStateOfEvents()[2] == 1);
 	CHECK(eventReportService.getStateOfEvents()[4] == 1);
 }
@@ -102,7 +102,7 @@ TEST_CASE("Disable Report Generation TC[5,6]", "[service][st05]") {
 	message.appendUint16(2);
 	message.appendEnum16(eventID[0]);
 	message.appendEnum16(eventID[1]);
-	eventReportService.disableReportGeneration(message);
+	Service::execute(message);
 	CHECK(eventReportService.getStateOfEvents()[0] == 0);
 	CHECK(eventReportService.getStateOfEvents()[5] == 0);
 
@@ -114,7 +114,7 @@ TEST_CASE("Disable Report Generation TC[5,6]", "[service][st05]") {
 
 TEST_CASE("Request list of disabled events TC[5,7]", "[service][st05]") {
 	Message message(5, 7, Message::TC, 1);
-	eventReportService.requestListOfDisabledEvents(message);
+	Service::execute(message);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message report = ServiceTests::get(0);
@@ -130,7 +130,7 @@ TEST_CASE("List of Disabled Events Report TM[5,8]", "[service][st05]") {
 	message.appendEnum16(eventID[0]);
 	message.appendEnum16(eventID[1]);
 	// Disable 3rd and 6th
-	eventReportService.disableReportGeneration(message);
+	Service::execute(message);
 	eventReportService.listOfDisabledEventsReport();
 	REQUIRE(ServiceTests::hasOneMessage());
 
@@ -151,7 +151,7 @@ TEST_CASE("List of observables 6.5.6", "[service][st05]") {
 	Message message(5, 6, Message::TC, 1);
 	message.appendUint16(1);
 	message.appendEnum16(eventID[0]);
-	eventReportService.disableReportGeneration(message);
+	Service::execute(message);
 
 	const String<64> eventReportData = "HelloWorld";
 
diff --git a/test/Services/FunctionManagementService.cpp b/test/Services/FunctionManagementService.cpp
index 1cd99bf509a995fd08ce849965d0cd6d3f28a83c..1b8ca1c9e1026bada3b37913a2fefb6254e9f9d6 100644
--- a/test/Services/FunctionManagementService.cpp
+++ b/test/Services/FunctionManagementService.cpp
@@ -17,7 +17,7 @@ TEST_CASE("ST[08] - Call Tests") {
 		fms.include(String<FUNC_NAME_LENGTH>("test"), &test);
 		Message msg(8, 1, Message::TC, 1);
 		msg.appendString(String<FUNC_NAME_LENGTH>("t3st"));
-		fms.call(msg);
+		Service::execute(msg);
 		CHECK(ServiceTests::get(0).messageType == 4);
 		CHECK(ServiceTests::get(0).serviceType == 1);
 	}
@@ -29,7 +29,7 @@ TEST_CASE("ST[08] - Call Tests") {
 		msg.appendString(String<FUNC_NAME_LENGTH>("test"));
 		msg.appendString(String<65>
 		    ("eqrhjweghjhwqgthjkrghthjkdsfhgsdfhjsdjsfdhgkjdfsghfjdgkdfsgdfgsgd"));
-		fms.call(msg);
+		Service::execute(msg);
 		CHECK(ServiceTests::get(0).messageType == 4);
 		CHECK(ServiceTests::get(0).serviceType == 1);
 	}
diff --git a/test/Services/MemoryManagementService.cpp b/test/Services/MemoryManagementService.cpp
index 43ee44e83b66680b8cedaedb5e3017c8b46fa24e..9176a55d41f19416cee4fb3eb841671fe70f7af8 100644
--- a/test/Services/MemoryManagementService.cpp
+++ b/test/Services/MemoryManagementService.cpp
@@ -23,7 +23,7 @@ TEST_CASE("TC[6,2]", "[service][st06]") {
 	receivedPacket.appendUint64(reinterpret_cast<uint64_t >(pStr + 2)); // Start address
 	receivedPacket.appendOctetString(String<1>(data)); // Append CRC
 	receivedPacket.appendBits(16, CRCHelper::calculateCRC(data, 1));
-	memMangService.rawDataMemorySubservice.loadRawData(receivedPacket);
+	Service::execute(receivedPacket);
 
 	CHECK(pStr[0] == 'h');
 	CHECK(pStr[1] == 'R');
@@ -50,7 +50,7 @@ TEST_CASE("TC[6,5]", "[service][st06]") {
 
 	receivedPacket.appendUint64(reinterpret_cast<uint64_t >(testString_3));
 	receivedPacket.appendUint16(sizeof(testString_3) / sizeof(testString_3[0]));
-	memMangService.rawDataMemorySubservice.dumpRawData(receivedPacket);
+	Service::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
@@ -109,7 +109,7 @@ TEST_CASE("TC[6,9]", "[service][st06]") {
 
 	receivedPacket.appendUint64(reinterpret_cast<uint64_t >(testString_2));
 	receivedPacket.appendUint16(sizeof(testString_2) / sizeof(testString_2[0]));
-	memMangService.rawDataMemorySubservice.checkRawData(receivedPacket);
+	Service::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
diff --git a/test/Services/ParameterService.cpp b/test/Services/ParameterService.cpp
index 61b96d6c1cc1c93cdc0c013717f401cb01c4abec..8f971c04d1d5006e5f992186cbf7dc59ac8acb12 100644
--- a/test/Services/ParameterService.cpp
+++ b/test/Services/ParameterService.cpp
@@ -14,7 +14,7 @@ TEST_CASE("Parameter Report Subservice") {
 		request.appendUint16(34672);  // faulty ID in this context
 		request.appendUint16(1);      // valid
 
-		pserv.reportParameterIds(request);
+		Service::execute(request);
 		report = ServiceTests::get(0);
 		request.resetRead();
 
@@ -33,7 +33,7 @@ TEST_CASE("Parameter Report Subservice") {
 	SECTION("Wrong Message Type Handling Test") {
 		Message falseRequest(15, 3, Message::TM, 1);   // a totally wrong message
 
-		pserv.reportParameterIds(falseRequest);
+		Service::execute(falseRequest);
 		Message errorNotif = ServiceTests::get(0);
 		CHECK(errorNotif.messageType == 4); // check for proper failed start of
 		// execution notification
@@ -68,19 +68,19 @@ TEST_CASE("Parameter Setting Subservice") {
 		// Since every reporting and setting is called with the same (sometimes faulty) parameters,
 		// and there are errors generated (as should be) it is important to catch and check for
 		// them in order to preserve the integrity of the test.
-		pserv.reportParameterIds(reportRequest);
+		Service::execute(reportRequest);
 		Message errorNotif1 = ServiceTests::get(0);
 		CHECK(errorNotif1.messageType == 4);
 		CHECK(errorNotif1.serviceType == 1);
 
 		Message before = ServiceTests::get(1);
 
-		pserv.setParameterIds(setRequest);
+		Service::execute(setRequest);
 		Message errorNotif2 = ServiceTests::get(2);
 		CHECK(errorNotif2.messageType == 4);
 		CHECK(errorNotif2.serviceType == 1);
 
-		pserv.reportParameterIds(reportRequest);
+		Service::execute(reportRequest);
 		Message errorNotif3 = ServiceTests::get(3);
 		CHECK(errorNotif3.messageType == 4);
 		CHECK(errorNotif3.serviceType == 1);
diff --git a/test/Services/TestService.cpp b/test/Services/TestService.cpp
index 700c0b9df512d6a5e8aa2ae803762f1e07240294..6e5126dadcef9ccf666263a33f09933ed8225c3e 100644
--- a/test/Services/TestService.cpp
+++ b/test/Services/TestService.cpp
@@ -7,7 +7,7 @@ TestService & testService = Services.testService;
 
 TEST_CASE("TM[17,1]", "[service][st17]") {
 	Message receivedPacket = Message(17, 1, Message::TC, 1);
-	testService.areYouAlive(receivedPacket);
+	Service::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
@@ -19,7 +19,7 @@ TEST_CASE("TM[17,1]", "[service][st17]") {
 TEST_CASE("TM[17,3]", "[service][st17]") {
 	Message receivedPacket = Message(17, 3, Message::TC, 1);
 	receivedPacket.appendEnum16(40);
-	testService.onBoardConnection(receivedPacket);
+	Service::execute(receivedPacket);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
diff --git a/test/Services/TimeBasedSchedulingService.cpp b/test/Services/TimeBasedSchedulingService.cpp
index bfa878325c513b2a28dd5f1c840cd5d414a7c7ba..11ae0e8708db8872f7f87d5590a6614bd162292e 100644
--- a/test/Services/TimeBasedSchedulingService.cpp
+++ b/test/Services/TimeBasedSchedulingService.cpp
@@ -10,9 +10,10 @@
  * structure, which has been declared as a friend in the TimeBasedSchedulingService class, so
  * that it can access the private members required for testing validation.
  */
-namespace unit_test {
+namespace unit_test
+{
 	struct Tester {
-		static bool executionFunctionStatus(TimeBasedSchedulingService &tmService) {
+		static bool executionFunctionStatus(TimeBasedSchedulingService& tmService) {
 			return tmService.executionFunctionStatus;
 		}
 
@@ -20,24 +21,24 @@ namespace unit_test {
 		 * Read the private member scheduled activities and since it is a list and it can't be
 		 * accessed, get each element and save it to a vector.
 		 */
-		static auto scheduledActivities(TimeBasedSchedulingService &tmService) {
-			std::vector<TimeBasedSchedulingService::ScheduledActivity*>listElements;
+		static auto scheduledActivities(TimeBasedSchedulingService& tmService) {
+			std::vector<TimeBasedSchedulingService::ScheduledActivity*> listElements;
+
+			std::transform(tmService.scheduledActivities.begin(), tmService.scheduledActivities.end(),
+				std::back_inserter(listElements), [](auto& activity) -> auto { return &activity; });
 
-			for (auto &element : tmService.scheduledActivities) {
-				listElements.push_back(&element);
-			}
 			return listElements; // Return the list elements
 		}
 	};
-}
+} // namespace unit_test
 
 Message testMessage1, testMessage2, testMessage3, testMessage4;
 MessageParser msgParser;
-auto currentTime = static_cast<uint32_t >(time(nullptr)); // Get the current system time
+auto currentTime = static_cast<uint32_t>(time(nullptr)); // Get the current system time
 bool messagesPopulated = false; // Indicate whether the test messages are initialized
 
 // Run this function to set the service up before moving on with further testing
-auto activityInsertion(TimeBasedSchedulingService &timeService) {
+auto activityInsertion(TimeBasedSchedulingService& timeService) {
 	if (not messagesPopulated) {
 		// Initialize the test messages
 		testMessage1.serviceType = 6;
@@ -90,26 +91,27 @@ auto activityInsertion(TimeBasedSchedulingService &timeService) {
 	return unit_test::Tester::scheduledActivities(timeService); // Return the activities vector
 }
 
+TimeBasedSchedulingService & timeBasedService = Services.timeBasedScheduling;
 
 TEST_CASE("TC[11,1] Enable Schedule Execution", "[service][st11]") {
-	TimeBasedSchedulingService timeService;
+	Services.reset();
 	Message receivedMessage(11, 1, Message::TC, 1);
 
-	timeService.enableScheduleExecution(receivedMessage);
-	CHECK(unit_test::Tester::executionFunctionStatus(timeService));
+	Service::execute(receivedMessage);//timeService.enableScheduleExecution(receivedMessage);
+	CHECK(unit_test::Tester::executionFunctionStatus(timeBasedService));
 }
 
 TEST_CASE("TC[11,2] Disable Schedule Execution", "[service][st11]") {
+	Services.reset();
 	Message receivedMessage(11, 2, Message::TC, 1);
-	TimeBasedSchedulingService timeService;
 
-	timeService.disableScheduleExecution(receivedMessage);
-	CHECK(not unit_test::Tester::executionFunctionStatus(timeService));
+	Service::execute(receivedMessage);//timeService.disableScheduleExecution(receivedMessage);
+	CHECK(not unit_test::Tester::executionFunctionStatus(timeBasedService));
 }
 
 TEST_CASE("TC[11,4] Activity Insertion", "[service][st11]") {
-	TimeBasedSchedulingService timeService;
-	auto scheduledActivities = activityInsertion(timeService);
+	Services.reset();
+	auto scheduledActivities = activityInsertion(timeBasedService);
 
 	REQUIRE(scheduledActivities.size() == 4);
 	REQUIRE(scheduledActivities.at(0)->requestReleaseTime == currentTime + 1556435);
@@ -126,60 +128,58 @@ TEST_CASE("TC[11,4] Activity Insertion", "[service][st11]") {
 		receivedMessage.appendUint16(1); // Total number of requests
 
 		receivedMessage.appendUint32(currentTime - 15564350);
-		timeService.insertActivities(receivedMessage);
+		Service::execute(receivedMessage);//timeService.insertActivities(receivedMessage);
 
 		REQUIRE(ServiceTests::thrownError(ErrorHandler::InstructionExecutionStartError));
 	}
 }
 
 TEST_CASE("TC[11,15] Time shift all scheduled activities", "[service][st11]") {
-	TimeBasedSchedulingService timeService;
+	Services.reset();
 	Message receivedMessage(11, 15, Message::TC, 1);
 
-	auto scheduledActivities = activityInsertion(timeService);
+	auto scheduledActivities = activityInsertion(timeBasedService);
 	const int32_t timeShift = 6789;
 
 	SECTION("Positive Shift") {
 		receivedMessage.appendSint32(-timeShift);
 
 		CHECK(scheduledActivities.size() == 4);
-		timeService.timeShiftAllActivities(receivedMessage);
+		Service::execute(receivedMessage);//timeService.timeShiftAllActivities(receivedMessage);
 
 		REQUIRE(scheduledActivities.at(0)->requestReleaseTime == currentTime + 1556435 - timeShift);
 		REQUIRE(scheduledActivities.at(1)->requestReleaseTime == currentTime + 1726435 - timeShift);
 		REQUIRE(scheduledActivities.at(2)->requestReleaseTime == currentTime + 1957232 - timeShift);
-		REQUIRE(
-			scheduledActivities.at(3)->requestReleaseTime == currentTime + 17248435 - timeShift);
+		REQUIRE(scheduledActivities.at(3)->requestReleaseTime == currentTime + 17248435 - timeShift);
 	}
 
 	SECTION("Negative Shift") {
 		receivedMessage.appendSint32(timeShift);
 
 		CHECK(scheduledActivities.size() == 4);
-		timeService.timeShiftAllActivities(receivedMessage);
+		Service::execute(receivedMessage);//timeService.timeShiftAllActivities(receivedMessage);
 
 		REQUIRE(scheduledActivities.at(0)->requestReleaseTime == currentTime + 1556435 + timeShift);
 		REQUIRE(scheduledActivities.at(1)->requestReleaseTime == currentTime + 1726435 + timeShift);
 		REQUIRE(scheduledActivities.at(2)->requestReleaseTime == currentTime + 1957232 + timeShift);
-		REQUIRE(
-			scheduledActivities.at(3)->requestReleaseTime == currentTime + 17248435 + timeShift);
+		REQUIRE(scheduledActivities.at(3)->requestReleaseTime == currentTime + 17248435 + timeShift);
 	}
 
 	SECTION("Error throwing") {
 		receivedMessage.appendSint32(-6789000); // Provide a huge time shift to cause an error
 
 		CHECK(scheduledActivities.size() == 4);
-		timeService.timeShiftAllActivities(receivedMessage);
+		Service::execute(receivedMessage);//timeService.timeShiftAllActivities(receivedMessage);
 
 		REQUIRE(ServiceTests::thrownError(ErrorHandler::SubServiceExecutionStartError));
 	}
 }
 
 TEST_CASE("TC[11,7] Time shift activities by ID", "[service][st11]") {
-	TimeBasedSchedulingService timeService;
+	Services.reset();
 	Message receivedMessage(11, 7, Message::TC, 1);
 
-	auto scheduledActivities = activityInsertion(timeService);
+	auto scheduledActivities = activityInsertion(timeBasedService);
 	scheduledActivities.at(2)->requestID.applicationID = 4; // Append a dummy application ID
 	CHECK(scheduledActivities.size() == 4);
 
@@ -192,8 +192,8 @@ TEST_CASE("TC[11,7] Time shift activities by ID", "[service][st11]") {
 		receivedMessage.appendUint16(testMessage2.applicationId); // todo: Remove the dummy app ID
 		receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count
 
-		timeService.timeShiftActivitiesByID(receivedMessage);
-		scheduledActivities = unit_test::Tester::scheduledActivities(timeService);
+		timeBasedService.timeShiftActivitiesByID(receivedMessage);
+		scheduledActivities = unit_test::Tester::scheduledActivities(timeBasedService);
 
 		// Make sure the new value is inserted sorted
 		REQUIRE(scheduledActivities.at(3)->requestReleaseTime == currentTime + 1957232 + timeShift);
@@ -207,8 +207,8 @@ TEST_CASE("TC[11,7] Time shift activities by ID", "[service][st11]") {
 		receivedMessage.appendUint16(testMessage2.applicationId); // todo: Remove the dummy app ID
 		receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count
 
-		timeService.timeShiftActivitiesByID(receivedMessage);
-		scheduledActivities = unit_test::Tester::scheduledActivities(timeService);
+		timeBasedService.timeShiftActivitiesByID(receivedMessage);
+		scheduledActivities = unit_test::Tester::scheduledActivities(timeBasedService);
 
 		// Output should be sorted
 		REQUIRE(scheduledActivities.at(1)->requestReleaseTime == currentTime + 1957232 - 250000);
@@ -222,7 +222,7 @@ TEST_CASE("TC[11,7] Time shift activities by ID", "[service][st11]") {
 		receivedMessage.appendUint16(80); // Dummy application ID to throw an error
 		receivedMessage.appendUint16(0); // Dummy sequence count
 
-		timeService.timeShiftActivitiesByID(receivedMessage);
+		timeBasedService.timeShiftActivitiesByID(receivedMessage);
 		REQUIRE(ServiceTests::thrownError(ErrorHandler::InstructionExecutionStartError));
 	}
 
@@ -233,16 +233,16 @@ TEST_CASE("TC[11,7] Time shift activities by ID", "[service][st11]") {
 		receivedMessage.appendUint16(testMessage2.applicationId); // todo: Remove the dummy app ID
 		receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count
 
-		timeService.timeShiftActivitiesByID(receivedMessage);
+		timeBasedService.timeShiftActivitiesByID(receivedMessage);
 		REQUIRE(ServiceTests::thrownError(ErrorHandler::InstructionExecutionStartError));
 	}
 }
 
 TEST_CASE("TC[11,9] Detail report scheduled activities by ID", "[service][st11]") {
-	TimeBasedSchedulingService timeService;
+	Services.reset();
 	Message receivedMessage(11, 9, Message::TC, 1);
 
-	auto scheduledActivities = activityInsertion(timeService);
+	auto scheduledActivities = activityInsertion(timeBasedService);
 
 	SECTION("Detailed activity report") {
 		// Verify that everything is in place
@@ -259,7 +259,7 @@ TEST_CASE("TC[11,9] Detail report scheduled activities by ID", "[service][st11]"
 		receivedMessage.appendUint16(testMessage1.applicationId); // todo: Remove the dummy app ID
 		receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count
 
-		timeService.detailReportActivitiesByID(receivedMessage);
+		timeBasedService.detailReportActivitiesByID(receivedMessage);
 		REQUIRE(ServiceTests::hasOneMessage());
 
 		Message response = ServiceTests::get(0);
@@ -292,16 +292,16 @@ TEST_CASE("TC[11,9] Detail report scheduled activities by ID", "[service][st11]"
 		receivedMessage.appendUint16(80); // Dummy application ID to throw an error
 		receivedMessage.appendUint16(0); // Dummy sequence count
 
-		timeService.detailReportActivitiesByID(receivedMessage);
+		timeBasedService.detailReportActivitiesByID(receivedMessage);
 		REQUIRE(ServiceTests::thrownError(ErrorHandler::InstructionExecutionStartError));
 	}
 }
 
 TEST_CASE("TC[11,12] Summary report scheduled activities by ID", "[service][st11]") {
-	TimeBasedSchedulingService timeService;
+	Services.reset();
 	Message receivedMessage(11, 12, Message::TC, 1);
 
-	auto scheduledActivities = activityInsertion(timeService);
+	auto scheduledActivities = activityInsertion(timeBasedService);
 
 	SECTION("Summary report") {
 		// Verify that everything is in place
@@ -318,7 +318,7 @@ TEST_CASE("TC[11,12] Summary report scheduled activities by ID", "[service][st11
 		receivedMessage.appendUint16(testMessage1.applicationId); // todo: Remove the dummy app ID
 		receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count
 
-		timeService.summaryReportActivitiesByID(receivedMessage);
+		timeBasedService.summaryReportActivitiesByID(receivedMessage);
 		REQUIRE(ServiceTests::hasOneMessage());
 
 		Message response = ServiceTests::get(0);
@@ -335,17 +335,13 @@ TEST_CASE("TC[11,12] Summary report scheduled activities by ID", "[service][st11
 			if (i == 0) {
 				REQUIRE(receivedReleaseTime == scheduledActivities.at(0)->requestReleaseTime);
 				REQUIRE(receivedSourceID == scheduledActivities.at(0)->requestID.sourceID);
-				REQUIRE(
-					receivedApplicationID == scheduledActivities.at(0)->requestID.applicationID);
-				REQUIRE(
-					receivedSequenceCount == scheduledActivities.at(0)->requestID.sequenceCount);
+				REQUIRE(receivedApplicationID == scheduledActivities.at(0)->requestID.applicationID);
+				REQUIRE(receivedSequenceCount == scheduledActivities.at(0)->requestID.sequenceCount);
 			} else {
 				REQUIRE(receivedReleaseTime == scheduledActivities.at(2)->requestReleaseTime);
 				REQUIRE(receivedSourceID == scheduledActivities.at(2)->requestID.sourceID);
-				REQUIRE(
-					receivedApplicationID == scheduledActivities.at(2)->requestID.applicationID);
-				REQUIRE(
-					receivedSequenceCount == scheduledActivities.at(2)->requestID.sequenceCount);
+				REQUIRE(receivedApplicationID == scheduledActivities.at(2)->requestID.applicationID);
+				REQUIRE(receivedSequenceCount == scheduledActivities.at(2)->requestID.sequenceCount);
 			}
 		}
 	}
@@ -356,17 +352,17 @@ TEST_CASE("TC[11,12] Summary report scheduled activities by ID", "[service][st11
 		receivedMessage.appendUint16(80); // Dummy application ID to throw an error
 		receivedMessage.appendUint16(0); // Dummy sequence count
 
-		timeService.summaryReportActivitiesByID(receivedMessage);
+		timeBasedService.summaryReportActivitiesByID(receivedMessage);
 		REQUIRE(ServiceTests::thrownError(ErrorHandler::InstructionExecutionStartError));
 	}
 }
 
 TEST_CASE("TC[11,16] Detail report all scheduled activities", "[service][st11]") {
-	TimeBasedSchedulingService timeService;
-	auto scheduledActivities = activityInsertion(timeService);
+	Services.reset();
+	auto scheduledActivities = activityInsertion(timeBasedService);
 
 	Message receivedMessage(11, 16, Message::TC, 1);
-	timeService.detailReportAllActivities(receivedMessage);
+	timeBasedService.detailReportAllActivities(receivedMessage);
 	REQUIRE(ServiceTests::hasOneMessage());
 
 	Message response = ServiceTests::get(0);
@@ -390,10 +386,10 @@ TEST_CASE("TC[11,16] Detail report all scheduled activities", "[service][st11]")
 }
 
 TEST_CASE("TC[11,5] Activity deletion by ID", "[service][st11]") {
-	TimeBasedSchedulingService timeService;
+	Services.reset();
 	Message receivedMessage(11, 5, Message::TC, 1);
 
-	auto scheduledActivities = activityInsertion(timeService);
+	auto scheduledActivities = activityInsertion(timeBasedService);
 
 	SECTION("Activity deletion") {
 		// Verify that everything is in place
@@ -406,8 +402,8 @@ TEST_CASE("TC[11,5] Activity deletion by ID", "[service][st11]") {
 		receivedMessage.appendUint16(0); // todo: Remove the dummy sequence count
 
 		CHECK(scheduledActivities.size() == 4);
-		timeService.deleteActivitiesByID(receivedMessage);
-		scheduledActivities = unit_test::Tester::scheduledActivities(timeService);
+		timeBasedService.deleteActivitiesByID(receivedMessage);
+		scheduledActivities = unit_test::Tester::scheduledActivities(timeBasedService);
 
 		REQUIRE(scheduledActivities.size() == 3);
 		REQUIRE(scheduledActivities.at(2)->requestReleaseTime == currentTime + 17248435);
@@ -420,20 +416,20 @@ TEST_CASE("TC[11,5] Activity deletion by ID", "[service][st11]") {
 		receivedMessage.appendUint16(80); // Dummy application ID to throw an error
 		receivedMessage.appendUint16(0); // Dummy sequence count
 
-		timeService.deleteActivitiesByID(receivedMessage);
+		timeBasedService.deleteActivitiesByID(receivedMessage);
 		REQUIRE(ServiceTests::thrownError(ErrorHandler::InstructionExecutionStartError));
 	}
 }
 
 TEST_CASE("TC[11,3] Reset schedule", "[service][st11]") {
-	TimeBasedSchedulingService timeService;
-	auto scheduledActivities = activityInsertion(timeService);
+	Services.reset();
+	activityInsertion(timeBasedService);
 
 	Message receivedMessage(11, 3, Message::TC, 1);
 
-	timeService.resetSchedule(receivedMessage);
-	scheduledActivities = unit_test::Tester::scheduledActivities(timeService); // Get the new list
+	timeBasedService.resetSchedule(receivedMessage);
+	auto scheduledActivities = unit_test::Tester::scheduledActivities(timeBasedService); // Get the new list
 
 	REQUIRE(scheduledActivities.empty());
-	REQUIRE(not unit_test::Tester::executionFunctionStatus(timeService));
+	REQUIRE(not unit_test::Tester::executionFunctionStatus(timeBasedService));
 }