diff --git a/src/sakia/core/app.py b/src/sakia/app.py
similarity index 99%
rename from src/sakia/core/app.py
rename to src/sakia/app.py
index 0895cb60daf878a1143b08401946de4ea6d42f0d..af47f2141df7626c4e27fc77ae8c9df965360af7 100644
--- a/src/sakia/core/app.py
+++ b/src/sakia/app.py
@@ -4,26 +4,26 @@ Created on 1 févr. 2014
 @author: inso
 """
 
-import os
+import asyncio
+import datetime
+import json
 import logging
-import tarfile
+import os
 import shutil
-import json
-import datetime
+import tarfile
+
 import aiohttp
-import asyncio
+from PyQt5.QtCore import QObject, pyqtSignal, QTranslator, QCoreApplication, QLocale
+from aiohttp.connector import ProxyConnector
 from pkg_resources import parse_version
 
-from PyQt5.QtCore import QObject, pyqtSignal, QTranslator, QCoreApplication, QLocale
 from duniterpy.api.bma import API
-from aiohttp.connector import ProxyConnector
-from . import config
-from .account import Account
-from .registry import IdentitiesRegistry, Identity
-from .. import __version__
+from sakia.decorators import asyncify
+from sakia.core import config
+from sakia.core.account import Account
+from sakia.core.registry import IdentitiesRegistry, Identity
+from sakia import __version__
 from ..tools.exceptions import NameAlreadyExists, BadAccountFile
-from ..tools.decorators import asyncify
-import i18n_rc
 
 
 class Application(QObject):
diff --git a/src/sakia/core/__init__.py b/src/sakia/core/__init__.py
index 6de4a62c9259773dd9a301d9f7e5b616c7328489..2f6aeb791fcab51a6e19e3f6ef76674e6add1266 100644
--- a/src/sakia/core/__init__.py
+++ b/src/sakia/core/__init__.py
@@ -1,4 +1,3 @@
-from .community import Community
-from .wallet import Wallet
 from .account import Account
-from .app import Application
\ No newline at end of file
+from .wallet import Wallet
+
diff --git a/src/sakia/core/account.py b/src/sakia/core/account.py
index cbb395e86148358fe24b45e5c8fb31120b3f1bf4..4b68f8eb336df42c05908c55af156990a1c38a96 100644
--- a/src/sakia/core/account.py
+++ b/src/sakia/core/account.py
@@ -4,24 +4,24 @@ Created on 1 févr. 2014
 @author: inso
 """
 
-from duniterpy.documents import Membership, SelfCertification, Certification, Revocation, BlockUID, Block
-from duniterpy.key import SigningKey
-from duniterpy.api import bma
-from duniterpy.api.bma import PROTOCOL_VERSION
-from duniterpy.api import errors
-
-import logging
 import asyncio
-from pkg_resources import parse_version
-from aiohttp.errors import ClientError
+import logging
+
 from PyQt5.QtCore import QObject, pyqtSignal
+from aiohttp.errors import ClientError
+from pkg_resources import parse_version
 
-from . import money
-from .wallet import Wallet
+from duniterpy.api import bma
+from duniterpy.api import errors
+from duniterpy.api.bma import PROTOCOL_VERSION
+from duniterpy.documents import Membership, SelfCertification, Certification, Revocation, BlockUID, Block
+from duniterpy.key import SigningKey
+from sakia import money
 from .community import Community
 from .registry import LocalState
-from ..tools.exceptions import ContactAlreadyExists, LookupFailureError
+from .wallet import Wallet
 from .. import __version__
+from ..tools.exceptions import ContactAlreadyExists, LookupFailureError
 
 
 class Account(QObject):
diff --git a/src/sakia/data/connectors/node.py b/src/sakia/data/connectors/node.py
index f859aacbc9d0e0ec5d36a5b921a9524abc53520b..943fe2a653e471192a82298f1e850e85b7a2cf79 100644
--- a/src/sakia/data/connectors/node.py
+++ b/src/sakia/data/connectors/node.py
@@ -1,19 +1,18 @@
-from duniterpy.documents.peer import Peer
-from duniterpy.documents import BlockUID, MalformedDocumentError, BMAEndpoint, block_uid
-from ...tools.decorators import asyncify
-from duniterpy.api import bma, errors
-
-from aiohttp.errors import WSClientDisconnectedError, WSServerHandshakeError, ClientResponseError
-from aiohttp.errors import ClientError, DisconnectedError
-from asyncio import TimeoutError
-import logging
-import jsonschema
 import asyncio
-import aiohttp
+import logging
+from asyncio import TimeoutError
 from socket import gaierror
 
+import aiohttp
+import jsonschema
 from PyQt5.QtCore import QObject, pyqtSignal
+from aiohttp.errors import ClientError, DisconnectedError
+from aiohttp.errors import WSClientDisconnectedError, WSServerHandshakeError, ClientResponseError
 
+from duniterpy.api import bma, errors
+from duniterpy.documents import BlockUID, MalformedDocumentError, BMAEndpoint
+from duniterpy.documents.peer import Peer
+from sakia.decorators import asyncify
 from sakia.errors import InvalidNodeCurrency
 from ..entities.node import Node
 
diff --git a/src/sakia/core/graph/__init__.py b/src/sakia/data/graphs/__init__.py
similarity index 100%
rename from src/sakia/core/graph/__init__.py
rename to src/sakia/data/graphs/__init__.py
diff --git a/src/sakia/core/graph/base_graph.py b/src/sakia/data/graphs/base_graph.py
similarity index 100%
rename from src/sakia/core/graph/base_graph.py
rename to src/sakia/data/graphs/base_graph.py
diff --git a/src/sakia/core/graph/constants.py b/src/sakia/data/graphs/constants.py
similarity index 100%
rename from src/sakia/core/graph/constants.py
rename to src/sakia/data/graphs/constants.py
diff --git a/src/sakia/core/graph/explorer_graph.py b/src/sakia/data/graphs/explorer_graph.py
similarity index 98%
rename from src/sakia/core/graph/explorer_graph.py
rename to src/sakia/data/graphs/explorer_graph.py
index 856ae22f593ac14d2f8ec988dbbcba8e12f19351..43a99c4e01fb2fed3605453c837b0dc1fe85f1e5 100644
--- a/src/sakia/core/graph/explorer_graph.py
+++ b/src/sakia/data/graphs/explorer_graph.py
@@ -3,7 +3,7 @@ import networkx
 import asyncio
 from PyQt5.QtCore import pyqtSignal
 from .base_graph import BaseGraph
-from ..graph.constants import EdgeStatus, NodeStatus
+from ..graphs.constants import EdgeStatus, NodeStatus
 
 
 class ExplorerGraph(BaseGraph):
diff --git a/src/sakia/core/graph/wot_graph.py b/src/sakia/data/graphs/wot_graph.py
similarity index 100%
rename from src/sakia/core/graph/wot_graph.py
rename to src/sakia/data/graphs/wot_graph.py
diff --git a/src/sakia/tools/decorators.py b/src/sakia/decorators.py
similarity index 100%
rename from src/sakia/tools/decorators.py
rename to src/sakia/decorators.py
diff --git a/src/sakia/gui/dialogs/account_cfg/controller.py b/src/sakia/gui/dialogs/account_cfg/controller.py
index f55b55739268c2a5c9def2b2e9864410addadc0d..ebc74d1cd426d47eb9d959cf6585992d40b2abf1 100644
--- a/src/sakia/gui/dialogs/account_cfg/controller.py
+++ b/src/sakia/gui/dialogs/account_cfg/controller.py
@@ -1,14 +1,14 @@
+import asyncio
+import logging
+
 from PyQt5.QtWidgets import QDialog
 
-from sakia.gui.password_asker import PasswordAskerDialog, detect_non_printable
+from sakia.decorators import asyncify
 from sakia.gui.component.controller import ComponentController
