diff --git a/RingWinClient.pro b/RingWinClient.pro
index 3ce82f2d8c0d9387ca14d01d07f7cd855e760c17..e4533a4dbee905a215c14cfb86812e66539749bd 100644
--- a/RingWinClient.pro
+++ b/RingWinClient.pro
@@ -114,18 +114,22 @@ win32 {
                             $$RUNTIMEDIR/libfreetype-6.dll $$RUNTIMEDIR/libglib-2.0-0.dll \
                             $$RUNTIMEDIR/libharfbuzz-0.dll \
                             $$RUNTIMEDIR/libintl-8.dll $$RUNTIMEDIR/libpcre-1.dll \
-                            $$RUNTIMEDIR/libpcre16-0.dll $$RUNTIMEDIR/libpng16-16.dll
+                            $$RUNTIMEDIR/libpcre16-0.dll $$RUNTIMEDIR/libpng16-16.dll \
+                            $$RUNTIMEDIR/libjpeg-62.dll
     QTDEPSRUNTIME.path = $$OUT_PWD/release
 
     QTPLATFORMS.files = $$(QTDIR)/plugins/platforms/qwindows.dll
     QTPLATFORMS.path = $$OUT_PWD/release/platforms
 
+    QTPLUGINIMAGE.files = $$(QTDIR)/plugins/imageformats/
+    QTPLUGINIMAGE.path = $$OUT_PWD/release
+
     LIBSTD.files = $$RUNTIMEDIR/libgcc_s_sjlj-1.dll $$RUNTIMEDIR/libstdc++-6.dll \
                     $$RUNTIMEDIR/libwinpthread-1.dll
     LIBSTD.path = $$OUT_PWD/release
 
     INSTALLS += RINGTONES PACKAGING LICENSE RUNTIME QTRUNTIME QTDEPSRUNTIME \
-                 QTPLATFORMS LIBSTD
+                QTPLUGINIMAGE QTPLATFORMS LIBSTD
 }
 
 
diff --git a/callwidget.cpp b/callwidget.cpp
index ff6072473b5dcc045f1f200395e832c3bea3bc4a..48dba3b9be5c9aecab371bbdd6a8ac2302036473 100644
--- a/callwidget.cpp
+++ b/callwidget.cpp
@@ -36,7 +36,8 @@
 
 CallWidget::CallWidget(QWidget *parent) :
     NavWidget(Main ,parent),
