diff --git a/src/sakia/gui/dialogs/connection_cfg/view.py b/src/sakia/gui/dialogs/connection_cfg/view.py
index 561e8b45e6105cd9feb935fb7dd2fa11224ea7af..102b266f765b712bf9b3961752fda71d72bcf709 100644
--- a/src/sakia/gui/dialogs/connection_cfg/view.py
+++ b/src/sakia/gui/dialogs/connection_cfg/view.py
@@ -1,5 +1,5 @@
 from PyQt5.QtWidgets import QDialog
-from PyQt5.QtCore import pyqtSignal, Qt
+from PyQt5.QtCore import pyqtSignal, Qt, QElapsedTimer, QDateTime, QCoreApplication
 from .connection_cfg_uic import Ui_ConnectionConfigurationDialog
 from .congratulation_uic import Ui_CongratulationPopup
 from duniterpy.key import SigningKey, ScryptParams
@@ -22,6 +22,9 @@ class ConnectionConfigView(QDialog, Ui_ConnectionConfigurationDialog):
         """
         super().__init__(parent)
         self.setupUi(self)
+        self.last_speed = 0.1
+        self.average_speed = 1
+        self.timer = QElapsedTimer()
         self.edit_uid.textChanged.connect(self.values_changed)
         self.edit_password.textChanged.connect(self.values_changed)
         self.edit_password_repeat.textChanged.connect(self.values_changed)
@@ -153,11 +156,22 @@ class ConnectionConfigView(QDialog, Ui_ConnectionConfigurationDialog):
         :param float ratio: the ratio of progress of current step (between 0 and 1)
         :return:
         """
+        QCoreApplication.processEvents()
         value = self.progress_bar.value()
-        self.progress_bar.setValue(value + 1000000*step_ratio)
+        next_value = value + 1000000*step_ratio
+        SMOOTHING_FACTOR = 0.005
+        speed_percent_by_ms = (next_value - value) / self.timer.elapsed()
+        self.average_speed = SMOOTHING_FACTOR * self.last_speed + (1 - SMOOTHING_FACTOR) * self.average_speed
+        remaining = (self.progress_bar.maximum() - next_value) / self.average_speed
+        self.last_speed = speed_percent_by_ms
+        displayed_remaining_time = QDateTime.fromTime_t(remaining).toUTC().toString("hh:mm:ss")
+        self.progress_bar.setFormat(self.tr("{0} scs remaining...".format(displayed_remaining_time)))
+        self.progress_bar.setValue(next_value)
+        self.timer.restart()
 
     def set_progress_steps(self, steps):
         self.progress_bar.setValue(0)
+        self.timer.start()
         self.progress_bar.setMaximum(steps*1000000)
 
     def set_step(self, step):
diff --git a/src/sakia/gui/navigation/graphs/base/node.py b/src/sakia/gui/navigation/graphs/base/node.py
index f07802526c77144ced6941477173af888b6590c5..5dc64a2a5a0be64381b0fad2d100409da3d07577 100644
--- a/src/sakia/gui/navigation/graphs/base/node.py
+++ b/src/sakia/gui/navigation/graphs/base/node.py
@@ -17,7 +17,7 @@ class BaseNode(QGraphicsEllipseItem):
 
         super().__init__()
 
-        self.metadata = nx_node[1]
+        self.metadata = nx_node[1]['attr_dict']
         self.id = nx_node[0]
         # unpack tuple
         x, y = pos[nx_node[0]]
diff --git a/src/sakia/gui/navigation/graphs/wot/scene.py b/src/sakia/gui/navigation/graphs/wot/scene.py
index 59d672257418c6ff562e77410651cf908fe45f66..cc12833b47c37b17237a0f9f697da9a80920bf45 100644
--- a/src/sakia/gui/navigation/graphs/wot/scene.py
+++ b/src/sakia/gui/navigation/graphs/wot/scene.py
@@ -77,7 +77,10 @@ class WotScene(BaseScene):
         y = 0
         x = -1 * scale
         # sort by text
-        sort_certifier = sorted(certifier, key=lambda node_: node_[1]['text'].lower())
+        try:
+            sort_certifier = sorted(certifier, key=lambda node_: node_[1]['attr_dict']['text'].lower())
+        except KeyError as e:
+            print(e)
         # add nodes and arcs
         for n in sort_certifier:
             y += 0.25 * scale
@@ -104,7 +107,7 @@ class WotScene(BaseScene):
         y = 0
         x = 1 * scale
         # sort by text
-        sort_certified = sorted(certified, key=lambda node_: node_[1]['text'].lower())
+        sort_certified = sorted(certified, key=lambda node_: node_[1]['attr_dict']['text'].lower())
         # add nodes and arcs
         for n in sort_certified:
             y += 0.25 * scale
@@ -157,9 +160,9 @@ class WotScene(BaseScene):
 
             for edge in nx_graph.edges(data=True):
                 if edge[0] in certifiers_graph_pos and edge[1] == identity.pubkey:
-                    self.addItem(WotEdge(edge[0], edge[1], edge[2], certifiers_graph_pos))
+                    self.addItem(WotEdge(edge[0], edge[1], edge[2]['attr_dict'], certifiers_graph_pos))
                 if edge[0] == identity.pubkey and edge[1] in certified_graph_pos:
-                    self.addItem(WotEdge(edge[0], edge[1], edge[2], certified_graph_pos))
+                    self.addItem(WotEdge(edge[0], edge[1], edge[2]['attr_dict'], certified_graph_pos))
 
             self.update()