diff --git a/src/META-INF/explorviz.live_trace_processing.default.properties b/src/META-INF/explorviz.live_trace_processing.default.properties
index e0c548ebbe9cb797bfb0a927730c2c21478086e1..e86880580d295ffef300272eaeea5e61e320da37 100644
--- a/src/META-INF/explorviz.live_trace_processing.default.properties
+++ b/src/META-INF/explorviz.live_trace_processing.default.properties
@@ -17,6 +17,7 @@ explorviz.live_trace_processing.system_name=
 explorviz.live_trace_processing.ip_address=
 explorviz.live_trace_processing.host_name=
 explorviz.live_trace_processing.application_name=
+explorviz.live_trace_processing.programming_language=Java
 
 explorviz.live_trace_processing.debug=false
 
@@ -25,6 +26,8 @@ explorviz.live_trace_processing.android_monitoring=false
 explorviz.live_trace_processing.monitoring_enabled=true
 explorviz.live_trace_processing.system_monitoring_enabled=true
 
+explorviz.live_trace_processing.continous_monitoring_enabled=false
+
 explorviz.live_trace_processing.monitoring_controller_disruptor_size=32
 
 ######################## Analysis ########################
diff --git a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
index b7c9deebf4ca398daf7c98f19519f5f661780cbf..cabd6d2e543f89c134477020eb2c1d24ad71f6e5 100644
--- a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
+++ b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
@@ -342,15 +342,17 @@ class TCPReaderOneClient extends Thread {
 		final int ipaddressId = buffer.getInt();
 		final int hostnameId = buffer.getInt();
 		final int applicationId = buffer.getInt();
+		final int languageId = buffer.getInt();
 
 		try {
 			final String systemname = stringRegistry.getStringFromId(systemnameId);
 			final String ipaddress = stringRegistry.getStringFromId(ipaddressId);
 			final String hostname = stringRegistry.getStringFromId(hostnameId);
 			final String application = stringRegistry.getStringFromId(applicationId);
+			final String language = stringRegistry.getStringFromId(languageId);
 
 			hostApplicationMetadata = new HostApplicationMetaDataRecord(systemname, ipaddress,
-					hostname, application);
+					hostname, application, language);
 		} catch (final IdNotAvailableException e) {
 			putInWaitingMessages(buffer, HostApplicationMetaDataRecord.BYTE_LENGTH_WITH_CLAZZ_ID);
 		}
diff --git a/test/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBufferTest.java b/test/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBufferTest.java
index f20beac07bd85cb389bfc7c082f42fda9c3fc4e0..33e9ae6cf7e98e9ce83e11653fe9abb57eb5594d 100644
--- a/test/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBufferTest.java
+++ b/test/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBufferTest.java
@@ -14,8 +14,8 @@ public class TraceReconstructionBufferTest {
 		final TraceReconstructionBuffer traceReconstructionBuffer = new TraceReconstructionBuffer();
 		traceReconstructionBuffer.insertEvent(new BeforeOperationEventRecord(1000, 1, 0, 0, "test",
 				"TestClazz", "", new HostApplicationMetaDataRecord("testSystem", "testIp",
-						"testHost", "testApp")));
-		assertTrue(true); // TODO
+						"testHost", "testApp", "Java")));
+		assertTrue(true);
 	}
 
 }
