diff --git a/demo/chatbuf.proto b/demo/chatbuf.proto
index ca1312c..234c931 100644
--- a/demo/chatbuf.proto
+++ b/demo/chatbuf.proto
@@ -1,13 +1,14 @@
 package SyncDemo;
 
 message ChatMessage {
-  required string msgData = 1;
+  optional string msgData = 1;
   required string to = 2;
   required string from = 3;
-  required int32 timestamp = 4;
+  optional int32 timestamp = 4;
   enum ChatMessageType {
     CHAT = 0;
-    OTHER = 1;
+    HELLO = 1;
+    OTHER = 2;
   }
-  optional ChatMessageType type = 5;
+  required ChatMessageType type = 5;
 }
diff --git a/demo/chatdialog.cpp b/demo/chatdialog.cpp
index c7d8725..3bc518d 100644
--- a/demo/chatdialog.cpp
+++ b/demo/chatdialog.cpp
@@ -1,9 +1,61 @@
 #include <QtGui>
 #include "chatdialog.h"
+#include <ctime>
 
 ChatDialog::ChatDialog(QWidget *parent)
   : QDialog(parent)
 {
   setupUi(this);
   lineEdit->setFocusPolicy(Qt::StrongFocus);
+
+
+  connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
+}
+
+void
+ChatDialog::appendMessage(const SyncDemo::ChatMessage &msg) 
+{
+  if (msg.from().isEmpty || message.msgData().isEmpty())
+    return;
+
+  QTextCursor cursor(textEdit->textCursor());
+  cursor.movePosition(QTextCursor::End);
+  QTextTableFormat tableFormat;
+  tableFormat.setBorder(0);
+  QTextTable *table = cursor.insertTable(1, 2, tableFormat);
+  table->cellAt(0, 0).firstCursorPosition().insertText("<" + msg.from() + ">: ");
+  table->cellAt(0, 1).firstCursorPosition().insertText(msg.msgData());
+  QScrollBar *bar = textEdit->verticalScrollBar();
+  bar->setValue(bar->maximum());
+}
+
+void 
+ChatDialog::updateTreeView() 
+{
+}
+
+void 
+ChatDialog::returnPressed()
+{
+  QString text = lineEdit->text();
+  if (text.isEmpty())
+    return;
+ 
+  SyncDemo::ChatMessage msg;
+  formChatMessage(text, msg);
+  
+  // TODO:
+  // send message
+  appendMessage(msg);
+  updateTreeView();
+
+}
+
+void
+ChatDialog::formChatMessage(const QString &text, SyncDemo::ChatMessage &msg) {
+  msg.set_from(m_nick);
+  msg.set_to(m_chatroom);
+  msg.set_msgData(text);
+  time_t seconds = time(NULL);
+  msg.set_timestamp(seconds);
 }
diff --git a/demo/chatdialog.h b/demo/chatdialog.h
index 401df9d..0f65426 100644
--- a/demo/chatdialog.h
+++ b/demo/chatdialog.h
@@ -1,6 +1,7 @@
 #ifndef CHATDIALOG_H
 #define CHATDIALOG_H
 #include "ui_chatdialog.h"
+#include "chatbuf.pb.h"
 
 class ChatDialog : public QDialog,  private Ui::ChatDialog 
 {
@@ -8,5 +9,17 @@
 
 public:
 	ChatDialog(QWidget *parent = 0);
+
+public slots:
+  void appendMessage(SyncDemo::ChatMessage &msg);
+  void updateTreeView();
+
+private slots:
+  void returnPressed();
+  void formChatMessage(const QString &text, SyncDemo::ChatMessage &msg);
+
+private:
+  QString m_nick;
+  QString m_chatroom;
 };
 #endif
