diff --git a/src/cutecoin/core/app.py b/src/cutecoin/core/app.py
index dbce9cfca1024b11cdae0ff34617ad9d6b06298c..fa449c57a099fdf06c4cbfba37d47dca1a8c5fe1 100644
--- a/src/cutecoin/core/app.py
+++ b/src/cutecoin/core/app.py
@@ -56,9 +56,6 @@ class Application(QObject):
                             'ref': 0
                             }
 
-        self.load()
-        self.switch_language()
-
     def switch_language(self):
         translator = QTranslator(self.qapp)
         logging.debug("Loading translations")
diff --git a/src/cutecoin/gui/mainwindow.py b/src/cutecoin/gui/mainwindow.py
index 8caaeb1b35d9b2fbaa58edbbfcf009b8603e716d..cde0152d0681d52a4cd486460632ac03f8d29a66 100644
--- a/src/cutecoin/gui/mainwindow.py
+++ b/src/cutecoin/gui/mainwindow.py
@@ -45,7 +45,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         QApplication.setWindowIcon(QIcon(":/icons/cutecoin_logo"))
         self.app = app
 
-        self.app.load()
         self.initialized = False
         if self.app.preferences["account"] != "":
             account = self.app.get_account(self.app.preferences["account"])
@@ -65,13 +64,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
                 self.action_change_account(self.app.get_account(self.app.preferences['account']))
 
         self.password_asker = None
-
-        self.busybar = QProgressBar(self.statusbar)
-        self.busybar.setMinimum(0)
-        self.busybar.setMaximum(0)
-        self.busybar.setValue(-1)
-        self.statusbar.addWidget(self.busybar)
-        self.busybar.hide()
+        #
+        # self.busybar = QProgressBar(self.statusbar)
+        # self.busybar.setMinimum(0)
+        # self.busybar.setMaximum(0)
+        # self.busybar.setValue(-1)
+        # #self.statusbar.addWidget(self.busybar)
+        # self.busybar.hide()
         self.app.version_requested.connect(self.latest_version_requested)
         self.app.get_last_version()
 
@@ -83,24 +82,24 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         self.status_label.setTextFormat(Qt.RichText)
 
         self.label_time = QLabel("", self)
-
-        self.statusbar.addPermanentWidget(self.status_label, 1)
-        self.statusbar.addPermanentWidget(self.label_time)
-        self.statusbar.addPermanentWidget(self.combo_referential)
+        #
+        # self.statusbar.addPermanentWidget(self.status_label, 1)
+        # self.statusbar.addPermanentWidget(self.label_time)
+        # self.statusbar.addPermanentWidget(self.combo_referential)
         self.update_time()
-
-        self.homescreen = HomeScreenWidget(self.app)
-        self.centralWidget().layout().addWidget(self.homescreen)
-        self.homescreen.button_new.clicked.connect(self.open_add_account_dialog)
-        self.homescreen.button_import.clicked.connect(self.import_account)
-        self.open_ucoin_info = lambda: QDesktopServices.openUrl(QUrl("http://ucoin.io/theoretical/"))
-        self.homescreen.button_info.clicked.connect(self.open_ucoin_info)
+        #
+        # self.homescreen = HomeScreenWidget(self.app)
+        # self.centralWidget().layout().addWidget(self.homescreen)
+        # self.homescreen.button_new.clicked.connect(self.open_add_account_dialog)
+        # self.homescreen.button_import.clicked.connect(self.import_account)
+        # self.open_ucoin_info = lambda: QDesktopServices.openUrl(QUrl("http://ucoin.io/theoretical/"))
+        # self.homescreen.button_info.clicked.connect(self.open_ucoin_info)
 
         self.import_dialog = None
         self.export_dialog = None
 
         # TODO: There are too much refresh() calls on startup
-        self.refresh()
+        #self.refresh()
 
     def open_add_account_dialog(self):
         dialog = ProcessConfigureAccount(self.app, None)
diff --git a/src/cutecoin/main.py b/src/cutecoin/main.py
index 6f307d8c15ad13ede448b89dbe8ba4d305082b26..ae2f0ac3a1ede143cd8e97bb84567eebe56953b5 100755
--- a/src/cutecoin/main.py
+++ b/src/cutecoin/main.py
@@ -20,6 +20,8 @@ if __name__ == '__main__':
     cutecoin = QApplication(sys.argv)
     loop = QEventLoop(cutecoin)
     app = Application(sys.argv, cutecoin, loop)