-    ui(new Ui::CallWidget)
+    ui(new Ui::CallWidget),
+    menu_(new QMenu())
 {
     ui->setupUi(this);
 
@@ -83,6 +84,73 @@ CallWidget::CallWidget(QWidget *parent) :
         ui->historyList->setItemDelegate(new HistoryDelegate());
         historyModel.release();
 
+        auto sortActionGroup = new QActionGroup(this);
+
+        auto alphabetAction = new QAction("Alphetical Order Ascending", this);
+        alphabetAction->setCheckable(true);
+        sortActionGroup->addAction(alphabetAction);
+        menu_->addAction(alphabetAction);
+        connect(alphabetAction, &QAction::triggered, this, [=]() {
+            CategorizedHistoryModel::instance()->setCategoryRole(static_cast<int>(Call::Role::Name));
+            historyModel->setSortRole(static_cast<int>(Call::Role::Name));
+            historyModel->sort(0,Qt::AscendingOrder);
+        });
+
+        auto alphabetDownAction = new QAction("Alphetical Order Descending", this);
+        alphabetDownAction->setCheckable(true);
+        sortActionGroup->addAction(alphabetDownAction);
+        menu_->addAction(alphabetDownAction);
+        connect(alphabetDownAction, &QAction::triggered, this, [=]() {
+            CategorizedHistoryModel::instance()->setCategoryRole(static_cast<int>(Call::Role::Name));
+            historyModel->setSortRole(static_cast<int>(Call::Role::Name));
+            historyModel->sort(0,Qt::DescendingOrder);
+        });
+
+        auto dateAction = new QAction("Date Order Ascending", this);
+        dateAction->setCheckable(true);
+        sortActionGroup->addAction(dateAction);
+        menu_->addAction(dateAction);
+        connect(dateAction, &QAction::triggered, this, [=]() {
+            CategorizedHistoryModel::instance()->setCategoryRole(static_cast<int>(Call::Role::FuzzyDate));
+            historyModel->setSortRole(static_cast<int>(Call::Role::Date));
+            historyModel->sort(0,Qt::AscendingOrder);
+        });
+
+        auto dateDownAction = new QAction("Date Order Descending", this);
+        dateDownAction->setCheckable(true);
+        sortActionGroup->addAction(dateDownAction);
+        menu_->addAction(dateDownAction);
+        connect(dateDownAction, &QAction::triggered, this, [=]() {
+            CategorizedHistoryModel::instance()->setCategoryRole(static_cast<int>(Call::Role::FuzzyDate));
+            historyModel->setSortRole(static_cast<int>(Call::Role::Date));
+            historyModel->sort(0,Qt::DescendingOrder);
+        });
+        dateDownAction->setChecked(true);
+        dateDownAction->trigger();
+
+        auto callsNumberAction = new QAction("Number of calls ascending", this);
+        callsNumberAction->setCheckable(true);
+        sortActionGroup->addAction(callsNumberAction);
+        menu_->addAction(callsNumberAction);
+        connect(callsNumberAction, &QAction::triggered, this, [=]() {
+            CategorizedHistoryModel::instance()->setCategoryRole(static_cast<int>(Call::Role::CallCount));
+            historyModel->setSortRole(static_cast<int>(Call::Role::CallCount));
+            historyModel->sort(0,Qt::AscendingOrder);
+        });
+
+        auto callsDownNumberAction = new QAction("Number of calls descending", this);
+        callsDownNumberAction->setCheckable(true);
+        sortActionGroup->addAction(callsDownNumberAction);
+        menu_->addAction(callsDownNumberAction);
+        connect(callsDownNumberAction, &QAction::triggered, this, [=]() {
+            CategorizedHistoryModel::instance()->setCategoryRole(static_cast<int>(Call::Role::CallCount));
+            historyModel->setSortRole(static_cast<int>(Call::Role::CallCount));
+            historyModel->sort(0,Qt::DescendingOrder);
+        });
+
+        ui->sortToolButton->setMenu(menu_);
+        ui->sortToolButton->setPopupMode(QToolButton::InstantPopup);
+
         CategorizedContactModel::instance()->setSortAlphabetical(false);
         ui->contactView->setModel(CategorizedContactModel::instance());
         ui->contactView->setItemDelegate(new ContactDelegate());
@@ -281,18 +349,14 @@ CallWidget::atExit() {
 void
 CallWidget::on_contactView_doubleClicked(const QModelIndex &index)
 {
-    auto contact =  index.data((int)ContactMethod::Role::Uri);
     QString uri;
 
-    if (contact.isValid()) {
-        uri = contact.toString();
-    } else {
-        auto var = index.data((int)Person::Role::Object);
-        if (var.isValid()) {
-            Person* person = var.value<Person*>();
-            if (person->phoneNumbers().size() > 0) {
-                uri = person->phoneNumbers().at(0)->uri();
-            }
+    auto var = index.child(0,0).data(
+                static_cast<int>(Person::Role::Object));
+    if (var.isValid()) {
+        Person* person = var.value<Person*>();
+        if (person->phoneNumbers().size() > 0) {
+            uri = person->phoneNumbers().at(0)->uri();
         }
     }
     if (not uri.isEmpty()) {
diff --git a/callwidget.h b/callwidget.h
index 0ded03ed044f6a74aa09687a5f731795d185f8be..edbd5f77e7213e47ca0e3682c1d384ab9e6483a3 100644
--- a/callwidget.h
+++ b/callwidget.h
@@ -22,6 +22,7 @@
 #include <QWidget>
 #include <QVector>
 #include <QString>
+#include <QMenu>
 
 #include "navwidget.h"
 
@@ -80,6 +81,8 @@ private:
     CallModel* callModel_;
     int outputVolume_;
     int inputVolume_;
+    QMenu *menu_;
+private:
     void findRingAccount();
     void setActualCall(Call *value);
 };
diff --git a/callwidget.ui b/callwidget.ui
index 9719cfb1d15048ae317fb47a035f74a9bf2f433b..7e99ac784849bc309d2e57a1039c73b5322fb6bb 100644
--- a/callwidget.ui
+++ b/callwidget.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>700</width>
-    <height>695</height>
+    <height>711</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -20,6 +20,25 @@
    <string>Form</string>
   </property>
   <layout class="QGridLayout" name="gridLayout">
+   <item row="1" column="1" alignment="Qt::AlignHCenter">
+    <widget class="QLabel" name="ringIdLabel">
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>0</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>Your Ring ID:</string>
+     </property>
+     <property name="margin">
+      <number>0</number>
+     </property>
+     <property name="textInteractionFlags">
+      <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
+     </property>
+    </widget>
+   </item>
    <item row="0" column="0">
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <property name="spacing">
@@ -64,7 +83,7 @@
           </size>
          </property>
          <property name="currentIndex">
-          <number>1</number>
+          <number>0</number>
          </property>
          <widget class="QWidget" name="historyTab">
           <attribute name="title">
@@ -83,6 +102,34 @@
            <property name="bottomMargin">
             <number>4</number>
            </property>
+           <item>
+            <layout class="QHBoxLayout" name="horizontalLayout_4">
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QLineEdit" name="lineEdit">
+               <property name="placeholderText">
+                <string>Search</string>
+               </property>
+               <property name="clearButtonEnabled">
+                <bool>true</bool>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QToolButton" name="sortToolButton">
+               <property name="text">
+                <string/>
+               </property>
+               <property name="icon">
+                <iconset resource="ressources.qrc">
+                 <normaloff>:/images/sort-variant.png</normaloff>:/images/sort-variant.png</iconset>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </item>
            <item>
             <widget class="QTreeView" name="historyList">
              <property name="sizePolicy">
@@ -103,6 +150,9 @@
                <height>16777215</height>
               </size>
              </property>
+             <property name="frameShadow">
+              <enum>QFrame::Plain</enum>
+             </property>
             </widget>
            </item>
           </layout>
@@ -125,7 +175,26 @@
             <number>4</number>
            </property>
            <item>
-            <widget class="QListView" name="contactView"/>
+            <widget class="QListView" name="contactView">
+             <property name="frameShadow">
+              <enum>QFrame::Plain</enum>
+             </property>
+             <property name="horizontalScrollBarPolicy">
+              <enum>Qt::ScrollBarAsNeeded</enum>
+             </property>
+             <property name="sizeAdjustPolicy">
+              <enum>QAbstractScrollArea::AdjustIgnored</enum>
+             </property>
+             <property name="resizeMode">
+              <enum>QListView::Fixed</enum>
+             </property>
+             <property name="layoutMode">
+              <enum>QListView::SinglePass</enum>
+             </property>
+             <property name="wordWrap">
+              <bool>false</bool>
+             </property>
+            </widget>
            </item>
           </layout>
          </widget>
@@ -170,189 +239,176 @@
     </layout>
    </item>
    <item row="0" column="1">
-    <layout class="QVBoxLayout" name="verticalLayout">
-     <property name="sizeConstraint">
-      <enum>QLayout::SetMaximumSize</enum>
-     </property>
-     <item>
-      <widget class="QFrame" name="videoFrame">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="minimumSize">
-        <size>
-         <width>0</width>
-         <height>325</height>
-        </size>
-       </property>
-       <property name="frameShape">
-        <enum>QFrame::StyledPanel</enum>
-       </property>
-       <property name="frameShadow">
-        <enum>QFrame::Raised</enum>
-       </property>
-       <layout class="QVBoxLayout" name="verticalLayout_7">
-        <item>
-         <widget class="VideoWidget" name="videoWidget" native="true"/>
-        </item>
-        <item>
-         <widget class="QWidget" name="callInvite" native="true">
-          <layout class="QVBoxLayout" name="verticalLayout_4">
-           <item>
-            <layout class="QVBoxLayout" name="verticalLayout_3">
-             <item alignment="Qt::AlignHCenter">
-              <widget class="QLabel" name="callLabel">
-               <property name="text">
-                <string>Call</string>
-               </property>
-              </widget>
-             </item>
-            </layout>
-           </item>
-           <item>
-            <layout class="QHBoxLayout" name="horizontalLayout">
-             <item>
-              <widget class="QPushButton" name="acceptButton">
-               <property name="text">
-                <string>Accept</string>
-               </property>
-               <property name="icon">
-                <iconset resource="ressources.qrc">
-                 <normaloff>:/images/phone.png</normaloff>:/images/phone.png</iconset>
-               </property>
-              </widget>
-             </item>
-             <item>
-              <widget class="QPushButton" name="refuseButton">
-               <property name="text">
-                <string>Refuse</string>
-               </property>
-               <property name="icon">
-                <iconset resource="ressources.qrc">
-                 <normaloff>:/images/phone-hangup.png</normaloff>:/images/phone-hangup.png</iconset>
-               </property>
-              </widget>
-             </item>
-            </layout>
-           </item>
-          </layout>
-         </widget>
-        </item>
-       </layout>
-      </widget>
-     </item>
-     <item alignment="Qt::AlignHCenter">
-      <widget class="QLabel" name="callStateLabel">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>Call State :</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QWidget" name="horizontalWidget" native="true">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <layout class="QHBoxLayout" name="horizontalLayout_2">
-        <item>
-         <widget class="QPushButton" name="muteSpeakerButton">
-          <property name="text">
-           <string/>
-          </property>
-          <property name="icon">
-           <iconset resource="ressources.qrc">
-            <normaloff>:/images/speaker-off.png</normaloff>:/images/speaker-off.png</iconset>
-          </property>
-          <property name="iconSize">
-           <size>
-            <width>25</width>
-            <height>25</height>
-           </size>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QSlider" name="speakerSlider">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QPushButton" name="muteMicButton">
-          <property name="text">
-           <string/>
-          </property>
-          <property name="icon">
-           <iconset resource="ressources.qrc">
-            <normaloff>:/images/microphone-off.png</normaloff>:/images/microphone-off.png</iconset>
-          </property>
-          <property name="iconSize">
-           <size>
-            <width>25</width>
-            <height>25</height>
-           </size>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QSlider" name="micSlider">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-         </widget>
-        </item>
-       </layout>
-       <zorder>micSlider</zorder>
-       <zorder>muteMicButton</zorder>
-       <zorder>speakerSlider</zorder>
-       <zorder>muteSpeakerButton</zorder>
-      </widget>
-     </item>
-     <item>
-      <widget class="QListView" name="messageOutput">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QLineEdit" name="messageInput"/>
-     </item>
-    </layout>
-   </item>
-   <item row="1" column="1" alignment="Qt::AlignHCenter">
-    <widget class="QLabel" name="ringIdLabel">
-     <property name="minimumSize">
-      <size>
-       <width>0</width>
-       <height>0</height>
-      </size>
-     </property>
-     <property name="text">
-      <string>Your Ring ID:</string>
-     </property>
-     <property name="margin">
-      <number>0</number>
-     </property>
-     <property name="textInteractionFlags">
-      <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
-     </property>
+    <widget class="QWidget" name="CallSubGroup" native="true">
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <property name="sizeConstraint">
+       <enum>QLayout::SetMaximumSize</enum>
+      </property>
+      <item>
+       <widget class="QFrame" name="videoFrame">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>325</height>
+         </size>
+        </property>
+        <property name="frameShape">
+         <enum>QFrame::StyledPanel</enum>
+        </property>
+        <property name="frameShadow">
+         <enum>QFrame::Raised</enum>
+        </property>
+        <layout class="QVBoxLayout" name="verticalLayout_7">
+         <item>
+          <widget class="VideoWidget" name="videoWidget" native="true"/>
+         </item>
+         <item>
+          <widget class="QWidget" name="callInvite" native="true">
+           <layout class="QVBoxLayout" name="verticalLayout_4">
+            <item>
+             <layout class="QVBoxLayout" name="verticalLayout_3">
+              <item alignment="Qt::AlignHCenter">
+               <widget class="QLabel" name="callLabel">
+                <property name="text">
+                 <string>Call</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item>
+             <layout class="QHBoxLayout" name="horizontalLayout">
+              <item>
+               <widget class="QPushButton" name="acceptButton">
+                <property name="text">
+                 <string>Accept</string>
+                </property>
+                <property name="icon">
+                 <iconset resource="ressources.qrc">
+                  <normaloff>:/images/phone.png</normaloff>:/images/phone.png</iconset>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="refuseButton">
+                <property name="text">
+                 <string>Refuse</string>
+                </property>
+                <property name="icon">
+                 <iconset resource="ressources.qrc">
+                  <normaloff>:/images/phone-hangup.png</normaloff>:/images/phone-hangup.png</iconset>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLabel" name="callStateLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Call State :</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QWidget" name="horizontalWidget" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <item>
+          <widget class="QPushButton" name="muteSpeakerButton">
+           <property name="text">
+            <string/>
+           </property>
+           <property name="icon">
+            <iconset resource="ressources.qrc">
+             <normaloff>:/images/speaker-off.png</normaloff>:/images/speaker-off.png</iconset>
+           </property>
+           <property name="iconSize">
+            <size>
+             <width>25</width>
+             <height>25</height>
+            </size>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QSlider" name="speakerSlider">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="muteMicButton">
+           <property name="text">
+            <string/>
+           </property>
+           <property name="icon">
+            <iconset resource="ressources.qrc">
+             <normaloff>:/images/microphone-off.png</normaloff>:/images/microphone-off.png</iconset>
+           </property>
+           <property name="iconSize">
+            <size>
+             <width>25</width>
+             <height>25</height>
+            </size>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QSlider" name="micSlider">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+          </widget>
+         </item>
+        </layout>
+        <zorder>micSlider</zorder>
+        <zorder>muteMicButton</zorder>
+        <zorder>speakerSlider</zorder>
+        <zorder>muteSpeakerButton</zorder>
+       </widget>
+      </item>
+      <item>
+       <widget class="QListView" name="messageOutput">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="messageInput">
+        <property name="clearButtonEnabled">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
     </widget>
    </item>
   </layout>
diff --git a/mainbar.ui b/mainbar.ui
index a4ce0e5fc5dbd07eb6ba97165339c6d3ac81b951..f33998b6c8ac44422141269052e814049fa0464d 100644
--- a/mainbar.ui
+++ b/mainbar.ui
@@ -532,6 +532,9 @@
          <height>50</height>
         </size>
        </property>
+       <property name="clearButtonEnabled">
+        <bool>true</bool>
+       </property>
       </widget>
      </item>
      <item>
diff --git a/ressources.qrc b/ressources.qrc
index a7427f3b82bd83ad85da3b84a82a46736234cdfd..ef0f511d14a094aef429738a4fc3aa23556c379a 100644
--- a/ressources.qrc
+++ b/ressources.qrc
@@ -17,5 +17,7 @@
         <file>images/plus.png</file>
         <file>images/settings.png</file>
         <file>images/speaker-off.png</file>
+        <file>images/account.png</file>
+        <file>images/sort-variant.png</file>
     </qresource>
 </RCC>