diff --git a/Start Worker.launch b/Start Worker.launch
index 7e358d3fa62c5a5cc236d6e6a6c8987feb0f16c8..80654e57dc10ad36cd16da20a9305ab573bfc1ec 100644
--- a/Start Worker.launch	
+++ b/Start Worker.launch	
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/worker/src/explorviz/worker/main/WorkerStarter.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="explorviz.worker.main.WorkerStarter"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="worker"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx4G"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/worker/test/explorviz/worker/main/WorkerStarter.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="explorviz.worker.main.WorkerStarter"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="worker"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx4G"/>
+</launchConfiguration>
diff --git a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
index 6dcf9db366e5188fd871025bbd46db882cea8f50..caa3119c2a23f02b6d723e8f8f01c35bff596365 100644
--- a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
+++ b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
@@ -13,14 +13,13 @@ import com.lmax.disruptor.RingBuffer;
 
 import explorviz.live_trace_processing.filter.RecordArrayEvent;
 import explorviz.live_trace_processing.filter.counting.CountingThroughputFilter;
-import explorviz.live_trace_processing.reader.IPeriodicTimeSignalReceiver;
-import explorviz.live_trace_processing.reader.TimeSignalReader;
 import explorviz.live_trace_processing.record.IRecord;
 import explorviz.live_trace_processing.record.event.normal.AfterFailedOperationEventRecord;
 import explorviz.live_trace_processing.record.event.normal.AfterOperationEventRecord;
 import explorviz.live_trace_processing.record.event.normal.BeforeOperationEventRecord;
 import explorviz.live_trace_processing.record.misc.HostApplicationMetaDataRecord;
 import explorviz.live_trace_processing.record.misc.StringRegistryRecord;
+import explorviz.live_trace_processing.record.misc.SystemMonitoringRecord;
 import explorviz.live_trace_processing.record.misc.TimedPeriodRecord;
 
 public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalReceiver {
@@ -144,6 +143,16 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec
 					}
 					break;
 				}
+				case SystemMonitoringRecord.CLAZZ_ID: {
+					if (buffer.remaining() >= (SystemMonitoringRecord.BYTE_LENGTH_WITH_CLAZZ_ID - 1)) {
+						readInSystemMonitoringRecord(buffer);
+					} else {
+						buffer.position(buffer.position() - 1);
+						buffer.compact();
+						return;
+					}
+					break;
+				}
 				default: {
 					System.out.println("unknown class id " + clazzId + " at offset "
 							+ (buffer.position() - 4));
@@ -167,7 +176,8 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec
 			hostApplicationMetadata = new HostApplicationMetaDataRecord(hostname, application);
 		} else {
 			final byte[] message = new byte[HostApplicationMetaDataRecord.BYTE_LENGTH_WITH_CLAZZ_ID];
-			buffer.position(buffer.position() - HostApplicationMetaDataRecord.BYTE_LENGTH_WITH_CLAZZ_ID);
+			buffer.position(buffer.position()
+					- HostApplicationMetaDataRecord.BYTE_LENGTH_WITH_CLAZZ_ID);
 			buffer.get(message);
 			putInWaitingMessages(message);
 		}
@@ -182,11 +192,12 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec
 		final String operation = getStringFromRegistry(operationId);
 
 		if (operation != null) {
-			putInRingBuffer(new BeforeOperationEventRecord(timestamp, traceId, orderIndex, operationId,
-					operation));
+			putInRingBuffer(new BeforeOperationEventRecord(timestamp, traceId, orderIndex,
+					operationId, operation));
 		} else {
 			final byte[] message = new byte[BeforeOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID];
-			buffer.position(buffer.position() - BeforeOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID);
+			buffer.position(buffer.position()
+					- BeforeOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID);
 			buffer.get(message);
 			putInWaitingMessages(message);
 		}
@@ -207,7 +218,8 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec
 					operationId, operation, cause));
 		} else {
 			final byte[] message = new byte[AfterFailedOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID];
-			buffer.position(buffer.position() - AfterFailedOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID);
+			buffer.position(buffer.position()
+					- AfterFailedOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID);
 			buffer.get(message);
 			putInWaitingMessages(message);
 		}
@@ -221,8 +233,8 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec
 
 		final String operation = getStringFromRegistry(operationId);
 		if (operation != null) {
-			putInRingBuffer(new AfterOperationEventRecord(timestamp, traceId, orderIndex, operationId,
-					operation));
+			putInRingBuffer(new AfterOperationEventRecord(timestamp, traceId, orderIndex,
+					operationId, operation));
 		} else {
 			final byte[] message = new byte[AfterOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID];
 			buffer.position(buffer.position() - AfterOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID);
@@ -232,6 +244,15 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec
 
 	}
 
+	private final void readInSystemMonitoringRecord(final ByteBuffer buffer) {
+		final double cpuUtil = buffer.getDouble();
+		final long usedRAM = buffer.getLong();
+		final long absoluteRAM = buffer.getLong();
+		System.out.println(new SystemMonitoringRecord(cpuUtil, usedRAM, absoluteRAM).toString());
+		// putInRingBuffer(new SystemMonitoringRecord(cpuUtil, usedRAM,
+		// absoluteRAM));
+	}
+
 	private final void putInWaitingMessages(final byte[] message) {
 		waitingForStringMessages.add(message);
 	}