diff --git a/demo/chatbuf.proto b/demo/chatbuf.proto
new file mode 100644
index 0000000..ca1312c
--- /dev/null
+++ b/demo/chatbuf.proto
@@ -0,0 +1,13 @@
+package SyncDemo;
+
+message ChatMessage {
+  required string msgData = 1;
+  required string to = 2;
+  required string from = 3;
+  required int32 timestamp = 4;
+  enum ChatMessageType {
+    CHAT = 0;
+    OTHER = 1;
+  }
+  optional ChatMessageType type = 5;
+}
diff --git a/demo/digesttreescene.cpp b/demo/digesttreescene.cpp
index 8d2d5c3..483f1f6 100644
--- a/demo/digesttreescene.cpp
+++ b/demo/digesttreescene.cpp
@@ -8,11 +8,15 @@
 #include <assert.h>
 
 static const double Pi = 3.14159265358979323846264338327950288419717;
-static double TwoPi = 2.0 * Pi;
 
 DigestTreeScene::DigestTreeScene(QWidget *parent)
   : QGraphicsScene(parent)
 {
+}
+
+void
+DigestTreeScene::plot() {
+  clear();
   m_graph.clear();
   std::vector<ogdf::node> v(5);
   for (int i = 0; i < 5; i++)
@@ -74,11 +78,12 @@
     QLineF line1(sourceArrowP1, sourceArrowP2);
     addLine(line1, QPen(Qt::black));
      
-      addPolygon(QPolygonF() << sourceArrowP0<< sourceArrowP1 << sourceArrowP2, QPen(Qt::black), QBrush(Qt::black));
+     addPolygon(QPolygonF() << sourceArrowP0<< sourceArrowP1 << sourceArrowP2, QPen(Qt::black), QBrush(Qt::black));
   }
 
-  /*
   ogdf::node n;
+  int i = 0;
+  std::string s[5] = {"A", "B", "C", "D", "E"};
   forall_nodes(n, m_graph) {
     double x = GA.x(n);
 
@@ -86,12 +91,10 @@
     double w = GA.width(n);
     double h = GA.height(n);
     QRectF boundingRect(x, y, w, h);
- 
     addEllipse(boundingRect, QPen(Qt::black), QBrush(Qt::green));
-    QGraphicsTextItem *text = addText(QString(GA.labelNode(n).cstr()));
-    text->setPos(x, y);
- 
+    QGraphicsTextItem *text = addText(s[i].c_str());
+    text->setPos(x + 5, y + 5);
+    i++; 
   }
-    */
 }
 
diff --git a/demo/digesttreescene.h b/demo/digesttreescene.h
index 0d98f7e..1915c2f 100644
--- a/demo/digesttreescene.h
+++ b/demo/digesttreescene.h
@@ -11,6 +11,7 @@
 
 public:
   DigestTreeScene(QWidget *parent = 0);
+  void plot();
 private:
   ogdf::Graph m_graph;
 };
diff --git a/demo/digesttreeviewer.cpp b/demo/digesttreeviewer.cpp
index cb52a9e..631ab92 100644
--- a/demo/digesttreeviewer.cpp
+++ b/demo/digesttreeviewer.cpp
@@ -7,4 +7,6 @@
 {
   DigestTreeScene *scene = new DigestTreeScene(this);
   setScene(scene);
+  scene->plot();
+  scene->plot();
 }
diff --git a/demo/sync-demo.pri b/demo/sync-demo.pri
new file mode 100644
index 0000000..88ab350
--- /dev/null
+++ b/demo/sync-demo.pri
@@ -0,0 +1,18 @@
+PROTOPATH += .
+PROTOPATHS = 
+for(p, PROTOPATH):PROTOPATHS += --proto_path=$${p}
+
+protobuf_decl.name = protobuf header
+protobuf_decl.input = PROTOS
+protobuf_decl.output = ${QMAKE_FILE_BASE}.pb.h
+protobuf_decl.commands = protoc --cpp_out="." $${PROTOPATHS} ${QMAKE_FILE_NAME}
+protobuf_decl.variable_out = GENERATED_FILES 
+QMAKE_EXTRA_COMPILERS += protobuf_decl 
+
+protobuf_impl.name  = protobuf implementation
+protobuf_impl.input = PROTOS
+protobuf_impl.output  = ${QMAKE_FILE_BASE}.pb.cc
+protobuf_impl.depends  = ${QMAKE_FILE_BASE}.pb.h
+protobuf_impl.commands = $$escape_expand(\n)
+protobuf_impl.variable_out = GENERATED_SOURCES
+QMAKE_EXTRA_COMPILERS += protobuf_impl 
diff --git a/demo/sync-demo.pro b/demo/sync-demo.pro
index b201cb7..ce3ac5a 100644
--- a/demo/sync-demo.pro
+++ b/demo/sync-demo.pro
@@ -11,10 +11,13 @@
 
 FORMS = chatdialog.ui
 
-QMAKE_CXXFLAGS *= -g
+QMAKE_CXXFLAGS *= -g 
+QMAKE_CFLAGS *= -g 
 
 QMAKE_LIBDIR *= /opt/local/lib /usr/local/lib /usr/lib ../../../third_party/OGDF/_release
 INCLUDEPATH *= /opt/local/include /usr/local/include ../../../third_party/OGDF
-LIBS *= -lccn -lssl -lcrypto -lpthread -lOGDF
+LIBS *= -lccn -lssl -lcrypto -lpthread -lOGDF -lprotobuf
 CONFIG += console 
 
+PROTOS = chatbuf.proto
+include (sync-demo.pri)