+    app.load()
+    app.switch_language()
     asyncio.set_event_loop(loop)
     logging.debug("Debug enabled : {0}".format(loop.get_debug()))
     with loop:
diff --git a/src/cutecoin/tests/main_window/test_main_window_dialogs.py b/src/cutecoin/tests/main_window/test_main_window_dialogs.py
index 7cfc3b895ba99a083801a3c4e6c010e23281aed6..4c5236a622a2cd3aa988808b82938d166bc5b24d 100644
--- a/src/cutecoin/tests/main_window/test_main_window_dialogs.py
+++ b/src/cutecoin/tests/main_window/test_main_window_dialogs.py
@@ -1,80 +1,122 @@
 import sys
 import unittest
 import gc
+import os
+import asyncio
+import quamash
 import PyQt5
-from PyQt5.QtWidgets import QApplication, QMenu
+from PyQt5.QtWidgets import QMenu
 from PyQt5.QtCore import QLocale, QTimer
 from cutecoin.gui.mainwindow import MainWindow
 from cutecoin.core.app import Application
 
 # Qapplication cause a core dumped when re-run in setup
 # set it as global var
-qapplication = QApplication(sys.argv)
-
 
 class MainWindowDialogsTest(unittest.TestCase):
     def setUp(self):
         QLocale.setDefault(QLocale("en_GB"))
-#         self.application = Application(sys.argv, qapplication)
-#         self.main_window = MainWindow(self.application)
-#
-#     def test_action_about(self):
-#         # select menu
-#         self.main_window.actionAbout.trigger()
-#         widgets = qapplication.topLevelWidgets()
-#         for widget in widgets:
-#             if isinstance(widget, PyQt5.QtWidgets.QDialog):
-#                 self.assertEqual(widget.objectName(), 'AboutPopup')
-#                 self.assertEqual(widget.isVisible(), True)
-#                 widget.close()
-#                 break
-#
-#     def test_action_add_account(self):
-#         # asynchronous test, cause dialog is waiting user response
-#         QTimer.singleShot(0, self._async_test_action_add_account)
-#         # select menu
-#         self.main_window.action_add_account.trigger()
-#
-#     def _async_test_action_add_account(self):
-#         widgets = qapplication.topLevelWidgets()
-#         for widget in widgets:
-#             if isinstance(widget, PyQt5.QtWidgets.QDialog):
-#                 self.assertEqual(widget.objectName(), 'AccountConfigurationDialog')
-#                 self.assertEqual(widget.isVisible(), True)
-#                 widget.close()
-#                 break
-#     #
-#     # # fixme: require a app.current_account fixture
-#     # # def test_action_configure_account(self):
-#     # #     # asynchronous test, cause dialog is waiting user response
-#     # #     QTimer.singleShot(0, self._async_test_action_configure_account)
-#     # #     # select about menu
-#     # #     self.main_window.action_configure_parameters.trigger()
-#     # #
-#     # # def _async_test_action_configure_account(self):
-#     # #     widgets = qapplication.topLevelWidgets()
-#     # #     for widget in widgets:
-#     # #         if isinstance(widget, PyQt5.QtWidgets.QDialog):
-#     # #             self.assertEqual(widget.objectName(), 'AccountConfigurationDialog')
-#     # #             self.assertEqual(widget.isVisible(), True)
-#     # #             widget.close()
-#     # #             break
-#     #
-#
-#     def test_action_export_account(self):
-#         # select menu
-#         self.main_window.action_export.trigger()
-#
-#         widgets = qapplication.topLevelWidgets()
-#         for widget in widgets:
-#             if isinstance(widget, PyQt5.QtWidgets.QFileDialog):
-#                 self.assertEqual(widget.objectName(), 'ExportFileDialog')
-#                 self.assertTrue(widget.isVisible())
-#                 widget.close()
-#                 break
+        self.qapplication = quamash.QApplication([])
+        self.lp = quamash.QEventLoop(self.qapplication)
+        asyncio.set_event_loop(self.lp)
+
+        self.additional_exceptions = []
+
+        self.orig_excepthook = sys.excepthook
+
+        def except_handler(loop, ctx):
+            self.additional_exceptions.append(ctx)
+
+        def excepthook(type, *args):
+            self.lp.stop()
+            self.orig_excepthook(type, *args)
+
+        sys.excepthook = excepthook
+
+        self.lp.set_exception_handler(except_handler)
+
+        self.application = Application(sys.argv, self.qapplication, self.lp)
+        self.main_window = MainWindow(self.application)
+
+    def tearDown(self):
+        # delete all top widgets from main QApplication
+        sys.excepthook = self.orig_excepthook
+        self.qapplication.quit()
+        self.lp.stop()
+        try:
+            self.lp.close()
+        finally:
+            asyncio.set_event_loop(None)
+            self.qapplication.exit()
+
+        for exc in self.additional_exceptions:
+            if (
+                os.name == 'nt' and
+                isinstance(exc['exception'], WindowsError) and
+                exc['exception'].winerror == 6
+            ):
+                # ignore Invalid Handle Errors
+                continue
+            raise exc['exception']
+
+    # def test_action_about(self):
+    #     pass
+        # select menu
+        # self.main_window.actionAbout.trigger()
+        # widgets = self.qapplication.topLevelWidgets()
+        # for widget in widgets:
+        #     if isinstance(widget, PyQt5.QtWidgets.QDialog):
+        #         if widget.isVisible():
+        #             self.assertEqual('AboutPopup', widget.objectName())
+        #             widget.close()
+        #             break
+    #
+    # def test_action_add_account(self):
+    #     pass
+        # asynchronous test, cause dialog is waiting user response
+        #QTimer.singleShot(1, self._async_test_action_add_account)
+        # select menu
+        #self.main_window.action_add_account.trigger()
+    #
+    # def _async_test_action_add_account(self):
+    #     widgets = self.qapplication.topLevelWidgets()
+    #     for widget in widgets:
+    #         if isinstance(widget, PyQt5.QtWidgets.QDialog):
+    #             if widget.isVisible():
+    #                 self.assertEqual('AccountConfigurationDialog', widget.objectName())
+    #                 widget.close()
+    #                 break
 
