diff --git a/src/sakia/gui/graphs/explorer/controller.py b/src/sakia/gui/graphs/explorer/controller.py
index 2c2a195272e3f71b9d83012892b77fb5616212a7..66796c785cb51f7586a945a6ff5ca850761f1ffc 100644
--- a/src/sakia/gui/graphs/explorer/controller.py
+++ b/src/sakia/gui/graphs/explorer/controller.py
@@ -5,6 +5,7 @@ from .model import ExplorerModel
 from ...search_user.controller import SearchUserController
 import asyncio
 
+
 class ExplorerController(BaseGraphController):
     """
     The homescreen view
@@ -20,7 +21,9 @@ class ExplorerController(BaseGraphController):
         super().__init__(parent, view, model, password_asker)
         self.set_scene(view.scene())
         self.reset()
-        self.view.button_go.clicked.connect(lambda checked: self.refresh())
+        self.view.button_go.clicked.connect(self.start_exploration)
+        self.model.graph.graph_changed.connect(self.refresh)
+        self.model.graph.current_identity_changed.connect(self.view.update_current_identity)
 
     def center_on_identity(self, identity):
         """
@@ -30,6 +33,10 @@ class ExplorerController(BaseGraphController):
         """
         asyncio.ensure_future(self.draw_graph(identity))
 
+    def start_exploration(self):
+        self.model.graph.stop_exploration()
+        self.model.graph.start_exploration(self.model.identity, self.view.steps())
+
     @property
     def view(self) -> ExplorerView:
         return self._view
@@ -59,12 +66,7 @@ class ExplorerController(BaseGraphController):
 
         :param sakia.core.registry.Identity identity: Center identity
         """
-        await self.model.set_identity(identity)
-        self.model.graph.start_exploration(self.model.identity, self.view.steps())
-
-        # draw graph in qt scene
-        self.view.scene().clear()
-        self.view.update_wot(self.model.graph.nx_graph, self.model.identity)
+        self.view.update_wot(self.model.graph.nx_graph, identity)
 
     @once_at_a_time
     @asyncify
@@ -72,7 +74,6 @@ class ExplorerController(BaseGraphController):
         """
         Refresh graph scene to current metadata
         """
-        self.model.graph.stop_exploration()
         await self.draw_graph(self.model.identity)
         self.view.update_wot(self.model.graph.nx_graph, self.model.identity)
 
@@ -82,7 +83,10 @@ class ExplorerController(BaseGraphController):
         """
         Reset graph scene to wallet identity
         """
+        # draw graph in qt scene
+        self.view.scene().clear()
         self.view.reset_steps()
         maximum_steps = await self.model.maximum_steps()
         self.view.set_steps_max(maximum_steps)
-        await self.draw_graph(None)
+        await self.model.set_identity(None)
+        await self.draw_graph(self.model.identity)
diff --git a/src/sakia/gui/graphs/explorer/model.py b/src/sakia/gui/graphs/explorer/model.py
index 02879cd24cf95e6802a99739e1047ccfbadefc06..d7d4d4ff9765f6fafd64aaebe41f11ff4b63ec13 100644
--- a/src/sakia/gui/graphs/explorer/model.py
+++ b/src/sakia/gui/graphs/explorer/model.py
@@ -23,17 +23,17 @@ class ExplorerModel(BaseGraphModel):
         """
         return self.explorer_graph
 
-    async def set_identity(self, identity=None):
+    async def set_identity(self, identity):
         """
         Change current identity
         If identity is None, it defaults to account identity
         :param sakia.core.registry.Identity identity: the new identity to show
         :return:
         """
-        identity_account = await self.account.identity(self.community)
         if identity:
             self.identity = identity
         else:
+            identity_account = await self.account.identity(self.community)
             self.identity = identity_account
 
     async def start_exploration(self, steps):
diff --git a/src/sakia/gui/graphs/explorer/view.py b/src/sakia/gui/graphs/explorer/view.py
index 207f953933e045d4e935a55085473aa5ddb9bc24..0d2ccb88f7e3f7c5d2f690f30352fae626009ce1 100644
--- a/src/sakia/gui/graphs/explorer/view.py
+++ b/src/sakia/gui/graphs/explorer/view.py
@@ -33,7 +33,7 @@ class ExplorerView(BaseGraphView, Ui_ExplorerWidget):
     def scene(self):
         """
         Get the scene of the underlying graphics view