-from ..community_cfg.controller import CommunityConfigController
-from .view import AccountConfigView
+from sakia.gui.password_asker import PasswordAskerDialog, detect_non_printable
 from .model import AccountConfigModel
-from sakia.tools.decorators import asyncify
-
-import logging
-import asyncio
+from .view import AccountConfigView
+from ..community_cfg.controller import CommunityConfigController
 
 
 class AccountConfigController(ComponentController):
diff --git a/src/sakia/gui/dialogs/certification/controller.py b/src/sakia/gui/dialogs/certification/controller.py
index b6d8b6ef869c8a2ab709e01113e5c9bf9bd3a278..7172b6132488bfd25d6b7666789939037e475963 100644
--- a/src/sakia/gui/dialogs/certification/controller.py
+++ b/src/sakia/gui/dialogs/certification/controller.py
@@ -1,12 +1,14 @@
+import asyncio
+
+from PyQt5.QtCore import Qt
+from PyQt5.QtWidgets import QApplication
+
+from sakia.decorators import asyncify, once_at_a_time
 from sakia.gui.component.controller import ComponentController
-from .view import CertificationView
-from .model import CertificationModel
 from sakia.gui.sub.search_user.controller import SearchUserController
 from sakia.gui.sub.user_information.controller import UserInformationController
-from PyQt5.QtWidgets import QApplication
-from PyQt5.QtCore import Qt
-from sakia.tools.decorators import asyncify, once_at_a_time
-import asyncio
+from .model import CertificationModel
+from .view import CertificationView
 
 
 class CertificationController(ComponentController):
diff --git a/src/sakia/gui/dialogs/community_cfg/controller.py b/src/sakia/gui/dialogs/community_cfg/controller.py
index 0ff5b79530ceb1dc105515300bd638959d6d39af..d009f236c0c7ab65b83d60e74f0e399278893f4c 100644
--- a/src/sakia/gui/dialogs/community_cfg/controller.py
+++ b/src/sakia/gui/dialogs/community_cfg/controller.py
@@ -1,14 +1,15 @@
-from PyQt5.QtWidgets import QDialog, QApplication, QMenu
+import logging
+
 from PyQt5.QtGui import QCursor
-from sakia.gui.component.controller import ComponentController
-from .view import CommunityConfigView
-from .model import CommunityConfigModel
-from sakia.tools.decorators import asyncify
+from PyQt5.QtWidgets import QDialog, QApplication, QMenu
 from aiohttp.errors import DisconnectedError, ClientError, TimeoutError
-from duniterpy.documents import MalformedDocumentError
 from sakia.tools.exceptions import NoPeerAvailable
 
-import logging
+from duniterpy.documents import MalformedDocumentError
+from sakia.decorators import asyncify
+from sakia.gui.component.controller import ComponentController
+from .model import CommunityConfigModel
+from .view import CommunityConfigView
 
 
 class CommunityConfigController(ComponentController):
diff --git a/src/sakia/gui/dialogs/revocation/controller.py b/src/sakia/gui/dialogs/revocation/controller.py
index e8294ed66286b7bead40851fa51b2d1fa5b28578..9dd31568080e400f274725723eaca170b0dd3d33 100644
--- a/src/sakia/gui/dialogs/revocation/controller.py
+++ b/src/sakia/gui/dialogs/revocation/controller.py
@@ -1,9 +1,10 @@
+import asyncio
+
+from duniterpy.documents import MalformedDocumentError
+from sakia.decorators import asyncify
 from sakia.gui.component.controller import ComponentController
-from .view import RevocationView
 from .model import RevocationModel
-from duniterpy.documents import MalformedDocumentError
-from sakia.tools.decorators import asyncify
-import asyncio
+from .view import RevocationView
 
 
 class RevocationController(ComponentController):
diff --git a/src/sakia/gui/dialogs/revocation/view.py b/src/sakia/gui/dialogs/revocation/view.py
index d296bf4e472246e69fb8f33b91925ec2d69ea907..25a37640fdd0d1cd208fd994f99ee9c85b78e022 100644
--- a/src/sakia/gui/dialogs/revocation/view.py
+++ b/src/sakia/gui/dialogs/revocation/view.py
@@ -1,8 +1,10 @@
-from PyQt5.QtWidgets import QDialog, QFileDialog, QMessageBox
-from .revocation_uic import Ui_RevocationDialog
 from enum import Enum
+
+from PyQt5.QtWidgets import QDialog, QFileDialog, QMessageBox
+
+from sakia.decorators import asyncify
 from sakia.gui.widgets.dialogs import QAsyncMessageBox
-from sakia.tools.decorators import asyncify
+from .revocation_uic import Ui_RevocationDialog
 
 
 class RevocationView(QDialog, Ui_RevocationDialog):
diff --git a/src/sakia/gui/dialogs/transfer/controller.py b/src/sakia/gui/dialogs/transfer/controller.py
index e9cf85c0594deaf7e43032357dfd03da9bc2fe17..18c189804c84bd349c5dc5a9d9c50b9ebb5c408f 100644
--- a/src/sakia/gui/dialogs/transfer/controller.py
+++ b/src/sakia/gui/dialogs/transfer/controller.py
@@ -1,13 +1,15 @@
+import asyncio
+import logging
+
+from PyQt5.QtCore import Qt
+from PyQt5.QtWidgets import QApplication
+
+from sakia.decorators import asyncify
 from sakia.gui.component.controller import ComponentController
 from sakia.gui.sub.search_user.controller import SearchUserController
 from sakia.gui.sub.user_information.controller import UserInformationController
-from .view import TransferView
 from .model import TransferModel
-from sakia.tools.decorators import asyncify
-from PyQt5.QtWidgets import QApplication
-from PyQt5.QtCore import Qt
-import logging
-import asyncio
+from .view import TransferView
 
 
 class TransferController(ComponentController):
diff --git a/src/sakia/gui/main_window/status_bar/model.py b/src/sakia/gui/main_window/status_bar/model.py
index cd3649cac7296445064e52a4398c7f989b895e7f..9d46f3ed15f10b257254f8fec8de110a32f869f6 100644
--- a/src/sakia/gui/main_window/status_bar/model.py
+++ b/src/sakia/gui/main_window/status_bar/model.py
@@ -1,7 +1,8 @@
-from sakia.gui.component.model import ComponentModel
-from sakia.core.money import Referentials
 import logging
 