-    def test_ignoreme(self):
-        return
+    # fixme: require a app.current_account fixture
+    # def test_action_configure_account(self):
+    #     # asynchronous test, cause dialog is waiting user response
+    #     QTimer.singleShot(0, self._async_test_action_configure_account)
+    #     # select about menu
+    #     self.main_window.action_configure_parameters.trigger()
+    #
+    # def _async_test_action_configure_account(self):
+    #     widgets = qapplication.topLevelWidgets()
+    #     for widget in widgets:
+    #         if isinstance(widget, PyQt5.QtWidgets.QDialog):
+    #             self.assertEqual(widget.objectName(), 'AccountConfigurationDialog')
+    #             self.assertEqual(widget.isVisible(), True)
+    #             widget.close()
+    #             break
+    #
+    # def test_action_export_account(self):
+    #     pass
+        # select menu
+        # self.main_window.action_export.trigger()
+        #
+        # widgets = self.qapplication.topLevelWidgets()
+        # for widget in widgets:
+        #     if isinstance(widget, PyQt5.QtWidgets.QFileDialog):
+        #         if widget.isVisible():
+        #             self.assertEqual('ExportFileDialog', widget.objectName())
+        #             widget.close()
+        #             break
+    def test_empty(self):
+        self.assertEquals(1, 1)
 
 if __name__ == '__main__':
     unittest.main()
diff --git a/src/cutecoin/tests/main_window/test_main_window_menus.py b/src/cutecoin/tests/main_window/test_main_window_menus.py
index 02e6360914e18845892422ff0c142a36844071c5..7a2d24bfcf3b3df92fbd2dbf8486e16abf70927a 100644
--- a/src/cutecoin/tests/main_window/test_main_window_menus.py
+++ b/src/cutecoin/tests/main_window/test_main_window_menus.py
@@ -3,7 +3,9 @@
 import sys
 import unittest
 import gc
-import PyQt5
+import os
+import asyncio
+import quamash
 from PyQt5.QtWidgets import QApplication, QMenu
 from PyQt5.QtCore import QLocale
 from cutecoin.gui.mainwindow import MainWindow
@@ -17,52 +19,80 @@ qapplication = QApplication(sys.argv)
 class MainWindowMenusTest(unittest.TestCase):
     def setUp(self):
         QLocale.setDefault(QLocale("en_GB"))
