diff --git a/src/Config.h b/src/Config.h
index 40485d76042a666d3dbb51d3d1965bb224c1817a..8a6af35af61ac53dc3711bc107bb1477d2bfb0a7 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -3,28 +3,30 @@
     @author   anian buehler @ letsgoING
 **************************************************************************/
 
-// APPLICATION
+// NETWORK
 #define DN_MSG_PRELIMITER '<'
 #define DN_MSG_DELIMITER '>'
 #define DN_MSG_SEPARATOR '|'
 
-#define DN_NETWORK_ADDRESS_BROADCAST 0
-
-#define DN_APPLICATION_PUBSUB 1
-#define DN_APPLICATION_PEERTOPEER 2
-
 // NEW FRAME
-//
-//  < APP ADD-R SERV TOPIC1-n | DATA1-n > /PSN
+// IMMER BEIDE ADDRESSEN!!!!
+//  < APP ADD-R ADD_S SERV TOPIC1-n | DATA1-n > /PSN
 //  < APP ADD-R ADD-S APP DATA1-n > /P2P
 // Address 1 byte 0-F
 // Applications 0-9  -> 1 PSN / 2 P2P / tbd
-#define DN_APPLICATION_LEN_OVERHEAD 6
+#define DNN_LEN_OVERHEAD 6
+
+#define DNN_POS_APPL 1
+#define DNN_POS_ADD_REC 2
+#define DNN_POS_ADD_SND 3
+#define DNN_POS_PS_SERVIS 4
+
+#define DNN_ADDRESS_BROADCAST '0'
 
-#define DN_APPLICATION_POS_APPL 1
-#define DN_APPLICATION_POS_ADD_REC 2
-#define DN_APPLICATION_POS_ADD_SND 3
-#define DN_APPLICATION_POS_PS_SERV 3
+// APPLICATIONS
+#define DNN_APP_NONE 0
+#define DNN_APP_PUBSUB 1
+#define DNN_APP_PEERTOPEER 2
 
 // PUBSUB APPLICATION
 //************************/
diff --git a/src/DidacticNet.h b/src/DidacticNet.h
index 72b05a0c29290d2db0f4f57a0bcc23590d4cf71b..277f7f1b5ce65861afdf96fe998476d0947458fc 100644
--- a/src/DidacticNet.h
+++ b/src/DidacticNet.h
@@ -13,7 +13,7 @@
 
 // NEW FRAME
 //
-//  < APP ADD-R SERV TOPIC1-n | DATA1-n > /PSN
+//  < APP ADD-R ADD-S SERV TOPIC1-n | DATA1-n > /PSN
 //  < APP ADD-R ADD-S APP DATA1-n > /P2P
 // Address 1 byte 0-F
 // Applications 0-9  -> 1 PSN / 2 P2P / tbd
