diff --git a/examples/Advanced/sPSN_Chat/sPSN_Chat.ino b/examples/Advanced/sPSN_Chat/sPSN_Chat.ino
new file mode 100644
index 0000000000000000000000000000000000000000..1f4c24e2f7682e9cad07749e50a7a4db1502db71
--- /dev/null
+++ b/examples/Advanced/sPSN_Chat/sPSN_Chat.ino
@@ -0,0 +1,119 @@
+/**
+ * file:  sPSN_Chat.ino
+ * author:  letsgoING -> info@letsgoing.de
+ *
+ * description:
+ *   Dieses Programm ist ein Teil eines Beispiels für ein einfaches Pub-Sub-Chat-Netzwerk.
+ *
+ *   Für dieses Chat-Netzwerk werden mindestens 3 Arduinos benötigt:
+ *
+ *   Arduino1:   sPSN_Broker.ino
+ *              - IR-Sender an Pin 11 IR-Empfänger an Pin10
+ *
+ *   Arduino2-n: sPSN_Chat.ino (dieses Programm)
+ *              - IR-Sender an Pin 11 IR-Empfänger an Pin10
+ * Funktion:
+ *   Am Arduino2-n kann ein eigner Name (Sende-Topic) angeben werden.
+ *   Danach kann angeben werden wem zugehört werden soll (Empfangs-Topics).
+ *   Arduino1 (Server) übernimmt das Verteilen der Nachrichten.
+ *
+ * parameter:
+ *   MAX_LEN_PAYLOAD = 20 Zeichen (didacticNet.h)
+ *   MAX_LEN_TOPICS = 10 Zeichen (didacticNet.h)
+ *   max Laenge der Eingegebenen Daten: 100 Zeichen (5*MAX_LEN_PAYLOAD)
+ *
+ * date:  13.07.2021
+ */
+#include <Arduino.h>
+#include "SoftwareSerial.h"
+#include "DidacticNet.h"
+
+#define SERIAL_BAUD 2400 // lege Geschwindigkeit für serielle Schnittstellen fest
+
+#define TXT_STARTINFO "1. Den eigenen Namen mit einem # eingeben\nund mit Enter bestaetigen. -> \n#DeinName\n2. Die Namen deiner Chatpartner*innen mit einem @ eingeben ->\n@ChatPartner*in \t(mehrfach moeglich)\n3. Chatten:\nPro Nachricht duerfen maximal 20 Zeichen eingegeben werden!\n\nHINWEIS:\nStelle das Zeilenende im SerialMonitor auf \"ZEILENUMBRUCH (CR)\"\n*********************************************************************\n\n"
+
+char readData[MAX_LEN_PAYLOAD * 5] = {'\0'}; // Array für eingelesene Daten (mit Puffer für zu lange Eingaben)
+
+char topicSub[MAX_LEN_TOPICS] = {""}; // Array für neues Empfangs-Topic
+char topicPub[MAX_LEN_TOPICS] = {""}; // Array für eigenes Sende-Topic
+
+// Callback-Funktion wird bei neuen Daten automatisch aufgerufen
+void newData(char *topic, char *payload)
+{
+  // Ausgabe-> "Chatname":   "geschriebene Nachricht"
+  Serial.print(topic); // topic entspricht im Chat dem NAmen des Chatpartners
+  Serial.print(":\t");
+  Serial.println(payload); // payload enthält die geschriebene Nachricht
+}
+
+SoftwareSerial sSerial(10, 11); // SoftwareSerial an Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender
+
+DidacticPSNetClient psnClient; // Erzeuge PubSub-Client-Instanz
+SerialReader sReader;
+
+void setup()
+{
+
+  Serial.begin(SERIAL_BAUD); // Starte Serielle Schnittstelle (zum PC)
+
+  sSerial.begin(SERIAL_BAUD); // Starte SoftwareSerielle Schnittstelle (zu IR-Link-Modulen)
+
+  psnClient.begin(sSerial, newData); // Starte PubSubClient mit SoftwareSerial und Callbackfunktion "clientCallback"
+  sReader.begin(Serial);
+
+  // AUSGABE INFOTEXT
+  Serial.print(TXT_STARTINFO);
+}
+
+void loop()
+{
+
+  psnClient.handleNetwork(); // Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten
+
+  int nrOfAscii = sReader.readSerialData(readData, DN_ASCII_CR); // Einlesen der Nutzereingabe am SerialMonitor (Rueckgabewert = Anzahl der gelesenen Zeichen)
+
+  if (nrOfAscii > 0)
+  { // Wenn Daten fertig eingelesen wurden
+
+    // NEUEM CHATPARTNER FOLGEN
+    if (readData[0] == '@')
+    {                                 // Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren)
+      strcpy(readData, &readData[1]); // verschiebe um ein Zeichen (entferne '@')
+      psnClient.subscribe(readData);  // Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners)
+
+      Serial.print("Nachrichten von "); // Ausgabe welches Topic abonniert wurde
+      Serial.print(readData);
+      Serial.println(" abonniert.");
+    }
+
+    // CHATPARTNER ENTFOLGEN
+    else if (readData[0] == '!')
+    {                                  // Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren)
+      strcpy(readData, &readData[1]);  // verschiebe um ein Zeichen (entferne '!')
+      psnClient.unsubscribe(readData); // Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners)
+
+      Serial.print("Nachrichten von "); // Ausgabe welches Topic abonniert wurde
+      Serial.print(readData);
+      Serial.println(" nicht mehr abonniert.");
+    }
+
+    // EIGENEN NAMEN ANLEGEN
+    else if (readData[0] == '#')
+    {                                 // Wenn '#' vorne steht, dann neuer eigener Name (neues Topic unter dem gesendet wird)
+      strcpy(topicPub, &readData[1]); // kopiere das neue Topic (deinen neuen Namen) in das passende Array (+ 1 = entferne '#')
+      // strcpy(topicPub, readData + 1); //-> Alternative zur Zeile oberhalb
+
+      Serial.print("Dein Name:\t"); // Ausgabe unter welchem Topic veröffentlicht wird
+      Serial.println(topicPub);
+    }
+
+    // NACHRICHT VERSCHICKEN (unter eigenem Namen)
+    else
+    {                                        // Wenn "normale" Nachrichten eingegeben wurden, dann Daten unter eigenem Topic versenden
+      psnClient.publish(topicPub, readData); // Bereite eingegebene Daten zum Senden vor
+
+      Serial.print("Ich:\t"); // Ausgabe was unter deinem Topic veröffentlicht wird
+      Serial.println(readData);
+    }
+  }
+}
\ No newline at end of file
diff --git a/examples/sPSN_Client1/sPSN_Client1.ino b/examples/Advanced/sPSN_Client1/sPSN_Client1.ino
similarity index 100%
rename from examples/sPSN_Client1/sPSN_Client1.ino
rename to examples/Advanced/sPSN_Client1/sPSN_Client1.ino
diff --git a/examples/sPSN_Client2/sPSN_Client2.ino b/examples/Advanced/sPSN_Client2/sPSN_Client2.ino
similarity index 100%
rename from examples/sPSN_Client2/sPSN_Client2.ino
rename to examples/Advanced/sPSN_Client2/sPSN_Client2.ino
diff --git a/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino b/examples/Advanced/sPSN_ClientMinimal/sPSN_ClientMinimal.ino
similarity index 100%
rename from examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino
rename to examples/Advanced/sPSN_ClientMinimal/sPSN_ClientMinimal.ino
diff --git a/examples/sPSN_PingTest/sPSN_PingTest.ino b/examples/Advanced/sPSN_PingTest/sPSN_PingTest.ino
similarity index 100%
rename from examples/sPSN_PingTest/sPSN_PingTest.ino
rename to examples/Advanced/sPSN_PingTest/sPSN_PingTest.ino
diff --git a/examples/sPSN_PlotTopics/sPSN_PlotTopics.ino b/examples/Advanced/sPSN_PlotTopics/sPSN_PlotTopics.ino
similarity index 100%
rename from examples/sPSN_PlotTopics/sPSN_PlotTopics.ino
rename to examples/Advanced/sPSN_PlotTopics/sPSN_PlotTopics.ino
diff --git a/examples/sPSN_PongTester/sPSN_PongTester.ino b/examples/Advanced/sPSN_PongTester/sPSN_PongTester.ino
similarity index 100%
rename from examples/sPSN_PongTester/sPSN_PongTester.ino
rename to examples/Advanced/sPSN_PongTester/sPSN_PongTester.ino
diff --git a/examples/Basic/sPSN_Chat/sPSN_Chat.ino b/examples/Basic/sPSN_Chat/sPSN_Chat.ino
new file mode 100644
index 0000000000000000000000000000000000000000..4cff2e40a6903a1cecaca053a1bc9e77524d4833
--- /dev/null
+++ b/examples/Basic/sPSN_Chat/sPSN_Chat.ino
@@ -0,0 +1,132 @@
+/**
+ * file:  sPSN_Chat.ino
+ * author:  letsgoING -> info@letsgoing.de
+ *
+ * description:
+ *   Dieses Programm ist ein Teil eines Beispiels für ein einfaches Pub-Sub-Chat-Netzwerk.
+ *
+ *   Für dieses Chat-Netzwerk werden mindestens 3 Arduinos benötigt:
+ *
+ *   Arduino1:   sPSN_Broker.ino
+ *              - IR-Sender an Pin 11 IR-Empfänger an Pin10
+ *
+ *   Arduino2-n: sPSN_Chat.ino (dieses Programm)
+ *              - IR-Sender an Pin 11 IR-Empfänger an Pin10
+ * Funktion:
+ *   Am Arduino2-n kann ein eigner Name (Sende-Topic) angeben werden.
+ *   Danach kann angeben werden wem zugehört werden soll (Empfangs-Topics).
+ *   Arduino1 (Server) übernimmt das Verteilen der Nachrichten.
+ *
+ * parameter:
+ *   MAX_LEN_PAYLOAD = 20 Zeichen (DidacticNet.h)
+ *   MAX_LEN_TOPICS = 10 Zeichen (DidacticNet.h)
+ *   MAX_LEN_USERINPUT = 41 Zeichen (DidacticNet.h)
+ *
+ * date:  13.07.2021
+ */
+#include <Arduino.h>
+#include "SoftwareSerial.h"
+#include "DidacticNet.h"
+
+#define SERIAL_BAUD 2400 // lege Geschwindigkeit für serielle Schnittstellen fest
+
+#define TXT_STARTINFO "1. Den eigenen Namen mit einem # eingeben\nund mit Enter bestaetigen. -> \n#DeinName\n2. Die Namen deiner Chatpartner*innen mit einem @ eingeben ->\n@ChatPartner*in \t(mehrfach moeglich)\n3. Chatten:\nPro Nachricht duerfen maximal 20 Zeichen eingegeben werden!\n\nHINWEIS:\nStelle das Zeilenende im SerialMonitor auf \"ZEILENUMBRUCH (CR)\"\n*********************************************************************\n\n"
+
+char topicPub[MAX_LEN_TOPICS] = {""}; // Array für eigenes Sende-Topic
+
+// Callback-Funktion wird bei neuen Daten automatisch aufgerufen
+void newData(char *topic, char *payload)
+{
+  // Ausgabe-> "Chatname":   "geschriebene Nachricht"
+  Serial.print(topic); // topic entspricht im Chat dem NAmen des Chatpartners
+  Serial.print(":\t");
+  Serial.println(payload); // payload enthält die geschriebene Nachricht
+}
+
+SoftwareSerial sSerial(10, 11); // SoftwareSerial an Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender
+
+DidacticPSNetClient psnClient; // Erzeuge PubSub-Client-Instanz
+serialMonitorUI serialUI;      // Vereinfachtes Einlesen von Text und Befehlen per SerialMonitor
+
+void setup()
+{
+
+  Serial.begin(SERIAL_BAUD); // Starte Serielle Schnittstelle (zum PC)
+  serialUI.begin(Serial);    // Starte UserInterface via SerialMonitor
+
+  sSerial.begin(SERIAL_BAUD); // Starte SoftwareSerielle Schnittstelle (zu IR-Link-Modulen)
+  psnClient.begin(sSerial);   // Starte PubSubClient mit SoftwareSerial und Callbackfunktion "clientCallback"
+
+  // AUSGABE INFOTEXT
+  Serial.print(TXT_STARTINFO);
+}
+
+void loop()
+{
+  // NETWERK VERWALTEN
+  //********************
+  psnClient.handleNetwork(); // Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten
+
+  // NEUE NACHRICHT?
+  //********************
+  if (psnClient.available()) // Prüfen ob neue Nachricht verfügbar
+  {
+    char chatName[MAX_LEN_TOPICS] = {0};     // Array um Name von Chatpartner:in zu Speichern
+    char chatMessage[MAX_LEN_PAYLOAD] = {0}; // Array um Nachricht von Chatpartner:in zu Speichern
+
+    psnClient.readTopic(chatName);      // Einlesen des zuletzt empfangenen Topics (entspricht im Chat dem Namen)
+    psnClient.readPayload(chatMessage); // Einlesen der zuletzt empfangenen Payload (enthält die geschriebene Nachricht))
+
+    // AUSGABE EMPFANGENE NACHRICHT AUF SERIALMONITOR
+    Serial.print(chatName);
+    Serial.print(":\t");
+    Serial.println(chatMessage);
+  }
+
+  // NEUE EINGABE?
+  //********************
+  if (serialUI.available()) // Prüfen ob neue Eingabe am SerialMonitor verfügbar
+  {
+    char command = serialUI.readCommand(); // Lese Steuerzeichen aus Eingabe aus -> @ / ! / #
+
+    char userInput[MAX_LEN_PAYLOAD + 2];
+    serialUI.readUserInput(userInput); // Speichere eingegebenen Text in Array
+
+    // NEUEM CHATPARTNER FOLGEN
+    if (command == '@')
+    {                                 // Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren)
+      psnClient.subscribe(userInput); // Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners)
+
+      Serial.print("Nachrichten von "); // Ausgabe welches Topic abonniert wurde
+      Serial.print(userInput);
+      Serial.println(" abonniert.");
+    }
+
+    // CHATPARTNER ENTFOLGEN
+    else if (command == '!')
+    {                                   // Wenn '!' vorne steht, dann eingegebenen Chatpartner entfolgen
+      psnClient.unsubscribe(userInput); // Lege fest zu welchem Topic keine Daten mehr empfangen werden sollen (Namen des Chatpartners)
+
+      Serial.print("Nachrichten von "); // Ausgabe welches Topic "entabonniert" wurde
+      Serial.print(userInput);
+      Serial.println(" nicht mehr abonniert.");
+    }
+
+    // EIGENEN NAMEN ANLEGEN
+    else if (command == '#')
+    {                               // Wenn '#' vorne steht, dann neuer eigener Name (neues Topic unter dem gesendet wird)
+      strcpy(topicPub, userInput);  // kopiere das neue Topic (deinen neuen Namen) in das topicPub-Array
+      Serial.print("Dein Name:\t"); // Ausgabe unter welchem Topic ab jetzt veröffentlicht wird
+      Serial.println(topicPub);
+    }
+
+    // NACHRICHT VERSCHICKEN (unter eigenem Namen)
+    else
+    {                                         // Wenn "normale" Nachrichten eingegeben wurden, dann Daten unter eigenem Topic versenden
+      psnClient.publish(topicPub, userInput); // Bereite eingegebene Daten zum Senden vor
+
+      Serial.print("Ich:\t"); // Ausgabe was unter deinem Topic veröffentlicht wird
+      Serial.println(userInput);
+    }
+  }
+}
\ No newline at end of file
diff --git a/examples/sPSN_Chat/sPSN_Chat.ino b/examples/sPSN_Chat/sPSN_Chat.ino
deleted file mode 100644
index da9efdffa3f86f58be809f80f66f8a347d443a38..0000000000000000000000000000000000000000
--- a/examples/sPSN_Chat/sPSN_Chat.ino
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- * file:  sPSN_Chat.ino
- * author:  letsgoING -> info@letsgoing.de
- * 
- * description:
- *   Dieses Programm ist ein Teil eines Beispiels für ein einfaches Pub-Sub-Chat-Netzwerk.
- *
- *   Für dieses Chat-Netzwerk werden mindestens 3 Arduinos benötigt:
- *
- *   Arduino1:   sPSN_Broker.ino
- *              - IR-Sender an Pin 11 IR-Empfänger an Pin10
- *
- *   Arduino2-n: sPSN_Chat.ino (dieses Programm)
- *              - IR-Sender an Pin 11 IR-Empfänger an Pin10
- * Funktion:
- *   Am Arduino2-n kann ein eigner Name (Sende-Topic) angeben werden.
- *   Danach kann angeben werden wem zugehört werden soll (Empfangs-Topics).
- *   Arduino1 (Server) übernimmt das Verteilen der Nachrichten.
- *
- * parameter:
- *   MAX_LEN_PAYLOAD = 20 Zeichen (didacticNet.h)
- *   MAX_LEN_TOPICS = 10 Zeichen (didacticNet.h)
- *   max Laenge der Eingegebenen Daten: 100 Zeichen (5*MAX_LEN_PAYLOAD)
- *
- * date:  13.07.2021
-*/
-#include <Arduino.h>
-#include "SoftwareSerial.h"
-#include "DidacticNet.h"
-
-#define SERIAL_BAUD 2400                         //lege Geschwindigkeit für serielle Schnittstellen fest
-
-char readData[MAX_LEN_PAYLOAD * 5]      = {'\0'};  //Array für eingelesene Daten (mit Puffer für zu lange Eingaben)
-
-char topicSub[MAX_LEN_TOPICS] = {""};           //Array für neues Empfangs-Topic
-char topicPub[MAX_LEN_TOPICS] = {""};           //Array für eigenes Sende-Topic
-
-//Callback-Funktion wird bei neuen Daten automatisch aufgerufen
-void newData(char* topic, char* payload) {
-  //Ausgabe-> "Chatname":   "geschriebene Nachricht"
-  Serial.print(topic);      //topic entspricht im Chat dem NAmen des Chatpartners
-  Serial.print(":\t");
-  Serial.println(payload);  //payload enthält die geschriebene Nachricht
-}
-
-SoftwareSerial sSerial(10, 11); // SoftwareSerial an Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender
-
-DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz
-SerialReader sReader;
-
-
-void setup() {
-
-  Serial.begin(SERIAL_BAUD);  //Starte Serielle Schnittstelle (zum PC)
-
-  sSerial.begin(SERIAL_BAUD); //Starte SoftwareSerielle Schnittstelle (zu IR-Link-Modulen)
-
-  psnClient.begin(sSerial, newData); //Starte PubSubClient mit SoftwareSerial und Callbackfunktion "clientCallback"
-  sReader.begin(Serial);
-
-  //AUSGABE INFOTEXT
-  Serial.print("1. Den eigenen Namen mit einem # eingeben\nund mit Enter bestaetigen. -> ");
-  Serial.println("#DeinName");
-  Serial.print("2. Die Namen deiner Chatpartner*innen mit einem @ eingeben -> ");
-  Serial.println("@ChatPartner*in \t (mehrfach moeglich)");
-  Serial.print("3. Chatten: ");
-  Serial.println("Pro Nachricht duerfen maximal 20 Zeichen eingegeben werden!");
-  Serial.println();
-  Serial.println("HINWEIS:");
-  Serial.println("Stelle das Zeilenende im SerialMonitor auf \"ZEILENUMBRUCH (CR)\"");
-  Serial.println("*********************************************************************\n");
-}
-
-void loop() {
-
-  psnClient.handleNetwork();                                     //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten
-
-  int nrOfAscii = sReader.readSerialData(readData, DN_ASCII_CR); //Einlesen der Nutzereingabe am SerialMonitor (Rueckgabewert = Anzahl der gelesenen Zeichen)
-
-  if (nrOfAscii > 0) {                   //Wenn Daten fertig eingelesen wurden
-
-    //NEUEM CHATPARTNER FOLGEN
-    if (readData[0] == '@') {            //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren)
-      strcpy(readData, &readData[1]);    //verschiebe um ein Zeichen (entferne '@')
-      psnClient.subscribe(readData);     //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners)
-
-      Serial.print("Nachrichten von ");  //Ausgabe welches Topic abonniert wurde
-      Serial.print(readData);
-      Serial.println(" abonniert.");
-    }
-    //CHATPARTNER ENTFOLGEN
-    else if (readData[0] == '!') {       //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren)
-      strcpy(readData, &readData[1]);    //verschiebe um ein Zeichen (entferne '!')
-      psnClient.unsubscribe(readData);   //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners)
-
-      Serial.print("Nachrichten von ");  //Ausgabe welches Topic abonniert wurde
-      Serial.print(readData);
-      Serial.println(" nicht mehr abonniert.");
-    }
-    //EIGENEN NAMEN ANLEGEN
-    else if (readData[0] == '#') {      //Wenn '#' vorne steht, dann neuer eigener Name (neues Topic unter dem gesendet wird)
-      strcpy(topicPub, &readData[1]);   //kopiere das neue Topic (deinen neuen Namen) in das passende Array (+ 1 = entferne '#')
-      //strcpy(topicPub, readData + 1); //-> Alternative zur Zeile oberhalb
-      
-      Serial.print("Dein Name:\t");     //Ausgabe unter welchem Topic veröffentlicht wird
-      Serial.println(topicPub);
-    }
-    //NACHRICHT VERSCHICKEN (unter eigenem Namen)
-    else {                                    //Wenn "normale" Nachrichten eingegeben wurden, dann Daten unter eigenem Topic versenden
-      psnClient.publish(topicPub, readData);  //Bereite eingegebene Daten zum Senden vor
-      
-      Serial.print("Ich:\t");                 //Ausgabe was unter deinem Topic veröffentlicht wird
-      Serial.println(readData);
-    }
-  }
-
-}
\ No newline at end of file