diff --git a/src/contactpanel.cpp b/src/contactpanel.cpp
index 5128105..e2c8359 100644
--- a/src/contactpanel.cpp
+++ b/src/contactpanel.cpp
@@ -18,6 +18,7 @@
 #include <QDir>
 
 #ifndef Q_MOC_RUN
+#include <ndn.cxx/common.h>
 #include <boost/filesystem.hpp>
 #include "logging.h"
 #include "exception.h"
@@ -36,7 +37,8 @@
     , m_contactListModel(new QStringListModel)
     , m_addContactPanel(new AddContactPanel(contactManager))
     , m_setAliasDialog(new SetAliasDialog(contactManager))
-    , m_menuInvite(new QAction("&Invite", this))
+    , m_startChatDialog(new StartChatDialog)
+    , m_menuInvite(new QAction("&Chat", this))
     , m_menuAlias(new QAction("&Set Alias", this))
 {
   
@@ -70,6 +72,9 @@
     connect(m_setAliasDialog, SIGNAL(aliasChanged()),
             this, SLOT(refreshContactList()));
 
+    connect(m_startChatDialog, SIGNAL(chatroomConfirmed(const QString&, const QString&, bool)),
+            this, SLOT(startChatroom(const QString&, const QString&, bool)));
+
 
 
 }
@@ -92,8 +97,6 @@
   QString text = m_contactListModel->data(items.first(), Qt::DisplayRole).toString();
   string alias = text.toUtf8().constData();
 
-  m_currentSelectedContact = alias;
-
   int i = 0;
   for(; i < m_contactList.size(); i++)
     {
@@ -107,7 +110,9 @@
   ui->NameData->setText(name);
   ui->NameSpaceData->setText(nameSpace);
   ui->InstitutionData->setText(institution);
-  
+
+  m_currentSelectedContactAlias = alias;
+  m_currentSelectedContactNamespace = m_contactList[i]->getNameSpace().toUri();
   // _LOG_DEBUG("current Alias: " << m_currentSelectedContact);
 }
 
@@ -135,6 +140,8 @@
 {
   QMenu menu(ui->ContactList);
   menu.addAction(m_menuInvite);
+  connect(m_menuInvite, SIGNAL(triggered()),
+          this, SLOT(openStartChatDialog()));
   menu.addAction(m_menuAlias);
   connect(m_menuAlias, SIGNAL(triggered()),
           this, SLOT(openSetAliasDialog()));
@@ -145,10 +152,33 @@
 void
 ContactPanel::openSetAliasDialog()
 {
-  m_setAliasDialog->setTargetIdentity(m_currentSelectedContact);
+  m_setAliasDialog->setTargetIdentity(m_currentSelectedContactNamespace);
   m_setAliasDialog->show();
 }
 
+void
+ContactPanel::openStartChatDialog()
+{
+  TimeInterval ti = time::NowUnixTimestamp();
+  ostringstream oss;
+  oss << ti.total_seconds();
+
+  Name chatroom("/ndn/broadcast/chronos");
+  chatroom.append(string("chatroom-") + oss.str());
+
+  m_startChatDialog->setInvitee(m_currentSelectedContactNamespace, chatroom.toUri());
+  m_startChatDialog->show();
+}
+
+void
+ContactPanel::startChatroom(const QString& chatroom, const QString& invitee, bool isIntroducer)
+{
+  _LOG_DEBUG("room: " << chatroom.toUtf8().constData());
+  _LOG_DEBUG("invitee: " << invitee.toUtf8().constData());
+  _LOG_DEBUG("introducer: " << std::boolalpha << isIntroducer);
+}
+
+
 #if WAF
 #include "contactpanel.moc"
 #include "contactpanel.cpp.moc"
diff --git a/src/contactpanel.h b/src/contactpanel.h
index 54c586b..dff0e56 100644
--- a/src/contactpanel.h
+++ b/src/contactpanel.h
@@ -19,6 +19,7 @@
 #include "profileeditor.h"
 #include "addcontactpanel.h"
 #include "setaliasdialog.h"
+#include "startchatdialog.h"
 
 #ifndef Q_MOC_RUN
 #include "contact-manager.h"
@@ -49,6 +50,9 @@
 
   void
   openSetAliasDialog();
+  
+  void
+  openStartChatDialog();
 
   void
   refreshContactList();
@@ -56,6 +60,9 @@
   void
   showContextMenu(const QPoint& pos);
 
+  void
+  startChatroom(const QString& chatroom, const QString& invitee, bool isIntroducer);
+
 private:
   Ui::ContactPanel *ui;
   ndn::Ptr<ContactManager> m_contactManager;
@@ -63,13 +70,15 @@
   ProfileEditor* m_profileEditor;
   AddContactPanel* m_addContactPanel;
   SetAliasDialog* m_setAliasDialog;
+  StartChatDialog* m_startChatDialog;
   QAction* m_menuInvite;
   QAction* m_menuAlias;
 
 
   std::vector<ndn::Ptr<ContactItem> > m_contactList;
 
-  std::string m_currentSelectedContact;
+  std::string m_currentSelectedContactAlias;
+  std::string m_currentSelectedContactNamespace;
 };
 
 #endif // CONTACTPANEL_H