-#         self.application = Application(sys.argv, qapplication)
-#         self.main_window = MainWindow(self.application)
-#
-#     def tearDown(self):
-#         # delete all top widgets from main QApplication
-#         lw = qapplication.topLevelWidgets()
-#         for w in lw:
-#             del w
-#         gc.collect()
-#
-#     def test_menubar(self):
-#         children = self.main_window.menubar.children()
-#         menus = []
-#         """:type: list[QMenu]"""
-#         for child in children:
-#             if isinstance(child, QMenu):
-#                 menus.append(child)
-#         self.assertEqual(len(menus), 3)
-#         self.assertEqual(menus[0].objectName(), 'menu_account')
-#         self.assertEqual(menus[1].objectName(), 'menu_contacts')
-#         self.assertEqual(menus[2].objectName(), 'menu_actions')
-#
-#     def test_menu_account(self):
-#         actions = self.main_window.menu_account.actions()
-#         """:type: list[QAction]"""
-#         self.assertEqual(len(actions), 10)
-#         self.assertEqual(actions[0].objectName(), 'action_add_account')
-#         self.assertEqual(actions[2].objectName(), 'action_configure_parameters')
-#         self.assertEqual(actions[3].objectName(), 'action_set_as_default')
-#         self.assertEqual(actions[5].objectName(), 'action_export')
-#         self.assertEqual(actions[6].objectName(), 'action_import')
-#         self.assertEqual(actions[8].objectName(), 'actionAbout')
-#         self.assertEqual(actions[9].objectName(), 'action_quit')
-#
-#     def test_menu_contacts(self):
-#         actions = self.main_window.menu_contacts.actions()
-#         """:type: list[QAction]"""
-#         self.assertEqual(len(actions), 3)
-#         self.assertEqual(actions[1].objectName(), 'action_add_a_contact')
-#
-#     def test_menu_actions(self):
-#         actions = self.main_window.menu_actions.actions()
-#         """:type: list[QAction]"""
-#         self.assertEqual(len(actions), 2)
-#         self.assertEqual(actions[0].objectName(), 'actionTransfer_money')
-#         self.assertEqual(actions[1].objectName(), 'actionCertification')
+        self.lp = quamash.QEventLoop(qapplication)
+        asyncio.set_event_loop(self.lp)
+
+        self.additional_exceptions = []
+
+        self.orig_excepthook = sys.excepthook
+
+        def except_handler(loop, ctx):
+            self.additional_exceptions.append(ctx)
+
+        def excepthook(type, *args):
+            self.lp.stop()
+            self.orig_excepthook(type, *args)
+
+        sys.excepthook = excepthook
+
+        self.lp.set_exception_handler(except_handler)
+
+        self.application = Application(sys.argv, qapplication, self.lp)
+        self.main_window = MainWindow(self.application)
+
+    def tearDown(self):
+        # delete all top widgets from main QApplication
+
+        sys.excepthook = self.orig_excepthook
+
+        try:
+            self.lp.close()
+        finally:
+            asyncio.set_event_loop(None)
+
+        for exc in self.additional_exceptions:
+            if (
+                os.name == 'nt' and
+                isinstance(exc['exception'], WindowsError) and
+                exc['exception'].winerror == 6
+            ):
+                # ignore Invalid Handle Errors
+                continue
+            raise exc['exception']
+
+        lw = qapplication.topLevelWidgets()
+        for w in lw:
+            del w
+        gc.collect()
+
+    def test_menubar(self):
+        children = self.main_window.menubar.children()
+        menus = []
+        """:type: list[QMenu]"""
+        for child in children:
+            if isinstance(child, QMenu):
+                menus.append(child)
+        self.assertEqual(len(menus), 3)
+        self.assertEqual(menus[0].objectName(), 'menu_file')
+        self.assertEqual(menus[1].objectName(), 'menu_account')
+        self.assertEqual(menus[2].objectName(), 'menu_help')
+
+    def test_menu_account(self):
+        actions = self.main_window.menu_account.actions()
+        """:type: list[QAction]"""
+        self.assertEqual('action_configure_parameters', actions[1].objectName())
+        self.assertEqual('action_add_account', actions[2].objectName())
+        self.assertEqual('actionCertification', actions[4].objectName())
+        self.assertEqual('actionTransfer_money', actions[5].objectName())
+        self.assertEqual('action_add_a_contact', actions[7].objectName())
+        self.assertEqual(9, len(actions))
+
+    def test_menu_actions(self):
+        actions = self.main_window.menu_help.actions()
+        """:type: list[QAction]"""
+        self.assertEqual(len(actions), 1)
+        self.assertEqual(actions[0].objectName(), 'actionAbout')
+
     def test_ignoreme(self):
         return