diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml
index 99d1468519a431ba1b37a281a07e9b4aa0830af6..7ece08e2e50f545f9fe0268f59f7175ebcfb447d 100644
--- a/resources/qml/TimelineView.qml
+++ b/resources/qml/TimelineView.qml
@@ -110,6 +110,7 @@ Page {
 				flow.sender = false;
 				flow.deviceId = deviceId;
 				flow.tranId = transactionId;
+				deviceVerificationList.add(flow.tranId);
 				var dialog = deviceVerificationDialog.createObject(timelineRoot, 
                     {flow: flow,sender: false});
 				dialog.show();
diff --git a/resources/qml/device-verification/DeviceVerification.qml b/resources/qml/device-verification/DeviceVerification.qml
index 1a3d14329a0fac3bc9c436bfcecd867e596e6330..03fc5055301c8ecadd4c076c5e79f17ed7e8b171 100644
--- a/resources/qml/device-verification/DeviceVerification.qml
+++ b/resources/qml/device-verification/DeviceVerification.qml
@@ -30,7 +30,11 @@ ApplicationWindow {
 		implicitHeight: currentItem.implicitHeight
 	}
 
-	onClosing: stack.replace(newVerificationRequest)
+	onClosing: {
+		flow.cancelVerification();
+		deviceVerificationList.remove(flow.tranId);
+		delete flow; 
+	}
 
 	property var flow
 	Connections {
@@ -78,7 +82,7 @@ ApplicationWindow {
 						onClicked: { 
 							dialog.close(); 
 							flow.cancelVerification();
-							// deviceVerificationList.remove(flow.tranId);
+							deviceVerificationList.remove(flow.tranId);
 							delete flow; 
 						}
 					}
@@ -135,7 +139,7 @@ ApplicationWindow {
 						onClicked: { 
 							dialog.close(); 
 							flow.cancelVerification();
-							// deviceVerificationList.remove(flow.tranId);
+							deviceVerificationList.remove(flow.tranId);
 							delete flow; 
 						}
 					}
@@ -179,7 +183,7 @@ ApplicationWindow {
 						onClicked: { 
 							dialog.close(); 
 							flow.cancelVerification();
-							// deviceVerificationList.remove(flow.tranId);
+							deviceVerificationList.remove(flow.tranId);
 							delete flow; 
 						}
 					}
@@ -230,7 +234,7 @@ ApplicationWindow {
 						onClicked: { 
 							dialog.close(); 
 							flow.cancelVerification();
-							// deviceVerificationList.remove(flow.tranId);
+							deviceVerificationList.remove(flow.tranId);
 							delete flow; 
 						}
 					}
@@ -369,7 +373,7 @@ ApplicationWindow {
 						onClicked: { 
 							dialog.close(); 
 							flow.cancelVerification();
-							// deviceVerificationList.remove(flow.tranId);
+							deviceVerificationList.remove(flow.tranId);
 							delete flow; 
 						}
 					}
@@ -413,7 +417,7 @@ ApplicationWindow {
 						onClicked: { 
 							dialog.close(); 
 							flow.cancelVerification(); 
-							// deviceVerificationList.remove(flow.tranId);
+							deviceVerificationList.remove(flow.tranId);
 							delete flow;
 						}
 					}
@@ -451,7 +455,7 @@ ApplicationWindow {
 						text: "Close"
 						onClicked: {
 							dialog.close()
-							// deviceVerificationList.remove(flow.tranId);
+							deviceVerificationList.remove(flow.tranId);
 							delete flow;
 						}
 					}
@@ -485,8 +489,8 @@ ApplicationWindow {
 						Layout.alignment: Qt.AlignRight
 						text: "Close"
 						onClicked: {
-							dialog.close()
-							// deviceVerificationList.remove(flow.tranId);
+							dialog.close();
+							deviceVerificationList.remove(flow.tranId);
 							delete flow;
 						}
 					}
@@ -521,7 +525,7 @@ ApplicationWindow {
 						text: "Close"
 						onClicked: {
 							dialog.close()
-							// deviceVerificationList.remove(flow.tranId);
+							deviceVerificationList.remove(flow.tranId);
 							delete flow;
 						}
 					}
diff --git a/src/DeviceVerificationFlow.cpp b/src/DeviceVerificationFlow.cpp
index 0de94c5045283d1fd28e1319983925090e618f34..db76aeb18198899793e5214212497474671dded8 100644
--- a/src/DeviceVerificationFlow.cpp
+++ b/src/DeviceVerificationFlow.cpp
@@ -1,7 +1,6 @@
 #include "DeviceVerificationFlow.h"
 #include "ChatPage.h"
 #include "Logging.h"
-#include "Utils.h"
 
 #include <QDateTime>
 #include <QTimer>
@@ -162,7 +161,10 @@ DeviceVerificationFlow::DeviceVerificationFlow(QObject *)
                                 }
                                 if (msg.content.keys ==
                                     this->sas->calculate_mac(key_string, info + "KEY_IDS")) {
-                                        this->sendVerificationDone();
+                                        // uncomment this in future to be compatible with the
+                                        // MSC2366 this->sendVerificationDone(); and remoeve the
+                                        // below line
+                                        emit this->deviceVerified();
                                 } else {
                                         this->cancelVerification();
                                 }
diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index 7d016cbd1d540a0eb304e05b646c4660c4ca83bc..234b0bb650021566a624c5ee6d440f70d3f3831f 100644
--- a/src/timeline/TimelineViewManager.cpp
+++ b/src/timeline/TimelineViewManager.cpp
@@ -26,26 +26,17 @@ namespace msgs = mtx::events::msg;
 void
 DeviceVerificationList::add(QString tran_id)
 {
-        this->dv_list.push_back(tran_id);
+        this->dv_list.append(tran_id);
 }
 void
 DeviceVerificationList::remove(QString tran_id)
 {
-        for (QVector<QString>::iterator it = 0; it != (this->dv_list).end(); ++it) {
-                if (*it == tran_id) {
-                        this->dv_list.erase(it);
-                        break;
-                }
-        }
+        this->dv_list.removeOne(tran_id);
 }
 bool
 DeviceVerificationList::exist(QString tran_id)
 {
-        for (int i = 0; i < (this->dv_list).size(); ++i) {
-                if (dv_list[i] == tran_id)
-                        return true;
-        }
-        return false;
+        return this->dv_list.contains(tran_id);
 }
 
 void
@@ -183,7 +174,7 @@ TimelineViewManager::TimelineViewManager(QSharedPointer<UserSettings> userSettin
                                         msg.content.methods.end(),
                                         mtx::events::msg::VerificationMethods::SASv1) !=
                               msg.content.methods.end()) {
-                                  flow->sendVerificationReady();
+                                  //   flow->sendVerificationReady();
                                   emit newDeviceVerificationRequest(
                                     std::move(flow),
                                     QString::fromStdString(msg.content.transaction_id),
diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h
index 946461f9732453857bbc0c1e7736de81490ebbfa..8af6d1377f5e87c827b367c260de64bed0462620 100644
--- a/src/timeline/TimelineViewManager.h
+++ b/src/timeline/TimelineViewManager.h
@@ -1,6 +1,7 @@
 #pragma once
 
 #include <QHash>
+#include <QLinkedList>
 #include <QQuickView>
 #include <QQuickWidget>
 #include <QSharedPointer>
@@ -31,7 +32,7 @@ public:
         Q_INVOKABLE bool exist(QString tran_id);
 
 private:
-        QVector<QString> dv_list;
+        QLinkedList<QString> dv_list;
 };
 
 class TimelineViewManager : public QObject