diff --git a/chatdialog.cpp b/chatdialog.cpp
index 26226d9..19ea99a 100644
--- a/chatdialog.cpp
+++ b/chatdialog.cpp
@@ -11,6 +11,9 @@
 
 #define BROADCAST_PREFIX_FOR_SYNC_DEMO "/ndn/broadcast/sync-demo"
 
+static const int FRESHNESS = 60;
+static const int HELLO_INTERVAL = 59;
+
 void
 ChatDialog::testDraw()
 {
@@ -34,7 +37,7 @@
 }
 
 ChatDialog::ChatDialog(QWidget *parent)
-  : QDialog(parent), m_sock(NULL)
+  : QDialog(parent), m_sock(NULL), m_lastMsgTime(0)
 {
   // have to register this, otherwise
   // the signal-slot system won't recognize this type
@@ -392,10 +395,12 @@
     std::cerr << "Errrrr.. msg was not probally initialized "<<__FILE__ <<":"<<__LINE__<<". what is happening?" << std::endl;
     abort();
   }
-  m_sock->publishRaw(m_user.getPrefix().toStdString(), m_session, buf, size, 60);
+  m_sock->publishRaw(m_user.getPrefix().toStdString(), m_session, buf, size, FRESHNESS);
 
   delete buf;
 
+  m_lastMsgTime = time(NULL);
+
   int nextSequence = m_sock->getNextSeq(m_user.getPrefix().toStdString(), m_session);
   Sync::MissingDataInfo mdi = {m_user.getPrefix().toStdString(), Sync::SeqNo(0), Sync::SeqNo(nextSequence - 1)};
   std::vector<Sync::MissingDataInfo> v;
@@ -410,9 +415,19 @@
 void 
 ChatDialog::sendHello()
 {
-  SyncDemo::ChatMessage msg;
-  formHelloMessage(msg);
-  sendMsg(msg);
+  time_t now = time(NULL);
+  int elapsed = now - m_lastMsgTime;
+  if (elapsed >= HELLO_INTERVAL)
+  {
+    SyncDemo::ChatMessage msg;
+    formHelloMessage(msg);
+    sendMsg(msg);
+    QTimer::singleShot(HELLO_INTERVAL * 1000, this, SLOT(sendHello()));
+  }
+  else
+  {
+    QTimer::singleShot((HELLO_INTERVAL - elapsed) * 1000, this, SLOT(sendHello()));
+  }
 }
 
 void
diff --git a/chatdialog.h b/chatdialog.h
index 3f75247..a825657 100644
--- a/chatdialog.h
+++ b/chatdialog.h
@@ -44,7 +44,6 @@
   void formChatMessage(const QString &text, SyncDemo::ChatMessage &msg);
   void formHelloMessage(SyncDemo::ChatMessage &msg);
   void sendMsg(SyncDemo::ChatMessage &msg);
-  void sendHello();
   bool readSettings();
   void writeSettings();
   void updateLabels();
@@ -60,6 +59,7 @@
   void buttonPressed();
   void checkSetting();
   void settingUpdated(QString, QString, QString);
+  void sendHello();
 
   // icon related
   void iconActivated(QSystemTrayIcon::ActivationReason reason);
@@ -78,6 +78,7 @@
   DigestTreeScene *m_scene;
   boost::mutex m_msgMutex;
   boost::mutex m_sceneMutex;
+  time_t m_lastMsgTime;
 
   // icon related
   QAction *minimizeAction;
