diff --git a/src/app/conversationlistmodelbase.cpp b/src/app/conversationlistmodelbase.cpp
index 3a60b53d1dfd07e6f177d78ab72df41e3eca68fc..3fc5ce470f2d6005f40d22476d36635a0fe26596 100644
--- a/src/app/conversationlistmodelbase.cpp
+++ b/src/app/conversationlistmodelbase.cpp
@@ -23,7 +23,12 @@ ConversationListModelBase::ConversationListModelBase(LRCInstance* instance, QObj
     : AbstractListModelBase(parent)
 {
     lrcInstance_ = instance;
-    model_ = lrcInstance_->getCurrentConversationModel();
+    try {
+        auto& accInfo = lrcInstance_->getCurrentAccountInfo();
+        accountId_ = accInfo.id;
+        model_ = accInfo.conversationModel.get();
+    } catch (...) {
+    }
 }
 
 int
@@ -47,12 +52,12 @@ ConversationListModelBase::roleNames() const
 QVariant
 ConversationListModelBase::dataForItem(item_t item, int role) const
 {
+    auto& accInfo = lrcInstance_->getAccountInfo(accountId_);
     switch (role) {
     case Role::InCall: {
         const auto& convInfo = lrcInstance_->getConversationFromConvUid(item.uid);
         if (!convInfo.uid.isEmpty()) {
-            auto* callModel = lrcInstance_->getCurrentCallModel();
-            return QVariant(callModel->hasCall(convInfo.callId));
+            return QVariant(accInfo.callModel->hasCall(convInfo.callId));
         }
         return QVariant(false);
     }
@@ -69,9 +74,8 @@ ConversationListModelBase::dataForItem(item_t item, int role) const
     case Role::CallStackViewShouldShow: {
         const auto& convInfo = lrcInstance_->getConversationFromConvUid(item.uid);
         if (!convInfo.uid.isEmpty() && !convInfo.callId.isEmpty()) {
-            auto* callModel = lrcInstance_->getCurrentCallModel();
-            const auto& call = callModel->getCall(convInfo.callId);
-            return QVariant(callModel->hasCall(convInfo.callId)
+            const auto& call = accInfo.callModel->getCall(convInfo.callId);
+            return QVariant(accInfo.callModel->hasCall(convInfo.callId)
                             && ((!call.isOutgoing
                                  && (call.status == call::Status::IN_PROGRESS
                                      || call.status == call::Status::PAUSED
@@ -141,7 +145,7 @@ ConversationListModelBase::dataForItem(item_t item, int role) const
         QStringList ret;
         Q_FOREACH (const auto& peerUri, model_->peersForConversation(item.uid))
             try {
-                auto& accInfo = lrcInstance_->getCurrentAccountInfo();
+                auto& accInfo = lrcInstance_->getAccountInfo(accountId_);
                 auto contact = accInfo.contactModel->getContact(peerUri);
                 ret << contact.profileInfo.alias << contact.registeredName;
             } catch (const std::exception&) {
@@ -152,7 +156,7 @@ ConversationListModelBase::dataForItem(item_t item, int role) const
         // The conversation can show a green dot if at least one peer is present
         Q_FOREACH (const auto& peerUri, model_->peersForConversation(item.uid))
             try {
-                auto& accInfo = lrcInstance_->getCurrentAccountInfo();
+                auto& accInfo = lrcInstance_->getAccountInfo(accountId_);
                 if (peerUri == accInfo.profileInfo.uri)
                     return true; // Self account
                 auto contact = accInfo.contactModel->getContact(peerUri);
@@ -171,7 +175,7 @@ ConversationListModelBase::dataForItem(item_t item, int role) const
         if (peerUriList.isEmpty())
             return {};
         auto peerUri = peerUriList.at(0);
-        auto& accInfo = lrcInstance_->getCurrentAccountInfo();
+        auto& accInfo = lrcInstance_->getAccountInfo(accountId_);
         if (peerUri == accInfo.profileInfo.uri) {
             // Conversation alone with self
             switch (role) {
@@ -186,8 +190,7 @@ ConversationListModelBase::dataForItem(item_t item, int role) const
             case Role::IsBanned:
                 return QVariant(false);
             case Role::ContactType:
-                return QVariant(
-                    static_cast<int>(accInfo.profileInfo.type));
+                return QVariant(static_cast<int>(accInfo.profileInfo.type));
             }
         }
         ContactModel* contactModel;
@@ -196,8 +199,9 @@ ConversationListModelBase::dataForItem(item_t item, int role) const
         try {
             contact = contactModel->getContact(peerUri);
         } catch (const std::exception&) {
-            qWarning() << Q_FUNC_INFO << "Can't find contact" << peerUri
-                       << " this is a bug, please report";
+            qWarning() << Q_FUNC_INFO << "Can't find contact" << peerUri << " for account "
+                       << lrcInstance_->accountModel().bestNameForAccount(accInfo.id)
+                       << " - Conv: " << item.uid;
         }
 
         switch (role) {
diff --git a/src/app/conversationlistmodelbase.h b/src/app/conversationlistmodelbase.h
index af2620810344e89f94dbf43a59ab02a4a759e724..23dc90071f497a605c9a7e3ba2227240448b5bb0 100644
--- a/src/app/conversationlistmodelbase.h
+++ b/src/app/conversationlistmodelbase.h
@@ -81,4 +81,5 @@ protected:
 
     // Convenience pointer to be pulled from lrcinstance
     ConversationModel* model_;
+    QString accountId_;
 };