diff --git a/src/call.cpp b/src/call.cpp
index a72b100fa5d517db71d389a78119e5a5da62459f..cd1f559ba18ef9d7ffb4cc9e999f9aa87b7f25cb 100644
--- a/src/call.cpp
+++ b/src/call.cpp
@@ -65,7 +65,6 @@
 #include "media/text.h"
 #include "media/file.h"
 
-//TODO remove
 #include "securityevaluationmodel.h"
 #include "globalinstances.h"
 #include "interfaces/pixmapmanipulatori.h"
@@ -2123,6 +2122,8 @@ QVariant Call::roleData(int role) const
       case static_cast<int>(Ring::Role::Number):
       case static_cast<int>(Call::Role::Number):
          return peerContactMethod()->uri();
+      case Qt::DecorationRole:
+         return GlobalInstances::pixmapManipulator().decorationRole(this);
       case static_cast<int>(Call::Role::Direction):
          return QVariant::fromValue(d_ptr->m_Direction);
       case static_cast<int>(Call::Role::Date):
diff --git a/src/contactmethod.cpp b/src/contactmethod.cpp
index 9adc6db223f2a26d54ee4f6f10011a47ed4ff70b..6111e0f64eb5cf7195f813c83d5b597520aec93e 100644
--- a/src/contactmethod.cpp
+++ b/src/contactmethod.cpp
@@ -41,6 +41,9 @@
 #include "accountmodel.h"
 #include "certificatemodel.h"
 #include "media/textrecording.h"
+#include "mime.h"
+#include "globalinstances.h"
+#include "interfaces/pixmapmanipulatori.h"
 
 //Private
 #include "private/phonedirectorymodel_p.h"
@@ -480,6 +483,8 @@ QVariant ContactMethod::roleData(int role) const
       case static_cast<int>(Call::Role::Number):
          cat = uri();
          break;
+      case Qt::DecorationRole:
+         return GlobalInstances::pixmapManipulator().decorationRole(this);
       case static_cast<int>(Call::Role::Direction):
          cat = cat = !lastCall ? QVariant() : QVariant::fromValue(lastCall->direction());
          break;
diff --git a/src/interfaces/pixmapmanipulatori.h b/src/interfaces/pixmapmanipulatori.h
index 0a2275a54e8d2ee21eda08cd0673bf3c03b39951..3d57ca235d579095997d89dee930e9f40ff87dc5 100644
--- a/src/interfaces/pixmapmanipulatori.h
+++ b/src/interfaces/pixmapmanipulatori.h
@@ -75,6 +75,10 @@ public:
     virtual QVariant   securityLevelIcon(const SecurityEvaluationModel::SecurityLevel level) const = 0;
     virtual QVariant   historySortingCategoryIcon(const CategorizedHistoryModel::SortedProxy::Categories cat) const = 0;
     virtual QVariant   contactSortingCategoryIcon(const CategorizedContactModel::SortedProxy::Categories cat) const = 0;
+    virtual QVariant   decorationRole(const QModelIndex&   index) = 0;
+    virtual QVariant   decorationRole(const Call*          c    ) = 0;
+    virtual QVariant   decorationRole(const ContactMethod* cm   ) = 0;
+    virtual QVariant   decorationRole(const Person*        p    ) = 0;
 
     /**
      * Return the icons associated with the action and its state
diff --git a/src/person.cpp b/src/person.cpp
index b79a7dc7dde66d95aa4c6eb7fae76f340f414919..477a5108f355a7f61356d53800ca0822dc1c458f 100644
--- a/src/person.cpp
+++ b/src/person.cpp
@@ -575,6 +575,8 @@ QVariant Person::roleData(int role) const
       case Qt::EditRole:
       case static_cast<int>(Ring::Role::Name):
          return QVariant(formattedName());
+      case Qt::DecorationRole:
+         return GlobalInstances::pixmapManipulator().decorationRole(this);
       case static_cast<int>(Person::Role::Organization):
          return QVariant(organization());
       case static_cast<int>(Person::Role::Group):
diff --git a/src/phonedirectorymodel.cpp b/src/phonedirectorymodel.cpp
index 3641f7d39db7f7aed4d66d30d0a7a48487d592c5..766d2cdfe04558afdf6625b5ca3288463e5cb698 100644
--- a/src/phonedirectorymodel.cpp
+++ b/src/phonedirectorymodel.cpp
@@ -104,15 +104,7 @@ QVariant PhoneDirectoryModel::data(const QModelIndex& index, int role ) const
    const ContactMethod* number = d_ptr->m_lNumbers[index.row()];
    switch (static_cast<PhoneDirectoryModelPrivate::Columns>(index.column())) {
       case PhoneDirectoryModelPrivate::Columns::URI:
-         switch (role) {
-            case Qt::DisplayRole:
-               return number->uri();
-            case Qt::DecorationRole :
-               return GlobalInstances::pixmapManipulator().callPhoto(number,QSize(16,16));
-            case (int) Role::Object:
-               return QVariant::fromValue(const_cast<ContactMethod*>(number));
-         }
-         break;
+         return number->roleData(role);
       case PhoneDirectoryModelPrivate::Columns::TYPE:
          switch (role) {
             case Qt::DisplayRole:
diff --git a/src/pixmapmanipulatordefault.cpp b/src/pixmapmanipulatordefault.cpp
index 99929ddffdfcc6dfa3191d264d77469ecdc5c01e..24eeb935abed52cd7fd686df21d5a89aea61894a 100644
--- a/src/pixmapmanipulatordefault.cpp
+++ b/src/pixmapmanipulatordefault.cpp
@@ -110,4 +110,29 @@ QVariant PixmapManipulatorDefault::contactSortingCategoryIcon(const CategorizedC
     return QVariant();
 }
 
+QVariant PixmapManipulatorDefault::decorationRole(const QModelIndex& index)
+{
+   Q_UNUSED(index)
+   return QVariant();
+}
+
+QVariant PixmapManipulatorDefault::decorationRole(const Call* c)
+{
+   Q_UNUSED(c)
+   return QVariant();
+}
+
+QVariant PixmapManipulatorDefault::decorationRole(const ContactMethod* cm)
+{
+   Q_UNUSED(cm)
+   return QVariant();
+}
+
+QVariant PixmapManipulatorDefault::decorationRole(const Person* p)
+{
+   Q_UNUSED(p)
+   return QVariant();
+}
+
+
 } // namespace Interfaces
diff --git a/src/pixmapmanipulatordefault.h b/src/pixmapmanipulatordefault.h
index eb8d5d90564f7718d0d98b19e8dd46f539478faa..0ec58ff768fb209ff0e2200a8cb1ad6e29029095 100644
--- a/src/pixmapmanipulatordefault.h
+++ b/src/pixmapmanipulatordefault.h
@@ -35,7 +35,10 @@ public:
     QVariant   securityLevelIcon(const SecurityEvaluationModel::SecurityLevel level) const override;
     QVariant   historySortingCategoryIcon(const CategorizedHistoryModel::SortedProxy::Categories cat) const override;
     QVariant   contactSortingCategoryIcon(const CategorizedContactModel::SortedProxy::Categories cat) const override;
-
+    QVariant   decorationRole(const QModelIndex& index) override;
+    QVariant   decorationRole(const Call*              c    ) override;
+    QVariant   decorationRole(const ContactMethod*     cm   ) override;
+    QVariant   decorationRole(const Person*            p    ) override;
     /**
      * Return the icons associated with the action and its state
      */