diff --git a/common/config.js b/common/config.js
index 2a3552431d3018e76cbb43f256584aa408302125..de3ac116d6cc15759e98dc5f1274a91daaa91b87 100644
--- a/common/config.js
+++ b/common/config.js
@@ -6,6 +6,7 @@ const packageConfig = require('../package.json').config;
 
 const __configDir = `${os.homedir()}/.config/lektor`;
 const __configFile = `${__configDir}/amadeus.ini`;
+const __configLektord = `${__configDir}/lektor.ini`;
 
 fs.mkdirSync(__configDir, { recursive: true });
 __dir = fs.opendirSync(__configDir);
@@ -14,68 +15,33 @@ __dir.close(err => {
 });
 
 var config = {
-    database: null,
-    host: null,
-    port: null,
-    loglevel: null,
-    loglektord: null,
-    attachmode: null,
-    clientport: null,
+    content: null,
     reload() {
         var fd = fs.openSync(__configFile, 'a');
         fs.close(fd, err => {});
-        var __config = ini.parse(fs.readFileSync(__configFile, 'utf-8'));
+        this.content = ini.parse(fs.readFileSync(__configFile, 'utf-8'));
 
-        __config.database ??= {};
-        __config.lektord ??= {};
-        __config.kurisu ??= {};
-        __config.client ??= {};
-        __config.log ??= {};
+        this.content.database ??= {};
+        this.content.lektord ??= {};
+        this.content.kurisu ??= {};
+        this.content.client ??= {};
+        this.content.log ??= {};
 
-        __config.kurisu.url ??= packageConfig.kurisu;
-        __config.client.port ??= packageConfig.port;
-        __config.log.level ??= 'debug';
-        __config.log.lektord ??= true;
-        __config.database.path ??= '/home/kara/kara.db';
-        __config.lektord.host ??= 'localhost';
-        __config.lektord.port ??= '6600';
-        __config.lektord.attach ??= true;
+        this.content.kurisu.url ??= packageConfig.kurisu;
+        this.content.client.port ??= packageConfig.port;
+        this.content.log.level ??= 'debug';
+        this.content.log.lektord ??= true;
+        this.content.database.path ??= '/home/kara/kara.db';
+        this.content.lektord.host ??= 'localhost';
+        this.content.lektord.port ??= '6600';
+        this.content.lektord.attach ??= true;
 
-        this.clientport = __config.client.port;
-        this.kurisuurl = __config.kurisu.url;
-        this.database = __config.database.path;
-        this.host = __config.lektord.host;
-        this.port = __config.lektord.port;
-        this.attachmode = __config.lektord.attach;
-        this.loglevel = __config.log.level;
-        this.loglektord = __config.log.lektord;
-
-        fs.writeFileSync(__configFile, ini.stringify(__config));
+        fs.writeFileSync(__configFile, ini.stringify(this.content));
 
         this.flush();
     },
     flush() {
-        const __config = {
-            kurisu: {
-                url: this.kurisuurl,
-            },
-            database: {
-                path: this.database,
-            },
-            client: {
-                port: this.clientport,
-            },
-            lektord: {
-                host: this.host,
-                port: this.port,
-                attach: this.attachmode,
-            },
-            log: {
-                level: this.loglevel,
-                lektord: this.loglektord,
-            },
-        };
-        fs.writeFileSync(__configFile, ini.stringify(__config));
+        fs.writeFileSync(__configFile, ini.stringify(this.content));
     },
 };
 
