diff --git a/src/categorizedhistorymodel.h b/src/categorizedhistorymodel.h
index c5f5f59d7e2bb01d61e2275378862c1cb297ceb4..6272bd063a40719e869d09a22102ea45c0becc5d 100644
--- a/src/categorizedhistorymodel.h
+++ b/src/categorizedhistorymodel.h
@@ -38,7 +38,8 @@ class AbstractHistoryBackend;
 class CategorizedHistoryModelPrivate;
 //TODO split ASAP
 ///CategorizedHistoryModel: History call manager
-class LIB_EXPORT CategorizedHistoryModel : public QAbstractItemModel, public CollectionManagerInterface<Call> {
+class LIB_EXPORT CategorizedHistoryModel : public QAbstractItemModel, public CollectionManagerInterface<Call>
+{
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
    Q_OBJECT
@@ -67,7 +68,6 @@ public:
    void setHistoryLimited(bool isLimited);
    void setHistoryLimit(int numberOfDays);
 
-
    //Model implementation
    virtual bool          setData     ( const QModelIndex& index, const QVariant &value, int role   ) override;
    virtual QVariant      data        ( const QModelIndex& index, int role = Qt::DisplayRole        ) const override;
diff --git a/src/certificate.cpp b/src/certificate.cpp
index 8652c45de31a8540ee19230c70001723188adc9c..8909baa5e07982d2824d466e451b86107df4e66d 100644
--- a/src/certificate.cpp
+++ b/src/certificate.cpp
@@ -314,14 +314,14 @@ void CertificatePrivate::loadChecks()
    }
 }
 
-Certificate::Certificate(const QUrl& path, Type type, const QUrl& privateKey) : QObject(CertificateModel::instance()),d_ptr(new CertificatePrivate(LoadingType::FROM_PATH))
+Certificate::Certificate(const QUrl& path, Type type, const QUrl& privateKey) : ItemBase<QObject>(CertificateModel::instance()),d_ptr(new CertificatePrivate(LoadingType::FROM_PATH))
 {
    Q_UNUSED(privateKey)
    d_ptr->m_Path = path.path();
    d_ptr->m_Type = type;
 }
 
-Certificate::Certificate(const QByteArray& content, Type type): QObject(CertificateModel::instance()),d_ptr(new CertificatePrivate(LoadingType::FROM_CONTENT))
+Certificate::Certificate(const QByteArray& content, Type type): ItemBase<QObject>(CertificateModel::instance()),d_ptr(new CertificatePrivate(LoadingType::FROM_CONTENT))
 {
    d_ptr->m_Content = content;
    d_ptr->m_Type    = type;
diff --git a/src/certificate.h b/src/certificate.h
index a665939540cfcde1092bc5093d308e8911f6c331..dcdc8b48e994285812f605af7d586574b38d9391 100644
--- a/src/certificate.h
+++ b/src/certificate.h
@@ -19,6 +19,7 @@
 #define CERTIFICATE_H
 
 #include "typedefs.h"
+#include "itembase.h"
 
 //Qt
 #include <QUrl>
@@ -29,7 +30,8 @@ class CertificatePrivate;
 /**
  * This class represent a conceptual certificate.
  */
-class LIB_EXPORT Certificate : public QObject {
+class LIB_EXPORT Certificate : public ItemBase<QObject>
+{
    Q_OBJECT
 
    friend class CertificateModel;
diff --git a/src/certificatemodel.cpp b/src/certificatemodel.cpp
index a50936c787ef960ddd2b7c59d04efee2ca5c5ed4..f92eb717fbc47ab067277b0acf63b626ac59dd42 100644
--- a/src/certificatemodel.cpp
+++ b/src/certificatemodel.cpp
@@ -164,7 +164,7 @@ CertificateModelPrivate::CertificateModelPrivate(CertificateModel* parent) : q_p
 
 }
 
-CertificateModel::CertificateModel(QObject* parent) : QAbstractItemModel(parent),
+CertificateModel::CertificateModel(QObject* parent) : QAbstractItemModel(parent), CollectionManagerInterface<Certificate>(this),
  d_ptr(new CertificateModelPrivate(this))
 {
    setObjectName("CertificateModel");
@@ -715,4 +715,22 @@ QAbstractItemModel* CertificateModel::model(const QModelIndex& idx) const
    return d_ptr->getModelCommon(node);
 }
 
+void CertificateModel::collectionAddedCallback(CollectionInterface* collection)
+{
+   Q_UNUSED(collection)
+}
+
+bool CertificateModel::addItemCallback(const Certificate* item)
+{
+   Q_UNUSED(item)
+   return false;
+}
+
+bool CertificateModel::removeItemCallback(const Certificate* item)
+{
+   Q_UNUSED(item)
+   return false;
+}
+
+
 #include <certificatemodel.moc>
diff --git a/src/certificatemodel.h b/src/certificatemodel.h
index 608a2ac0cfe5640da0ca217dfd97b4fb6791b9e5..b9c2576d2c271641ae4452fe3f445342dcf6ef96 100644
--- a/src/certificatemodel.h
+++ b/src/certificatemodel.h
@@ -26,7 +26,7 @@ class Account;
 
 class CertificateModelPrivate;
 
-class LIB_EXPORT CertificateModel : public QAbstractItemModel
+class LIB_EXPORT CertificateModel : public QAbstractItemModel, public CollectionManagerInterface<Certificate>
 {
    Q_OBJECT
 public:
@@ -84,6 +84,12 @@ public:
    static CertificateModel* instance();
 
 private:
+
+   //Backend interface
+   virtual void collectionAddedCallback(CollectionInterface* collection) override;
+   virtual bool addItemCallback(const Certificate* item) override;
+   virtual bool removeItemCallback(const Certificate* item) override;
+
    CertificateModelPrivate* d_ptr;
    Q_DECLARE_PRIVATE(CertificateModel)
 };
diff --git a/src/itembase.h b/src/itembase.h
index a4ac370d36c544ae5bf527f9620d03e6149118dd..e40c611ecb40bbc2e70b13dc86ba9f3bf0e84e2a 100644
--- a/src/itembase.h
+++ b/src/itembase.h
@@ -36,10 +36,10 @@ public:
    virtual CollectionInterface* collection() const final;
 
    //Mutator methods
-   bool save() const;
-   bool edit()      ;
-   bool remove()    ;
-   bool isActive() const ;
+   bool save    () const;
+   bool edit    ()      ;
+   bool remove  ()      ;
+   bool isActive() const;
 
    //Setter
    void setCollection(CollectionInterface* backend);