diff --git a/lib/main.dart b/lib/main.dart
index 52008432312a960cf4baa17f7896343e3eb7c050..e79d21ebd8fb637eb217a34563b6e2faa9ffa4cd 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -43,18 +43,24 @@ import 'package:flutter/foundation.dart';
 import 'package:responsive_framework/responsive_framework.dart';
 import 'package:shared_preferences/shared_preferences.dart';
 import 'package:sentry_flutter/sentry_flutter.dart';
+import 'package:window_size/window_size.dart';
 
 const bool enableSentry = true;
 
 Future<void> main() async {
   WidgetsFlutterBinding.ensureInitialized();
+  if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) {
+    setWindowTitle('Äžecko');
+    setWindowMinSize(const Size(600, 800));
+    setWindowMaxSize(const Size(800, 1000));
+  }
 
   HomeProvider _homeProvider = HomeProvider();
+  await _homeProvider.initHive();
   appVersion = await _homeProvider.getAppVersion();
   prefs = await SharedPreferences.getInstance();
 
   // Configure Hive and open boxes
-  await Hive.initFlutter();
   Hive.registerAdapter(WalletDataAdapter());
   Hive.registerAdapter(ChestDataAdapter());
   Hive.registerAdapter(G1WalletsListAdapter());
diff --git a/lib/models/cesium_plus.dart b/lib/models/cesium_plus.dart
index 7bae7b3bffa6bee6e42c96c2d4a9612bc8c15491..d99321c939121f895a26a9cf729c2db68b44fc8c 100644
--- a/lib/models/cesium_plus.dart
+++ b/lib/models/cesium_plus.dart
@@ -103,7 +103,7 @@ class CesiumPlusProvider with ChangeNotifier {
   }
 
   Future<Image> getAvatar(String _pubkey, double size) async {
-    if (g1WalletsBox.get(_pubkey).avatar != null) {
+    if (g1WalletsBox.get(_pubkey)?.avatar != null) {
       return g1WalletsBox.get(_pubkey).avatar;
     }
     var dio = Dio();
diff --git a/lib/models/change_pin.dart b/lib/models/change_pin.dart
index 2bd4e082cf0b6f7ad38b285cbc30306a68569a56..11989fe3b6d97b00b04683e77b8fd8ea38ef2435 100644
--- a/lib/models/change_pin.dart
+++ b/lib/models/change_pin.dart
@@ -1,6 +1,5 @@
 import 'package:durt/durt.dart';
 import 'package:flutter/material.dart';
-import 'dart:async';
 import 'package:gecko/globals.dart';
 
 class ChangePinProvider with ChangeNotifier {
@@ -8,23 +7,23 @@ class ChangePinProvider with ChangeNotifier {
   TextEditingController newPin = TextEditingController();
   String pinToGive;
 
-  Future<NewWallet> get badWallet => null;
+  NewWallet get badWallet => null;
 
-  Future<NewWallet> changePin(String _oldPin) async {
+  NewWallet changePin(String _oldPin, {String newCustomPin}) {
     try {
       final _dewif = chestBox.get(configBox.get('currentChest')).dewif;
 
       NewWallet newWalletFile = Dewif().changePassword(
-        dewif: _dewif,
-        oldPassword: _oldPin.toUpperCase(),
-      );
+          dewif: _dewif,
+          oldPassword: _oldPin.toUpperCase(),
+          newPassword: newCustomPin);
 
       newPin.text = pinToGive = newWalletFile.password;
       ischangedPin = true;
-      notifyListeners();
+      // notifyListeners();
       return newWalletFile;
     } catch (e) {
-      log.e('Impossible de changer le code PIN.');
+      log.e('Impossible de changer le code PIN: $e');
       return badWallet;
     }
   }
diff --git a/lib/models/generate_wallets.dart b/lib/models/generate_wallets.dart
index 58271b8ab5531616a5932f11a0c8ee704628e4a5..bfdae692bc9184d1a218eff2d04c09173a9f46db 100644
--- a/lib/models/generate_wallets.dart
+++ b/lib/models/generate_wallets.dart
@@ -37,6 +37,7 @@ class GenerateWalletsProvider with ChangeNotifier {
   bool isCesiumIDVisible = false;
   bool isCesiumPWDVisible = false;
   bool canImport = false;
+  CesiumWallet cesiumWallet;
 
   // Import Chest
   TextEditingController cellController0 = TextEditingController();
@@ -171,7 +172,6 @@ class GenerateWalletsProvider with ChangeNotifier {
   }
 
   String changePinCode({bool reload}) {
-    
     pin.text = randomSecretCode(5);
     if (reload) {
       notifyListeners();
@@ -219,17 +219,14 @@ class GenerateWalletsProvider with ChangeNotifier {
 
   Future<void> generateCesiumWalletPubkey(
       String _cesiumID, String _cesiumPWD) async {
-    var cesiumWallet = CesiumWallet(_cesiumID, _cesiumPWD);
-    actualWallet =
-        Dewif().generateCesiumDewif(cesiumWallet.seed, randomSecretCode(5));
+    cesiumWallet = CesiumWallet(_cesiumID, _cesiumPWD);
     String _walletPubkey = cesiumWallet.pubkey;
 
     cesiumPubkey.text = _walletPubkey;
-    pin.text = actualWallet.password;
     log.d(_walletPubkey);
   }
 
-  Future importCesiumWallet() async {
+  Future<int> importCesiumWallet() async {
     // String _walletPubkey = await DubpRust.getLegacyPublicKey(
     //     salt: _cesiumID, password: _cesiumPWD);
     // String shortPubkey = truncate(_walletPubkey, 9,
@@ -242,7 +239,6 @@ class GenerateWalletsProvider with ChangeNotifier {
     cesiumPWD.text = '';
     cesiumPubkey.text = '';
     canImport = false;
-    pin.text = '';
     isCesiumIDVisible = false;
     isCesiumPWDVisible = false;
 
@@ -260,8 +256,12 @@ class GenerateWalletsProvider with ChangeNotifier {
       chestName = 'Coffre à Césium ${chestNumber + 1}';
     }
 
+    log.d(pin.text);
+    NewWallet cesiumDewif =
+        Dewif().generateCesiumDewif(cesiumWallet.seed, pin.text);
+
     ChestData cesiumChest = ChestData(
-        dewif: actualWallet.dewif,
+        dewif: cesiumDewif.dewif,
         name: chestName,
         imageName: 'cesium.png',
         defaultWallet: 0,
@@ -272,7 +272,8 @@ class GenerateWalletsProvider with ChangeNotifier {
     // chestBox.toMap().
     await configBox.put('currentChest', chestKey);
 
-    notifyListeners();
+    pin.text = '';
+    return chestKey;
   }
 
   void cesiumIDisVisible() {
diff --git a/lib/models/home.dart b/lib/models/home.dart
index c0110427a928fc0dd50a87d3ff02fe320a6916cf..294b91fc1317a53cda050452d050a7a0545fa6fe 100644
--- a/lib/models/home.dart
+++ b/lib/models/home.dart
@@ -9,8 +9,10 @@ import 'dart:async';
 import 'package:gecko/globals.dart';
 import 'package:gecko/screens/old_history_pay.dart';
 import 'package:gecko/screens/myWallets/wallets_home.dart';
+import 'package:hive_flutter/hive_flutter.dart';
 import 'package:package_info/package_info.dart';
 import 'package:flutter/foundation.dart' show kIsWeb;
+import 'package:path_provider/path_provider.dart' as pp;
 
 class HomeProvider with ChangeNotifier {
   int _currentIndex = 0;
@@ -32,6 +34,25 @@ class HomeProvider with ChangeNotifier {
     notifyListeners();
   }
 
+  Future<void> initHive() async {
+    Directory hivePath;
+
+    if (Platform.isLinux || Platform.isMacOS) {
+      final home = Platform.environment['HOME'];
+      hivePath = Directory('$home/.gecko/db');
+    } else if (Platform.isWindows) {
+      final home = Platform.environment['UserProfile'];
+      hivePath = Directory('$home/.gecko/db');
+    } else if (Platform.isAndroid || Platform.isIOS || kIsWeb) {
+      final home = await pp.getApplicationDocumentsDirectory();
+      hivePath = Directory('${home.path}/db');
+    }
+    if (!await hivePath.exists()) {
+      await hivePath.create(recursive: true);
+    }
+    await Hive.initFlutter(hivePath.path);
+  }
+
   Future<String> getAppVersion() async {
     String version;
     String buildNumber;
diff --git a/lib/models/wallet_options.dart b/lib/models/wallet_options.dart
index 3f6184b59de122a32685300e3f1a62614a12fedc..20bb30d100e8c33409282f39136ffaf630489e36 100644
--- a/lib/models/wallet_options.dart
+++ b/lib/models/wallet_options.dart
@@ -1,6 +1,4 @@
-// import 'dart:ffi';
 import 'dart:io';
-import 'dart:typed_data';
 import 'package:crypto/crypto.dart';
 import 'package:durt/durt.dart';
 import 'package:fast_base58/fast_base58.dart';
@@ -12,7 +10,6 @@ import 'package:gecko/models/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:image_picker/image_picker.dart';
 import 'package:truncate/truncate.dart';
-import 'package:qrscan/qrscan.dart' as scanner;
 
 class WalletOptionsProvider with ChangeNotifier {
   TextEditingController pubkey = TextEditingController();
@@ -30,7 +27,6 @@ class WalletOptionsProvider with ChangeNotifier {
 
   String _getPubkeyFromDewif(
       String _dewif, _pin, int _pinLenght, int derivation) {
-    String _pubkey;
     RegExp regExp = RegExp(
       r'^[A-Z0-9]+$',
       caseSensitive: false,
@@ -44,12 +40,11 @@ class WalletOptionsProvider with ChangeNotifier {
     if (derivation != -1) {
       try {
         final _wallet = HdWallet.fromDewif(_dewif, _pin);
-        _pubkey = _wallet.getPubkey(derivation);
-        log.d(_pubkey);
-        pubkey.text = _pubkey;
+        pubkey.text = _wallet.getPubkey(derivation);
+        log.d(pubkey.text);
         notifyListeners();
 
-        return _pubkey;
+        return pubkey.text;
       } catch (e) {
         log.w('Bad PIN code !\n' + e);
         notifyListeners();
@@ -58,10 +53,9 @@ class WalletOptionsProvider with ChangeNotifier {
       }
     } else {
       try {
-        _pubkey = CesiumWallet.fromDewif(_dewif, _pin).pubkey;
-        pubkey.text = _pubkey;
+        pubkey.text = CesiumWallet.fromDewif(_dewif, _pin).pubkey;
         notifyListeners();
-        return _pubkey;
+        return pubkey.text;
       } catch (e) {
         log.w('Bad PIN code !\n' + e);
         notifyListeners();
@@ -83,10 +77,14 @@ class WalletOptionsProvider with ChangeNotifier {
           'false') {
         pubkey.text = _localPubkey;
         isWalletUnlock = true;
+        log.d(pubkey.text);
         return _localDewif;
       } else {
         throw 'Bad pubkey';
       }
+    } on ChecksumException catch (e) {
+      log.e(e.cause);
+      return 'bad';
     } catch (e) {
       // _homeProvider.playSound('non', 0.6);
       log.e('ERROR READING FILE: $e');
@@ -202,7 +200,6 @@ class WalletOptionsProvider with ChangeNotifier {
   }
 
   String getShortPubkey(String pubkey) {
-    log.d(pubkey);
     List<int> pubkeyByte = Base58Decode(pubkey);
     Digest pubkeyS256 = sha256.convert(sha256.convert(pubkeyByte).bytes);
     String pubkeyCheksum = Base58Encode(pubkeyS256.bytes);
@@ -223,10 +220,6 @@ class WalletOptionsProvider with ChangeNotifier {
     notifyListeners();
   }
 
-  Future<Uint8List> generateQRcode(String _pubkey) async {
-    return await scanner.generateBarCode(_pubkey);
-  }
-
   Future changeAvatar() async {
     File _image;
     final picker = ImagePicker();
diff --git a/lib/models/wallets_profiles.dart b/lib/models/wallets_profiles.dart
index 67726b503cb50bd6a10424a711c92d1bf3c46ce7..85879e455329b0708a8f0b4cbeda5933aea806ac 100644
--- a/lib/models/wallets_profiles.dart
+++ b/lib/models/wallets_profiles.dart
@@ -1,3 +1,5 @@
+import 'dart:io';
+
 import 'package:durt/durt.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
@@ -33,7 +35,9 @@ class WalletsProfilesProvider with ChangeNotifier {
   int nPage = 1;
 
   Future scan(context) async {
-    await Permission.camera.request();
+    if (Platform.isAndroid || Platform.isIOS) {
+      await Permission.camera.request();
+    }
     String barcode;
     try {
       barcode = await scanner.scan();
@@ -205,8 +209,6 @@ class WalletsProfilesProvider with ChangeNotifier {
     } else if (nPage == 2) {
       nRepositories = 100;
     }
-    log.d(nPage);
-    log.d(nRepositories);
     nPage++;
 
     if (fetchMoreCursor != null) {
diff --git a/lib/screens/history.dart b/lib/screens/history.dart
index 075479b09401798a13515f506b7f9803aa2624ed..1f0d6a3195176b7ec3676785148d3097f20778c8 100644
--- a/lib/screens/history.dart
+++ b/lib/screens/history.dart
@@ -72,7 +72,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
             },
           ),
           builder: (QueryResult result, {fetchMore, refetch}) {
-            if (result.isLoading && result.data == null) {
+            if (result.isLoading && result?.data == null) {
               return const Center(
                 child: CircularProgressIndicator(),
               );
@@ -87,7 +87,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                   style: TextStyle(fontSize: 18),
                 )
               ]);
-            } else if (result.data == null) {
+            } else if (result?.data == null) {
               return Column(children: const <Widget>[
                 SizedBox(height: 50),
                 Text(
@@ -97,7 +97,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
               ]);
             }
 
-            if (result.data['balance'] == null) {
+            if (result?.data['balance'] == null) {
               _historyProvider.balance = 0.0;
             } else {
               _historyProvider.balance = _historyProvider
@@ -124,7 +124,9 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                   if (t is ScrollEndNotification &&
                       scrollController.position.pixels >=
                           scrollController.position.maxScrollExtent * 0.7 &&
-                      _historyProvider.pageInfo['hasPreviousPage']) {
+                      _historyProvider.pageInfo['hasPreviousPage'] &&
+                      result.isNotLoading) {
+                    log.d('FETCHMORE !!');
                     fetchMore(opts);
                   }
                   return true;
@@ -295,8 +297,8 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                             }
                             if (_avatar.hasData) {
                               g1WalletsBox.get(repository[2]).avatar =
-                                  _avatar.data;
-                              return ClipOval(child: _avatar.data);
+                                  _avatar?.data;
+                              return ClipOval(child: _avatar?.data);
                             } else {
                               g1WalletsBox.get(repository[2]).avatar =
                                   _cesiumPlusProvider
@@ -427,8 +429,8 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                                 {VoidCallback refetch, FetchMore fetchMore}) {
                               if (result.isLoading || result.hasException) {
                                 return const Text('...');
-                              } else if (result.data['idty'] == null ||
-                                  result.data['idty']['username'] == null) {
+                              } else if (result?.data['idty'] == null ||
+                                  result?.data['idty']['username'] == null) {
                                 return const Text('');
                               } else {
                                 return SizedBox(
@@ -466,7 +468,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                           return const Text('...');
                         }
                         return Text(
-                          "${_balance.data.toString()} Äž1",
+                          "${_balance?.data.toString()} Äž1",
                           textAlign: TextAlign.center,
                           style: const TextStyle(
                               fontSize: 22, fontWeight: FontWeight.w500),
@@ -506,13 +508,13 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                             Navigator.push(
                               context,
                               MaterialPageRoute(builder: (context) {
-                                return AvatarFullscreen(_avatar.data);
+                                return AvatarFullscreen(_avatar?.data);
                               }),
                             );
                           },
                           child: ClipOval(
                             child: Image(
-                              image: _avatar.data.image,
+                              image: _avatar?.data?.image,
                               height: _avatarSize,
                               fit: BoxFit.cover,
                             ),
diff --git a/lib/screens/myWallets/cesium_wallet_options.dart b/lib/screens/myWallets/cesium_wallet_options.dart
index b5ea61af876e687910d9d017a4f9d4f830203745..46fde54bfbafd3ea2bf180e78d59035ea197d14b 100644
--- a/lib/screens/myWallets/cesium_wallet_options.dart
+++ b/lib/screens/myWallets/cesium_wallet_options.dart
@@ -13,6 +13,7 @@ import 'package:gecko/screens/myWallets/change_pin.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
 import 'package:flutter/services.dart';
+import 'package:qr_flutter/qr_flutter.dart';
 
 int _nbrLinesName = 1;
 bool _isNewNameValid = false;
@@ -262,15 +263,11 @@ class CesiumWalletOptions extends StatelessWidget {
                 );
               }),
               SizedBox(height: 4 * ratio),
-              FutureBuilder(
-                  future:
-                      _walletOptions.generateQRcode(_walletOptions.pubkey.text),
-                  builder: (context, snapshot) {
-                    return snapshot.data != null
-                        ? Image.memory(snapshot.data,
-                            height: isTall ? 300 : 270)
-                        : const Text('-', style: TextStyle(fontSize: 20));
-                  }),
+              QrImage(
+                data: _walletOptions.pubkey.text,
+                version: QrVersions.auto,
+                size: isTall ? 300 : 270,
+              ),
               SizedBox(height: 15 * ratio),
               GestureDetector(
                   key: const Key('copyPubkey'),
diff --git a/lib/screens/myWallets/change_pin.dart b/lib/screens/myWallets/change_pin.dart
index e10a52f5ad1a9dbb944d6be58dd7a823f39966e5..be4e011d882b360d9f7ed66eee61aa92be7f8b08 100644
--- a/lib/screens/myWallets/change_pin.dart
+++ b/lib/screens/myWallets/change_pin.dart
@@ -17,7 +17,6 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
   final String walletName;
   final MyWalletsProvider walletProvider;
   Directory appPath;
-  NewWallet _newWalletFile;
 
   @override
   Widget build(BuildContext context) {
@@ -49,9 +48,8 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
           child: SafeArea(
             child: Column(children: <Widget>[
               StatefulWrapper(
-                onInit: () async {
-                  _newWalletFile =
-                      await _changePin.changePin(walletProvider.pinCode);
+                onInit: () {
+                  _changePin.newPin.text = randomSecretCode(5);
                 },
                 child: Container(),
               ),
@@ -82,8 +80,7 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
                     icon: const Icon(Icons.replay),
                     color: orangeC,
                     onPressed: () async {
-                      _newWalletFile =
-                          await _changePin.changePin(walletProvider.pinCode);
+                      _changePin.newPin.text = randomSecretCode(5);
                     },
                   ),
                 ],
@@ -98,13 +95,14 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
                     primary: Colors.green[400], //smoothYellow, // background
                     onPrimary: Colors.black, // foreground
                   ),
-                  onPressed: _changePin.newPin.text != ''
-                      ? () {
-                          _changePin.newPin.text = '';
-                          _changePin.storeNewPinChest(context, _newWalletFile);
-                          walletProvider.pinCode = _changePin.newPin.text;
-                        }
-                      : null,
+                  onPressed: () {
+                    NewWallet _newWalletFile = _changePin.changePin(
+                        walletProvider.pinCode,
+                        newCustomPin: _changePin.newPin.text);
+                    _changePin.newPin.text = '';
+                    _changePin.storeNewPinChest(context, _newWalletFile);
+                    walletProvider.pinCode = _changePin.newPin.text;
+                  },
                   child: const Text(
                     'Confirmer',
                     style: TextStyle(fontSize: 28),
diff --git a/lib/screens/myWallets/chest_options.dart b/lib/screens/myWallets/chest_options.dart
index d9acdd59b48964642e5562632c806161b058ef46..95f5ea7892b37c6286d665017d91fd8c3bf26867 100644
--- a/lib/screens/myWallets/chest_options.dart
+++ b/lib/screens/myWallets/chest_options.dart
@@ -69,8 +69,10 @@ class ChestOptions extends StatelessWidget {
                       height: 25,
                     ),
                     const SizedBox(width: 18),
-                    const Text('Changer mon code secret',
-                        style: TextStyle(fontSize: 20, color: Colors.black)),
+                    const Text(
+                      'Changer mon code secret',
+                      style: TextStyle(fontSize: 20, color: Colors.black),
+                    ),
                   ])),
             ),
             SizedBox(height: 10 * ratio),
diff --git a/lib/screens/myWallets/generate_wallets.dart b/lib/screens/myWallets/generate_wallets.dart
index c25fe33d0dc37061609cf55105a3d6c3704b7ed4..a9670942332617c5170a57d60e59795649452f4f 100644
--- a/lib/screens/myWallets/generate_wallets.dart
+++ b/lib/screens/myWallets/generate_wallets.dart
@@ -1,3 +1,4 @@
+import 'package:durt/durt.dart';
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/generate_wallets.dart';
@@ -26,6 +27,13 @@ class GenerateFastChestScreen extends StatelessWidget {
     GenerateWalletsProvider _generateWalletProvider =
         Provider.of<GenerateWalletsProvider>(context);
 
+    if (_generateWalletProvider.mnemonicController.text == '') {
+      _generateWalletProvider.generateWordList();
+      _generateWalletProvider.mnemonicController.text =
+          _generateWalletProvider.generatedMnemonic;
+      _generateWalletProvider.pin.text = randomSecretCode(5);
+    }
+
     return Scaffold(
         appBar: AppBar(
             toolbarHeight: 60 * ratio,
@@ -39,7 +47,11 @@ class GenerateFastChestScreen extends StatelessWidget {
             child: FittedBox(
                 child: FloatingActionButton(
               heroTag: "buttonGenerateWallet",
-              onPressed: () => _generateWalletProvider.generateWordList(),
+              onPressed: () {
+                _generateWalletProvider.generateWordList();
+                _generateWalletProvider.mnemonicController.text =
+                    _generateWalletProvider.generatedMnemonic;
+              },
               child: SizedBox(
                 height: 40.0,
                 width: 40.0,
@@ -87,8 +99,7 @@ class GenerateFastChestScreen extends StatelessWidget {
                           icon: const Icon(Icons.replay),
                           color: orangeC,
                           onPressed: () {
-                            _generateWalletProvider.changePinCode(
-                                reload: true);
+                            _generateWalletProvider.changePinCode(reload: true);
                           },
                         ),
                       ],
@@ -104,6 +115,12 @@ class GenerateFastChestScreen extends StatelessWidget {
                             ? () async {
                                 _generateWalletProvider.nbrWord =
                                     _generateWalletProvider.getRandomInt();
+                                _generateWalletProvider.actualWallet = Dewif()
+                                    .generateDewif(
+                                        _generateWalletProvider
+                                            .generatedMnemonic,
+                                        _generateWalletProvider.pin.text,
+                                        lang: 'french');
                                 await Navigator.push(
                                   context,
                                   MaterialPageRoute(builder: (context) {
@@ -115,19 +132,6 @@ class GenerateFastChestScreen extends StatelessWidget {
                                             .actualWallet);
                                   }),
                                 );
-                                await Future.delayed(
-                                    const Duration(milliseconds: 20));
-                                // if (_generateWalletProvider.hasBeenStored) {
-                                //   _generateWalletProvider.hasBeenStored = false;
-                                //   await Navigator.pushAndRemoveUntil(context,
-                                //       MaterialPageRoute(builder: (context) {
-                                //     return UnlockingWallet(
-                                //       wallet: _myWalletClass.getDefaultWallet(
-                                //           configBox.get('currentChest')),
-                                //       action: "mywallets",
-                                //     );
-                                //   }), ModalRoute.withName('/'));
-                                // }
                               }
                             : null,
                         child: const Text('Enregistrer ce trousseau',
diff --git a/lib/screens/myWallets/import_cesium_wallet.dart b/lib/screens/myWallets/import_cesium_wallet.dart
index af1d7ad20ccf08bbce11150bf1afa0d423ad9ec1..b925a1793ae437cf78aeb858ad99d2e7453b11f1 100644
--- a/lib/screens/myWallets/import_cesium_wallet.dart
+++ b/lib/screens/myWallets/import_cesium_wallet.dart
@@ -1,10 +1,12 @@
 import 'dart:async';
+import 'package:durt/durt.dart';
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/generate_wallets.dart';
 import 'package:flutter/material.dart';
-import 'package:gecko/models/my_wallets.dart';
+import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/models/wallet_options.dart';
+import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
 import 'package:provider/provider.dart';
 
 class ImportWalletScreen extends StatelessWidget {
@@ -16,173 +18,190 @@ class ImportWalletScreen extends StatelessWidget {
     GlobalKey _toolTipSecret = GlobalKey();
     Timer _debounce;
     GenerateWalletsProvider _generateWalletProvider =
-        Provider.of<GenerateWalletsProvider>(context);
-    MyWalletsProvider _myWalletProvider =
-        Provider.of<MyWalletsProvider>(context);
+        Provider.of<GenerateWalletsProvider>(context, listen: false);
     WalletOptionsProvider _walletOptions =
-        Provider.of<WalletOptionsProvider>(context);
+        Provider.of<WalletOptionsProvider>(context, listen: false);
 
+    _generateWalletProvider.pin.text = randomSecretCode(5);
     return WillPopScope(
-        onWillPop: () {
-          _generateWalletProvider.resetCesiumImportView();
-          return Future<bool>.value(true);
-        },
-        child: Scaffold(
-            appBar: AppBar(
-                toolbarHeight: 60 * ratio,
-                leading: IconButton(
-                    icon: const Icon(Icons.arrow_back, color: Colors.black),
+      onWillPop: () {
+        _generateWalletProvider.resetCesiumImportView();
+        return Future<bool>.value(true);
+      },
+      child: Scaffold(
+        appBar: AppBar(
+            toolbarHeight: 60 * ratio,
+            leading: IconButton(
+                icon: const Icon(Icons.arrow_back, color: Colors.black),
+                onPressed: () {
+                  _generateWalletProvider.resetCesiumImportView();
+                  Navigator.of(context).pop();
+                }),
+            title: const SizedBox(
+              height: 22,
+              child: Text('Importer un portefeuille'),
+            )),
+        body: Builder(
+          builder: (ctx) => SafeArea(
+            child: Column(children: <Widget>[
+              const SizedBox(height: 20),
+              Consumer<GenerateWalletsProvider>(
+                  builder: (context, walletProvider, _) {
+                return TextFormField(
+                  autofocus: true,
+                  onChanged: (text) {
+                    if (_debounce?.isActive ?? false) {
+                      _debounce.cancel();
+                    }
+                    _debounce = Timer(const Duration(milliseconds: 200), () {
+                      walletProvider
+                          .generateCesiumWalletPubkey(
+                              text, walletProvider.cesiumPWD.text)
+                          .then((value) {
+                        walletProvider.canImport = true;
+                        walletProvider.reloadBuild();
+                      });
+                    });
+                  },
+                  keyboardType: TextInputType.text,
+                  controller: walletProvider.cesiumID,
+                  obscureText: !walletProvider
+                      .isCesiumIDVisible, //This will obscure text dynamically
+                  decoration: InputDecoration(
+                    hintText: 'Entrez votre identifiant Cesium',
+                    suffixIcon: IconButton(
+                      icon: Icon(
+                        walletProvider.isCesiumIDVisible
+                            ? Icons.visibility
+                            : Icons.visibility_off,
+                        color: Colors.black,
+                      ),
+                      onPressed: () {
+                        walletProvider.cesiumIDisVisible();
+                      },
+                    ),
+                  ),
+                );
+              }),
+              const SizedBox(height: 15),
+              Consumer<GenerateWalletsProvider>(
+                  builder: (context, walletProvider, _) {
+                return TextFormField(
+                  onChanged: (text) {
+                    if (_debounce?.isActive ?? false) {
+                      _debounce.cancel();
+                    }
+                    _debounce = Timer(const Duration(milliseconds: 200), () {
+                      walletProvider
+                          .generateCesiumWalletPubkey(
+                              walletProvider.cesiumID.text, text)
+                          .then((value) {
+                        walletProvider.canImport = true;
+                        walletProvider.reloadBuild();
+                      });
+                    });
+                  },
+                  keyboardType: TextInputType.text,
+                  controller: walletProvider.cesiumPWD,
+                  obscureText: !walletProvider
+                      .isCesiumPWDVisible, //This will obscure text dynamically
+                  decoration: InputDecoration(
+                    hintText: 'Entrez votre mot de passe Cesium',
+                    suffixIcon: IconButton(
+                      icon: Icon(
+                        walletProvider.isCesiumPWDVisible
+                            ? Icons.visibility
+                            : Icons.visibility_off,
+                        color: Colors.black,
+                      ),
+                      onPressed: () {
+                        walletProvider.cesiumPWDisVisible();
+                      },
+                    ),
+                  ),
+                );
+              }),
+              const SizedBox(height: 15),
+              GestureDetector(
+                onTap: () {
+                  Clipboard.setData(ClipboardData(
+                      text: _generateWalletProvider.cesiumPubkey.text));
+                  _walletOptions.snackCopyKey(ctx);
+                },
+                child: Consumer<GenerateWalletsProvider>(
+                    builder: (context, walletProvider, _) {
+                  return Text(
+                    _generateWalletProvider.cesiumPubkey.text,
+                    style: const TextStyle(
+                        fontSize: 14.0,
+                        color: Colors.black,
+                        fontWeight: FontWeight.bold,
+                        fontFamily: 'Monospace'),
+                  );
+                }),
+              ),
+              const SizedBox(height: 20),
+              toolTips(_toolTipSecret, 'Code secret:',
+                  "Retenez bien votre code secret, il vous sera demandé à chaque paiement, ainsi que pour configurer votre portefeuille"),
+              Stack(
+                alignment: Alignment.centerRight,
+                children: <Widget>[
+                  TextField(
+                      enabled: false,
+                      controller: _generateWalletProvider.pin,
+                      maxLines: 1,
+                      textAlign: TextAlign.center,
+                      decoration: const InputDecoration(),
+                      style: const TextStyle(
+                          fontSize: 30.0,
+                          color: Colors.black,
+                          fontWeight: FontWeight.bold)),
+                  IconButton(
+                    icon: const Icon(Icons.replay),
+                    color: orangeC,
                     onPressed: () {
-                      _generateWalletProvider.resetCesiumImportView();
-                      Navigator.of(context).pop();
-                    }),
-                title: const SizedBox(
-                  height: 22,
-                  child: Text('Importer un portefeuille'),
-                )),
-            body: Builder(
-                builder: (ctx) => SafeArea(
-                      child: Column(children: <Widget>[
-                        const SizedBox(height: 20),
-                        TextFormField(
-                          onChanged: (text) {
-                            if (_debounce?.isActive ?? false) {
-                              _debounce.cancel();
-                            }
-                            _debounce =
-                                Timer(const Duration(milliseconds: 200), () {
-                              _generateWalletProvider
-                                  .generateCesiumWalletPubkey(text,
-                                      _generateWalletProvider.cesiumPWD.text)
-                                  .then((value) {
-                                _generateWalletProvider.canImport = true;
-                                _generateWalletProvider.reloadBuild();
-                              });
-                            });
-                          },
-                          keyboardType: TextInputType.text,
-                          controller: _generateWalletProvider.cesiumID,
-                          obscureText: !_generateWalletProvider
-                              .isCesiumIDVisible, //This will obscure text dynamically
-                          decoration: InputDecoration(
-                            hintText: 'Entrez votre identifiant Cesium',
-                            suffixIcon: IconButton(
-                              icon: Icon(
-                                _generateWalletProvider.isCesiumIDVisible
-                                    ? Icons.visibility
-                                    : Icons.visibility_off,
-                                color: Colors.black,
-                              ),
-                              onPressed: () {
-                                _generateWalletProvider.cesiumIDisVisible();
-                              },
-                            ),
-                          ),
-                        ),
-                        const SizedBox(height: 15),
-                        TextFormField(
-                          onChanged: (text) {
-                            if (_debounce?.isActive ?? false) {
-                              _debounce.cancel();
-                            }
-                            _debounce =
-                                Timer(const Duration(milliseconds: 200), () {
-                              _generateWalletProvider
-                                  .generateCesiumWalletPubkey(
-                                      _generateWalletProvider.cesiumID.text,
-                                      text)
-                                  .then((value) {
-                                _generateWalletProvider.canImport = true;
-                                _generateWalletProvider.reloadBuild();
-                              });
-                            });
-                          },
-                          keyboardType: TextInputType.text,
-                          controller: _generateWalletProvider.cesiumPWD,
-                          obscureText: !_generateWalletProvider
-                              .isCesiumPWDVisible, //This will obscure text dynamically
-                          decoration: InputDecoration(
-                            hintText: 'Entrez votre mot de passe Cesium',
-                            suffixIcon: IconButton(
-                              icon: Icon(
-                                _generateWalletProvider.isCesiumPWDVisible
-                                    ? Icons.visibility
-                                    : Icons.visibility_off,
-                                color: Colors.black,
-                              ),
-                              onPressed: () {
-                                _generateWalletProvider.cesiumPWDisVisible();
-                              },
-                            ),
-                          ),
-                        ),
-                        const SizedBox(height: 15),
-                        GestureDetector(
-                            onTap: () {
-                              Clipboard.setData(ClipboardData(
-                                  text: _generateWalletProvider
-                                      .cesiumPubkey.text));
-                              _walletOptions.snackCopyKey(ctx);
-                            },
-                            child: Text(
-                              _generateWalletProvider.cesiumPubkey.text,
-                              style: const TextStyle(
-                                  fontSize: 14.0,
-                                  color: Colors.black,
-                                  fontWeight: FontWeight.bold,
-                                  fontFamily: 'Monospace'),
-                            )),
-                        const SizedBox(height: 20),
-                        toolTips(_toolTipSecret, 'Code secret:',
-                            "Retenez bien votre code secret, il vous sera demandé à chaque paiement, ainsi que pour configurer votre portefeuille"),
-                        Stack(
-                          alignment: Alignment.centerRight,
-                          children: <Widget>[
-                            TextField(
-                                enabled: false,
-                                controller: _generateWalletProvider.pin,
-                                maxLines: 1,
-                                textAlign: TextAlign.center,
-                                decoration: const InputDecoration(),
-                                style: const TextStyle(
-                                    fontSize: 30.0,
-                                    color: Colors.black,
-                                    fontWeight: FontWeight.bold)),
-                            IconButton(
-                              icon: const Icon(Icons.replay),
-                              color: orangeC,
-                              onPressed: () {
-                                _generateWalletProvider.changePinCode(
-                                    reload: true);
-                              },
-                            ),
-                          ],
-                        ),
-                        const SizedBox(height: 30),
-                        ElevatedButton(
-                            style: ElevatedButton.styleFrom(
-                              primary: yellowC, // background
-                              onPrimary: Colors.black, // foreground
-                            ),
-                            onPressed: _generateWalletProvider.canImport
-                                ? () {
-                                    _generateWalletProvider
-                                        .importCesiumWallet()
-                                        .then((value) {
-                                      _myWalletProvider.rebuildWidget();
-                                      _generateWalletProvider
-                                          .resetCesiumImportView();
-                                      Navigator.popUntil(
-                                        context,
-                                        ModalRoute.withName('/'),
-                                      );
-                                    });
-                                  }
-                                : null,
-                            child: const Text('Importer ce portefeuille Cesium',
-                                style: TextStyle(fontSize: 20))),
-                      ]),
-                    ))));
+                      _generateWalletProvider.changePinCode(reload: true);
+                    },
+                  ),
+                ],
+              ),
+              const SizedBox(height: 30),
+              Consumer<GenerateWalletsProvider>(
+                  builder: (context, walletProvider, _) {
+                return ElevatedButton(
+                  style: ElevatedButton.styleFrom(
+                    primary: yellowC, // background
+                    onPrimary: Colors.black, // foreground
+                  ),
+                  onPressed: walletProvider.canImport
+                      ? () async {
+                          final chestKey =
+                              await walletProvider.importCesiumWallet();
+                          walletProvider.reloadBuild();
+
+                          await Navigator.pushAndRemoveUntil(
+                            context,
+                            MaterialPageRoute(builder: (context) {
+                              return UnlockingWallet(
+                                wallet: WalletData(chest: chestKey),
+                                action: "mywallets",
+                              );
+                            }),
+                            ModalRoute.withName('/'),
+                          );
+                        }
+                      : null,
+                  child: const Text(
+                    'Importer ce portefeuille Cesium',
+                    style: TextStyle(fontSize: 20),
+                  ),
+                );
+              }),
+            ]),
+          ),
+        ),
+      ),
+    );
   }
 
   Widget toolTips(_key, _text, _message) {
diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart
index 77fdd3d864151903c38a83798f6e1c0d5c09b944..df12f2f2e71e5c46f4b080fac55d256c3eaf12ce 100644
--- a/lib/screens/myWallets/wallet_options.dart
+++ b/lib/screens/myWallets/wallet_options.dart
@@ -11,6 +11,7 @@ import 'package:gecko/screens/history.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
 import 'package:flutter/services.dart';
+import 'package:qr_flutter/qr_flutter.dart';
 
 // ignore: must_be_immutable
 class WalletOptions extends StatelessWidget {
@@ -27,10 +28,11 @@ class WalletOptions extends StatelessWidget {
         Provider.of<WalletOptionsProvider>(context, listen: false);
     WalletsProfilesProvider _historyProvider =
         Provider.of<WalletsProfilesProvider>(context, listen: false);
-
     MyWalletsProvider _myWalletProvider =
         Provider.of<MyWalletsProvider>(context);
 
+    log.d(_walletOptions.pubkey.text);
+
     final int _currentChest = _myWalletProvider.getCurrentChest();
     final String shortPubkey =
         _walletOptions.getShortPubkey(_walletOptions.pubkey.text);
@@ -278,14 +280,10 @@ class WalletOptions extends StatelessWidget {
                 );
               }),
               SizedBox(height: 4 * ratio),
-              FutureBuilder(
-                future:
-                    _walletOptions.generateQRcode(_walletOptions.pubkey.text),
-                builder: (context, snapshot) {
-                  return snapshot.data != null
-                      ? Image.memory(snapshot.data, height: isTall ? 300 : 270)
-                      : const Text('-', style: TextStyle(fontSize: 20));
-                },
+              QrImage(
+                data: _walletOptions.pubkey.text,
+                version: QrVersions.auto,
+                size: isTall ? 300 : 270,
               ),
               SizedBox(height: 15 * ratio),
               Consumer<WalletOptionsProvider>(
diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart
index 6826550ee1dce0fa8dee6d88f5be8dc2699d1576..74025c87f813a291c82e58fe1dcde5e23160fc14 100644
--- a/lib/screens/myWallets/wallets_home.dart
+++ b/lib/screens/myWallets/wallets_home.dart
@@ -4,7 +4,6 @@ import 'package:gecko/models/chest_data.dart';
 import 'package:gecko/models/my_wallets.dart';
 import 'package:gecko/models/queries.dart';
 import 'package:gecko/models/wallet_data.dart';
-import 'package:gecko/models/wallet_options.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/screens/common_elements.dart';
 import 'package:gecko/screens/myWallets/chest_options.dart';
@@ -128,8 +127,6 @@ class WalletsHome extends StatelessWidget {
   Widget myWalletsTiles(BuildContext context) {
     MyWalletsProvider _myWalletProvider =
         Provider.of<MyWalletsProvider>(context);
-    WalletOptionsProvider _walletOptions =
-        Provider.of<WalletOptionsProvider>(context);
 
     final bool isWalletsExists = _myWalletProvider.checkIfWalletExist();
 
@@ -166,17 +163,14 @@ class WalletsHome extends StatelessWidget {
                   padding: const EdgeInsets.all(16),
                   child: GestureDetector(
                     onTap: () {
-                      _walletOptions.readLocalWallet(
-                          context,
-                          _repository,
-                          _myWalletProvider.pinCode,
-                          _myWalletProvider.pinLenght);
                       Navigator.push(
-                          context,
-                          SmoothTransition(
-                              page: WalletOptions(
+                        context,
+                        SmoothTransition(
+                          page: WalletOptions(
                             wallet: _repository,
-                          )));
+                          ),
+                        ),
+                      );
 
                       // Navigator.push(context,
                       //     MaterialPageRoute(builder: (context) {
diff --git a/pubspec.lock b/pubspec.lock
index 09adf5a1a4fcd1bc6789fa6e9edc53da83a9da33..6f33c900afc43df50d1ed800fb2cc1de8130d522 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -281,6 +281,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.5.6"
+  desktop_window:
+    dependency: "direct main"
+    description:
+      name: desktop_window
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.4.0"
   dio:
     dependency: "direct main"
     description:
@@ -814,7 +821,7 @@ packages:
       name: permission_handler
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "8.1.6"
+    version: "8.3.0"
   permission_handler_platform_interface:
     dependency: transitive
     description:
@@ -920,6 +927,20 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.0"
+  qr_code_scanner:
+    dependency: "direct main"
+    description:
+      name: qr_code_scanner
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.6.1"
+  qr_flutter:
+    dependency: "direct main"
+    description:
+      name: qr_flutter
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "4.0.0"
   qrscan:
     dependency: "direct main"
     description:
@@ -1233,6 +1254,15 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.2.10"
+  window_size:
+    dependency: "direct main"
+    description:
+      path: "plugins/window_size"
+      ref: HEAD
+      resolved-ref: "03d957e8b5c99fc83cd4a781031b154ab3de8753"
+      url: "git://github.com/google/flutter-desktop-embedding.git"
+    source: git
+    version: "0.1.0"
   xdg_directories:
     dependency: transitive
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 06e8f4b8ec60d43e1bf27d4f3a44b18ec7c35177..db0a916ba48e06bad2c31c0ae6acd43af1c2c821 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -15,6 +15,10 @@ dependencies:
     sdk: flutter
   flutter_driver:
     sdk: flutter
+  window_size:
+    git:
+      url: git://github.com/google/flutter-desktop-embedding.git
+      path: plugins/window_size
   assorted_layout_widgets: ^5.2.1
   bubble: ^1.2.1
   carousel_slider: ^4.0.0
@@ -38,11 +42,13 @@ dependencies:
   package_info: ^2.0.2
   path_provider: ^2.0.3
   pdf: ^3.5.0
-  permission_handler: 8.1.6
+  permission_handler: ^8.3.0
   pin_code_fields: ^7.3.0
   printing: ^5.6.0
   provider: ^6.0.1
   qrscan: ^0.3.2
+  qr_code_scanner: ^0.6.1
+  qr_flutter: ^4.0.0
   responsive_builder: ^0.4.1
   responsive_framework: ^0.1.4
   sentry: ^6.0.0
@@ -56,6 +62,7 @@ dependencies:
   xml: ^5.3.0
   pull_to_refresh: ^2.0.0
   dio: ^4.0.4
+  desktop_window: ^0.4.0
   durt: ^0.1.4
 
 flutter_icons: