diff --git a/src/numbercompletionmodel.cpp b/src/numbercompletionmodel.cpp
index ceb974f8a854a4dd3c495634b22bc24f43817348..5251d296ea25c3a8eca499e0e731256142704ba6 100644
--- a/src/numbercompletionmodel.cpp
+++ b/src/numbercompletionmodel.cpp
@@ -105,7 +105,9 @@ QHash<int,QByteArray> NumberCompletionModel::roleNames() const
 
 QVariant NumberCompletionModel::data(const QModelIndex& index, int role ) const
 {
-   if (!index.isValid()) return QVariant();
+   if (!index.isValid())
+      return QVariant();
+
    const QMap<int,ContactMethod*>::iterator i = d_ptr->m_hNumbers.end()-1-index.row();
    const ContactMethod* n = i.value();
    const int weight     = i.key  ();
@@ -220,8 +222,9 @@ void NumberCompletionModel::setPrefix(const QString& str)
    if (d_ptr->m_Enabled)
       d_ptr->updateModel();
    else {
+      beginRemoveRows(QModelIndex(), 0, d_ptr->m_hNumbers.size()-1);
       d_ptr->m_hNumbers.clear();
-      emit layoutChanged();
+      endRemoveRows();
    }
 }
 
@@ -241,20 +244,24 @@ ContactMethod* NumberCompletionModel::number(const QModelIndex& idx) const
 void NumberCompletionModelPrivate::updateModel()
 {
    QSet<ContactMethod*> numbers;
-   q_ptr->beginResetModel();
+   q_ptr->beginRemoveRows(QModelIndex(), 0, m_hNumbers.size()-1);
    m_hNumbers.clear();
+   q_ptr->endRemoveRows();
    if (!m_Prefix.isEmpty()) {
       locateNameRange  ( m_Prefix, numbers );
       locateNumberRange( m_Prefix, numbers );
 
       foreach(ContactMethod* n,numbers) {
          if (m_UseUnregisteredAccount || ((n->account() && n->account()->registrationState() == Account::RegistrationState::READY)
-          || !n->account()))
+          || !n->account())) {
+            q_ptr->beginInsertRows(QModelIndex(), m_hNumbers.size(), m_hNumbers.size());
             m_hNumbers.insert(getWeight(n),n);
+            q_ptr->endInsertRows();
+            qDebug() << "inserting at" << getWeight(n) << n->primaryName();
+            qDebug() << "rows: " << m_hNumbers.size();
+         }
       }
    }
-   q_ptr->endResetModel();
-   emit q_ptr->layoutChanged();
 }
 
 void NumberCompletionModelPrivate::getRange(QMap<QString,NumberWrapper*> map, const QString& prefix, QSet<ContactMethod*>& set) const
diff --git a/src/numbercompletionmodel.h b/src/numbercompletionmodel.h
index 772ca94144f14416fddac4a192b3bc1022179de9..84af60f16cd766b19b68d4d4dd1007f641f0e47b 100644
--- a/src/numbercompletionmodel.h
+++ b/src/numbercompletionmodel.h
@@ -53,6 +53,8 @@ public:
    virtual bool          setData    ( const QModelIndex& index, const QVariant &value, int role            )       override;
    virtual int           columnCount( const QModelIndex& parent = QModelIndex()                            ) const override;
    virtual QVariant      headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
+//    virtual QModelIndex   index      ( int row, int column, const QModelIndex& parent=QModelIndex()) const override;
+
    virtual QHash<int,QByteArray> roleNames() const override;
 
    //Setters