+from sakia.gui.component.model import ComponentModel
+from sakia.money import Referentials
+
 
 class StatusBarModel(ComponentModel):
     """
diff --git a/src/sakia/gui/main_window/toolbar/controller.py b/src/sakia/gui/main_window/toolbar/controller.py
index b4d7c069d1d3846b8626a761affff7e0e27ee463..efa61f73e84761d554ce5e7496c2f927f48b26cc 100644
--- a/src/sakia/gui/main_window/toolbar/controller.py
+++ b/src/sakia/gui/main_window/toolbar/controller.py
@@ -1,15 +1,17 @@
+import logging
+
+from PyQt5.QtCore import Qt
 from PyQt5.QtWidgets import QDialog, QMessageBox
-from PyQt5.QtCore import QT_TRANSLATE_NOOP, Qt
+
+from sakia.decorators import asyncify, once_at_a_time
 from sakia.gui.component.controller import ComponentController
-from .model import ToolbarModel
-from .view import ToolbarView
-from sakia.tools.decorators import asyncify, once_at_a_time, cancel_once_task
-from sakia.gui.widgets.dialogs import QAsyncMessageBox, QAsyncFileDialog, dialog_async_exec
-from sakia.gui.widgets import toast
+from sakia.gui.dialogs.account_cfg.controller import AccountConfigController
 from sakia.gui.dialogs.certification.controller import CertificationController
 from sakia.gui.dialogs.transfer.controller import TransferController
-from sakia.gui.dialogs.account_cfg.controller import AccountConfigController
-import logging
+from sakia.gui.widgets import toast
+from sakia.gui.widgets.dialogs import QAsyncMessageBox, QAsyncFileDialog, dialog_async_exec
+from .model import ToolbarModel
+from .view import ToolbarView
 
 
 class ToolbarController(ComponentController):
diff --git a/src/sakia/gui/navigation/graphs/base/controller.py b/src/sakia/gui/navigation/graphs/base/controller.py
index 45e547cc049562f714d769ab171e4b504fe12484..9417e02b891ab038083abf4dc85c3eb10f273887 100644
--- a/src/sakia/gui/navigation/graphs/base/controller.py
+++ b/src/sakia/gui/navigation/graphs/base/controller.py
@@ -1,9 +1,11 @@
-from sakia.gui.component.controller import ComponentController
+import asyncio
+
 from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtGui import QCursor
-from sakia.tools.decorators import asyncify, once_at_a_time
+
+from sakia.decorators import asyncify, once_at_a_time
+from sakia.gui.component.controller import ComponentController
 from sakia.gui.widgets.context_menu import ContextMenu
-import asyncio
 
 
 class BaseGraphController(ComponentController):
diff --git a/src/sakia/gui/navigation/graphs/base/node.py b/src/sakia/gui/navigation/graphs/base/node.py
index 332a859d8a932cdb92357c92d7ea020d2b8521aa..33362993ed08eaf75bbfadc85da2051ce9fd83d6 100644
--- a/src/sakia/gui/navigation/graphs/base/node.py
+++ b/src/sakia/gui/navigation/graphs/base/node.py
@@ -1,8 +1,9 @@
-from PyQt5.QtWidgets import QGraphicsEllipseItem, QGraphicsSceneHoverEvent, \
-    QGraphicsSceneContextMenuEvent
 from PyQt5.QtCore import Qt
 from PyQt5.QtGui import QMouseEvent
-from sakia.core.graph.constants import NodeStatus
+from PyQt5.QtWidgets import QGraphicsEllipseItem, QGraphicsSceneHoverEvent, \
+    QGraphicsSceneContextMenuEvent
+
+from sakia.data.graphs.constants import NodeStatus
 
 
 class BaseNode(QGraphicsEllipseItem):
diff --git a/src/sakia/gui/navigation/graphs/explorer/controller.py b/src/sakia/gui/navigation/graphs/explorer/controller.py
index 9445148d5e890843ddffdde7b699b09f38e23d0b..5124dfaf450d06c4f1344820c9229e37d8d70b99 100644
--- a/src/sakia/gui/navigation/graphs/explorer/controller.py
+++ b/src/sakia/gui/navigation/graphs/explorer/controller.py
@@ -1,10 +1,11 @@
-from ..base.controller import BaseGraphController
-from sakia.tools.decorators import asyncify, once_at_a_time
-from .view import ExplorerView
-from .model import ExplorerModel
-from sakia.gui.sub.search_user.controller import SearchUserController
 import asyncio
 
+from sakia.decorators import asyncify, once_at_a_time
+from sakia.gui.sub.search_user.controller import SearchUserController
+from .model import ExplorerModel
+from .view import ExplorerView
+from ..base.controller import BaseGraphController
+
 
 class ExplorerController(BaseGraphController):
     """
diff --git a/src/sakia/gui/navigation/graphs/explorer/edge.py b/src/sakia/gui/navigation/graphs/explorer/edge.py
index 0af1f027efbbfb9b84b28a0eba7520f2d70f0ab3..085538aac0961cce51fb0b0922e4077f6a850fc2 100644
--- a/src/sakia/gui/navigation/graphs/explorer/edge.py
+++ b/src/sakia/gui/navigation/graphs/explorer/edge.py
@@ -1,9 +1,11 @@
+import math
+
 from PyQt5.QtCore import Qt, QRectF, QLineF, QPointF, QSizeF, \
-                        qFuzzyCompare, QTimeLine
+                        qFuzzyCompare
 from PyQt5.QtGui import QColor, QPen, QPolygonF
-import math
+
+from sakia.data.graphs.constants import EdgeStatus
 from ..base.edge import BaseEdge
-from sakia.core.graph.constants import EdgeStatus
 
 
 class ExplorerEdge(BaseEdge):
diff --git a/src/sakia/gui/navigation/graphs/explorer/model.py b/src/sakia/gui/navigation/graphs/explorer/model.py
index d7d4d4ff9765f6fafd64aaebe41f11ff4b63ec13..81063f57684066369f72072f62c485762501be2d 100644
--- a/src/sakia/gui/navigation/graphs/explorer/model.py
+++ b/src/sakia/gui/navigation/graphs/explorer/model.py
@@ -1,7 +1,8 @@
-from ..base.model import BaseGraphModel
-from sakia.core.graph import ExplorerGraph
 from sakia.tools.exceptions import NoPeerAvailable
 
+from sakia.data.graphs import ExplorerGraph
+from ..base.model import BaseGraphModel
+
 
 class ExplorerModel(BaseGraphModel):
     """
diff --git a/src/sakia/gui/navigation/graphs/explorer/node.py b/src/sakia/gui/navigation/graphs/explorer/node.py
index 58b578debc968d66cf7fbea7dfeb1f2d196b6d8b..19dda987cbf73bd95549b6818dbe5a7fd923f90a 100644
--- a/src/sakia/gui/navigation/graphs/explorer/node.py
+++ b/src/sakia/gui/navigation/graphs/explorer/node.py
@@ -1,9 +1,11 @@
-from PyQt5.QtWidgets import QGraphicsSimpleTextItem
+import math
+
 from PyQt5.QtCore import Qt, QPointF, QTimeLine, QTimer
 from PyQt5.QtGui import QTransform, QColor, QPen, QBrush, QRadialGradient
-from sakia.core.graph.constants import NodeStatus
+from PyQt5.QtWidgets import QGraphicsSimpleTextItem
+
+from sakia.data.graphs.constants import NodeStatus
 from ..base.node import BaseNode
-import math
 
 
 class ExplorerNode(BaseNode):
diff --git a/src/sakia/gui/navigation/graphs/wot/controller.py b/src/sakia/gui/navigation/graphs/wot/controller.py
index bd6cdc3f2d70e5548e6959acca122f8a4dc47f18..3dae41d1185eadc574f85f48b480b7f9723dc151 100644
--- a/src/sakia/gui/navigation/graphs/wot/controller.py
+++ b/src/sakia/gui/navigation/graphs/wot/controller.py
@@ -1,10 +1,11 @@
-from ..base.controller import BaseGraphController
-from sakia.tools.decorators import asyncify, once_at_a_time
-from .view import WotView
-from .model import WotModel
-from sakia.gui.sub.search_user.controller import SearchUserController
 import asyncio
 
+from sakia.decorators import asyncify, once_at_a_time
+from sakia.gui.sub.search_user.controller import SearchUserController
+from .model import WotModel
+from .view import WotView
+from ..base.controller import BaseGraphController
+
 
 class WotController(BaseGraphController):
     """
diff --git a/src/sakia/gui/navigation/graphs/wot/edge.py b/src/sakia/gui/navigation/graphs/wot/edge.py
index 04f31d5c2ca7916f20f15231f9655fbd41d274e0..29053a06f7522e2b0a107f02d11ef3d64f4c384c 100644
--- a/src/sakia/gui/navigation/graphs/wot/edge.py
+++ b/src/sakia/gui/navigation/graphs/wot/edge.py
@@ -1,9 +1,11 @@
+import math
+
 from PyQt5.QtCore import Qt, QRectF, QLineF, QPointF, QSizeF, \
                         qFuzzyCompare
 from PyQt5.QtGui import QColor, QPen, QPolygonF
-import math
+
+from sakia.data.graphs.constants import EdgeStatus
 from ..base.edge import BaseEdge
-from sakia.core.graph.constants import EdgeStatus
 
 
 class WotEdge(BaseEdge):
