diff --git a/examples/sPSN_Chat/sPSN_Chat.ino b/examples/sPSN_Chat/sPSN_Chat.ino
index 632a18c3a8db96eceac9c79e01607dbc06df9612..d480f6a8c5aa0e33a3b6a876ef339ee88449363c 100644
--- a/examples/sPSN_Chat/sPSN_Chat.ino
+++ b/examples/sPSN_Chat/sPSN_Chat.ino
@@ -72,30 +72,38 @@ void loop() {
 
   psnClient.handleNetwork();  //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten
 
-  int nrOfAscii = psnClient.readSerialData(Serial, readData, 13); //Einlesen der Nutzereingabe am SerialMonitor (Rueckgabewert = Anzahl der gelesenen Zeichen)
+  int nrOfAscii = psnClient.readSerialData(Serial, readData, DN_ASCII_CR); //Einlesen der Nutzereingabe am SerialMonitor (Rueckgabewert = Anzahl der gelesenen Zeichen)
 
   if (nrOfAscii > 0) { //Wenn Daten fertig eingelesen wurden
 
     if (readData[0] == '@') {         //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren)
-      strcpy(readData, readData + 1); //verschiebe um ein Zeichen (entferne '@')
+      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.");
     }
+    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)
 
-    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 '#')
+      Serial.print("Nachrichten von "); //Ausgabe welches Topic abonniert wurde
+      Serial.print(readData);
+      Serial.println(" nicht mehr abonniert.");
+    }
 
+    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]); //kopiere das neue Topic (deinen neuen Namen) in das passende Array (+ 1 = entferne '#')
+      
       Serial.print("Dein Name:\t");   //Ausgabe unter welchem Topic veröffentlicht wird
       Serial.println(topicPub);
     }
 
     else { //Wenn "normale" Nachrichten eingegeben wurden, dann Daten unter eigenem Topic versenden
-      readData[MAX_LEN_PAYLOAD] = '\0';       //Schreibe String-Ende an letzte Stelle im Array
       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);
     }
diff --git a/src/didacticNet.cpp b/src/didacticNet.cpp
index d89becbb79b0088ba94a887948c015f7616036ac..e8ca455eb6c546948198d8e121970f45d746ac8d 100644
--- a/src/didacticNet.cpp
+++ b/src/didacticNet.cpp
@@ -363,18 +363,18 @@ int didacticPSNetClient::edgeDetected(bool edCurrentState){
   if(edCurrentState && !edLastState){
     edEdge = RISING;
   }
-  if(!edCurrentState && edLastState){
+  else if(!edCurrentState && edLastState){
     edEdge = FALLING;
   }
   edLastState = edCurrentState;
   return edEdge;
 }
 
-bool didacticPSNetClient::valueChanged(int teValue, int teThreshold){
+bool didacticPSNetClient::valueChanged(int vcValue, int vcThreshold){
   static int vcLastValue = 0;
 
-  if(abs(teValue-vcLastValue) > teThreshold){
-    vcLastValue = teValue;
+  if(abs(vcValue-vcLastValue) > vcThreshold){
+    vcLastValue = vcValue;
     return true;
   }
   return false;