diff --git a/keywords.txt b/keywords.txt
index d90141a8a832b5cad938e8f0f5a059364f9aa9c3..53a494adf0d5591800287e427a948ec8a05c727a 100644
--- a/keywords.txt
+++ b/keywords.txt
@@ -27,6 +27,8 @@ available KEYWORD2
 readLatestTopicNr   KEYWORD2
 readTopic KEYWORD2
 readPayload KEYWORD2
+readBooleanPayload KEYWORD2
+readIntegerPayload KEYWORD2
 
 publish	KEYWORD2
 publishOnChange	KEYWORD2
diff --git a/src/DidacticNet.cpp b/src/DidacticNet.cpp
index fed141f8ed3b7f38c048226a31234e2558cd2c32..564e379653fa2cca303dcb762bbfb2d50d5ee6b1 100644
--- a/src/DidacticNet.cpp
+++ b/src/DidacticNet.cpp
@@ -222,8 +222,24 @@ void DidacticPSNetClient::readPayload(char *payload)
 void DidacticPSNetClient::readPayload(char *topic, char *payload)
 {
   int topicNr = getTopicNr(topic);
+  if (topicNr == _newMessageTopicNr)
+  {
+    _newMessageAvailable = false;
+  }
   readPayload(topicNr, payload);
 }
+
+bool DidacticPSNetClient::readBooleanPayload()
+{
+  _newMessageAvailable = false;
+  return _payload[_newMessageTopicNr][0] == '1';
+}
+
+int DidacticPSNetClient::readIntegerPayload()
+{
+  _newMessageAvailable = false;
+  return atoi(_payload[_newMessageTopicNr]);
+}
 // ##########################################
 
 DidacticPSNetClient::DidacticPSNetClient()
diff --git a/src/DidacticNet.h b/src/DidacticNet.h
index 08c21c69262088ce44d9c28b59d73c325e73d3e0..e039169f248201ed7d543e5a0b2d062a9c4de863 100644
--- a/src/DidacticNet.h
+++ b/src/DidacticNet.h
@@ -201,6 +201,8 @@ public:
 	void readPayload(char *);		  // new
 	void readPayload(int, char *);	  // new
 	void readPayload(char *, char *); // new
+	bool readBooleanPayload();		  // new
+	int readIntegerPayload();		  // new
 
 	int getMaxNrTopics();
 	int getSubscribedTopic(char *, int);