diff --git a/chatdialog.cpp b/chatdialog.cpp
index 6fdc657..f677b43 100644
--- a/chatdialog.cpp
+++ b/chatdialog.cpp
@@ -27,13 +27,13 @@
   qRegisterMetaType<size_t>("size_t");
   setupUi(this);
   m_session = time(NULL);
+  m_scene = new DigestTreeScene(this);
 
   readSettings();
 
   updateLabels();
 
   lineEdit->setFocusPolicy(Qt::StrongFocus);
-  m_scene = new DigestTreeScene(this);
 
   treeViewer->setScene(m_scene);
   m_scene->plot("Empty");
@@ -627,6 +627,7 @@
     m_user.setChatroom(chatroom);
     m_user.setOriginPrefix(originPrefix);
     m_user.setPrefix(originPrefix + "/" + chatroom + "/" + getRandomString());
+    m_scene->setCurrentPrefix(originPrefix + "/" + chatroom + "/" + getRandomString());
     return true;
   }
 
@@ -810,12 +811,14 @@
   if (!originPrefix.isEmpty() && originPrefix != m_user.getOriginPrefix()) {
     m_user.setOriginPrefix(originPrefix);
     m_user.setPrefix(originPrefix + "/" + m_user.getChatroom() + "/" + randString);
+    m_scene->setCurrentPrefix(originPrefix + "/" + m_user.getChatroom() + "/" + randString);
     needWrite = true;
     needFresh = true;
   }
   if (!chatroom.isEmpty() && chatroom != m_user.getChatroom()) {
     m_user.setChatroom(chatroom);
     m_user.setPrefix(m_user.getOriginPrefix() + "/" + chatroom + "/" + randString);
+    m_scene->setCurrentPrefix(m_user.getOriginPrefix() + "/" + chatroom + "/" + randString);
     needWrite = true;
     needFresh = true;
   }
diff --git a/digesttreescene.cpp b/digesttreescene.cpp
index 64f6949..b876a17 100644
--- a/digesttreescene.cpp
+++ b/digesttreescene.cpp
@@ -94,9 +94,11 @@
   Roster_iterator it = m_roster.find(prefix);
   if (it != m_roster.end()) 
   {
+    std::cout << "Updating for prefix = " << prefix.toStdString() << " nick = " << nick.toStdString() << std::endl;
     DisplayUserPtr p = it.value();
     p->setReceived(time(NULL));
     if (nick != p->getNick()) {
+    std::cout << "old nick = " << p->getNick().toStdString() << std::endl;
       p->setNick(nick);
       QGraphicsTextItem *nickItem = p->getNickTextItem();
       QGraphicsRectItem *nickRectItem = p->getNickRectItem();
@@ -150,6 +152,9 @@
   // do some cleaning, get rid of stale member info
   Roster_iterator it = m_roster.begin();
   QStringList staleUserList;
+#ifdef __DEBUG
+  std::cout << "------------------------------------------------------" << std::endl;
+#endif
   while (it != m_roster.end())
   {
     DisplayUserPtr p = it.value();
@@ -168,6 +173,20 @@
       }
       else
       {
+#ifdef __DEBUG
+        std::cout << "having user: " << p->getNick().toStdString() << std::endl;
+        std::cout << "prefix: " << p->getPrefix().toStdString() << std::endl;
+#endif
+        if (!m_currentPrefix.startsWith("/private/local") && p->getPrefix().startsWith("/private/local"))
+        {
+#ifdef __DEBUG
+          std::cout << "erasing: " << p->getPrefix().toStdString() << std::endl;
+#endif
+          staleUserList << p->getNick();
+          p = DisplayUserNullPtr;
+          it = m_roster.erase(it);
+          continue;
+        }
         ++it;
       }
     }
@@ -175,12 +194,16 @@
     {
       it = m_roster.erase(it);
     }
+#ifdef __DEBUG
+  std::cout << "------------------------------------------------------" << std::endl;
+#endif
   }
 
   // for simpicity here, whenever we replot, we also redo the roster list
   emit rosterChanged(staleUserList);
 
   int n = m_roster.size();
+
   std::vector<TreeLayout::Coordinate> childNodesCo(n);
 
   layout->setOneLevelLayout(childNodesCo);
diff --git a/digesttreescene.h b/digesttreescene.h
index 29d9177..9d9dee4 100644
--- a/digesttreescene.h
+++ b/digesttreescene.h
@@ -36,6 +36,7 @@
   bool removeNode(const QString prefix);
   void plot(QString digest);
   QStringList getRosterList();
+  void setCurrentPrefix(QString prefix) {m_currentPrefix = prefix;}
 
 signals:
   void replot();
@@ -52,6 +53,7 @@
   Roster m_roster;
   QGraphicsTextItem *m_rootDigest; 
   DisplayUserPtr previouslyUpdatedUser;
+  QString m_currentPrefix;
 
 };
 
