diff --git a/src/conversationsadapter.cpp b/src/conversationsadapter.cpp
index 8bda692be1042b9bc488418f984adb4829bde753..913548a5fb3277766feb0d9145f570d20a9a61ae 100644
--- a/src/conversationsadapter.cpp
+++ b/src/conversationsadapter.cpp
@@ -409,7 +409,7 @@ ConversationsAdapter::getConvInfoMap(const QString& convId)
     // titles should come from conversation, not contact model
     return {{"convId", convId},
             {"bestId", contactModel->bestIdForContact(peerUri)},
-            {"bestName", contactModel->bestNameForContact(peerUri)},
+            {"title", lrcInstance_->getCurrentConversationModel()->title(convId)},
             {"uri", peerUri},
             {"isSwarm", !convInfo.isNotASwarm()},
             {"contactType", static_cast<int>(contact.profileInfo.type)},
diff --git a/src/mainview/MainView.qml b/src/mainview/MainView.qml
index f8f7a5540a4e9b7b4bd91748aa88a488d3622f42..c807c82b87e86b50d4b32d21497f471879befcc4 100644
--- a/src/mainview/MainView.qml
+++ b/src/mainview/MainView.qml
@@ -179,7 +179,7 @@ Rectangle {
         var item = ConversationsAdapter.getConvInfoMap(convId)
         if (item.convId === undefined)
             return
-        communicationPageMessageWebView.headerUserAliasLabelText = item.bestName
+        communicationPageMessageWebView.headerUserAliasLabelText = item.title
         communicationPageMessageWebView.headerUserUserNameLabelText = item.bestId
         if (item.callStackViewShouldShow) {
             if (inSettingsView) {
diff --git a/src/mainview/components/ConversationListView.qml b/src/mainview/components/ConversationListView.qml
index c69949fcb9c22998b730fdc773e63ad28c482205..b74701b4045c4962d68ead03b8747fb6393813d1 100644
--- a/src/mainview/components/ConversationListView.qml
+++ b/src/mainview/components/ConversationListView.qml
@@ -131,7 +131,7 @@ ListView {
             var item = {
                 "convId": model.dataForRow(row, ConversationList.UID),
                 "displayId": model.dataForRow(row, ConversationList.BestId),
-                "displayName": model.dataForRow(row, ConversationList.BestName),
+                "displayName": model.dataForRow(row, ConversationList.Title),
                 "uri": model.dataForRow(row, ConversationList.URI),
                 "contactType": model.dataForRow(row, ConversationList.ContactType),
                 "isSwarm": model.dataForRow(row, ConversationList.IsSwarm),
diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp
index 0a9dc2158a9bf06db5e05ef7d6b09f28cb290497..e49d0d83cdb293fd3a22c9175108a66bc48b37fc 100644
--- a/src/messagesadapter.cpp
+++ b/src/messagesadapter.cpp
@@ -78,16 +78,6 @@ MessagesAdapter::setupChatView(const QString& convUid)
     auto selectedAccountId = lrcInstance_->getCurrentAccountId();
     auto& accountInfo = lrcInstance_->accountModel().getAccountInfo(selectedAccountId);
 
-    lrc::api::contact::Info contactInfo;
-    QString bestName;
-    try {
-        contactInfo = accountInfo.contactModel->getContact(contactURI);
-        bestName = accountInfo.contactModel->bestNameForContact(contactURI);
-    } catch (...) {
-    }
-
-    bool isPending = contactInfo.profileInfo.type == profile::Type::TEMPORARY;
-
     QMetaObject::invokeMethod(qmlObj_,
                               "setSendContactRequestButtonVisible",
                               Q_ARG(QVariant, convInfo.isNotASwarm() && convInfo.isRequest));
@@ -100,7 +90,7 @@ MessagesAdapter::setupChatView(const QString& convUid)
     setMessagesVisibility(false);
     setIsSwarm(!convInfo.isNotASwarm());
     setInvitation(convInfo.isRequest or convInfo.needsSyncing,
-                  bestName,
+                  convModel->title(convInfo.uid),
                   contactURI,
                   !convInfo.isNotASwarm(),
                   convInfo.needsSyncing);