diff --git a/src/sakia/gui/navigation/graphs/wot/model.py b/src/sakia/gui/navigation/graphs/wot/model.py
index 56981afc610d674bf5ab35ab793ea24013cd5ad8..d6c0440e14985e86e053867bc7b3fdb08ee01ae8 100644
--- a/src/sakia/gui/navigation/graphs/wot/model.py
+++ b/src/sakia/gui/navigation/graphs/wot/model.py
@@ -1,5 +1,5 @@
+from sakia.data.graphs import WoTGraph
 from ..base.model import BaseGraphModel
-from sakia.core.graph import WoTGraph
 
 
 class WotModel(BaseGraphModel):
diff --git a/src/sakia/gui/navigation/graphs/wot/node.py b/src/sakia/gui/navigation/graphs/wot/node.py
index 51a673a987dfc52c4ce040330dc18ca0689db442..0d99b01eb9540b26cd70864637eb34a975bd7010 100644
--- a/src/sakia/gui/navigation/graphs/wot/node.py
+++ b/src/sakia/gui/navigation/graphs/wot/node.py
@@ -1,7 +1,8 @@
-from PyQt5.QtWidgets import QGraphicsSimpleTextItem
 from PyQt5.QtCore import Qt, QPointF
 from PyQt5.QtGui import QTransform, QColor, QPen, QBrush, QRadialGradient
-from sakia.core.graph.constants import NodeStatus
+from PyQt5.QtWidgets import QGraphicsSimpleTextItem
+
+from sakia.data.graphs.constants import NodeStatus
 from ..base.node import BaseNode
 
 
diff --git a/src/sakia/gui/navigation/identities/controller.py b/src/sakia/gui/navigation/identities/controller.py
index 7722bfbb6d5315d13360905869991cc4bbb3fb6a..719514a40a58f9105c3e4ef94a7dc692f5e4671f 100644
--- a/src/sakia/gui/navigation/identities/controller.py
+++ b/src/sakia/gui/navigation/identities/controller.py
@@ -1,14 +1,16 @@
+import logging
+
+from PyQt5.QtGui import QCursor
+from sakia.tools.exceptions import NoPeerAvailable
+
+from duniterpy.api import bma, errors
+from duniterpy.documents.block import BlockUID
+from sakia.core.registry import Identity, BlockchainState
+from sakia.decorators import once_at_a_time, asyncify
 from sakia.gui.component.controller import ComponentController
+from sakia.gui.widgets.context_menu import ContextMenu
 from .model import IdentitiesModel
 from .view import IdentitiesView
-from sakia.tools.decorators import once_at_a_time, asyncify
-from sakia.gui.widgets.context_menu import ContextMenu
-from PyQt5.QtGui import QCursor
-from sakia.core.registry import Identity, BlockchainState
-from duniterpy.documents.block import BlockUID
-from duniterpy.api import bma, errors
-from sakia.tools.exceptions import NoPeerAvailable
-import logging
 
 
 class IdentitiesController(ComponentController):
diff --git a/src/sakia/gui/navigation/informations/controller.py b/src/sakia/gui/navigation/informations/controller.py
index 206c7246e15ed59bebb56ac8ade013b5f2b937e9..ff466be122b2da72866191694e677b37aab379d3 100644
--- a/src/sakia/gui/navigation/informations/controller.py
+++ b/src/sakia/gui/navigation/informations/controller.py
@@ -1,10 +1,12 @@
+import logging
+
+from sakia.tools.exceptions import NoPeerAvailable
+
+from duniterpy.api import errors
+from sakia.decorators import asyncify
 from sakia.gui.component.controller import ComponentController
 from .model import InformationsModel
 from .view import InformationsView
-from sakia.tools.decorators import asyncify
-from sakia.tools.exceptions import NoPeerAvailable
-from duniterpy.api import errors
-import logging
 
 
 class InformationsController(ComponentController):
diff --git a/src/sakia/gui/navigation/informations/model.py b/src/sakia/gui/navigation/informations/model.py
index f7272c1df7e996852763f42a40a00a3831343d3c..819296f9f309df2e4ff65b64dcfba5c3c8eec477 100644
--- a/src/sakia/gui/navigation/informations/model.py
+++ b/src/sakia/gui/navigation/informations/model.py
@@ -1,11 +1,12 @@
-from sakia.gui.component.model import ComponentModel
-from sakia.tools.exceptions import NoPeerAvailable
-from PyQt5.QtCore import QLocale, QDateTime, pyqtSignal
-from sakia.core.money import Referentials
-
 import logging
 import math
 
+from PyQt5.QtCore import QLocale, QDateTime, pyqtSignal
+from sakia.tools.exceptions import NoPeerAvailable
+
+from sakia.gui.component.model import ComponentModel
+from sakia.money import Referentials
+
 
 class InformationsModel(ComponentModel):
     """
diff --git a/src/sakia/gui/navigation/network/table_model.py b/src/sakia/gui/navigation/network/table_model.py
index 6d6987956fd3ea263be5f752f4c7e10336290deb..07e0f822f7b48753fba38b0a596805610a3aa1fd 100644
--- a/src/sakia/gui/navigation/network/table_model.py
+++ b/src/sakia/gui/navigation/network/table_model.py
@@ -4,15 +4,15 @@ Created on 5 févr. 2014
 @author: inso
 """
 
-import logging
 import asyncio
+import logging
 
 from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyModel, QDateTime, QLocale
 from PyQt5.QtGui import QColor, QFont, QIcon
-
-from sakia.tools.exceptions import NoPeerAvailable
-from sakia.tools.decorators import asyncify, once_at_a_time, cancel_once_task
 from sakia.core.net.node import Node
+from sakia.tools.exceptions import NoPeerAvailable
+
+from sakia.decorators import asyncify, once_at_a_time
 
 
 class NetworkFilterProxyModel(QSortFilterProxyModel):
diff --git a/src/sakia/gui/navigation/txhistory/controller.py b/src/sakia/gui/navigation/txhistory/controller.py
index 92920fad0761bb95bc611afcf6c656f937962530..c6f02e11bff28f86accc09bc565c5e2f99c4b4d7 100644
--- a/src/sakia/gui/navigation/txhistory/controller.py
+++ b/src/sakia/gui/navigation/txhistory/controller.py
@@ -3,12 +3,12 @@ import logging
 from PyQt5.QtCore import QTime, pyqtSignal
 from PyQt5.QtGui import QCursor
 
+from sakia.decorators import asyncify, once_at_a_time
 from sakia.gui.component.controller import ComponentController
-from .view import TxHistoryView
-from .model import TxHistoryModel
-from sakia.tools.decorators import asyncify, once_at_a_time
 from sakia.gui.widgets import toast
 from sakia.gui.widgets.context_menu import ContextMenu
+from .model import TxHistoryModel
+from .view import TxHistoryView
 
 
 class TxHistoryController(ComponentController):
