diff --git a/demo/chatdialog.cpp b/demo/chatdialog.cpp
index 4a3e59f..e325d6b 100644
--- a/demo/chatdialog.cpp
+++ b/demo/chatdialog.cpp
@@ -178,6 +178,7 @@
   // update the tree view
   std::string prefix = name.toStdString().substr(0, name.toStdString().find_last_of('/'));
   m_scene->msgReceived(prefix.c_str(), msg.from().c_str());
+  fitView();
 }
 
 void
@@ -263,7 +264,14 @@
     abort();
   }
   m_sock->publishRaw(m_user.getPrefix().toStdString(), m_session, buf, size, 60);
-  
+
+  int nextSequence = m_sock->getNextSeq(m_user.getPrefix().toStdString(), m_session);
+  Sync::MissingDataInfo mdi = {m_user.getPrefix().toStdString(), Sync::SeqNo(0), Sync::SeqNo(nextSequence)};
+  std::vector<Sync::MissingDataInfo> v;
+  v.push_back(mdi);
+  m_scene->processUpdate(v, m_sock->getRootDigest().c_str());
+  m_scene->msgReceived(m_user.getPrefix(), m_user.getNick());
+  fitView();
 }
 
 void
diff --git a/demo/digesttreescene.cpp b/demo/digesttreescene.cpp
index 82ad890..35df071 100644
--- a/demo/digesttreescene.cpp
+++ b/demo/digesttreescene.cpp
@@ -153,14 +153,14 @@
   QRectF rootInnerBoundingRect(rim, rim, nodeSize - rim * 2, nodeSize - rim * 2);
   addRect(rootBoundingRect, QPen(Qt::black), QBrush(Qt::darkRed));
   addRect(rootInnerBoundingRect, QPen(Qt::black), QBrush(Qt::lightGray));
-  QRectF digestRect(- 5 * nodeSize , - nodeSize, 11 * nodeSize, 30);
+  QRectF digestRect(- 5.5 * nodeSize , - nodeSize, 12 * nodeSize, 30);
   addRect(digestRect, QPen(Qt::darkCyan), QBrush(Qt::darkCyan));
 
   QGraphicsTextItem *digestItem = addText(digest);
   QRectF digestBoundingRect = digestItem->boundingRect();
   digestItem->setDefaultTextColor(Qt::black);
   digestItem->setFont(QFont("Cursive", 12, QFont::Bold));
-  digestItem->setPos(- 4 * nodeSize + (11 * nodeSize - digestBoundingRect.width()) / 2, - nodeSize + 5);
+  digestItem->setPos(- 4.5 * nodeSize + (12 * nodeSize - digestBoundingRect.width()) / 2, - nodeSize + 5);
   m_rootDigest = digestItem;
 
   // plot child nodes
diff --git a/include/sync-app-socket.h b/include/sync-app-socket.h
index c190824..cf888d3 100644
--- a/include/sync-app-socket.h
+++ b/include/sync-app-socket.h
@@ -84,12 +84,10 @@
 
   // for sync-demo
   std::string getRootDigest() {return m_syncLogic.getRootDigest();}
-
-
-private:
   uint32_t
   getNextSeq (const std::string &prefix, uint32_t session);
 
+private:
   void 
   passCallback(const std::vector<MissingDataInfo> &v) {m_newDataCallback(v, this);}
 
