diff --git a/src/store/modules/normalizers.js b/src/store/modules/normalizers.js
index 801e95a054d3069c50940d091150d8acd500798c..1d3a3b23b19ce2791221d929f1fbd7c8c905caa3 100644
--- a/src/store/modules/normalizers.js
+++ b/src/store/modules/normalizers.js
@@ -13,6 +13,8 @@ const getValueWithoutKey = (key, [type, value]) => {
       updatedArray[index] = { 'tuple': ['ExSyslogger', ':ex_syslogger'] }
     }
     return updatedArray
+  } else if (key === ':types') {
+    return Object.keys(value).reduce((acc, key) => { return { ...acc, [key]: value[key][1] } }, {})
   }
   return value
 }
@@ -116,7 +118,6 @@ const parseProxyUrl = value => {
 
 export const partialUpdate = (group, key) => {
   if ((group === ':pleroma' && key === 'Oban') ||
-    (group === ':mime' && key === ':types') ||
     (group === ':auto_linker' && key === ':opts')) {
     return false
   }
diff --git a/src/views/settings/components/Inputs.vue b/src/views/settings/components/Inputs.vue
index 05dc0ad6fb05c64a4746892fe6be55973cb014f5..751ec913779b10268abcc3813421d07b814a98cb 100644
--- a/src/views/settings/components/Inputs.vue
+++ b/src/views/settings/components/Inputs.vue
@@ -140,7 +140,7 @@ export default {
       }
     },
     inputValue() {
-      if ([':esshd', ':cors_plug', ':quack', ':http_signatures'].includes(this.settingGroup.group) &&
+      if ([':esshd', ':cors_plug', ':quack', ':http_signatures', ':tesla'].includes(this.settingGroup.group) &&
         this.data[this.setting.key]) {
         return this.setting.type === 'atom' && this.data[this.setting.key].value[0] === ':'
           ? this.data[this.setting.key].value.substr(1)
@@ -149,6 +149,8 @@ export default {
         this.setting.key === 'Pleroma.Web.Auth.Authenticator' ||
         this.setting.key === ':admin_token') {
         return this.data.value
+      } else if (this.settingGroup.group === ':mime' && this.settingParent.key === ':types') {
+        return this.data.value[this.setting.key]
       } else if (this.setting.type === 'atom') {
         return this.data[this.setting.key] && this.data[this.setting.key][0] === ':' ? this.data[this.setting.key].substr(1) : this.data[this.setting.key]
       } else {
@@ -177,12 +179,23 @@ export default {
     },
     processNestedData(value, group, key, parentInput, parentType, childInput, childType) {
       const valueExists = value => value[group] && value[group][key] && value[group][key][parentInput]
-      const updatedValueForState = valueExists(this.settings)
+      let updatedValueForState = valueExists(this.settings)
         ? { ...this.settings[group][key][parentInput], ...{ [childInput]: value }}
         : { [childInput]: value }
-      const updatedValue = valueExists(this.updatedSettings)
+      let updatedValue = valueExists(this.updatedSettings)
         ? { ...this.updatedSettings[group][key][parentInput][1], ...{ [childInput]: [childType, value] }}
         : { [childInput]: [childType, value] }
+
+      if (group === ':mime' && parentInput === ':types') {
+        updatedValueForState = { ...this.settings[group][parentInput].value, ...updatedValueForState }
+        updatedValue = {
+          ...Object.keys(this.settings[group][parentInput].value)
+            .reduce((acc, el) => {
+              return { ...acc, [el]: [['list', 'string'], this.settings[group][parentInput].value[el]] }
+            }, {}),
+          ...updatedValue
+        }
+      }
       this.$store.dispatch('UpdateSettings', { group, key, input: parentInput, value: updatedValue, type: parentType })
       this.$store.dispatch('UpdateState', { group, key, input: parentInput, value: updatedValueForState })
     },
diff --git a/src/views/settings/components/Other.vue b/src/views/settings/components/Other.vue
index 650e08e2e627bdfb097d419ca4383aa0234372cb..ed29a863c305b941d64d44ed4e767f7a2a13b93f 100644
--- a/src/views/settings/components/Other.vue
+++ b/src/views/settings/components/Other.vue
@@ -38,13 +38,13 @@ export default {
       return this.settings.description.find(setting => setting.group === ':mime')
     },
     mimeTypesData() {
-      return this.settings.settings[':mime'][':types']
+      return this.settings.settings[':mime']
     },
     teslaAdapter() {
       return this.settings.description.find(setting => setting.group === ':tesla')
     },
     teslaAdapterData() {
-      return this.settings.settings[':tesla'][':adapter']
+      return this.settings.settings[':tesla']
     }
   },
   methods: {
diff --git a/src/views/settings/index.vue b/src/views/settings/index.vue
index 90976b3d2d21982d82550b006ccabef25060c7a6..14f34e40bfa24541d3547c7de1184073b3263b9c 100644
--- a/src/views/settings/index.vue
+++ b/src/views/settings/index.vue
@@ -56,21 +56,20 @@
       <el-tab-pane :label="$t('settings.rateLimiters')" lazy>
         <rate-limiters/>
       </el-tab-pane>
-      <!--
-      <el-tab-pane :label="$t('settings.mediaProxy')" lazy>
-        <media-proxy/>
-      </el-tab-pane>
       <el-tab-pane :label="$t('settings.relays')" lazy>
         <relays/>
       </el-tab-pane>
+      <el-tab-pane :label="$t('settings.other')" lazy>
+        <other/>
+      </el-tab-pane>
+      <!-- <el-tab-pane :label="$t('settings.mediaProxy')" lazy>
+        <media-proxy/>
+      </el-tab-pane>
       <el-tab-pane :label="$t('settings.upload')" lazy>
         <upload/>
       </el-tab-pane>
       <el-tab-pane :label="$t('settings.webPush')" lazy>
         <web-push/>
-      </el-tab-pane>
-      <el-tab-pane :label="$t('settings.other')" lazy>
-        <other/>
       </el-tab-pane> -->
     </el-tabs>
   </div>