diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js
index 1c380247a6e7a38a66254f6251226f700c60c2fd..584ea408bb1cfce31045dfdae394699537a682c5 100644
--- a/src/store/modules/settings.js
+++ b/src/store/modules/settings.js
@@ -4,7 +4,21 @@ import { filterIgnored, parseTuples, valueHasTuples, wrapConfig } from './normal
 const settings = {
   state: {
     description: [],
-    settings: {},
+    settings: {
+      auto_linker: {},
+      cors_plug: {},
+      esshd: {},
+      http_signatures: {},
+      logger: {},
+      mime: {},
+      phoenix: {},
+      pleroma: {},
+      prometheus: {},
+      quack: {},
+      tesla: {},
+      ueberauth: {},
+      web_push_encryption: {}
+    },
     ignoredIfNotEnabled: ['enabled', 'handler', 'password_authenticator', 'port', 'priv_dir'],
     loading: true
   },
@@ -20,18 +34,8 @@ const settings = {
     },
     SET_SETTINGS: (state, data) => {
       const newSettings = data.reduce((acc, { group, key, value }) => {
-        if (group === 'cors_plug') {
-          acc[':cors_plug'] = { ...acc[':cors_plug'], [key]: value }
-        } else if (group === 'logger') {
-          const parsedValue = valueHasTuples(key, value) ? value : parseTuples(value, key)
-          acc[':logger'] = acc[':logger'] ? { ...acc[':logger'], [key]: parsedValue } : { [key]: parsedValue }
-        } else if (group === 'quack') {
-          const parsedValue = valueHasTuples(key, value) ? value : parseTuples(value, key)
-          acc[':quack'] = acc[':quack'] ? { ...acc[':quack'], [key]: parsedValue } : { [key]: parsedValue }
-        } else {
-          const parsedValue = valueHasTuples(key, value) ? { value } : parseTuples(value, key)
-          acc[key] = { ...acc[key], ...parsedValue }
-        }
+        const parsedValue = valueHasTuples(key, value) ? { value } : parseTuples(value, key)
+        acc[group][key] = { ...acc[group][key], ...parsedValue }
         return acc
       }, state.settings)
       state.settings = newSettings
diff --git a/src/views/settings/components/ActivityPub.vue b/src/views/settings/components/ActivityPub.vue
index 0ec54f5d4526e8796a53f45165f75a0c11fae3e4..0effc24d122e3a7409f54d3cfa138f3c1656999d 100644
--- a/src/views/settings/components/ActivityPub.vue
+++ b/src/views/settings/components/ActivityPub.vue
@@ -29,7 +29,7 @@ export default {
       return this.settings.description.find(setting => setting.key === ':activitypub')
     },
     activitypubData() {
-      return this.settings.settings[':activitypub']
+      return this.settings.settings.pleroma[':activitypub']
     },
     isMobile() {
       return this.$store.state.app.device === 'mobile'
@@ -44,7 +44,7 @@ export default {
       return this.settings.description.find(setting => setting.key === ':user')
     },
     userData() {
-      return this.settings.settings[':user']
+      return this.settings.settings.pleroma[':user']
     }
   },
   methods: {
diff --git a/src/views/settings/components/Authentication.vue b/src/views/settings/components/Authentication.vue
index 502b9694ed0eca2dca3ce86a8ea4e995efbe1dbd..72e7ad91b972ab6e72864d975060478421ef5ef0 100644
--- a/src/views/settings/components/Authentication.vue
+++ b/src/views/settings/components/Authentication.vue
@@ -37,7 +37,7 @@ export default {
       return this.settings.description.find(setting => setting.key === ':auth')
     },
     authData() {
-      return this.settings.settings[':auth']
+      return this.settings.settings.pleroma[':auth']
     },
     isMobile() {
       return this.$store.state.app.device === 'mobile'
@@ -49,7 +49,7 @@ export default {
       return this.settings.description.find(setting => setting.key === ':ldap')
     },
     ldapData() {
-      return this.settings.settings[':ldap']
+      return this.settings.settings.pleroma[':ldap']
     },
     loading() {
       return this.settings.loading
@@ -58,13 +58,13 @@ export default {
       return this.settings.description.find(setting => setting.key === ':oauth2')
     },
     oauth2Data() {
-      return this.settings.settings[':oauth2']
+      return this.settings.settings.pleroma[':oauth2']
     },
     pleromaAuthenticator() {
       return this.settings.description.find(setting => setting.description === 'Authenticator')
     },
     pleromaAuthenticatorData() {
-      return this.settings.settings['']
+      return this.settings.settings.pleroma['Pleroma.Web.Auth.Authenticator']
     }
   },
   methods: {
diff --git a/src/views/settings/components/Captcha.vue b/src/views/settings/components/Captcha.vue
index abaa897e32a8111adf3b80fb001669d64fd6354c..44e3ea05368a323fa9a52653e5f5b7c092b653a6 100644
--- a/src/views/settings/components/Captcha.vue
+++ b/src/views/settings/components/Captcha.vue
@@ -29,7 +29,7 @@ export default {
       return this.settings.description.find(setting => setting.key === 'Pleroma.Captcha')
     },
     captchaData() {
-      return this.settings.settings['Pleroma.Captcha']
+      return this.settings.settings.pleroma['Pleroma.Captcha']
     },
     isMobile() {
       return this.$store.state.app.device === 'mobile'
@@ -38,7 +38,7 @@ export default {
       return this.settings.description.find(setting => setting.key === 'Pleroma.Captcha.Kocaptcha')
     },
     kocaptchaData() {
-      return this.settings.settings['Pleroma.Captcha.Kocaptcha']
+      return this.settings.settings.pleroma['Pleroma.Captcha.Kocaptcha']
     },
     labelWidth() {
       return this.isMobile ? '100px' : '240px'