diff --git a/src/conversationsadapter.cpp b/src/conversationsadapter.cpp
index e13c3a7aba6dad8b19153bab7aa39d5152fe41c8..6b7b76ba49db4b1094f91f3010809200f762f944 100644
--- a/src/conversationsadapter.cpp
+++ b/src/conversationsadapter.cpp
@@ -240,6 +240,89 @@ ConversationsAdapter::onTrustRequestTreated(const QString& accountId, const QStr
 #endif
 }
 
+void
+ConversationsAdapter::onModelChanged()
+{
+    conversationSmartListModel_->fillConversationsList();
+    updateConversationsFilterWidget();
+
+    auto* convModel = lrcInstance_->getCurrentConversationModel();
+    const auto& convInfo = lrcInstance_->getConversationFromConvUid(
+        lrcInstance_->get_selectedConvUid());
+
+    if (convInfo.uid.isEmpty() || convInfo.participants.isEmpty()) {
+        return;
+    }
+    const auto contactURI = convInfo.participants[0];
+    if (contactURI.isEmpty()
+        || convModel->owner.contactModel->getContact(contactURI).profileInfo.type
+               == lrc::api::profile::Type::TEMPORARY) {
+        return;
+    }
+    Q_EMIT modelSorted(QVariant::fromValue(convInfo.uid));
+}
+
+void
+ConversationsAdapter::onProfileUpdated(const QString& contactUri)
+{
+    conversationSmartListModel_->updateContactAvatarUid(contactUri);
+    Q_EMIT updateListViewRequested();
+}
+
+void
+ConversationsAdapter::onConversationUpdated(const QString&)
+{
+    updateConversationsFilterWidget();
+    Q_EMIT updateListViewRequested();
+}
+
+void
+ConversationsAdapter::onFilterChanged()
+{
+    conversationSmartListModel_->fillConversationsList();
+    updateConversationsFilterWidget();
+    if (!lrcInstance_->get_selectedConvUid().isEmpty())
+        Q_EMIT indexRepositionRequested();
+    Q_EMIT updateListViewRequested();
+}
+
+void
+ConversationsAdapter::onNewConversation(const QString& convUid)
+{
+    conversationSmartListModel_->fillConversationsList();
+    updateConversationForNewContact(convUid);
+}
+
+void
+ConversationsAdapter::onConversationRemoved(const QString&)
+{
+    backToWelcomePage();
+}
+
+void
+ConversationsAdapter::onConversationCleared(const QString& convUid)
+{
+    // If currently selected, switch to welcome screen (deselecting
+    // current smartlist item).
+    if (convUid != lrcInstance_->get_selectedConvUid()) {
+        return;
+    }
+    backToWelcomePage();
+}
+
+void
+ConversationsAdapter::onSearchStatusChanged(const QString& status)
+{
+    Q_EMIT showSearchStatus(status);
+}
+
+void
+ConversationsAdapter::onSearchResultUpdated()
+{
+    conversationSmartListModel_->fillConversationsList();
+    Q_EMIT updateListViewRequested();
+}
+
 void
 ConversationsAdapter::updateConversationsFilterWidget()
 {
@@ -264,116 +347,59 @@ ConversationsAdapter::connectConversationModel(bool updateFilter)
     // Signal connections
     auto currentConversationModel = lrcInstance_->getCurrentConversationModel();
 
-    QObject::connect(
-        currentConversationModel,
-        &lrc::api::ConversationModel::modelChanged,
-        this,
-        [this]() {
-            conversationSmartListModel_->fillConversationsList();
-            updateConversationsFilterWidget();
-
-            auto* convModel = lrcInstance_->getCurrentConversationModel();
-            const auto& convInfo = lrcInstance_->getConversationFromConvUid(
-                lrcInstance_->get_selectedConvUid());
-
-            if (convInfo.uid.isEmpty() || convInfo.participants.isEmpty()) {
-                return;
-            }
-            const auto contactURI = convInfo.participants[0];
-            if (contactURI.isEmpty()
-                || convModel->owner.contactModel->getContact(contactURI).profileInfo.type
-                       == lrc::api::profile::Type::TEMPORARY) {
-                return;
-            }
-            Q_EMIT modelSorted(QVariant::fromValue(convInfo.uid));
-        },
-        Qt::UniqueConnection);
-
-    QObject::connect(
-        lrcInstance_->getCurrentAccountInfo().contactModel.get(),
-        &lrc::api::ContactModel::profileUpdated,
-        this,
-        [this](const QString& contactUri) {
-            conversationSmartListModel_->updateContactAvatarUid(contactUri);
-            Q_EMIT updateListViewRequested();
-        },
-        Qt::UniqueConnection);
-
-    QObject::connect(
-        currentConversationModel,
-        &lrc::api::ConversationModel::conversationUpdated,
-        this,
-        [this](const QString&) {
-            updateConversationsFilterWidget();
-            Q_EMIT updateListViewRequested();
-        },
-        Qt::UniqueConnection);
-
-    QObject::connect(
-        currentConversationModel,
-        &lrc::api::ConversationModel::filterChanged,
-        this,
-        [this]() {
-            conversationSmartListModel_->fillConversationsList();
-            updateConversationsFilterWidget();
-            if (!lrcInstance_->get_selectedConvUid().isEmpty())
-                Q_EMIT indexRepositionRequested();
-            Q_EMIT updateListViewRequested();
-        },
-        Qt::UniqueConnection);
-
-    QObject::connect(
-        currentConversationModel,
-        &lrc::api::ConversationModel::newConversation,
-        this,
-        [this](const QString& convUid) {
-            conversationSmartListModel_->fillConversationsList();
-            updateConversationForNewContact(convUid);
-        },
-        Qt::UniqueConnection);
-
-    QObject::connect(
-        currentConversationModel,
-        &lrc::api::ConversationModel::conversationRemoved,
-        this,
-        [this]() { backToWelcomePage(); },
-        Qt::UniqueConnection);
-
-    QObject::connect(
-        currentConversationModel,
-        &lrc::api::ConversationModel::conversationCleared,
-        this,
-        [this](const QString& convUid) {
-            // If currently selected, switch to welcome screen (deselecting
-            // current smartlist item).
-            if (convUid != lrcInstance_->get_selectedConvUid()) {
-                return;
-            }
-            backToWelcomePage();
-        },
-        Qt::UniqueConnection);
-
-    QObject::connect(
-        currentConversationModel,
-        &lrc::api::ConversationModel::searchStatusChanged,
-        this,
-        [this](const QString& status) { Q_EMIT showSearchStatus(status); },
-        Qt::UniqueConnection);
-
-    // This connection is ideal when separated search results list.
-    // This signal is guaranteed to fire just after filterChanged during a search if results are
-    // changed, and once before filterChanged when calling setFilter.
-    // NOTE: Currently, when searching, the entire conversation list will be copied 2-3 times each
-    // keystroke :/.
-    QObject::connect(
-        currentConversationModel,
-        &lrc::api::ConversationModel::searchResultUpdated,
-        this,
-        [this]() {
-            conversationSmartListModel_->fillConversationsList();
-            Q_EMIT updateListViewRequested();
-        },
-        Qt::UniqueConnection);
+    QObject::connect(currentConversationModel,
+                     &lrc::api::ConversationModel::modelChanged,
+                     this,
+                     &ConversationsAdapter::onModelChanged,
+                     Qt::UniqueConnection);
+
+    QObject::connect(lrcInstance_->getCurrentAccountInfo().contactModel.get(),
+                     &lrc::api::ContactModel::profileUpdated,
+                     this,
+                     &ConversationsAdapter::onProfileUpdated,
+                     Qt::UniqueConnection);
+
+    QObject::connect(currentConversationModel,
+                     &lrc::api::ConversationModel::conversationUpdated,
+                     this,
+                     &ConversationsAdapter::onConversationUpdated,
+                     Qt::UniqueConnection);
+
+    QObject::connect(currentConversationModel,
+                     &lrc::api::ConversationModel::filterChanged,
+                     this,
+                     &ConversationsAdapter::onFilterChanged,
+                     Qt::UniqueConnection);
+
+    QObject::connect(currentConversationModel,
+                     &lrc::api::ConversationModel::newConversation,
+                     this,
+                     &ConversationsAdapter::onNewConversation,
+                     Qt::UniqueConnection);
+
+    QObject::connect(currentConversationModel,
+                     &lrc::api::ConversationModel::conversationRemoved,
+                     this,
+                     &ConversationsAdapter::onConversationRemoved,
+                     Qt::UniqueConnection);
+
+    QObject::connect(currentConversationModel,
+                     &lrc::api::ConversationModel::conversationCleared,
+                     this,
+                     &ConversationsAdapter::onConversationCleared,
+                     Qt::UniqueConnection);
+
+    QObject::connect(currentConversationModel,
+                     &lrc::api::ConversationModel::searchStatusChanged,
+                     this,
+                     &ConversationsAdapter::onSearchStatusChanged,
+                     Qt::UniqueConnection);
+
+    QObject::connect(currentConversationModel,
+                     &lrc::api::ConversationModel::searchResultUpdated,
+                     this,
+                     &ConversationsAdapter::onSearchResultUpdated,
+                     Qt::UniqueConnection);
 
     if (updateFilter) {
         currentTypeFilter_ = lrc::api::profile::Type::INVALID;
diff --git a/src/conversationsadapter.h b/src/conversationsadapter.h
index d9af3df4b83d20c69ad6bd698fb1077b2fb011a7..32de1980eb04930c7f680c21b1308fec2c048ba7 100644
--- a/src/conversationsadapter.h
+++ b/src/conversationsadapter.h
@@ -73,6 +73,16 @@ private Q_SLOTS:
     void onNewTrustRequest(const QString& accountId, const QString& peerUri);
     void onTrustRequestTreated(const QString& accountId, const QString& peerUri);
 
+    void onModelChanged();
+    void onProfileUpdated(const QString&);
+    void onConversationUpdated(const QString&);
+    void onFilterChanged();
+    void onNewConversation(const QString&);
+    void onConversationRemoved(const QString&);
+    void onConversationCleared(const QString&);
+    void onSearchStatusChanged(const QString&);
+    void onSearchResultUpdated();
+
 private:
     void backToWelcomePage();
     void updateConversationForNewContact(const QString& convUid);