diff --git a/CCI_Java/CCI_Java/src/data/Exam_217_erster_Test.bin b/CCI_Java/CCI_Java/src/data/Exam_217_erster_Test.bin
new file mode 100644
index 0000000000000000000000000000000000000000..2407bbe06be75c90458a6723576efd19e1541408
Binary files /dev/null and b/CCI_Java/CCI_Java/src/data/Exam_217_erster_Test.bin differ
diff --git a/CCI_Java/CCI_Java/src/data/json_bsp.bin b/CCI_Java/CCI_Java/src/data/json_bsp.bin
new file mode 100644
index 0000000000000000000000000000000000000000..cc940147c2fd52e9edbf8c2ee77ad1f1755cb271
Binary files /dev/null and b/CCI_Java/CCI_Java/src/data/json_bsp.bin differ
diff --git a/CCI_Java/CCI_Java/src/interfaces/Data.java b/CCI_Java/CCI_Java/src/interfaces/Data.java
index ebfbe8a883561df6b23e6f29406b52d5692c6d53..0f673c5fbfe797a79a141db2973a1b1a4a97c71d 100644
--- a/CCI_Java/CCI_Java/src/interfaces/Data.java
+++ b/CCI_Java/CCI_Java/src/interfaces/Data.java
@@ -4,4 +4,8 @@ public interface Data {
 
 	@Override
 	String toString();
+	
+	byte[] getHeader();
+	byte[] getData();
+	String getHeaderString();
 }
diff --git a/CCI_Java/CCI_Java/src/regular/BinaryData.java b/CCI_Java/CCI_Java/src/regular/BinaryData.java
index 9977eb3d7f4f0c260c04493949efc91676dded05..575b0e2efb940f5d5790f021572020252ba4d672 100644
--- a/CCI_Java/CCI_Java/src/regular/BinaryData.java
+++ b/CCI_Java/CCI_Java/src/regular/BinaryData.java
@@ -1,26 +1,74 @@
 package regular;
 
+import java.lang.reflect.UndeclaredThrowableException;
+import java.nio.charset.StandardCharsets;
+
 import interfaces.Data;