diff --git a/src/sakia/gui/navigation/txhistory/table_model.py b/src/sakia/gui/navigation/txhistory/table_model.py
index 969a7250e92e950ea4abdb818708f3d03f62f19c..c6c106a71d2d057aaa23747864e8e2dc82534217 100644
--- a/src/sakia/gui/navigation/txhistory/table_model.py
+++ b/src/sakia/gui/navigation/txhistory/table_model.py
@@ -4,18 +4,19 @@ Created on 5 févr. 2014
 @author: inso
 """
 
+import asyncio
 import datetime
 import logging
-import asyncio
 import math
-from sakia.core.transfer import Transfer, TransferState
+
+from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyModel, \
+    QDateTime, QLocale
+from PyQt5.QtGui import QFont, QColor, QIcon
 from sakia.core.net.network import MAX_CONFIRMATIONS
 from sakia.tools.exceptions import NoPeerAvailable
-from sakia.tools.decorators import asyncify, once_at_a_time, cancel_once_task
-from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyModel, \
-    QDateTime, QLocale, QModelIndex
 
-from PyQt5.QtGui import QFont, QColor, QIcon
+from sakia.core.transfer import Transfer, TransferState
+from sakia.decorators import asyncify, once_at_a_time, cancel_once_task
 
 
 class TxFilterProxyModel(QSortFilterProxyModel):
diff --git a/res/ui/password_asker.ui b/src/sakia/gui/password_asker.ui
similarity index 100%
rename from res/ui/password_asker.ui
rename to src/sakia/gui/password_asker.ui
diff --git a/src/sakia/gui/preferences.py b/src/sakia/gui/preferences.py
index 9d00fc555c37974bd95319c2603094111ee05f4c..90fa1ca4274e2ef23d50f5b336f98010f8a59ed3 100644
--- a/src/sakia/gui/preferences.py
+++ b/src/sakia/gui/preferences.py
@@ -7,7 +7,7 @@ Created on 11 mai 2015
 from PyQt5.QtCore import QCoreApplication
 from PyQt5.QtWidgets import QDialog
 
-from ..core import money
+from sakia import money
 from ..presentation.preferences_uic import Ui_PreferencesDialog
 
 
diff --git a/src/sakia/gui/sub/search_user/controller.py b/src/sakia/gui/sub/search_user/controller.py
index 7dcd7d42e0ea46370867740c11195f9c313bbacb..ceab618e0eb3661fd890b8aee96f126c978b5bd9 100644
--- a/src/sakia/gui/sub/search_user/controller.py
+++ b/src/sakia/gui/sub/search_user/controller.py
@@ -1,9 +1,10 @@
 from PyQt5.QtCore import pyqtSignal
+
+from sakia.core.registry import Identity
+from sakia.decorators import asyncify
 from sakia.gui.component.controller import ComponentController
 from .model import SearchUserModel
 from .view import SearchUserView
-from sakia.tools.decorators import asyncify
-from sakia.core.registry import Identity
 
 
 class SearchUserController(ComponentController):
diff --git a/src/sakia/gui/sub/user_information/controller.py b/src/sakia/gui/sub/user_information/controller.py
index 080326d643f42a327da7df8e3c9f2a858e2b2a1a..55d5349ac1dca6d3fbf0acb3c324357383b01900 100644
--- a/src/sakia/gui/sub/user_information/controller.py
+++ b/src/sakia/gui/sub/user_information/controller.py
@@ -1,9 +1,10 @@
+from PyQt5.QtWidgets import QDialog
+
+from sakia.core.registry import LocalState
+from sakia.decorators import asyncify
 from sakia.gui.component.controller import ComponentController
-from .view import UserInformationView
 from .model import UserInformationModel
-from sakia.tools.decorators import asyncify
-from sakia.core.registry import LocalState
-from PyQt5.QtWidgets import QDialog
+from .view import UserInformationView
 
 
 class UserInformationController(ComponentController):
diff --git a/src/sakia/gui/sub/user_information/model.py b/src/sakia/gui/sub/user_information/model.py
index d75b7b5cd6b5799262fe5d7b292dfb3514760af1..324060ed0c9929a105a7b10882f3fbc730d70174 100644
--- a/src/sakia/gui/sub/user_information/model.py
+++ b/src/sakia/gui/sub/user_information/model.py
@@ -1,8 +1,10 @@
-from sakia.gui.component.model import ComponentModel
-from sakia.tools.exceptions import MembershipNotFoundError, LookupFailureError, NoPeerAvailable
-from sakia.core.graph import WoTGraph
 import logging
 
+from sakia.tools.exceptions import MembershipNotFoundError, LookupFailureError, NoPeerAvailable
+
+from sakia.data.graphs import WoTGraph
+from sakia.gui.component.model import ComponentModel
+
 
 class UserInformationModel(ComponentModel):
     """
diff --git a/src/sakia/gui/widgets/context_menu.py b/src/sakia/gui/widgets/context_menu.py
index 7aa990c8234a55959c9d03fef0bb21f8d6c53706..ea5a154b67061412cda537494808b154f453fa00 100644
--- a/src/sakia/gui/widgets/context_menu.py
+++ b/src/sakia/gui/widgets/context_menu.py
@@ -1,16 +1,17 @@
-from PyQt5.QtWidgets import QMenu, QAction, QApplication, QMessageBox
-from PyQt5.QtCore import QObject, pyqtSignal
-from duniterpy.documents import Block, Membership
 import logging
 
-from sakia.gui.sub.user_information.controller import UserInformationController
+from PyQt5.QtCore import QObject, pyqtSignal
+from PyQt5.QtWidgets import QMenu, QAction, QApplication, QMessageBox
+from sakia.tools.exceptions import MembershipNotFoundError
+
+from duniterpy.documents import Block
+from sakia.core.registry import Identity
+from sakia.core.transfer import Transfer, TransferState
+from sakia.decorators import asyncify
 from sakia.gui.contact import ConfigureContactDialog
-from sakia.gui.dialogs.transfer.controller import TransferController
 from sakia.gui.dialogs.certification.controller import CertificationController
-from sakia.tools.decorators import asyncify
-from sakia.core.transfer import Transfer, TransferState
-from sakia.core.registry import Identity
-from sakia.tools.exceptions import MembershipNotFoundError
+from sakia.gui.dialogs.transfer.controller import TransferController
+from sakia.gui.sub.user_information.controller import UserInformationController
 
 
 class ContextMenu(QObject):
diff --git a/src/sakia/main.py b/src/sakia/main.py
index 89a7871ebf73c5edc4b285d208b3cf82cae2d66e..f06c5278f4378ac437c2b2acf4163275edea553e 100755
--- a/src/sakia/main.py
+++ b/src/sakia/main.py
@@ -3,26 +3,19 @@ Created on 1 févr. 2014
 
 @author: inso
 """
-import signal
-import sys
 import asyncio
 import logging
-import os
-import traceback
-
-# To debug missing spec
-import jsonschema
+import signal
+import sys
 import traceback
 
-# To force cx_freeze import
-import PyQt5.QtSvg
+from PyQt5.QtCore import Qt
+from PyQt5.QtWidgets import QApplication, QMessageBox
 
 from quamash import QSelectorEventLoop
-from PyQt5.QtWidgets import QApplication, QMessageBox
-from PyQt5.QtCore import Qt
-from sakia.gui.main_window.controller import MainWindowController
+from sakia.app import Application
 from sakia.gui.dialogs.account_cfg.controller import AccountConfigController
-from sakia.core.app import Application
+from sakia.gui.main_window.controller import MainWindowController
 
 
 def async_exception_handler(loop, context):
diff --git a/src/sakia/models/certifications.py b/src/sakia/models/certifications.py
index 72bbf69717f6ff0dbdb11eedaebd34660beab5c9..17c9f81a9e85783e8dcfab5fa1a92fdb50213e85 100644
--- a/src/sakia/models/certifications.py
+++ b/src/sakia/models/certifications.py
@@ -6,13 +6,13 @@ Created on 5 févr. 2014
 
 import datetime
 import logging
-import asyncio
-from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task
-from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyModel, \
-    QDateTime, QLocale, QModelIndex
 
+from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyModel, \
+    QDateTime, QLocale
 from PyQt5.QtGui import QFont, QColor
 
+from sakia.decorators import asyncify, once_at_a_time, cancel_once_task
+
 
 class CertsFilterProxyModel(QSortFilterProxyModel):
     def __init__(self, ts_from, ts_to, parent=None):
diff --git a/src/sakia/core/money/__init__.py b/src/sakia/money/__init__.py
similarity index 100%
rename from src/sakia/core/money/__init__.py
rename to src/sakia/money/__init__.py
diff --git a/src/sakia/core/money/base_referential.py b/src/sakia/money/base_referential.py
similarity index 100%
rename from src/sakia/core/money/base_referential.py
rename to src/sakia/money/base_referential.py
diff --git a/src/sakia/core/money/dividend_per_day.py b/src/sakia/money/dividend_per_day.py
similarity index 100%
rename from src/sakia/core/money/dividend_per_day.py
rename to src/sakia/money/dividend_per_day.py
diff --git a/src/sakia/core/money/quant_zerosum.py b/src/sakia/money/quant_zerosum.py
similarity index 100%
rename from src/sakia/core/money/quant_zerosum.py
rename to src/sakia/money/quant_zerosum.py
diff --git a/src/sakia/core/money/quantitative.py b/src/sakia/money/quantitative.py
similarity index 100%
rename from src/sakia/core/money/quantitative.py
rename to src/sakia/money/quantitative.py
diff --git a/src/sakia/core/money/relative.py b/src/sakia/money/relative.py
similarity index 100%
rename from src/sakia/core/money/relative.py
rename to src/sakia/money/relative.py
diff --git a/src/sakia/core/money/relative_to_past.py b/src/sakia/money/relative_to_past.py
similarity index 100%
rename from src/sakia/core/money/relative_to_past.py
rename to src/sakia/money/relative_to_past.py
diff --git a/src/sakia/core/money/relative_zerosum.py b/src/sakia/money/relative_zerosum.py
similarity index 100%
rename from src/sakia/core/money/relative_zerosum.py
rename to src/sakia/money/relative_zerosum.py
diff --git a/src/sakia/core/money/udd_to_past.py b/src/sakia/money/udd_to_past.py
similarity index 100%
rename from src/sakia/core/money/udd_to_past.py
rename to src/sakia/money/udd_to_past.py
diff --git a/src/sakia/services/network.py b/src/sakia/services/network.py
index 9f12bbe1ec5525c4c983ee2c9589f91fd603529b..7cfac5f2676c3e01126427c5472361063bc71657 100644
--- a/src/sakia/services/network.py
+++ b/src/sakia/services/network.py
@@ -1,14 +1,16 @@
-from sakia.data.connectors import NodeConnector
-from sakia.data.entities import Node
-from sakia.errors import InvalidNodeCurrency
-from sakia.tools.decorators import asyncify
+import asyncio
 import logging
 import time
-import asyncio
-from duniterpy.key import VerifyingKey
-from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject
 from collections import Counter
 
+from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject
+
+from duniterpy.key import VerifyingKey
+from sakia.data.connectors import NodeConnector
+from sakia.data.entities import Node
+from sakia.decorators import asyncify
+from sakia.errors import InvalidNodeCurrency
+
 
 class NetworkService(QObject):
     """
