diff --git a/src/cutecoin/core/app.py b/src/cutecoin/core/app.py
index ae2c1c5ee5f7c7aa4b88499ab9c9b2318afff549..d6d1f611a45c391f5c353cb8d5ccdd62d755c027 100644
--- a/src/cutecoin/core/app.py
+++ b/src/cutecoin/core/app.py
@@ -63,7 +63,6 @@ class Application(object):
         if self.current_account is not None:
             self.save_cache(self.current_account)
         self.current_account = account
-        self.load_cache(account)
 
     def load(self):
         if (os.path.exists(config.parameters['data'])
@@ -71,7 +70,6 @@ class Application(object):
             logging.debug("Loading data...")
             with open(config.parameters['data'], 'r') as json_data:
                 data = json.load(json_data)
-                json_data.close()
                 if 'default_account' in data.keys():
                     self.default_account = data['default_account']
                 for account_name in data['local_accounts']:
@@ -83,6 +81,7 @@ class Application(object):
         with open(account_path, 'r') as json_data:
             data = json.load(json_data)
             account = Account.load(data)
+            self.load_cache(account)
             self.accounts[account_name] = account
 
     def load_cache(self, account):
@@ -92,7 +91,7 @@ class Application(object):
             if os.path.exists(wallet_path):
                 with open(wallet_path, 'r') as json_data:
                     data = json.load(json_data)
-                    wallet.load_caches(data)
+                wallet.load_caches(data)
             for community in account.communities:
                 wallet.refresh_cache(community)
 
diff --git a/src/cutecoin/gui/currency_tab.py b/src/cutecoin/gui/currency_tab.py
index 0bd4a8d951adef4b811ff10a7c6eed9e9ba5bb90..3c53eec430e488d2942e6d168444c06dc2f5712b 100644
--- a/src/cutecoin/gui/currency_tab.py
+++ b/src/cutecoin/gui/currency_tab.py
@@ -49,11 +49,10 @@ class BlockchainWatcher(QObject):
             except NoPeerAvailable:
                 return
             except requests.exceptions.RequestException as e:
-                QMessageBox.critical(self, ":(",
-                            str(e),
-                            QMessageBox.Ok)
+                self.connection_error.emit(str(e))
 
     new_block_mined = pyqtSignal(int)
+    connection_error = pyqtSignal(str)
 
 
 class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget):
@@ -78,6 +77,7 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget):
         self.bc_watcher = BlockchainWatcher(self.app.current_account,
                                                 community)
         self.bc_watcher.new_block_mined.connect(self.refresh_block)
+        self.bc_watcher.connection_error.connect(self.display_error)
 
         self.watcher_thread = QThread()
         self.bc_watcher.moveToThread(self.watcher_thread)
@@ -107,6 +107,12 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget):
             self.status_label.setText("Connected : Block {0}"
                                              .format(block_number))
 
+    @pyqtSlot(str)
+    def display_error(self, error):
+        QMessageBox.critical(self, ":(",
+                    error,
+                    QMessageBox.Ok)
+
     @pyqtSlot(int)
     def refresh_block(self, block_number):
         if self.list_wallets.model():
diff --git a/src/cutecoin/gui/mainwindow.py b/src/cutecoin/gui/mainwindow.py
index f205d4cd58bdc5975aa79c73041bb419828a5301..66e90d29b24168cda1cc4a36a1883a155e972436 100644
--- a/src/cutecoin/gui/mainwindow.py
+++ b/src/cutecoin/gui/mainwindow.py
@@ -28,6 +28,7 @@ class Loader(QObject):
         self.account_name = ""
 
     loaded = pyqtSignal()
+    connection_error = pyqtSignal(str)
 
     def set_account_name(self, name):
         self.account_name = name
@@ -38,9 +39,9 @@ class Loader(QObject):
             try:
                 self.app.change_current_account(self.app.get_account(self.account_name))
             except requests.exceptions.RequestException as e:
-                QMessageBox.critical(self, ":(",
-                            str(e),
-                            QMessageBox.Ok)
+                self.connection_error.emit(str(e))
+                self.loaded.emit()
+
         self.loaded.emit()
 
 
@@ -75,6 +76,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         self.loader.moveToThread(self.loader_thread)
         self.loader.loaded.connect(self.loader_finished)
         self.loader.loaded.connect(self.loader_thread.quit)
+        self.loader.connection_error.connect(self.display_error)
         self.loader_thread.started.connect(self.loader.load)
         self.setWindowTitle("CuteCoin {0}".format(__version__))
         self.refresh()
@@ -89,9 +91,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         self.refresh()
         self.busybar.hide()
 
+    @pyqtSlot(str)
+    def display_error(self, error):
+        QMessageBox.critical(self, ":(",
+                    error,
+                    QMessageBox.Ok)
+
     def action_change_account(self, account_name):
-        if self.app.current_account:
-            self.app.save_cache(self.app.current_account)
         self.busybar.show()
         self.status_label.setText("Loading account {0}".format(account_name))
         self.loader.set_account_name(account_name)