+import utils.DataGenerator;
+import utils.binaryUtils;
 
 public class BinaryData implements Data {
-	byte[] data;
-	
-	public BinaryData(byte[] data) {
-		this.data = data;
+	private byte[] completePackage;
+	private String completePackageString;
+	private String headerString;
+	private byte[] header;
+	private byte[] data;
+	private String keyWord;
+
+	public BinaryData(byte[] bytePackage) {
+		this.completePackage = bytePackage;
+		this.completePackageString = this.toString();
+		this.keyWord = "Temperature4 [�C];";
+		this.header = isolateHeader(completePackageString, keyWord);
+		this.headerString = binaryUtils.hexBytesToString(this.header);
+		this.data = isolateData(this.completePackage, this.header.length);
+	}
+
+	private byte[] isolateHeader(String completePackageString, String key) {
+		int pos = posOfLast(completePackageString, key);
+		byte[] header = new byte[pos];
+		System.arraycopy(completePackage, 0, header, 0, header.length);
+		return header;
+	}
+
+	private byte[] isolateData(byte[] complete, int pos) {
+		byte[] data = new byte[complete.length - pos];
+		System.arraycopy(complete, pos, data, 0, data.length);
+		return data;
+	}
+
+	private int posOfLast(String aString, String key) {
+		return aString.indexOf(key) + key.length();
+	}
+
+	@Deprecated
+	private void seperate() {
+
+//		System.out.println("orig len: " + completePackage.length);
+//		System.out.println("header len: " + header.length);
+//		System.out.println("rest len: " + data.length);
+//		int tot = data.length + header.length;
+//		System.out.println("new total:  " + tot);
+
+	}
+
+	public String getHeaderString() {
+		return this.headerString;
+	}
+
+	public byte[] getData() {
+		return completePackage;
 	}
-	
-	private static String bytesToHex(byte[] bytes) {
-        StringBuilder hexString = new StringBuilder();
-        for (byte b : bytes) {
-            // Convert each byte to a two-digit hex string
-            String hex = String.format("%02X", b);
-            hexString.append(hex);
-        }
-        return hexString.toString();
-    }
 	
+	@Override
+	public byte[] getHeader() {
+		return this.header;
+	}
+
 	@Override
 	public String toString() {
-		return bytesToHex(data);
+		return binaryUtils.hexToString(binaryUtils.bytesToHex(completePackage));
 	}
+
+	
 }
diff --git a/CCI_Java/CCI_Java/src/regular/CsvSaver.java b/CCI_Java/CCI_Java/src/regular/CsvSaver.java
index db379cf6c2dc5ec65d225df6d87299589916dcc4..da066b17acb77c5b96bcd2dc7056f9503c495ecf 100644
--- a/CCI_Java/CCI_Java/src/regular/CsvSaver.java
+++ b/CCI_Java/CCI_Java/src/regular/CsvSaver.java
@@ -17,7 +17,15 @@ public class CsvSaver {
 
 	public void write(Data data) {
 		try {
-			writer.write(data.toString());
+			writer.write(data.toString()+"\n");
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	public void close() {
+		try {
+			writer.close();
 		} catch (IOException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
diff --git a/CCI_Java/CCI_Java/src/regular/DataPublisherMock.java b/CCI_Java/CCI_Java/src/regular/DataPublisherMock.java
new file mode 100644
index 0000000000000000000000000000000000000000..4231011e57bd339a201c80a8d0e91011660e5a29
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/regular/DataPublisherMock.java
@@ -0,0 +1,26 @@
+package regular;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Flow.Publisher;
+import java.util.concurrent.Flow.Subscriber;
+
+import interfaces.Data;
+
+public class DataPublisherMock implements Publisher<Data> {
+	private List<Subscriber> subscribers = new ArrayList<>();
+	
+	@Override
+	public void subscribe(Subscriber<? super Data> subscriber) {
+		subscribers.add(subscriber);
+	}
+	
+    
+    public void publish(Data data) {
+        for (Subscriber subscriber : subscribers) {
+//            subscriber.update(data);
+        }
+    }
+	
+
+}
diff --git a/CCI_Java/CCI_Java/src/regular/DataSubscriber.java b/CCI_Java/CCI_Java/src/regular/DataSubscriber.java
new file mode 100644
index 0000000000000000000000000000000000000000..6f4d861aa4884bf6d575ea117789981bbf14d9a8
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/regular/DataSubscriber.java
@@ -0,0 +1,75 @@
+package regular;
+
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.util.concurrent.Flow.Subscriber;
+import java.util.concurrent.Flow.Subscription;
+
+import interfaces.Data;
+
+public class DataSubscriber implements Subscriber<Data> {
+	String folder;
+	String fileName;
+	String fullPath;
+	public BufferedWriter bw;
+	CsvSaver saver;
+	private Subscription subscription;
+	
+	public DataSubscriber(String fileName) {
+		this();
+		this.fileName = fileName;
+	}
+	
+	public DataSubscriber() {
+		this.folder = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\testFiles";
+		this.fileName = "defaultFile.csv";
+		this.fullPath = folder + "\\" + fileName;
+		this.bw = null;
+	}
+	
+	@Override
+	public void onSubscribe(Subscription subscription) {
+		saver = new CsvSaver(bw);
+//		try {
+//			bw = new BufferedWriter(new FileWriter(fullPath));
+//		} catch (IOException e) {
+//			e.printStackTrace();
+//		}
+		this.subscription = subscription;
+		subscription.request(1);
+	}
+
+	@Override
+	public void onNext(Data item) {
+		subscription.request(1);
+		saver.write(item);
+//		try {
+//			System.out.println("in onnext");
+//			bw.write(item.toString()+"\n");
+//		} catch (IOException e) {
+//			e.printStackTrace();
+//		}
+	}
+
+	@Override
+	public void onError(Throwable throwable) {
+
+	}
+
+	@Override
+	public void onComplete() {
+		kill();
+	}
+	
+	public void kill() {
+		System.out.println("killing sub");
+//		try {
+//			bw.close();
+//			System.out.println("closed writer");
+//		} catch (IOException e) {
+//			e.printStackTrace();
+//		}
+		saver.close();
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/regular/StringData.java b/CCI_Java/CCI_Java/src/regular/StringData.java
index e649e06eb5224717bdf6f7510362cc0e658b5c05..53844d4e98fffa85db3c5d6c01e9175193c29719 100644
--- a/CCI_Java/CCI_Java/src/regular/StringData.java
+++ b/CCI_Java/CCI_Java/src/regular/StringData.java
@@ -13,4 +13,10 @@ public class StringData implements Data {
 	public String toString() {
 		return data;
 	}
+
+	@Override
+	public byte[] getData() {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }
diff --git a/CCI_Java/CCI_Java/src/testFiles/defaultFile.csv b/CCI_Java/CCI_Java/src/testFiles/defaultFile.csv
new file mode 100644
index 0000000000000000000000000000000000000000..b03989ea740dc6e30b9c7e43010fc6b7bf22ba4d
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/testFiles/defaultFile.csv
@@ -0,0 +1,5 @@
+This is a randomly generated String.
+5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
+5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
+5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
+This is a randomly generated String.
diff --git a/CCI_Java/CCI_Java/src/testFiles/defaultTestFile.csv b/CCI_Java/CCI_Java/src/testFiles/defaultTestFile.csv
new file mode 100644
index 0000000000000000000000000000000000000000..bc20a729443b267d65dbbf965b0eb17b8d8d8495
Binary files /dev/null and b/CCI_Java/CCI_Java/src/testFiles/defaultTestFile.csv differ
diff --git a/CCI_Java/CCI_Java/src/testFiles/firstTest.csv b/CCI_Java/CCI_Java/src/testFiles/firstTest.csv
index d6443dbc6458c35d24fc418acbcc19e92d0f91e6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/CCI_Java/CCI_Java/src/testFiles/firstTest.csv
+++ b/CCI_Java/CCI_Java/src/testFiles/firstTest.csv
@@ -1,100 +0,0 @@
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
-5468697320697320612072616E646F6D6C792067656E65726174656420537472696E672E
diff --git a/CCI_Java/CCI_Java/src/testing/PubSubTesting.java b/CCI_Java/CCI_Java/src/testing/PubSubTesting.java
new file mode 100644
index 0000000000000000000000000000000000000000..9eededbdfad3ea3eae7def171d7b6903da1f2e4f
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/testing/PubSubTesting.java
@@ -0,0 +1,31 @@
+package testing;
+
+import java.util.concurrent.SubmissionPublisher;
+
+import interfaces.Data;
+import regular.DataSubscriber;
+import utils.DataGenerator;
+
+public class PubSubTesting {
+
+	public static void main(String[] args) {
+
+		SubmissionPublisher<Data> publisher = new SubmissionPublisher<>();
+		DataSubscriber subscriber = new DataSubscriber();
+		publisher.subscribe(subscriber);
+		
+		for (int lines = 0; lines < 10; lines++) {
+			publisher.submit(DataGenerator.generateRandom());
+		}
+
+		try {
+			Thread.sleep(100);
+			publisher.close();
+			System.out.println("should be closed");
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+		}
+
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/testing/StringCutFiddle.java b/CCI_Java/CCI_Java/src/testing/StringCutFiddle.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ff5f333fe5a80e16713b78d06acd058c6621d57
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/testing/StringCutFiddle.java
@@ -0,0 +1,37 @@
+package testing;
+
+import interfaces.Data;
+import regular.BinaryData;
+import utils.DataGenerator;
+
+public class StringCutFiddle {
+
+	public static void main(String[] args) {
+
+		Data data = DataGenerator.generateFirstData();
+		String testString = data.toString();
+		String searchedString = "Temperature4 [�C];";
+		int pos = testString.indexOf(searchedString);
+		int lenHeader = pos + searchedString.length();
+//		System.out.println(testString.substring(0, pos+searchedString.length()));
+		byte[] header = new byte[lenHeader + 4];
+		System.arraycopy(data.getData(), 0, header, 0, header.length);
+		Data meta = new BinaryData(header);
+		System.out.println(meta.toString());
+
+		byte[] rest = new byte[data.getData().length - header.length];
+		System.arraycopy(data.getData(), header.length, rest, 0, rest.length);
+		Data noMeta = new BinaryData(rest);
+
+		System.out.println("orig len: " + data.getData().length);
+		System.out.println("header len: " + header.length);
+		System.out.println("rest len: " + rest.length);
+		int tot = rest.length + header.length;
+		System.out.println("new total:  " + tot);
+//		String dataString = testString.substring(pos+searchedString.length(), testString.length());
+//		System.out.println(dataString);
+		// String newString = originalString.substring(startIndex, endIndex);
+		// .substring(0, pos+searchedString.length())
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/testing/TestBinaryData.java b/CCI_Java/CCI_Java/src/testing/TestBinaryData.java
index bf867ec4f2fff115febdbe25a792efbda975540a..27324a5a168c0dcc09f18aa060c48d3b31a4a200 100644
--- a/CCI_Java/CCI_Java/src/testing/TestBinaryData.java
+++ b/CCI_Java/CCI_Java/src/testing/TestBinaryData.java
@@ -1,14 +1,20 @@
 package testing;
 
 import regular.BinaryData;
+import utils.DataGenerator;
 import interfaces.Data;
 
 public class TestBinaryData {
 
 	public static void main(String[] args) {
-		byte[] binaryData = {0x4A, 0x6F, 0x68, 0x6E}; // Represents "John"
-		Data data = new BinaryData(binaryData);
+//		byte[] binaryData = { 0x4A, 0x6F, 0x68, 0x6E }; // Represents "John"
+//		Data data = new BinaryData(binaryData);
+//		System.out.println(data.toString());
 		
-		System.out.println(data.toString());
+		Data data = DataGenerator.generateFirstData();
+		System.out.println(data.getHeaderString());
+	
 	}
+
+	
 }
diff --git a/CCI_Java/CCI_Java/src/testing/TestCsvSaver.java b/CCI_Java/CCI_Java/src/testing/TestCsvSaver.java
new file mode 100644
index 0000000000000000000000000000000000000000..ada3fe04b14621b16d7396528a9a70177faa588d
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/testing/TestCsvSaver.java
@@ -0,0 +1,35 @@
+package testing;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import interfaces.Data;
+import regular.CsvSaver;
+import utils.DataGenerator;
+
+public class TestCsvSaver {
+
+	public static void main(String[] args) {
+
+		String folder = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\testFiles";
+		String fileName = "defaultTestFile.csv";
+		String fullPath = folder + "\\" + fileName;
+		BufferedWriter bw = null;
+		
+		try {
+			bw = new BufferedWriter(new FileWriter(fullPath));
+			CsvSaver saver = new CsvSaver(bw);
+			
+			for (int lines = 0; lines < 100; lines++) {
+					saver.write(DataGenerator.generateRandom());					
+			}
+			saver.close();
+			
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/testing/TestDataGenerator.java b/CCI_Java/CCI_Java/src/testing/TestDataGenerator.java
index 693fde6563f5a2c61d2973d76e6102aeb28bc913..a3f20782c8dcc58a24df2295ab3477680cb517df 100644
--- a/CCI_Java/CCI_Java/src/testing/TestDataGenerator.java
+++ b/CCI_Java/CCI_Java/src/testing/TestDataGenerator.java
@@ -1,5 +1,21 @@
 package testing;
 
+import interfaces.Data;
+import utils.DataGenerator;
+
 public class TestDataGenerator {
+	
+	
+	public static void main(String[] args) {
+		Data dataS = DataGenerator.generateString();
+		System.out.println("String: " + dataS.toString());
+		Data dataB = DataGenerator.generateByte();
+		System.out.println("Byte: " + dataB.toString());
+
+		for (int i = 0; i < 5; i++) {
+			Data dataR = DataGenerator.generateRandom();
+			System.out.println("Random: " + dataR.toString());
+		}
+	}
 
 }
diff --git a/CCI_Java/CCI_Java/src/testing/TestLoadJSON.java b/CCI_Java/CCI_Java/src/testing/TestLoadJSON.java
new file mode 100644
index 0000000000000000000000000000000000000000..6503d487eb7badba4948b579e3b22051db09fdf4
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/testing/TestLoadJSON.java
@@ -0,0 +1,31 @@
+package testing;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import regular.CsvSaver;
+import utils.DataGenerator;
+
+public class TestLoadJSON {
+
+	public static void main(String[] args) {
+		String folder = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\testFiles";
+		String fileName = "defaultTestFile.csv";
+		String fullPath = folder + "\\" + fileName;
+		BufferedWriter bw = null;
+
+		try {
+			bw = new BufferedWriter(new FileWriter(fullPath));
+			CsvSaver saver = new CsvSaver(bw);
+
+			saver.write(DataGenerator.generateJSON());
+
+			saver.close();
+
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/testing/TestStringData.java b/CCI_Java/CCI_Java/src/testing/TestStringData.java
new file mode 100644
index 0000000000000000000000000000000000000000..129c0b20bcdc6dccfad2300bbc47df99f66ed96f
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/testing/TestStringData.java
@@ -0,0 +1,14 @@
+package testing;
+
+import regular.BinaryData;
+import regular.StringData;
+import interfaces.Data;
+
+public class TestStringData {
+
+	public static void main(String[] args) {
+		String stringData = "This is a String!"; // Represents "John"
+		Data data = new StringData(stringData);
+		System.out.println(data.toString());
+	}
+}
diff --git a/CCI_Java/CCI_Java/src/testing/Testing.java b/CCI_Java/CCI_Java/src/testing/Testing.java
index 97c53e1e63ec4830c49b820372859310724af6a8..531a24124eef09506d2226c2d7ccf810921f86ba 100644
--- a/CCI_Java/CCI_Java/src/testing/Testing.java
+++ b/CCI_Java/CCI_Java/src/testing/Testing.java
@@ -13,21 +13,17 @@ public class Testing {
 	public static void main(String[] args) {
 
 		String folder = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\testFiles";
-		String fileName = "firstTest.csv";
+		String fileName = "defaultTestFile.csv";
 		String fullPath = folder + "\\" + fileName;
 		BufferedWriter bw = null;
 		
 		try {
 			bw = new BufferedWriter(new FileWriter(fullPath));
 //			bw.write("testingtestingtestingtesting");
-			System.out.println("writer created");
 			CsvSaver saver = new CsvSaver(bw);
 			
 			for (int lines = 0; lines < 100; lines++) {
-//					bw.write("testingtestingtestingtesting");
-					saver.write(DataGenerator.generateByte());
-					bw.newLine();
-					
+					saver.write(DataGenerator.generateRandom());					
 			}
 			bw.close();
 			
diff --git a/CCI_Java/CCI_Java/src/testing/TestingDataLoader.java b/CCI_Java/CCI_Java/src/testing/TestingDataLoader.java
new file mode 100644
index 0000000000000000000000000000000000000000..1de373509a6cb77e2dd5d8814299dfc6345c2e1e
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/testing/TestingDataLoader.java
@@ -0,0 +1,34 @@
+package testing;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import interfaces.Data;
+import regular.CsvSaver;
+import utils.BinaryDataLoader;
+import utils.DataGenerator;
+
+public class TestingDataLoader {
+
+	public static void main(String[] args) {
+
+		String folder = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\testFiles";
+		String fileName = "defaultTestFile.csv";
+		String fullPath = folder + "\\" + fileName;
+		BufferedWriter bw = null;
+
+		try {
+			bw = new BufferedWriter(new FileWriter(fullPath));
+			CsvSaver saver = new CsvSaver(bw);
+
+			saver.write(DataGenerator.generateFirstData());
+
+			saver.close();
+
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/utils/BinaryDataLoader.java b/CCI_Java/CCI_Java/src/utils/BinaryDataLoader.java
new file mode 100644
index 0000000000000000000000000000000000000000..6082a518270f26b2783660147f0e48b4fcb21238
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/utils/BinaryDataLoader.java
@@ -0,0 +1,25 @@
+package utils;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import interfaces.Data;
+import regular.BinaryData;
+
+public class BinaryDataLoader {
+
+	public static byte[] loadData(String filePath) {
+
+		try (FileInputStream fileInputStream = new FileInputStream(filePath)) {
+			byte[] data = fileInputStream.readAllBytes();
+			return data;
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	public static Data loadDataToCover(String filePath) {
+		return new BinaryData(loadData(filePath));
+	}
+}
diff --git a/CCI_Java/CCI_Java/src/utils/DataGenerator.java b/CCI_Java/CCI_Java/src/utils/DataGenerator.java
index ba353f0cd7193fea721dd2c237a260cd3aa309c6..1513ad6c76685effb9dc3687aa095de2432056cc 100644
--- a/CCI_Java/CCI_Java/src/utils/DataGenerator.java
+++ b/CCI_Java/CCI_Java/src/utils/DataGenerator.java
@@ -55,6 +55,24 @@ public class DataGenerator {
 
 	public static Data generateRandom() {
 		Random random = new Random();
-		return random.nextInt() == 1 ? generateByte() : generateString();
+		return random.nextInt(2) == 1 ? generateByte() : generateString();
+	}
+	
+	public static Data generateJSON() {
+		String folderBin = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\data";
+		String fileNameBin = "json_bsp.bin";
+		String fullPathBin = folderBin + "\\" + fileNameBin;
+		return BinaryDataLoader.loadDataToCover(fullPathBin);
+	}
+	
+	public static String cutJSON() {
+		return "";
+	}
+	
+	public static Data generateFirstData() {
+		String folderBin = "C:\\DevCCI\\Eclipse\\CCI_Java\\CCI_Java\\src\\data";
+		String fileNameBin = "Exam_217_erster_Test.bin";
+		String fullPathBin = folderBin + "\\" + fileNameBin;
+		return BinaryDataLoader.loadDataToCover(fullPathBin);
 	}
 }
diff --git a/CCI_Java/CCI_Java/src/utils/binaryUtils.java b/CCI_Java/CCI_Java/src/utils/binaryUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..27a3759ae7e629c0411dcc1a22095796382cfd89
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/utils/binaryUtils.java
@@ -0,0 +1,37 @@
+package utils;
+
+import java.nio.charset.StandardCharsets;
+
+public class binaryUtils {
+
+	public static String hexToString(String hex) {
+		// Validate the input
+		if (hex.length() % 2 != 0) {
+			throw new IllegalArgumentException("Hex string must have an even length.");
+		}
+
+		// Convert hex to bytes
+		byte[] bytes = new byte[hex.length() / 2];
+		for (int i = 0; i < hex.length(); i += 2) {
+			// Parse each pair of hex characters
+			bytes[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4) + Character.digit(hex.charAt(i + 1), 16));
+		}
+
+		// Convert bytes to string
+		return new String(bytes, StandardCharsets.UTF_8);
+	}
+
+	public static String bytesToHex(byte[] bytes) {
+		StringBuilder hexString = new StringBuilder();
+		for (byte b : bytes) {
+			// Convert each byte to a two-digit hex string
+			String hex = String.format("%02X", b);
+			hexString.append(hex);
+		}
+		return hexString.toString();
+	}
+	
+	public static String hexBytesToString(byte[] bytes) {
+		return hexToString(bytesToHex(bytes));
+	}
+}