diff --git a/src/startchatdialog.cpp b/src/startchatdialog.cpp
new file mode 100644
index 0000000..561096a
--- /dev/null
+++ b/src/startchatdialog.cpp
@@ -0,0 +1,57 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2013, Regents of the University of California
+ *                     Yingdi Yu
+ *
+ * BSD license, See the LICENSE file for more information
+ *
+ * Author: Yingdi Yu <yingdi@cs.ucla.edu>
+ */
+
+#include "startchatdialog.h"
+#include "ui_startchatdialog.h"
+
+using namespace std;
+
+StartChatDialog::StartChatDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::StartChatDialog)
+{
+    ui->setupUi(this);
+    connect(ui->okButton, SIGNAL(clicked()),
+	    this, SLOT(onOkClicked()));
+    connect(ui->cancelButton, SIGNAL(clicked()),
+	    this, SLOT(onCancelClicked()));
+}
+
+StartChatDialog::~StartChatDialog()
+{
+    delete ui;
+}
+
+void
+StartChatDialog::setInvitee(const string& invitee, const string& chatroom)
+{ 
+  m_invitee = invitee;
+  ui->chatroomInput->setText(QString::fromUtf8(chatroom.c_str()));
+}
+
+void 
+StartChatDialog::onOkClicked()
+{
+  QString chatroom = ui->chatroomInput->text();
+  QString invitee = QString::fromUtf8(m_invitee.c_str());
+  bool isIntroducer = ui->introCheckBox->isChecked();
+  emit chatroomConfirmed(chatroom, invitee, isIntroducer);
+  this->close();
+}
+
+void
+StartChatDialog::onCancelClicked()
+{ this->close(); }
+
+
+#if WAF
+#include "startchatdialog.moc"
+#include "startchatdialog.cpp.moc"
+#endif
diff --git a/src/startchatdialog.h b/src/startchatdialog.h
new file mode 100644
index 0000000..f317ec6
--- /dev/null
+++ b/src/startchatdialog.h
@@ -0,0 +1,51 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2013, Regents of the University of California
+ *                     Yingdi Yu
+ *
+ * BSD license, See the LICENSE file for more information
+ *
+ * Author: Yingdi Yu <yingdi@cs.ucla.edu>
+ */
+
+#ifndef STARTCHATDIALOG_H
+#define STARTCHATDIALOG_H
+
+#include <QDialog>
+
+#ifndef Q_MOC_RUN
+#include <string>
+#endif
+
+namespace Ui {
+class StartChatDialog;
+}
+
+class StartChatDialog : public QDialog
+{
+  Q_OBJECT
+
+public:
+  explicit StartChatDialog(QWidget *parent = 0);
+  ~StartChatDialog();
+
+  void
+  setInvitee(const std::string& invitee, const std::string& chatroom);
+
+signals:
+  void
+  chatroomConfirmed(const QString& chatroomName, const QString& invitee, bool isIntroducer);
+    
+private slots:
+  void
+  onOkClicked();
+  
+  void
+  onCancelClicked();
+
+private:
+  Ui::StartChatDialog *ui;
+  std::string m_invitee;
+};
+
+#endif // STARTCHATDIALOG_H
diff --git a/src/startchatdialog.ui b/src/startchatdialog.ui
new file mode 100644
index 0000000..bfe6217
--- /dev/null
+++ b/src/startchatdialog.ui
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>StartChatDialog</class>
+ <widget class="QDialog" name="StartChatDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>300</width>
+    <height>200</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QPushButton" name="okButton">
+   <property name="geometry">
+    <rect>
+     <x>180</x>
+     <y>150</y>
+     <width>100</width>
+     <height>32</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>OK</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="chatroomInput">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>70</y>
+     <width>260</width>
+     <height>21</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="introLabel">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>30</y>
+     <width>260</width>
+     <height>16</height>
+    </rect>
+   </property>
+   <property name="font">
+    <font>
+     <weight>75</weight>
+     <bold>true</bold>
+    </font>
+   </property>
+   <property name="text">
+    <string>Chatroom Prefix:</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="cancelButton">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>150</y>
+     <width>100</width>
+     <height>32</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Cancel</string>
+   </property>
+  </widget>
+  <widget class="QCheckBox" name="introCheckBox">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>110</y>
+     <width>260</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Set invitee as introducer</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