diff --git a/test/explorviz/live_trace_processing/filter/reduction/PatternSummarizationTest.java b/test/explorviz/live_trace_processing/filter/reduction/PatternSummarizationTest.java
index aa34fe52fbc58361dd0fc5ea52725029b91419fb..ff50167402eaa3194b1386b72b18bbe633d59367 100644
--- a/test/explorviz/live_trace_processing/filter/reduction/PatternSummarizationTest.java
+++ b/test/explorviz/live_trace_processing/filter/reduction/PatternSummarizationTest.java
@@ -20,152 +20,167 @@ public class PatternSummarizationTest {
 
 		final BeforeOperationEventRecord beforeEvent = new BeforeOperationEventRecord(1L, 1L, 0, 0,
 				"test.package.Clazz.A()", "ClazzA", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(31L));
 		traceEvents.add(beforeEvent);
 
 		final BeforeOperationEventRecord beforeEvent1 = new BeforeOperationEventRecord(2L, 1L, 1,
 				0, "test.package.Clazz.B()", "ClazzB", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent1.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2L));
 		traceEvents.add(beforeEvent1);
 
 		final AfterOperationEventRecord afterEvent1 = new AfterOperationEventRecord(4L, 1L, 2,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent1);
 
 		final BeforeOperationEventRecord beforeEvent2 = new BeforeOperationEventRecord(5L, 1L, 3,
 				0, "test.package.Clazz.C()", "ClazzC", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent2.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
 		traceEvents.add(beforeEvent2);
 
 		final AfterOperationEventRecord afterEvent2 = new AfterOperationEventRecord(6L, 1L, 4,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent2);
 
 		final BeforeOperationEventRecord beforeEvent3 = new BeforeOperationEventRecord(7L, 1L, 5,
 				0, "test.package.Clazz.D()", "ClazzD", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent3.setRuntimeStatisticInformation(new RuntimeStatisticInformation(9L));
 		traceEvents.add(beforeEvent3);
 
 		final BeforeOperationEventRecord beforeEvent4 = new BeforeOperationEventRecord(8L, 1L, 6,
 				0, "test.package.Clazz.E()", "ClazzE", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent4.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
 		traceEvents.add(beforeEvent4);
 
 		final AfterOperationEventRecord afterEvent4 = new AfterOperationEventRecord(9L, 1L, 7,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent4);
 
 		final BeforeOperationEventRecord beforeEvent5 = new BeforeOperationEventRecord(10L, 1L, 8,
 				0, "test.package.Clazz.F()", "ClazzF", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent5.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
 		traceEvents.add(beforeEvent5);
 
 		final AfterOperationEventRecord afterEvent5 = new AfterOperationEventRecord(11L, 1L, 9,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent5);
 
 		final BeforeOperationEventRecord beforeEvent6 = new BeforeOperationEventRecord(12L, 1L, 10,
 				0, "test.package.Clazz.E()", "ClazzE", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent6.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
 		traceEvents.add(beforeEvent6);
 
 		final AfterOperationEventRecord afterEvent6 = new AfterOperationEventRecord(13L, 1L, 11,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent6);
 
 		final BeforeOperationEventRecord beforeEvent7 = new BeforeOperationEventRecord(14L, 1L, 12,
 				0, "test.package.Clazz.F()", "ClazzF", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent7.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
 		traceEvents.add(beforeEvent7);
 
 		final AfterOperationEventRecord afterEvent7 = new AfterOperationEventRecord(15L, 1L, 13,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent7);
 
 		final AfterOperationEventRecord afterEvent3 = new AfterOperationEventRecord(16L, 1L, 14,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent3);
 
 		final BeforeOperationEventRecord beforeEvent8 = new BeforeOperationEventRecord(17L, 1L, 15,
 				0, "test.package.Clazz.B()", "ClazzB", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent8.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2L));
 		traceEvents.add(beforeEvent8);
 
 		final AfterOperationEventRecord afterEvent8 = new AfterOperationEventRecord(19L, 1L, 16,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent8);
 
 		final BeforeOperationEventRecord beforeEvent9 = new BeforeOperationEventRecord(20L, 1L, 17,
 				0, "test.package.Clazz.C()", "ClazzC", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent9.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
 		traceEvents.add(beforeEvent9);
 
 		final AfterOperationEventRecord afterEvent9 = new AfterOperationEventRecord(21L, 1L, 18,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent9);
 
 		final BeforeOperationEventRecord beforeEvent10 = new BeforeOperationEventRecord(22L, 1L,
 				19, 0, "test.package.Clazz.D()", "ClazzD", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent10.setRuntimeStatisticInformation(new RuntimeStatisticInformation(9L));
 		traceEvents.add(beforeEvent10);
 
 		final BeforeOperationEventRecord beforeEvent11 = new BeforeOperationEventRecord(23L, 1L,
 				20, 0, "test.package.Clazz.E()", "ClazzE", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent11.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
 		traceEvents.add(beforeEvent11);
 
 		final AfterOperationEventRecord afterEvent11 = new AfterOperationEventRecord(24L, 1L, 21,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent11);
 
 		final BeforeOperationEventRecord beforeEvent12 = new BeforeOperationEventRecord(25L, 1L,
 				22, 0, "test.package.Clazz.F()", "ClazzF", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent12.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
 		traceEvents.add(beforeEvent12);
 
 		final AfterOperationEventRecord afterEvent12 = new AfterOperationEventRecord(26L, 1L, 23,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent12);
 
 		final BeforeOperationEventRecord beforeEvent13 = new BeforeOperationEventRecord(27L, 1L,
 				24, 0, "test.package.Clazz.E()", "ClazzE", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent13.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
 		traceEvents.add(beforeEvent13);
 
 		final AfterOperationEventRecord afterEvent13 = new AfterOperationEventRecord(28L, 1L, 25,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent13);
 
 		final BeforeOperationEventRecord beforeEvent14 = new BeforeOperationEventRecord(29L, 1L,
 				26, 0, "test.package.Clazz.F()", "ClazzF", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent14.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
 		traceEvents.add(beforeEvent14);
 
 		final AfterOperationEventRecord afterEvent14 = new AfterOperationEventRecord(30L, 1L, 27,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent14);
 
 		final AfterOperationEventRecord afterEvent10 = new AfterOperationEventRecord(31L, 1L, 28,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent10);
 
 		final AfterOperationEventRecord afterEvent = new AfterOperationEventRecord(32L, 1L, 29,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent);
 
 		// trace = new Trace(traceEvents, true);
@@ -177,62 +192,68 @@ public class PatternSummarizationTest {
 
 		final BeforeOperationEventRecord beforeEvent = new BeforeOperationEventRecord(1L, 1L, 0, 0,
 				"test.package.Clazz.A()", "ClazzA", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(31L));
 		traceEvents.add(beforeEvent);
 
 		final BeforeOperationEventRecord beforeEvent1 = new BeforeOperationEventRecord(2L, 1L, 1,
 				0, "test.package.Clazz.B()", "ClazzB", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent1.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2, 4, 8));
 		traceEvents.add(beforeEvent1);
 
 		final AfterOperationEventRecord afterEvent1 = new AfterOperationEventRecord(4L, 1L, 2,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent1);
 
 		final BeforeOperationEventRecord beforeEvent2 = new BeforeOperationEventRecord(5L, 1L, 3,
 				0, "test.package.Clazz.C()", "ClazzC", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent2.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2, 2, 2));
 		traceEvents.add(beforeEvent2);
 
 		final AfterOperationEventRecord afterEvent2 = new AfterOperationEventRecord(6L, 1L, 4,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent2);
 
 		final BeforeOperationEventRecord beforeEvent3 = new BeforeOperationEventRecord(7L, 1L, 5,
 				0, "test.package.Clazz.D()", "ClazzD", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent3.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2, 18, 162));
 		traceEvents.add(beforeEvent3);
 
 		final BeforeOperationEventRecord beforeEvent4 = new BeforeOperationEventRecord(8L, 1L, 6,
 				0, "test.package.Clazz.E()", "ClazzE", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent4.setRuntimeStatisticInformation(new RuntimeStatisticInformation(4, 4, 4));
 		traceEvents.add(beforeEvent4);
 
 		final AfterOperationEventRecord afterEvent4 = new AfterOperationEventRecord(9L, 1L, 7,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent4);
 
 		final BeforeOperationEventRecord beforeEvent5 = new BeforeOperationEventRecord(10L, 1L, 8,
 				0, "test.package.Clazz.F()", "ClazzF", "", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
+						"testSystem", "testIp", "host", "application", "Java"));
 		beforeEvent5.setRuntimeStatisticInformation(new RuntimeStatisticInformation(4, 4, 4));
 		traceEvents.add(beforeEvent5);
 
 		final AfterOperationEventRecord afterEvent5 = new AfterOperationEventRecord(11L, 1L, 9,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent5);
 
 		final AfterOperationEventRecord afterEvent3 = new AfterOperationEventRecord(16L, 1L, 14,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent3);
 
 		final AfterOperationEventRecord afterEvent = new AfterOperationEventRecord(32L, 1L, 29,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
+				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
+						"Java"));
 		traceEvents.add(afterEvent);
 
 		// final Trace compareTrace = new Trace(traceEvents, true);