diff --git a/package.json b/package.json
index 87bf4f428e3266921aade407ee6fa12647032354..e15ca95b0eb593c06d5d4607a4079a41c6533869 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "cesium",
-  "version": "0.1.2",
+  "version": "0.1.3",
   "description": "A webapp client for Duniter network",
   "dependencies": {
     "gulp": "^3.9.1",
diff --git a/www/js/config.js b/www/js/config.js
index 02c4824f2364235e5901f3c2c74b5d33095af096..ee8122747b0290c4b17b4541c49052816e17ce1e 100644
--- a/www/js/config.js
+++ b/www/js/config.js
@@ -14,8 +14,8 @@ angular.module("cesium.config", [])
 	"TIMEOUT": 4000,
 	"DEBUG": false,
 	"NATIVE_TRANSITION": false,
-	"VERSION": "0.1.2",
-	"BUILD_DATE": "2016-05-26T22:23:02.644Z"
+	"VERSION": "0.1.3",
+	"BUILD_DATE": "2016-05-26T23:07:50.994Z"
 })
 
 ;
\ No newline at end of file
diff --git a/www/js/controllers/app-controllers.js b/www/js/controllers/app-controllers.js
index c8acf22f5e286cedb7e63b796c4632b92daa758e..a19698bea18f9a35940f7c42150e1508775fc4f3 100644
--- a/www/js/controllers/app-controllers.js
+++ b/www/js/controllers/app-controllers.js
@@ -52,21 +52,24 @@ function LoginModalController($scope, $rootScope, $ionicModal, Wallet, CryptoUti
   };
 
   // Open login modal
-  $scope.login = function(callback) {
+  $scope.login = function(success, cancel) {
     if ($scope.loginModal) {
       UIUtils.loading.hide();
       $scope.loginModal.show();
-      $scope.loginData.callback = callback;
+      $scope.loginData.callbacks = {};
+      $scope.loginData.callbacks.success = success;
+      $scope.loginData.callbacks.cancel = cancel;
     }
     else{
       $timeout(function(){
-        $scope.login(callback);
+        $scope.login(success, cancel);
       }, 2000);
     }
   };
 
   // Login and load wallet
-  $scope.loadWallet = function() {
+  $scope.loadWallet = function(allowCancel) {
+    if (!allowCancel) {allowCancel = false;}
     return $q(function(resolve, reject){
 
       if (!Wallet.isLogin()) {
@@ -82,13 +85,22 @@ function LoginModalController($scope, $rootScope, $ionicModal, Wallet, CryptoUti
                 .catch(UIUtils.onError('ERROR.LOAD_WALLET_DATA_ERROR', reject));
             }
             else {
-              $scope.login(function() {
-                $rootScope.viewFirstEnter = false;
-                Wallet.loadData()
-                  .then(function(walletData){
-                    resolve(walletData);
-                  })
-                  .catch(UIUtils.onError('ERROR.LOAD_WALLET_DATA_ERROR', reject));
+              $scope.login(
+                function() {
+                  $rootScope.viewFirstEnter = false;
+                  Wallet.loadData()
+                    .then(function(walletData){
+                      resolve(walletData);
+                    })
+                    .catch(UIUtils.onError('ERROR.LOAD_WALLET_DATA_ERROR', reject));
+                },
+                function() { // user cancel callback
+                  if (allowCancel) {
+                    resolve();
+                  }
+                  else {
+                    reject();
+                  }
                 });
             }
           })
@@ -110,9 +122,13 @@ function LoginModalController($scope, $rootScope, $ionicModal, Wallet, CryptoUti
 
   // Triggered in the login modal to close it
   $scope.cancelLogin = function() {
+    var callback = $scope.loginData.callbacks.cancel;
     $scope.loginData = {}; // Reset login data
     $scope.loginForm.$setPristine(); // Reset form
     $scope.loginModal.hide();
+    if (!!callback) {
+      callback();
+    }
   };
 
   // Login form submit
@@ -127,7 +143,7 @@ function LoginModalController($scope, $rootScope, $ionicModal, Wallet, CryptoUti
       // Call wallet login, then execute callback function
       Wallet.login($scope.loginData.username, $scope.loginData.password)
         .then(function(){
-          var callback = $scope.loginData.callback;
+          var callback = $scope.loginData.callbacks.success;
           $scope.loginData = {}; // Reset login data
           $scope.loginForm.$setPristine(); // Reset form
           if (!!callback) {
diff --git a/www/js/controllers/settings-controllers.js b/www/js/controllers/settings-controllers.js
index 221bc1e5812003dd139902ad742bd51ac8df2524..0aff62acfe2bec688f5e56d26ef4f62dc6f346ba 100644
--- a/www/js/controllers/settings-controllers.js
+++ b/www/js/controllers/settings-controllers.js
@@ -34,15 +34,16 @@ function SettingsController($scope, $state, UIUtils, Wallet, $translate, BMA, $q
   $scope.loading = true;
 
   $scope.$on('$ionicView.enter', function(e, $state) {
-    UIUtils.loading.show();
     $scope.loading = true; // to avoid the call of Wallet.store()
-    $scope.loadWallet()
+    $scope.loadWallet(true/*allowCancel*/)
       .then(function(walletData) {
-        $scope.formData.useRelative = walletData.settings.useRelative;
-        $scope.formData.node = walletData.settings.node;
-        $scope.formData.useLocalStorage = walletData.settings.useLocalStorage;
-        if (walletData.settings.locale && walletData.settings.locale.id) {
-          $scope.formData.locale = _.findWhere($scope.locales, {id: walletData.settings.locale.id});
+        if (walletData) {
+          $scope.formData.useRelative = walletData.settings.useRelative;
+          $scope.formData.node = walletData.settings.node;
+          $scope.formData.useLocalStorage = walletData.settings.useLocalStorage;
+          if (walletData.settings.locale && walletData.settings.locale.id) {
+            $scope.formData.locale = _.findWhere($scope.locales, {id: walletData.settings.locale.id});
+          }
         }
         UIUtils.loading.hide();
         $scope.loading = false;
diff --git a/www/js/services/utils-services.js b/www/js/services/utils-services.js
index 8a0f3108be99bf08d04d9874e5848f45afd9098e..a2570fafdd9fed364271934e1d9baf2f54b2c36a 100644
--- a/www/js/services/utils-services.js
+++ b/www/js/services/utils-services.js
@@ -9,6 +9,10 @@ angular.module('cesium.utils.services', ['ngResource'])
 
   function alertError(err, subtitle) {
     return $q(function(resolve, reject) {
+      if (!err) {
+        resolve();
+        return;
+      }
       $translate([err, subtitle, 'ERROR.POPUP_TITLE', 'ERROR.UNKNOWN_ERROR', 'COMMON.BTN_OK'])
       .then(function (translations) {
         var message = err.message || translations[err];