-        :return:
+        :rtype: sakia.gui.graphs.explorer.scene.ExplorerScene
         """
         return self.graphics_view.scene()
 
@@ -60,3 +60,18 @@ class ExplorerView(BaseGraphView, Ui_ExplorerWidget):
         """
         # draw graph in qt scene
         self.scene().update_wot(nx_graph, identity, self.steps_slider.maximum())
+
+    async def draw_graph(self):
+        """
+        Draw community graph centered on the identity
+
+        :param sakia.core.registry.Identity identity: Center identity
+        """
+        self.view.update_wot(self.model.graph.nx_graph, self.model.identity)
+
+    def update_current_identity(self, pubkey):
+        """
+        Change currently blinking identity
+        :param str pubkey:
+        """
+        self.scene().update_current_identity(pubkey)
diff --git a/src/sakia/gui/graphs/wot/view.py b/src/sakia/gui/graphs/wot/view.py
index 75b61f644ff53cfceb8a6e5ab879f599388228b5..e4e404604c6c184641d6aa4440548be63e3cd1e2 100644
--- a/src/sakia/gui/graphs/wot/view.py
+++ b/src/sakia/gui/graphs/wot/view.py
@@ -46,4 +46,4 @@ class WotView(BaseGraphView, Ui_WotWidget):
         :param path:
         :return:
         """
-        self.graphicsView.scene().update_path(nx_graph, path)
+        self.graphics_view.scene().update_path(nx_graph, path)
diff --git a/src/sakia/tests/unit/gui/views/__init__.py b/src/sakia/tests/unit/gui/views/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/sakia/tests/unit/gui/views/test_base_edge.py b/src/sakia/tests/unit/gui/views/test_base_edge.py
deleted file mode 100644
index f05353bd653e425dc05be4f841960b810d3e39f0..0000000000000000000000000000000000000000
--- a/src/sakia/tests/unit/gui/views/test_base_edge.py
+++ /dev/null
@@ -1,34 +0,0 @@
-import unittest
-from PyQt5.QtCore import QLocale
-from sakia.tests import QuamashTest
-from sakia.gui.views.edges.base_edge import BaseEdge
-from sakia.core.graph.constants import EdgeStatus
-
-
-class TestBaseEdge(unittest.TestCase, QuamashTest):
-    def setUp(self):
-        self.setUpQuamash()
-        QLocale.setDefault(QLocale("en_GB"))
-
-    def tearDown(self):
-        self.tearDownQuamash()
-
-    def test_create_edge(self):
-        metadata = {
-            'status': EdgeStatus.STRONG
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-        async def exec_test():
-            edge = BaseEdge("A", "B", metadata, nx_pos)
-            self.assertEqual(edge.source, "A")
-            self.assertEqual(edge.destination, "B")
-            self.assertEqual(edge.destination_point.x(), 10)
-            self.assertEqual(edge.destination_point.y(), 20)
-            self.assertEqual(edge.source_point.x(), 0)
-            self.assertEqual(edge.source_point.y(), 5)
-            self.assertEqual(edge.status, EdgeStatus.STRONG)
-
-        self.lp.run_until_complete(exec_test())
\ No newline at end of file
diff --git a/src/sakia/tests/unit/gui/views/test_base_node.py b/src/sakia/tests/unit/gui/views/test_base_node.py
deleted file mode 100644
index 3e2016837f242d1235d7658f932158a809e93606..0000000000000000000000000000000000000000
--- a/src/sakia/tests/unit/gui/views/test_base_node.py
+++ /dev/null
@@ -1,37 +0,0 @@
-import unittest
-from PyQt5.QtCore import QLocale
-from sakia.tests import QuamashTest
-from sakia.gui.views.nodes.base_node import BaseNode
-from sakia.core.graph.constants import NodeStatus
-
-
-class TestBaseNode(unittest.TestCase, QuamashTest):
-    def setUp(self):
-        self.setUpQuamash()
-        QLocale.setDefault(QLocale("en_GB"))
-
-    def tearDown(self):
-        self.tearDownQuamash()
-
-    def test_create_edge(self):
-        metadata = {
-            'status': NodeStatus.NEUTRAL,
-            'text': "UserA",
-            'tooltip': "TestTooltip"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-        async def exec_test():
-            node = BaseNode(("A", metadata), nx_pos)
-            self.assertEqual(node.id, "A")
-            self.assertEqual(node.metadata['status'], NodeStatus.NEUTRAL)
-            self.assertEqual(node.x(), 0)
-            self.assertEqual(node.y(), 5)
-            self.assertEqual(node.status_wallet, False)
-            self.assertEqual(node.status_member, True)
-            self.assertEqual(node.text, "UserA")
-            self.assertEqual(node.toolTip(), "UserA - TestTooltip")
-
-        self.lp.run_until_complete(exec_test())
\ No newline at end of file
diff --git a/src/sakia/tests/unit/gui/views/test_explorer_edge.py b/src/sakia/tests/unit/gui/views/test_explorer_edge.py
deleted file mode 100644
index 5732190cbca2a56b3f0e6cfa14cf4eb520f3ccdd..0000000000000000000000000000000000000000
--- a/src/sakia/tests/unit/gui/views/test_explorer_edge.py
+++ /dev/null
@@ -1,76 +0,0 @@
-import unittest
-from unittest.mock import patch
-from PyQt5.QtCore import QLocale
-from sakia.tests import QuamashTest
-from sakia.gui.views.edges import ExplorerEdge
-from sakia.core.graph.constants import EdgeStatus
-
-
-class TestExplorerEdge(unittest.TestCase, QuamashTest):
-    def setUp(self):
-        self.setUpQuamash()
-        QLocale.setDefault(QLocale("en_GB"))
-
-    def tearDown(self):
-        self.tearDownQuamash()
-
-    def test_create_wot_edge(self):
-        metadata = {
-            'status': EdgeStatus.STRONG,
-            'confirmation_text': "0/6"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-        async def exec_test():
-            edge = ExplorerEdge("A", "B", metadata, nx_pos, 0, 0)
-            self.assertEqual(edge.source, "A")
-            self.assertEqual(edge.destination, "B")
-            self.assertAlmostEqual(edge.destination_point.x(), 10.0, delta=5)
-            self.assertAlmostEqual(edge.destination_point.y(), 20.0, delta=5)
-            self.assertAlmostEqual(edge.source_point.x(), 10.0, delta=5)
-            self.assertAlmostEqual(edge.source_point.y(), 20.0, delta=5)
-            self.assertEqual(edge.status, EdgeStatus.STRONG)
-
-        self.lp.run_until_complete(exec_test())
-
-    @patch('PyQt5.QtGui.QPainter')
-    @patch('PyQt5.QtWidgets.QWidget')
-    def test_paint(self, painter, widget):
-        metadata = {
-            'status': EdgeStatus.STRONG,
-            'confirmation_text': "0/6"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-
-        async def exec_test():
-            edge = ExplorerEdge("A", "B", metadata, nx_pos, 0, 1)
-            edge.paint(painter, 0, widget)
-
-        self.lp.run_until_complete(exec_test())
-
-    @patch('PyQt5.QtGui.QPainter')
-    @patch('PyQt5.QtWidgets.QWidget')
-    def test_bounding_rect(self, painter, widget):
-        metadata = {
-            'status': EdgeStatus.STRONG,
-            'confirmation_text': "0/6"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-
-        async def exec_test():
-            edge = ExplorerEdge("A", "B", metadata, nx_pos, 0, 0)
-            bounding_rect = edge.boundingRect()
-            self.assertAlmostEqual(bounding_rect.x(), 7.0, delta=5)
-            self.assertAlmostEqual(bounding_rect.y(), 17.0, delta=5)
-            self.assertAlmostEqual(bounding_rect.width(), 6.0, delta=5)
-            self.assertAlmostEqual(bounding_rect.height(), 6.0, delta=5)
-
-        self.lp.run_until_complete(exec_test())
diff --git a/src/sakia/tests/unit/gui/views/test_explorer_node.py b/src/sakia/tests/unit/gui/views/test_explorer_node.py
deleted file mode 100644
index a27c75e1cc1a7724f518af2ee3c0f352e00b7b1a..0000000000000000000000000000000000000000
--- a/src/sakia/tests/unit/gui/views/test_explorer_node.py
+++ /dev/null
@@ -1,80 +0,0 @@
-import unittest
-from unittest.mock import patch
-from PyQt5.QtCore import QLocale, QPointF
-from PyQt5.QtGui import QPainter
-from PyQt5.QtWidgets import QStyleOptionGraphicsItem, QWidget
-from sakia.tests import QuamashTest
-from sakia.gui.views.nodes import ExplorerNode
-from sakia.core.graph.constants import NodeStatus
-
-
-class TestExplorerNode(unittest.TestCase, QuamashTest):
-    def setUp(self):
-        self.setUpQuamash()
-        QLocale.setDefault(QLocale("en_GB"))
-
-    def tearDown(self):
-        self.tearDownQuamash()
-
-    def test_create_explorer_node(self):
-        metadata = {
-            'status': NodeStatus.NEUTRAL,
-            'text': "UserA",
-            'tooltip': "TestTooltip"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-        async def exec_test():
-            node = ExplorerNode(("A", metadata), QPointF(0, 0), nx_pos, 0, 1, False)
-            self.assertEqual(node.id, "A")
-            self.assertEqual(node.metadata['status'], NodeStatus.NEUTRAL)
-            self.assertEqual(node.x(), 0)
-            self.assertEqual(node.y(), 0)
-            self.assertEqual(node.status_wallet, False)
-            self.assertEqual(node.status_member, True)
-            self.assertEqual(node.text, "UserA")
-            self.assertEqual(node.toolTip(), "UserA - TestTooltip")
-
-        self.lp.run_until_complete(exec_test())
-
-    def test_paint(self):
-        painter = QPainter()
-        widget = QWidget()
-        metadata = {
-            'status': NodeStatus.NEUTRAL,
-            'text': "UserA",
-            'tooltip': "TestTooltip"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-        async def exec_test():
-            node = ExplorerNode(("A", metadata), QPointF(0, 0), nx_pos, 0, 1, False)
-            node.paint(painter, QStyleOptionGraphicsItem(), widget)
-
-        self.lp.run_until_complete(exec_test())
-
-    @patch('PyQt5.QtGui.QPainter', spec=QPainter)
-    @patch('PyQt5.QtWidgets.QWidget')
-    def test_bounding_rect(self, painter, widget):
-        metadata = {
-            'status': NodeStatus.NEUTRAL,
-            'text': "A",
-            'tooltip': "TestTooltip"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-        async def exec_test():
-            node = ExplorerNode(("A", metadata), QPointF(0, 0), nx_pos, 0, 1, False)
-            bounding_rect = node.boundingRect()
-            self.assertAlmostEqual(bounding_rect.x(), -0.5, delta=15)
-            self.assertAlmostEqual(bounding_rect.y(), -0.5, delta=15)
-            self.assertAlmostEqual(bounding_rect.width(), 19.59375, delta=15)
-            self.assertAlmostEqual(bounding_rect.height(), 37.0, delta=15)
-
-        self.lp.run_until_complete(exec_test())
diff --git a/src/sakia/tests/unit/gui/views/test_explorer_scene.py b/src/sakia/tests/unit/gui/views/test_explorer_scene.py
deleted file mode 100644
index 7ba890170be0b25a011347b4d1a7973b3cddd3da..0000000000000000000000000000000000000000
--- a/src/sakia/tests/unit/gui/views/test_explorer_scene.py
+++ /dev/null
@@ -1,181 +0,0 @@
-import unittest
-import networkx
-import math
-from unittest.mock import patch, Mock
-from sakia.tests import QuamashTest
-from sakia.gui.views.scenes import ExplorerScene
-from sakia.core.graph.constants import NodeStatus
-
-
-class TestExplorerScene(unittest.TestCase, QuamashTest):
-    def setUp(self):
-        self.setUpQuamash()
-        self.identities_uids = ['A', 'B', 'C', 'D', 'E']
-        self.identities_pubkeys = ['pbkA', 'pbkB', 'pbkC', 'pbkD', 'pbkE']
-        self.certifications = [('pbkA', 'pbkB'),
-                               ('pbkB', 'pbkC'),
-                               ('pbkD', 'pbkA'),
-                               ('pbkA', 'pbkE')]
-        # Graph :
-        #  A -> B -> C
-        #    <- D
-        #    -> E
-        self.identity_status = [NodeStatus.SELECTED, NodeStatus.NEUTRAL, NodeStatus.NEUTRAL,
-                                NodeStatus.OUT, NodeStatus.NEUTRAL]
-        self.test_graph = networkx.MultiDiGraph()
-        self.test_graph.add_nodes_from(self.identities_pubkeys)
-        self.test_graph.add_edges_from(self.certifications)
-        for index, node in enumerate(self.test_graph.nodes(data=True)):
-            node[1]['text'] = self.identities_uids[index]
-            node[1]['tooltip'] = self.identities_pubkeys[index]
-            node[1]['status'] = self.identity_status[index]
-
-    def tearDown(self):
-        self.tearDownQuamash()
-
-    def test_init_layout(self):
-        data_layout = ExplorerScene._init_layout(self.test_graph)
-        for pubkey in self.identities_pubkeys:
-            self.assertEqual(data_layout[pubkey]['theta'], None)
-            self.assertEqual(data_layout[pubkey]['scenter'], 25)
-            self.assertEqual(data_layout[pubkey]['nchild'], 0)
-            self.assertEqual(data_layout[pubkey]['sparent'], None)
-            self.assertEqual(data_layout[pubkey]['stsize'], 0.0)
-            self.assertEqual(data_layout[pubkey]['span'], 0.0)
-
-    def test_set_parent_nodes(self):
-        data_layout = ExplorerScene._init_layout(self.test_graph)
-        ExplorerScene._set_parent_nodes(self.test_graph, data_layout, 'pbkA')
-        self.assertEqual(data_layout['pbkA']['scenter'], 0)
-        self.assertEqual(data_layout['pbkB']['scenter'], 1)
-        self.assertEqual(data_layout['pbkC']['scenter'], 2)
-        self.assertEqual(data_layout['pbkD']['scenter'], 1)
-        self.assertEqual(data_layout['pbkE']['scenter'], 1)
-
-        self.assertEqual(data_layout['pbkA']['sparent'], None)
-        self.assertEqual(data_layout['pbkB']['sparent'], 'pbkA')
-        self.assertEqual(data_layout['pbkC']['sparent'], 'pbkB')
-        self.assertEqual(data_layout['pbkD']['sparent'], 'pbkA')
-        self.assertEqual(data_layout['pbkE']['scenter'], 1)
-
-        self.assertEqual(data_layout['pbkA']['nchild'], 3)
-        self.assertEqual(data_layout['pbkB']['nchild'], 1)
-        self.assertEqual(data_layout['pbkC']['nchild'], 0)
-        self.assertEqual(data_layout['pbkD']['nchild'], 0)
-        self.assertEqual(data_layout['pbkE']['nchild'], 0)
-
-    def test_set_subtree_size(self):
-        data_layout = ExplorerScene._init_layout(self.test_graph)
-
-        data_layout['pbkA']['sparent'] = None
-        data_layout['pbkB']['sparent'] = 'pbkA'
-        data_layout['pbkC']['sparent'] = 'pbkB'
-        data_layout['pbkD']['sparent'] = 'pbkA'
-        data_layout['pbkE']['sparent'] = 'pbkA'
-
-        data_layout['pbkA']['nchild'] = 2
-        data_layout['pbkB']['nchild'] = 1
-        data_layout['pbkC']['nchild'] = 0
-        data_layout['pbkD']['nchild'] = 0
-        data_layout['pbkE']['nchild'] = 0
-
-        ExplorerScene._set_subtree_size(self.test_graph, data_layout)
-        self.assertAlmostEqual(data_layout['pbkA']['stsize'], 3.0)
-        self.assertAlmostEqual(data_layout['pbkB']['stsize'], 1.0)
-        self.assertAlmostEqual(data_layout['pbkC']['stsize'], 1.0)
-        self.assertAlmostEqual(data_layout['pbkD']['stsize'], 1.0)
-        self.assertAlmostEqual(data_layout['pbkE']['stsize'], 1.0)
-
-    def test_set_subtree_span(self):
-        data_layout = ExplorerScene._init_layout(self.test_graph)
-
-        data_layout['pbkA']['sparent'] = None
-        data_layout['pbkB']['sparent'] = 'pbkA'
-        data_layout['pbkC']['sparent'] = 'pbkB'
-        data_layout['pbkD']['sparent'] = 'pbkA'
-        data_layout['pbkE']['sparent'] = 'pbkA'
-
-        data_layout['pbkA']['nchild'] = 2
-        data_layout['pbkB']['nchild'] = 1
-        data_layout['pbkC']['nchild'] = 0
-        data_layout['pbkD']['nchild'] = 0
-        data_layout['pbkE']['nchild'] = 0
-
-        data_layout['pbkA']['stsize'] = 3.0
-        data_layout['pbkB']['stsize'] = 1.0
-        data_layout['pbkC']['stsize'] = 1.0
-        data_layout['pbkD']['stsize'] = 1.0
-        data_layout['pbkE']['stsize'] = 1.0
-
-        data_layout['pbkA']['span'] = 2 * math.pi
-
-        ExplorerScene._set_subtree_spans(self.test_graph, data_layout, 'pbkA')
-        self.assertAlmostEqual(data_layout['pbkA']['span'], 2 * math.pi)
-        self.assertAlmostEqual(data_layout['pbkB']['span'], 2 / 3 * math.pi)
-        self.assertAlmostEqual(data_layout['pbkC']['span'], 2 / 3 * math.pi)
-        self.assertAlmostEqual(data_layout['pbkD']['span'], 2 / 3 * math.pi)
-        self.assertAlmostEqual(data_layout['pbkE']['span'], 2 / 3 * math.pi)
-
-    @patch('networkx.MultiDiGraph')
-    def test_set_subtree_position(self, mock_graph):
-        # We mock the edges generator to ensure the order in which they appear
-        undirected = Mock('networkx.MultiDiGraph')
-        undirected.edges = Mock(return_value=self.certifications)
-        mock_graph.to_undirected = Mock(return_value=undirected)
-        data_layout = {}
-
-        for pubkey in self.identities_pubkeys:
-            data_layout[pubkey] = {
-                'theta': None
-            }
-
-        data_layout['pbkA']['sparent'] = None
-        data_layout['pbkB']['sparent'] = 'pbkA'
-        data_layout['pbkC']['sparent'] = 'pbkB'
-        data_layout['pbkD']['sparent'] = 'pbkA'
-        data_layout['pbkE']['sparent'] = 'pbkA'
-
-        data_layout['pbkA']['nchild'] = 2
-        data_layout['pbkB']['nchild'] = 1
-        data_layout['pbkC']['nchild'] = 0
-        data_layout['pbkD']['nchild'] = 0
-        data_layout['pbkE']['nchild'] = 0
-
-        data_layout['pbkA']['span'] = 2 * math.pi
-        data_layout['pbkB']['span'] = 2 / 3 * math.pi
-        data_layout['pbkC']['span'] = 2 / 3 * math.pi
-        data_layout['pbkD']['span'] = 2 / 3 * math.pi
-        data_layout['pbkE']['span'] = 2 / 3 * math.pi
-
-        data_layout['pbkA']['theta'] = 0.0
-        ExplorerScene._set_positions(mock_graph, data_layout, 'pbkA')
-        self.assertAlmostEqual(data_layout['pbkA']['theta'], 0.0)
-        self.assertAlmostEqual(data_layout['pbkB']['theta'], 1 / 3 * math.pi)
-        self.assertAlmostEqual(data_layout['pbkC']['theta'], 1 / 3 * math.pi)
-        self.assertAlmostEqual(data_layout['pbkD']['theta'], math.pi)
-        self.assertAlmostEqual(data_layout['pbkE']['theta'], 5 / 3 * math.pi)
-
-    @patch('networkx.MultiDiGraph')
-    @patch('networkx.MultiGraph')
-    @patch('networkx.shortest_path_length', return_value={'pbkA': 0, 'pbkB': 1, 'pbkC': 2, 'pbkD': 1, 'pbkE': 1})
-    def test_twopi_layout(self, mock_graph, mock_undirected, mock_paths):
-        # We mock the edges generator to ensure the order in which they appear
-        mock_graph.edges = Mock(return_value=self.certifications)
-        mock_graph.nodes = Mock(return_value=self.identities_pubkeys)
-        mock_graph.to_undirected = Mock(return_value=mock_undirected)
-        mock_undirected.nodes = Mock(return_value=self.identities_pubkeys)
-        mock_undirected.edges = Mock(return_value=self.certifications)
-
-        pos = ExplorerScene.twopi_layout(mock_graph, 'pbkA')
-
-        self.assertAlmostEqual(pos['pbkA'][0], 1 * math.cos(0.0) * 100)
-        self.assertAlmostEqual(pos['pbkB'][0], 2 * math.cos(1 / 3 * math.pi) * 100)
-        self.assertAlmostEqual(pos['pbkC'][0], 3 * math.cos(1 / 3 * math.pi) * 100)
-        self.assertAlmostEqual(pos['pbkD'][0], 2 * math.cos(math.pi) * 100)
-        self.assertAlmostEqual(pos['pbkE'][0], 2 * math.cos(5 / 3 * math.pi) * 100)
-
-        self.assertAlmostEqual(pos['pbkA'][1], 1 * math.sin(0.0) * 100)
-        self.assertAlmostEqual(pos['pbkB'][1], 2 * math.sin(1 / 3 * math.pi) * 100)
-        self.assertAlmostEqual(pos['pbkC'][1], 3 * math.sin(1 / 3 * math.pi) * 100)
-        self.assertAlmostEqual(pos['pbkD'][1], 2 * math.sin(math.pi) * 100)
-        self.assertAlmostEqual(pos['pbkE'][1], 2 * math.sin(5 / 3 * math.pi) * 100)
\ No newline at end of file
diff --git a/src/sakia/tests/unit/gui/views/test_wot_edge.py b/src/sakia/tests/unit/gui/views/test_wot_edge.py
deleted file mode 100644
index 6c0632b97e15f9e5eace680549297129cec79ba9..0000000000000000000000000000000000000000
--- a/src/sakia/tests/unit/gui/views/test_wot_edge.py
+++ /dev/null
@@ -1,76 +0,0 @@
-import unittest
-from unittest.mock import patch
-from PyQt5.QtCore import QLocale
-from sakia.tests import QuamashTest
-from sakia.gui.views.edges import WotEdge
-from sakia.core.graph.constants import EdgeStatus
-
-
-class TestWotEdge(unittest.TestCase, QuamashTest):
-    def setUp(self):
-        self.setUpQuamash()
-        QLocale.setDefault(QLocale("en_GB"))
-
-    def tearDown(self):
-        self.tearDownQuamash()
-
-    def test_create_wot_edge(self):
-        metadata = {
-            'status': EdgeStatus.STRONG,
-            'confirmation_text': "0/6"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-        async def exec_test():
-            edge = WotEdge("A", "B", metadata, nx_pos)
-            self.assertEqual(edge.source, "A")
-            self.assertEqual(edge.destination, "B")
-            self.assertEqual(edge.destination_point.x(), 10)
-            self.assertEqual(edge.destination_point.y(), 20)
-            self.assertEqual(edge.source_point.x(), 0)
-            self.assertEqual(edge.source_point.y(), 5)
-            self.assertEqual(edge.status, EdgeStatus.STRONG)
-
-        self.lp.run_until_complete(exec_test())
-
-    @patch('PyQt5.QtGui.QPainter')
-    @patch('PyQt5.QtWidgets.QWidget')
-    def test_paint(self, painter, widget):
-        metadata = {
-            'status': EdgeStatus.STRONG,
-            'confirmation_text': "0/6"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-
-        async def exec_test():
-            edge = WotEdge("A", "B", metadata, nx_pos)
-            edge.paint(painter, 0, widget)
-
-        self.lp.run_until_complete(exec_test())
-
-    @patch('PyQt5.QtGui.QPainter')
-    @patch('PyQt5.QtWidgets.QWidget')
-    def test_bounding_rect(self, painter, widget):
-        metadata = {
-            'status': EdgeStatus.STRONG,
-            'confirmation_text': "0/6"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-
-        async def exec_test():
-            edge = WotEdge("A", "B", metadata, nx_pos)
-            bounding_rect = edge.boundingRect()
-            self.assertAlmostEqual(bounding_rect.x(), -3.0, delta=5)
-            self.assertAlmostEqual(bounding_rect.y(), 2.0, delta=5)
-            self.assertAlmostEqual(bounding_rect.width(), 16.0, delta=5)
-            self.assertAlmostEqual(bounding_rect.height(), 21.0, delta=5)
-
-        self.lp.run_until_complete(exec_test())
diff --git a/src/sakia/tests/unit/gui/views/test_wot_node.py b/src/sakia/tests/unit/gui/views/test_wot_node.py
deleted file mode 100644
index 9577447d7408b2b06cdc323781bc56919c1e5ff7..0000000000000000000000000000000000000000
--- a/src/sakia/tests/unit/gui/views/test_wot_node.py
+++ /dev/null
@@ -1,80 +0,0 @@
-import unittest
-from unittest.mock import patch
-from PyQt5.QtCore import QLocale
-from PyQt5.QtGui import QPainter
-from PyQt5.QtWidgets import QStyleOptionGraphicsItem, QWidget
-from sakia.tests import QuamashTest
-from sakia.gui.views.nodes import WotNode
-from sakia.core.graph.constants import NodeStatus
-
-
-class TestWotNode(unittest.TestCase, QuamashTest):
-    def setUp(self):
-        self.setUpQuamash()
-        QLocale.setDefault(QLocale("en_GB"))
-
-    def tearDown(self):
-        self.tearDownQuamash()
-
-    def test_create_wot_node(self):
-        metadata = {
-            'status': NodeStatus.NEUTRAL,
-            'text': "UserA",
-            'tooltip': "TestTooltip"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-        async def exec_test():
-            node = WotNode(("A", metadata), nx_pos)
-            self.assertEqual(node.id, "A")
-            self.assertEqual(node.metadata['status'], NodeStatus.NEUTRAL)
-            self.assertEqual(node.x(), 0)
-            self.assertEqual(node.y(), 5)
-            self.assertEqual(node.status_wallet, False)
-            self.assertEqual(node.status_member, True)
-            self.assertEqual(node.text, "UserA")
-            self.assertEqual(node.toolTip(), "UserA - TestTooltip")
-
-        self.lp.run_until_complete(exec_test())
-
-    def test_paint(self):
-        painter = QPainter()
-        widget = QWidget()
-        metadata = {
-            'status': NodeStatus.NEUTRAL,
-            'text': "UserA",
-            'tooltip': "TestTooltip"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-        async def exec_test():
-            node = WotNode(("A", metadata), nx_pos)
-            node.paint(painter, QStyleOptionGraphicsItem(), widget)
-
-        self.lp.run_until_complete(exec_test())
-
-    @patch('PyQt5.QtGui.QPainter', spec=QPainter)
-    @patch('PyQt5.QtWidgets.QWidget')
-    def test_bounding_rect(self, painter, widget):
-        metadata = {
-            'status': NodeStatus.NEUTRAL,
-            'text': "A",
-            'tooltip': "TestTooltip"
-        }
-        nx_pos = {
-            "A": (0, 5),
-            "B": (10, 20)
-        }
-        async def exec_test():
-            node = WotNode(("A", metadata), nx_pos)
-            bounding_rect = node.boundingRect()
-            self.assertAlmostEqual(bounding_rect.x(), -0.5, delta=1)
-            self.assertAlmostEqual(bounding_rect.y(), -0.5, delta=1)
-            self.assertAlmostEqual(bounding_rect.width(), 19.59375, delta=15)
-            self.assertAlmostEqual(bounding_rect.height(), 37.0, delta=15)
-
-        self.lp.run_until_complete(exec_test())