diff --git a/src/DidacticNetNetwork.cpp b/src/DidacticNetNetwork.cpp
index 90dcfcdbaab514ee7fb9639219d9292576aa00f6..e4ca38dcda99079392cea2a738b0a51990c62a1f 100644
--- a/src/DidacticNetNetwork.cpp
+++ b/src/DidacticNetNetwork.cpp
@@ -7,7 +7,7 @@
 
 void DidacticNetNetwork::handleRawData(char *_rawData)
 {
-    if ((_rawData[DN_APPLICATION_POS_ADD_REC] == _networkAddress || _rawData[DN_APPLICATION_POS_ADD_REC] == DN_NETWORK_ADDRESS_BROADCAST) && _rawData[DN_APPLICATION_POS_APPL] == _networkApplication)
+    if ((_rawData[DNN_POS_ADD_REC] == _networkAddress || _rawData[DNN_POS_ADD_REC] == DNN_ADDRESS_BROADCAST) && _rawData[DNN_POS_APPL] == _networkApplication)
     {
         handleData(_rawData);
     }
@@ -17,10 +17,20 @@ void DidacticNetNetwork::setNetworkAddress(char networkAddress)
 {
     _networkAddress = networkAddress;
 }
+
+void DidacticNetNetwork::setNetworkAddress(int networkAddress)
+{
+    char networkAddressBuffer;
+    itoa(networkAddress, networkAddressBuffer, 10);
+
+    setNetworkAddress(networkAddressBuffer);
+}
+
 char DidacticNetNetwork::getNetworkAddress()
 {
     return _networkAddress;
 }
+
 void DidacticNetNetwork::setNetworkApplication(int networkApplication)
 {
     _networkApplication = networkApplication;
@@ -33,11 +43,18 @@ int DidacticNetNetwork::getNetworkApplication()
 
 bool DidacticNetNetwork::setTelegram(char *data, char addressReceiver)
 {
-    _sendBufferMessage[0] = DN_MSG_PRELIMITER;
-    _sendBufferMessage[DN_APPLICATION_POS_APPL] = getNetworkApplication();
-    _sendBufferMessage[DN_APPLICATION_POS_ADD_REC] = addressReceiver;
-    strcpy(&_sendBufferMessage[DN_APPLICATION_POS_ADD_REC + 1], data);
-    _sendBufferMessage[DN_APPLICATION_POS_ADD_REC + 1 + strlen(data)] = DN_MSG_DELIMITER;
+    if (strlen(data) + DNN_LEN_OVERHEAD <= DNT_MAX_LEN_TELEGRAM)
+    {
+        _sendBufferMessage[0] = DN_MSG_PRELIMITER;
+        _sendBufferMessage[DNN_POS_APPL] = _networkApplication;
+        _sendBufferMessage[DNN_POS_ADD_REC] = addressReceiver;
+        _sendBufferMessage[DNN_POS_ADD_SND] = _networkAddress;
+        strcpy(&_sendBufferMessage[DNN_POS_ADD_SND + 1], data);
+        _sendBufferMessage[DNN_POS_ADD_SND + 1 + strlen(data)] = DN_MSG_DELIMITER;
+
+        _dataToSend = true;
+        return true;
+    }
 
-    _dataToSend = true;
+    return false;
 }
diff --git a/src/DidacticNetNetwork.h b/src/DidacticNetNetwork.h
index b668b3aeb0e8ccb30204aa81525aeee906a4d36f..5ef0f36b08c52eb7cdc41796a57368d519751127 100644
--- a/src/DidacticNetNetwork.h
+++ b/src/DidacticNetNetwork.h
@@ -16,8 +16,8 @@
 class DidacticNetNetwork : public DidacticNetTransmit
 {
 protected:
-    char _networkAddress = '0';
-    int _networkApplication = 0;
+    char _networkAddress = DNN_ADDRESS_BROADCAST; // ADDR in HEX 0-F
+    int _networkApplication = DNN_APP_NONE;
 
     void handleRawData(char *);
     void setNetworkApplication(int);
@@ -26,6 +26,7 @@ protected:
 
 public:
     void setNetworkAddress(char);
+    void setNetworkAddress(int);
     char getNetworkAddress();
 
     int getNetworkApplication();
diff --git a/src/DidacticNetPSN.cpp b/src/DidacticNetPSN.cpp
index ffea782ca75bfbba69636806f51f75e5d649e2a2..63140104be2d11206cb9b95897a7546d407e4be0 100644
--- a/src/DidacticNetPSN.cpp
+++ b/src/DidacticNetPSN.cpp
@@ -10,6 +10,12 @@
 //**************************************************************************
 // CLIENT
 //**************************************************************************
+DidacticNetPSNClient::DidacticNetPSNClient()
+{
+    _intervalTime = PS_INTERVAL_CLIENT;
+    setNetworkApplication(DNN_APP_PUBSUB);
+}
+
 DidacticNetPSNClient::~DidacticNetPSNClient() {}
 
 // NEW easy interface for non advanced users
@@ -100,11 +106,6 @@ int DidacticNetPSNClient::readPayloadParseInt()
 }
 // ##########################################
 
-DidacticNetPSNClient::DidacticNetPSNClient()
-{
-    _intervalTime = PS_INTERVAL_CLIENT;
-}
-
 int DidacticNetPSNClient::publish(char *topic, char *payload)
 {
     return publish(topic, strlen(topic), payload, strlen(payload));
@@ -138,6 +139,11 @@ int DidacticNetPSNClient::publish(char *topic, int topicLength, char *payload, i
         publishBuffer[1 + topicLength + 1 + i] = payload[i];
     }
 
+    // DEBUG
+    Serial.print("DBG: publish: ");
+    Serial.println(publishBuffer);
+    //! DEBUG
+
     setTelegram(publishBuffer, _brokerAddress);
 
     return error;
@@ -229,6 +235,12 @@ int DidacticNetPSNClient::subscribe(char *topic, int topicLength)
         subscribeBuffer[1 + topicLength + 1] = '\0';
     }
 
+    // DEBUG
+    Serial.print("DBG: subscribe: ");
+    Serial.println(subscribeBuffer);
+    Serial.print("DBG: subscribe: ");
+    //! DEBUG
+
     setTelegram(subscribeBuffer, _brokerAddress);
 
     while (_dataToSend)
@@ -339,6 +351,7 @@ int DidacticNetPSNClient::getMaxNrTopics()
 DidacticNetPSNBroker::DidacticNetPSNBroker()
 {
     _intervalTime = PS_INTERVAL_BROKER;
+    setNetworkApplication(DNN_APP_PUBSUB);
 }
 
 DidacticNetPSNBroker::~DidacticNetPSNBroker() {}
@@ -402,17 +415,16 @@ bool DidacticNetPSNBroker::handleData(char *bufferedMessage) // change to handle
 
 bool DidacticNetPSNBroker::update(char *topic, int topicLength, char *data, int dataLength)
 {
-    _sendBufferMessage[0] = DN_MSG_PRELIMITER;
-    _sendBufferMessage[1] = PS_MSG_UPDATE;
-    _sendBufferMessage[2 + topicLength] = DN_MSG_SEPARATOR;
-    _sendBufferMessage[2 + topicLength + 1 + dataLength] = DN_MSG_DELIMITER;
-    _sendBufferMessage[2 + topicLength + 1 + dataLength + 1] = '\0';
+    char updateBuffer[DNT_MAX_LEN_TELEGRAM] = {0};
+    updateBuffer[0] = PS_MSG_UPDATE;
+    updateBuffer[1 + topicLength] = DN_MSG_SEPARATOR;
+    updateBuffer[1 + topicLength + 1 + dataLength] = '\0';
 
     if (topicLength <= PS_MAX_LEN_TOPICS)
     {
         for (int i = 0; i < topicLength; i++)
         {
-            _sendBufferMessage[2 + i] = topic[i];
+            _sendBufferMessage[1 + i] = topic[i];
         }
     }
     else
@@ -424,7 +436,7 @@ bool DidacticNetPSNBroker::update(char *topic, int topicLength, char *data, int
     {
         for (int i = 0; i < dataLength; i++)
         {
-            _sendBufferMessage[2 + topicLength + 1 + i] = data[i];
+            _sendBufferMessage[1 + topicLength + 1 + i] = data[i];
         }
     }
     else
@@ -432,6 +444,8 @@ bool DidacticNetPSNBroker::update(char *topic, int topicLength, char *data, int
         _dataToSend = false;
         return false;
     }
+
+    setTelegram(updateBuffer, DNN_ADDRESS_BROADCAST); // Broadcast on update
     _dataToSend = true;
     return true;
 }