diff --git a/common/db.js b/common/db.js
index 138ae129e5eb27f572125c38f6d7fe0ff6fd415c..0f608fbd00d8cc0d4b2ee7e601aa76000732832b 100644
--- a/common/db.js
+++ b/common/db.js
@@ -45,9 +45,9 @@ class KaraDatabase {
      * - m_karaPath: String
      * - m_db: sqlite3 database */
     constructor() {
-        this.m_karaPath = config.database;
+        this.m_karaPath = config.content.database.path;
         this.m_db = new sqlite3.Database(this.m_karaPath);
-        logger.info('db', 'Create database from file ' + config.database);
+        logger.info('db', 'Create database from file ' + config.content.database.path);
     }
 
     /* Call this as a destructor */
diff --git a/common/lkt.js b/common/lkt.js
index bcc7733c7f167bec9a5bcd8223c5e80d35fda853..c2d9881f748ef9b092e0b58a6257da6d13984734 100644
--- a/common/lkt.js
+++ b/common/lkt.js
@@ -24,8 +24,8 @@ class LktClient {
         this.m_socket = new net.Socket();
         this.m_closed = true;
         const sockopt = {
-            port: config.port,
-            host: config.host,
+            port: config.content.lektord.port,
+            host: config.content.lektord.host,
             readable: true,
             writable: true,
         };
@@ -34,17 +34,17 @@ class LktClient {
         this.m_socket.setTimeout(3000);
         this.m_socket.setEncoding('utf8');
         this.m_socket.on('timeout', () => {
-            logger.error('lkt', `Got timeout while connecting to localhost:${config.port}`);
+            logger.error('lkt', `Got timeout while connecting to localhost:${config.content.lektord.port}`);
             this.m_socket.end();
         });
 
         this.m_socket.on('ready', () => {
-            logger.debug('lkt', `Ready to use socket with localhost:${config.port}`);
+            logger.debug('lkt', `Ready to use socket with localhost:${config.content.lektord.port}`);
             this.m_online = true;
         });
 
         this.m_socket.on('end', () => {
-            logger.info('lkt', `Disconnected from server localhost:${config.port}`);
+            logger.info('lkt', `Disconnected from server localhost:${config.content.lektord.port}`);
             this.m_online = false;
         });
 
@@ -57,12 +57,12 @@ class LktClient {
         });
 
         this.m_socket.on('close', () => {
-            logger.info('lkt', `Socket localhost:${config.port} closed`);
+            logger.info('lkt', `Socket localhost:${config.content.lektord.port} closed`);
             this.m_online = false;
         });
 
         this.m_socket.connect(sockopt, () => {
-            logger.info('lkt', `Socket connected to localhost:${config.port}`);
+            logger.info('lkt', `Socket connected to localhost:${config.content.lektord.port}`);
             this.m_online = true;
         });
 
@@ -289,8 +289,8 @@ class LktClient {
         function __getResult(socket) {
             return new Promise(resolv => {
                 const sockopt = {
-                    port: config.port,
-                    host: config.host,
+                    port: config.content.lektord.port,
+                    host: config.content.lektord.host,
                     readable: true,
                     writable: true,
                 };
@@ -300,13 +300,13 @@ class LktClient {
                 socket.setEncoding('utf8');
 
                 socket.on('timeout', () => {
-                    logger.error('lkt', `Got timeout while ping to localhost:${config.port}`);
+                    logger.error('lkt', `Got timeout while ping to localhost:${config.content.lektord.port}`);
                     result = false;
                     resolv(result);
                 });
 
                 socket.on('ready', () => {
-                    logger.debug('lkt', `Ping success with localhost:${config.port}`);
+                    logger.debug('lkt', `Ping success with localhost:${config.content.lektord.port}`);
                     result = true;
                     resolv(result);
                 });
@@ -318,7 +318,7 @@ class LktClient {
                 });
 
                 socket.connect(sockopt, () => {
-                    logger.info('lkt', `Pinged localhost:${config.port}`);
+                    logger.info('lkt', `Pinged localhost:${config.content.lektord.port}`);
                     socket.destroy();
                     result = true;
                     resolv(result);
diff --git a/common/logger.js b/common/logger.js
index c91112ff30a1d6e5052bca70ea4f13edebeb6d7e..fdd93b79ad7f65dbcc042aaf5f01c07ffa56b015 100644
--- a/common/logger.js
+++ b/common/logger.js
@@ -44,7 +44,7 @@ var __logger = winston.createLogger({
             tailable: true,
         }),
     ],
-    level: `${config.loglevel}`,
+    level: `${config.content.log.level}`,
     json: false,
     handleExceptions: true,
     levels: __loggerCustomLevels.levels,
@@ -88,7 +88,7 @@ var __lektord = data => {
 
 var logger = {
     logfile: __logFile,
-    lektord: config.loglektord ? __lektord : __nopLektord,
+    lektord: config.content.log.lektord ? __lektord : __nopLektord,
     debug: (cat, lg) => {
         __logger.debug(`${cat.padEnd(10)} | ${lg}`);
     },
diff --git a/instance/main.js b/instance/main.js
index 2d9d0d20529a40105361ea9f9e66af15a55d9ffd..239e7cc6fd76b55be57bbb18692506f28893ddcd 100644
--- a/instance/main.js
+++ b/instance/main.js
@@ -34,14 +34,14 @@ function addIpcToButton(btnId, ipc) {
 }
 
 function autoFillSettings() {
-    $('#inputHost').val(config.host);
-    $('#inputPort').val(config.port);
+    $('#inputHost').val(config.content.lektord.host);
+    $('#inputPort').val(config.content.lektord.port);
     $('#inputAttachMode').prop('checked', true);
-    $('#inputDbPath').val(config.database);
-    $('#inputLogLektord').prop('checked', config.loglektord);
-    $(`#log${config.loglevel.toUpperCase()}`).prop('checked', true);
-    $('#inputKurisuUrl').val(config.kurisuurl);
-    $('#inputClientPort').val(config.clientport);
+    $('#inputDbPath').val(config.content.database.path);
+    $('#inputLogLektord').prop('checked', config.content.log.lektord);
+    $(`#log${config.content.log.level.toUpperCase()}`).prop('checked', true);
+    $('#inputKurisuUrl').val(config.content.kurisu.url);
+    $('#inputClientPort').val(config.content.client.port);
 }
 
 function flushFillSettings() {
diff --git a/main.js b/main.js
index c3192d6d877726c5b2856f9f930e385efcf7dbd9..22d765982902469e6f38fbe104dbb0b6c099534e 100644
--- a/main.js
+++ b/main.js
@@ -22,7 +22,7 @@ class Lektor {
     constructor() {
         this.closed = true;
         isRunning({ win: 'lektord.exe', linux: 'lektord', mac: 'lektord' }).then(v => {
-            if (v && config.attachmode) {
+            if (v && config.content.lektord.attach) {
                 logger.info('main', `Lektord is running! Attach to it`);
             } else if (v) {
                 logger.error('error', `Lektord is running and attach mode is disable, exit!`);
@@ -107,7 +107,7 @@ function createUserViewWindow() {
             contextIsolation: true,
         },
     });
-    uv.loadURL(`http://localhost:${config.clientport}/`);
+    uv.loadURL(`http://localhost:${config.content.client.port}/`);
     uv.once('ready-to-show', () => {
         uv.show();
     });
@@ -127,7 +127,7 @@ function createKurisuWindow() {
             contextIsolation: true,
         },
     });
-    kurisu.loadURL(config.kurisuurl);
+    kurisu.loadURL(config.content.kurisu.url);
     kurisu.once('ready-to-show', () => {
         kurisu.show();
     });
@@ -331,19 +331,26 @@ ipcMain.on('get-runnings', (event, arg) => {
 
 ipcMain.on('set-settings', (event, arg) => {
     logger.info('main', `Settings are now: ${JSON.stringify(arg)}`);
-    config.host = arg.host;
-    config.port = arg.port;
-    config.database = arg.db;
-    config.loglektord = arg.loglektord;
-    config.attachmode = arg.attachmode;
-    config.kurisuurl = arg.kurisuurl;
-    config.clientport = arg.clientport;
+
+    config.content.lektord.host = arg.host;
+    config.content.lektord.port = arg.port;
+    config.content.lektord.attach = arg.attachmode;
+
+    config.content.database.path = arg.db;
+
+    config.content.kurisu.url = arg.kurisuurl;
+
+    config.content.client.port = arg.clientport;
 
     /* prettier-ignore */
-    config.loglevel = arg.loglevel.ERROR   ? 'error'
-                    : arg.loglevel.WARNING ? 'warning'
-                    : arg.loglevel.INFO    ? 'info'
-                    :                        'debug';
+    config.content.log.lektord = arg.loglektord;
+    config.content.log.level = arg.loglevel.ERROR
+        ? 'error'
+        : arg.loglevel.WARNING
+        ? 'warning'
+        : arg.loglevel.INFO
+        ? 'info'
+        : 'debug';
 
     config.flush();
 });