diff --git a/src/sakia/tests/functional/certification/test_certification.py b/src/sakia/tests/functional/certification/test_certification.py
index b836a9b8750e1ce20550b37eca6701f7f4821736..ea22b614046f4f767d3bfa56cf156cb3105fa23f 100644
--- a/src/sakia/tests/functional/certification/test_certification.py
+++ b/src/sakia/tests/functional/certification/test_certification.py
@@ -1,22 +1,22 @@
-import sys
-import unittest
 import asyncio
 import time
-import logging
+import unittest
+
 import aiohttp
-from duniterpy.documents.peer import BMAEndpoint
-from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMessageBox, QApplication
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
-from sakia.tests.mocks.bma import init_new_community
-from sakia.core.registry.identities import IdentitiesRegistry
-from sakia.gui.certification import CertificationDialog, Ui_CertificationDialog
-from sakia.gui.password_asker import PasswordAskerDialog
-from sakia.core.app import Application
-from sakia.core import Account, Community, Wallet
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMessageBox, QApplication
 from sakia.core.net import Network, Node
 from sakia.core.net.api.bma.access import BmaAccess
+from sakia.gui.certification import CertificationDialog, Ui_CertificationDialog
+
+from duniterpy.documents.peer import BMAEndpoint
+from sakia.app import Application
+from sakia.core import Account, Community, Wallet
+from sakia.core.registry.identities import IdentitiesRegistry
+from sakia.gui.password_asker import PasswordAskerDialog
 from sakia.tests import QuamashTest
+from sakia.tests.mocks.bma import init_new_community
 
 
 class TestCertificationDialog(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/functional/identities_tab/test_identities_table.py b/src/sakia/tests/functional/identities_tab/test_identities_table.py
index c88876b6c16844d9565682bdbbd42231694cdb24..d64481fa697fda39cebd89c99c2e58e6de1d73ac 100644
--- a/src/sakia/tests/functional/identities_tab/test_identities_table.py
+++ b/src/sakia/tests/functional/identities_tab/test_identities_table.py
@@ -1,21 +1,20 @@
-import sys
-import unittest
 import asyncio
-import aiohttp
-import logging
 import time
+import unittest
+
+import aiohttp
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
+from sakia.core.net import Network, Node
+from sakia.core.net.api.bma.access import BmaAccess
+from sakia.gui.identities_tab import IdentitiesTabWidget
 
-from sakia.tests.mocks.bma import nice_blockchain
+from sakia.app import Application
+from sakia.core import Account, Community, Wallet
 from sakia.core.registry.identities import IdentitiesRegistry
-from sakia.gui.identities_tab import IdentitiesTabWidget
 from sakia.gui.password_asker import PasswordAskerDialog
-from sakia.core.app import Application
-from sakia.core import Account, Community, Wallet
-from sakia.core.net import Network, Node
-from sakia.core.net.api.bma.access import BmaAccess
 from sakia.tests import QuamashTest
+from sakia.tests.mocks.bma import nice_blockchain
 
 
 class TestIdentitiesTable(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/functional/main_window/test_main_window_dialogs.py b/src/sakia/tests/functional/main_window/test_main_window_dialogs.py
index ed9157a9816b196643e7ed133ec8d2a053c53779..d57d65c25e0f185825cc8f08076991bd5d1d9990 100644
--- a/src/sakia/tests/functional/main_window/test_main_window_dialogs.py
+++ b/src/sakia/tests/functional/main_window/test_main_window_dialogs.py
@@ -1,11 +1,13 @@
-import unittest
 import asyncio
+import unittest
+
+from PyQt5.QtCore import QLocale
 from PyQt5.QtWidgets import QDialog, QFileDialog
-from PyQt5.QtCore import QLocale, QTimer
 from sakia.gui.mainwindow import MainWindow
-from sakia.core.app import Application
-from sakia.tests import QuamashTest
+
+from sakia.app import Application
 from sakia.core.registry.identities import IdentitiesRegistry
+from sakia.tests import QuamashTest
 
 
 class MainWindowDialogsTest(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/functional/main_window/test_main_window_menus.py b/src/sakia/tests/functional/main_window/test_main_window_menus.py
index 7022217db7230392c1725c0140f58afe3af88245..45c78647c17e5cd6528f847c0dd263682913b393 100644
--- a/src/sakia/tests/functional/main_window/test_main_window_menus.py
+++ b/src/sakia/tests/functional/main_window/test_main_window_menus.py
@@ -1,14 +1,13 @@
-import sys
 import unittest
-import os
-import asyncio
-import quamash
-from PyQt5.QtWidgets import QMenu
+
 from PyQt5.QtCore import QLocale
+from PyQt5.QtWidgets import QMenu
 from sakia.gui.mainwindow import MainWindow
-from sakia.core.app import Application
+
+from sakia.app import Application
 from sakia.tests import QuamashTest
 
+
 class MainWindowMenusTest(unittest.TestCase, QuamashTest):
     def setUp(self):
         self.setUpQuamash()
diff --git a/src/sakia/tests/functional/preferences/test_preferences_dialog.py b/src/sakia/tests/functional/preferences/test_preferences_dialog.py
index f2f1ce3bbbc99572818c07a34c4530fe465bf325..2b29295adab87e9875108fe1921322db179670ba 100644
--- a/src/sakia/tests/functional/preferences/test_preferences_dialog.py
+++ b/src/sakia/tests/functional/preferences/test_preferences_dialog.py
@@ -1,14 +1,13 @@
+import logging
 import sys
 import unittest
-import asyncio
-import quamash
-import logging
+
 from PyQt5.QtCore import QLocale
+
+from sakia.app import Application
 from sakia.core.registry.identities import IdentitiesRegistry
 from sakia.gui.preferences import PreferencesDialog
-from sakia.core.app import Application
 from sakia.tests import QuamashTest
-from duniterpy.api import bma
 
 
 class TestPreferencesDialog(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/functional/process_cfg_account/test_add_account.py b/src/sakia/tests/functional/process_cfg_account/test_add_account.py
index 91bdaee0c36485680a7b5f9f397acf35cd0a194b..44c370414b10904da05c64a6c474a0a827cc6b24 100644
--- a/src/sakia/tests/functional/process_cfg_account/test_add_account.py
+++ b/src/sakia/tests/functional/process_cfg_account/test_add_account.py
@@ -1,17 +1,16 @@
-import sys
-import unittest
 import asyncio
-import quamash
 import logging
-from PyQt5.QtWidgets import QDialog
+import sys
+import unittest
+
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
-from sakia.tests.mocks.bma import new_blockchain
-from sakia.core.registry.identities import IdentitiesRegistry
 from sakia.gui.process_cfg_account import ProcessConfigureAccount
-from sakia.gui.password_asker import PasswordAskerDialog
-from sakia.core.app import Application
+
+from sakia.app import Application
 from sakia.core.account import Account
+from sakia.core.registry.identities import IdentitiesRegistry
+from sakia.gui.password_asker import PasswordAskerDialog
 from sakia.tests import QuamashTest
 
 
diff --git a/src/sakia/tests/functional/process_cfg_community/test_add_community.py b/src/sakia/tests/functional/process_cfg_community/test_add_community.py
index 28b6da2b9da1561175478e6872ce42a3ce1a331d..25bb02af9a52bd0ea5109b9fc5a4b9c798141fee 100644
--- a/src/sakia/tests/functional/process_cfg_community/test_add_community.py
+++ b/src/sakia/tests/functional/process_cfg_community/test_add_community.py
@@ -1,19 +1,18 @@
-import sys
-import unittest
 import asyncio
-import quamash
-import logging
 import time
-from PyQt5.QtWidgets import QDialog
+import unittest
+
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
-from sakia.tests.mocks.bma import new_blockchain, nice_blockchain
-from sakia.core.registry.identities import IdentitiesRegistry
+from PyQt5.QtWidgets import QDialog
 from sakia.gui.process_cfg_community import ProcessConfigureCommunity
-from sakia.gui.password_asker import PasswordAskerDialog
-from sakia.core.app import Application
+
+from sakia.app import Application
 from sakia.core.account import Account
+from sakia.core.registry.identities import IdentitiesRegistry
+from sakia.gui.password_asker import PasswordAskerDialog
 from sakia.tests import QuamashTest
+from sakia.tests.mocks.bma import new_blockchain, nice_blockchain
 
 
 class ProcessAddCommunity(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/functional/transfer/test_transfer.py b/src/sakia/tests/functional/transfer/test_transfer.py
index ad8df3cfeac386ad932bf8b61122e3e7bcdd423a..087bb87232f02b0d98dff4c08015aea931fb48a2 100644
--- a/src/sakia/tests/functional/transfer/test_transfer.py
+++ b/src/sakia/tests/functional/transfer/test_transfer.py
@@ -1,22 +1,21 @@
-import sys
-import unittest
 import asyncio
-import aiohttp
 import time
-import logging
-from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMessageBox, QApplication
+import unittest
+
+import aiohttp
 from PyQt5.QtCore import QLocale, Qt
 from PyQt5.QtTest import QTest
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMessageBox, QApplication
+from sakia.core.net import Network, Node
+from sakia.core.net.api.bma.access import BmaAccess
+from sakia.gui.transfer import TransferMoneyDialog
 
-from sakia.tests.mocks.bma import nice_blockchain
+from sakia.app import Application
+from sakia.core import Account, Community, Wallet
 from sakia.core.registry.identities import IdentitiesRegistry
-from sakia.gui.transfer import TransferMoneyDialog
 from sakia.gui.password_asker import PasswordAskerDialog
-from sakia.core.app import Application
-from sakia.core import Account, Community, Wallet
-from sakia.core.net import Network, Node
-from sakia.core.net.api.bma.access import BmaAccess
 from sakia.tests import QuamashTest
+from sakia.tests.mocks.bma import nice_blockchain
 
 
 class TestTransferDialog(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/functional/wot_tab/test_wot_tab.py b/src/sakia/tests/functional/wot_tab/test_wot_tab.py
index 3eb15fc3cd96070da5da77719c0e6dc079f8d8b5..1909885ac308248e38f03ed87f8f911c854dc90a 100644
--- a/src/sakia/tests/functional/wot_tab/test_wot_tab.py
+++ b/src/sakia/tests/functional/wot_tab/test_wot_tab.py
@@ -2,17 +2,17 @@ import asyncio
 import logging
 import sys
 import time
-import aiohttp
 import unittest
 
+import aiohttp
 from PyQt5.QtCore import QLocale
-
-from sakia.core import Account, Community, Wallet
-from sakia.core.app import Application
 from sakia.core.net import Network, Node
 from sakia.core.net.api.bma.access import BmaAccess
-from sakia.core.registry.identities import IdentitiesRegistry
 from sakia.gui.graphs.wot_tab import WotTabWidget
+
+from sakia.app import Application
+from sakia.core import Account, Community, Wallet
+from sakia.core.registry.identities import IdentitiesRegistry
 from sakia.gui.password_asker import PasswordAskerDialog
 from sakia.tests import QuamashTest
 from sakia.tests.mocks.bma import nice_blockchain
diff --git a/src/sakia/tests/unit/core/graph/test_base_graph.py b/src/sakia/tests/unit/core/graph/test_base_graph.py
index f7a3bbdd3151a6f0b01e0720b5f033c7b451e710..193d715c6b8f5fd10e93953f7a9de77823d8f112 100644
--- a/src/sakia/tests/unit/core/graph/test_base_graph.py
+++ b/src/sakia/tests/unit/core/graph/test_base_graph.py
@@ -1,11 +1,11 @@
-import sys
 import unittest
-import logging
-from asynctest.mock import Mock, CoroutineMock, patch
+
 from PyQt5.QtCore import QLocale
-from sakia.tests import QuamashTest
+from asynctest.mock import Mock, CoroutineMock, patch
 from sakia.core.graph import BaseGraph
-from sakia.core.graph.constants import EdgeStatus, NodeStatus
+
+from sakia.data.graphs.constants import EdgeStatus, NodeStatus
+from sakia.tests import QuamashTest
 
 
 class TestBaseGraph(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/unit/core/graph/test_explorer_graph.py b/src/sakia/tests/unit/core/graph/test_explorer_graph.py
index e3c99600bc1507f49da756241ee3c4977cf643a0..5f1f5e5481f329466c0c04fd017f02ff382b3bad 100644
--- a/src/sakia/tests/unit/core/graph/test_explorer_graph.py
+++ b/src/sakia/tests/unit/core/graph/test_explorer_graph.py
@@ -1,10 +1,11 @@
-import sys
-import unittest
 import asyncio
-from asynctest.mock import Mock, CoroutineMock, patch
+import unittest
+
 from PyQt5.QtCore import QLocale
+from asynctest.mock import Mock, CoroutineMock, patch
+
+from sakia.data.graphs import ExplorerGraph
 from sakia.tests import QuamashTest
-from sakia.core.graph import ExplorerGraph
 
 
 class TestExplorerGraph(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/unit/core/graph/test_wot_graph.py b/src/sakia/tests/unit/core/graph/test_wot_graph.py
index e0e355a24cee102cc3e57f161304f52fb3b889ae..4ce689393cd5e11498d6a4d21224d01efe3449ae 100644
--- a/src/sakia/tests/unit/core/graph/test_wot_graph.py
+++ b/src/sakia/tests/unit/core/graph/test_wot_graph.py
@@ -1,11 +1,10 @@
-import sys
 import unittest
-import logging
-from asynctest.mock import Mock, CoroutineMock, patch
+
 from PyQt5.QtCore import QLocale
-from sakia.tests import QuamashTest
+from asynctest.mock import Mock, CoroutineMock, patch
 from sakia.core.graph import WoTGraph
-from sakia.core.graph.constants import EdgeStatus, NodeStatus
+
+from sakia.tests import QuamashTest
 
 
 class TestWotGraph(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/unit/core/money/test_quantitative.py b/src/sakia/tests/unit/core/money/test_quantitative.py
index dd32a301ff91a7280f982bb66e68ade163d32be4..b0b00bed60cd21548eaf2cfcafd8dee365031259 100644
--- a/src/sakia/tests/unit/core/money/test_quantitative.py
+++ b/src/sakia/tests/unit/core/money/test_quantitative.py
@@ -1,8 +1,10 @@
 import unittest
-from asynctest.mock import Mock, CoroutineMock, patch, PropertyMock
+
 from PyQt5.QtCore import QLocale
+from asynctest.mock import patch, PropertyMock
+
+from sakia.money import Quantitative
 from sakia.tests import QuamashTest
-from sakia.core.money import Quantitative
 
 
 class TestQuantitative(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/unit/core/money/test_quantitative_zsum.py b/src/sakia/tests/unit/core/money/test_quantitative_zsum.py
index 68ecaad7c751ba4b8f6fa014c93875e0bc85ebe7..7c530c5b111864175e56ac5bced7fa7b9c579c0a 100644
--- a/src/sakia/tests/unit/core/money/test_quantitative_zsum.py
+++ b/src/sakia/tests/unit/core/money/test_quantitative_zsum.py
@@ -1,8 +1,10 @@
 import unittest
-from asynctest.mock import Mock, CoroutineMock, patch, PropertyMock
+
 from PyQt5.QtCore import QLocale
+from asynctest.mock import CoroutineMock, patch, PropertyMock
+
+from sakia.money import QuantitativeZSum
 from sakia.tests import QuamashTest
-from sakia.core.money import QuantitativeZSum
 
 
 class TestQuantitativeZSum(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/unit/core/money/test_relative.py b/src/sakia/tests/unit/core/money/test_relative.py
index ae542b05ae8f5f4110dfebd8370ed67297342b46..38b8fbf0264150ebe393b82f6d0c0f4bab19aea2 100644
--- a/src/sakia/tests/unit/core/money/test_relative.py
+++ b/src/sakia/tests/unit/core/money/test_relative.py
@@ -1,8 +1,10 @@
 import unittest
-from asynctest.mock import Mock, CoroutineMock, patch, PropertyMock
+
 from PyQt5.QtCore import QLocale
+from asynctest.mock import CoroutineMock, patch, PropertyMock
+
+from sakia.money import Relative
 from sakia.tests import QuamashTest
-from sakia.core.money import Relative
 
 
 class TestRelative(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/unit/core/money/test_relative_to_past.py b/src/sakia/tests/unit/core/money/test_relative_to_past.py
index 61d6b05518e040ed298fff6796e4a1fd4e7e26b1..2d52d700e8cccafbed6c523d2ea7f1040b09a032 100644
--- a/src/sakia/tests/unit/core/money/test_relative_to_past.py
+++ b/src/sakia/tests/unit/core/money/test_relative_to_past.py
@@ -1,8 +1,10 @@
 import unittest
-from asynctest.mock import Mock, CoroutineMock, patch, PropertyMock
+
 from PyQt5.QtCore import QLocale, QDateTime
+from asynctest.mock import CoroutineMock, patch, PropertyMock
+
+from sakia.money import RelativeToPast
 from sakia.tests import QuamashTest
-from sakia.core.money.relative_to_past import RelativeToPast
 
 
 class TestRelativeToPast(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/unit/core/money/test_relative_zsum.py b/src/sakia/tests/unit/core/money/test_relative_zsum.py
index caf0d4397eef726ce7b819ca65b9f96f53bf3ace..7c32b99d59daa6b990499cfdb4dba9c929fa5c23 100644
--- a/src/sakia/tests/unit/core/money/test_relative_zsum.py
+++ b/src/sakia/tests/unit/core/money/test_relative_zsum.py
@@ -1,8 +1,10 @@
 import unittest
-from asynctest.mock import Mock, CoroutineMock, patch, PropertyMock
+
 from PyQt5.QtCore import QLocale
+from asynctest.mock import CoroutineMock, patch, PropertyMock
+
+from sakia.money import RelativeZSum
 from sakia.tests import QuamashTest
-from sakia.core.money import RelativeZSum
 
 
 class TestRelativeZSum(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/unit/core/txhistory/test_txhistory_loading.py b/src/sakia/tests/unit/core/txhistory/test_txhistory_loading.py
index 9f4ef8c0618dfc6d002da9bc615ed2f144986a12..e6d69cf1eeed48b4a1abfe4ca96bac54f7273524 100644
--- a/src/sakia/tests/unit/core/txhistory/test_txhistory_loading.py
+++ b/src/sakia/tests/unit/core/txhistory/test_txhistory_loading.py
@@ -1,18 +1,17 @@
-import sys
-import unittest
-import asyncio
-import quamash
-import time
 import logging
-from PyQt5.QtCore import QLocale, Qt
-from sakia.tests.mocks.bma import nice_blockchain
-from sakia.core.registry.identities import IdentitiesRegistry
-from sakia.core.app import Application
-from sakia.core import Account, Community, Wallet
+import time
+import unittest
+
+from PyQt5.QtCore import QLocale
 from sakia.core.net import Network, Node
 from sakia.core.net.api.bma.access import BmaAccess
-from sakia.tests import QuamashTest
+
 from duniterpy.documents.peer import BMAEndpoint
+from sakia.app import Application
+from sakia.core import Account, Community, Wallet
+from sakia.core.registry.identities import IdentitiesRegistry
+from sakia.tests import QuamashTest
+from sakia.tests.mocks.bma import nice_blockchain
 
 
 class TestTxHistory(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/unit/data/test_connections_repo.py b/src/sakia/tests/unit/data/test_connections_repo.py
index b70d416460e3fbbd320491d59b565cb6c74c3c92..777ba5da6ff6009b3a78afc54bdd5548997026f4 100644
--- a/src/sakia/tests/unit/data/test_connections_repo.py
+++ b/src/sakia/tests/unit/data/test_connections_repo.py
@@ -1,8 +1,6 @@
 from sakia.data.repositories import ConnectionsRepo, MetaDatabase
 from sakia.data.entities import Connection
-from duniterpy.documents import BlockUID
 import unittest
-import sqlite3
 
 
 class TestConnectionsRepo(unittest.TestCase):
diff --git a/src/sakia/tests/unit/tools/test_decorators.py b/src/sakia/tests/unit/test_decorators.py
similarity index 98%
rename from src/sakia/tests/unit/tools/test_decorators.py
rename to src/sakia/tests/unit/test_decorators.py
index 89b373908201fd87f0199e31cec4d038af28fb8a..2e6358844a7594658ab1c782d6d6e3942e995d86 100644
--- a/src/sakia/tests/unit/tools/test_decorators.py
+++ b/src/sakia/tests/unit/test_decorators.py
@@ -1,8 +1,10 @@
-import unittest
 import asyncio
+import unittest
+
 from PyQt5.QtCore import QLocale
+
+from sakia.decorators import asyncify, once_at_a_time, cancel_once_task
 from sakia.tests import QuamashTest
-from sakia.tools.decorators import asyncify, once_at_a_time, cancel_once_task
 
 
 class TestDecorators(unittest.TestCase, QuamashTest):
diff --git a/src/sakia/tests/unit/tools/__init__.py b/src/sakia/tests/unit/tools/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/sakia/tools/__init__.py b/src/sakia/tools/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000