diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9738a88
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+.waf-*
+*.pyc
+build/
+.lock*
+*.o
+*.DS_Store
+*~
+
diff --git a/src/chronochat.cpp b/src/chronochat.cpp
new file mode 100644
index 0000000..523a835
--- /dev/null
+++ b/src/chronochat.cpp
@@ -0,0 +1,14 @@
+#include "chronochat.h"
+#include "ui_chronochat.h"
+
+ChronoChat::ChronoChat(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::ChronoChat)
+{
+    ui->setupUi(this);
+}
+
+ChronoChat::~ChronoChat()
+{
+    delete ui;
+}
diff --git a/src/chronochat.h b/src/chronochat.h
new file mode 100644
index 0000000..1bf307f
--- /dev/null
+++ b/src/chronochat.h
@@ -0,0 +1,22 @@
+#ifndef CHRONOCHAT_H
+#define CHRONOCHAT_H
+
+#include <QDialog>
+
+namespace Ui {
+class ChronoChat;
+}
+
+class ChronoChat : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit ChronoChat(QWidget *parent = 0);
+    ~ChronoChat();
+
+private:
+    Ui::ChronoChat *ui;
+};
+
+#endif // CHRONOCHAT_H
diff --git a/src/chronochat.ui b/src/chronochat.ui
new file mode 100644
index 0000000..dcc8755
--- /dev/null
+++ b/src/chronochat.ui
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ChronoChat</class>
+ <widget class="QDialog" name="ChronoChat">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>600</width>
+    <height>450</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>ChronoChat</string>
+  </property>
+  <widget class="QWidget" name="">
+   <property name="geometry">
+    <rect>
+     <x>10</x>
+     <y>10</y>
+     <width>581</width>
+     <height>431</height>
+    </rect>
+   </property>
+   <layout class="QHBoxLayout" name="horizontalLayout" stretch="18,40">
+    <item>
+     <widget class="QListView" name="Participants"/>
+    </item>
+    <item>
+     <layout class="QVBoxLayout" name="ChatLayout" stretch="38,5">
+      <property name="sizeConstraint">
+       <enum>QLayout::SetDefaultConstraint</enum>
+      </property>
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QTextEdit" name="Transcript">
+        <property name="readOnly">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QTextEdit" name="Message"/>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/waf b/waf
new file mode 100755
index 0000000..911b4ab
--- /dev/null
+++ b/waf
Binary files differ
diff --git a/wscript b/wscript
new file mode 100644
index 0000000..80f3db1
--- /dev/null
+++ b/wscript
@@ -0,0 +1,19 @@
+# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+VERSION='0.1'
+APPNAME='QT-Test'
+
+def options(opt):
+    opt.load('compiler_c compiler_cxx boost protoc qt4')
+    
+def configure(conf):
+    conf.load("compiler_c compiler_cxx")
+
+#    conf.add_supported_cxxflags (cxxflags = ['-O3', '-g'])
+
+    conf.load('protoc')
+
+    conf.load('qt4')
+
+    conf.load('boost')
+
+    conf.check_boost(lib='system random thread')
\ No newline at end of file
