diff --git a/src/cutecoin/core/app.py b/src/cutecoin/core/app.py
index 8ff973b70f8014c27b1f301e6417d53b34f9fb93..7d0cc5d3c41d95a839b72629735971934b0e47d4 100644
--- a/src/cutecoin/core/app.py
+++ b/src/cutecoin/core/app.py
@@ -25,16 +25,15 @@ class Application(object):
         '''
         Constructor
         '''
-        self.accounts = []
+        self.accounts = {}
         self.current_account = None
         config.parse_arguments(argv)
         self.load()
 
     def get_account(self, name):
-        for a in self.accounts:
-            logging.debug('Name : ' + a.name + '/' + name)
-            if name == a.name:
-                return a
+        if not self.accounts[name]:
+            self.load_account(name)
+        return self.accounts[name]
 
     def create_account(self, name):
         for a in self.accounts:
@@ -70,17 +69,19 @@ class Application(object):
         if (os.path.exists(config.parameters['data'])
                 and os.path.isfile(config.parameters['data'])):
             logging.debug("Loading data...")
-            json_data = open(config.parameters['data'], 'r')
-            data = json.load(json_data)
-
-            json_data.close()
-            for account_name in data['local_accounts']:
-                account_path = os.path.join(config.parameters['home'],
-                                            account_name, 'properties')
-                json_data = open(account_path, 'r')
+            with open(config.parameters['data'], 'r') as json_data:
                 data = json.load(json_data)
-                account = Account.load(data)
-                self.accounts.append(account)
+                json_data.close()
+                for account_name in data['local_accounts']:
+                    self.accounts[account_name] = None
+
+    def load_account(self, account_name):
+        account_path = os.path.join(config.parameters['home'],
+                                    account_name, 'properties')
+        with open(account_path, 'r') as json_data:
+            data = json.load(json_data)
+            account = Account.load(data)
+            self.accounts[account_name] = account
 
     def load_cache(self, account):
         for wallet in account.wallets:
diff --git a/src/cutecoin/gui/mainwindow.py b/src/cutecoin/gui/mainwindow.py
index 035376145308476d4f58e509d3369595d96d70ff..ad505cd28e88a6b884c92f458333de53090d58f9 100644
--- a/src/cutecoin/gui/mainwindow.py
+++ b/src/cutecoin/gui/mainwindow.py
@@ -77,10 +77,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         self.menu_change_account.clear()
         signal_mapper = QSignalMapper(self)
 
-        for account in self.app.accounts:
-            action = QAction(account.name, self)
+        for account_name in self.app.accounts.keys():
+            action = QAction(account_name, self)
             self.menu_change_account.addAction(action)
-            signal_mapper.setMapping(action, account.name)
+            signal_mapper.setMapping(action, account_name)
             action.triggered.connect(signal_mapper.map)
             signal_mapper.mapped[str].connect(self.action_change_account)