diff --git a/chatbuf.proto b/chatbuf.proto
index ca1312c..234c931 100644
--- a/chatbuf.proto
+++ b/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/chatdialog.cpp b/chatdialog.cpp
index c7d8725..3bc518d 100644
--- a/chatdialog.cpp
+++ b/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/chatdialog.h b/chatdialog.h
index 401df9d..0f65426 100644
--- a/chatdialog.h
+++ b/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
