diff --git a/src/store/index.js b/src/store/index.js
index ea1e9b3..44b8ded 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -6,7 +6,6 @@
 import LdapStore from './modules/AccessControl/LdapStore';
 import LocalUserManagementStore from './modules/AccessControl/LocalUserMangementStore';
 import SslCertificatesStore from './modules/AccessControl/SslCertificatesStore';
-import OverviewStore from './modules/Overview/OverviewStore';
 import FirmwareStore from './modules/Configuration/FirmwareStore';
 import BootSettingsStore from './modules/Control/BootSettingsStore';
 import ControlStore from './modules/Control/ControlStore';
@@ -30,7 +29,6 @@
     authentication: AuthenticationStore,
     ldap: LdapStore,
     localUsers: LocalUserManagementStore,
-    overview: OverviewStore,
     firmware: FirmwareStore,
     hostBootSettings: BootSettingsStore,
     controls: ControlStore,
diff --git a/src/store/modules/Configuration/FirmwareStore.js b/src/store/modules/Configuration/FirmwareStore.js
index cae74eb..5ec9173 100644
--- a/src/store/modules/Configuration/FirmwareStore.js
+++ b/src/store/modules/Configuration/FirmwareStore.js
@@ -3,18 +3,14 @@
 const FirmwareStore = {
   namespaced: true,
   state: {
-    bmcFirmwareVersion: '--',
-    hostFirmwareVersion: '--'
+    bmcFirmwareVersion: '--'
   },
   getters: {
-    bmcFirmwareVersion: state => state.bmcFirmwareVersion,
-    hostFirmwareVersion: state => state.hostFirmwareVersion
+    bmcFirmwareVersion: state => state.bmcFirmwareVersion
   },
   mutations: {
     setBmcFirmwareVersion: (state, bmcFirmwareVersion) =>
-      (state.bmcFirmwareVersion = bmcFirmwareVersion),
-    setHostFirmwareVersion: (state, hostFirmwareVersion) =>
-      (state.hostFirmwareVersion = hostFirmwareVersion)
+      (state.bmcFirmwareVersion = bmcFirmwareVersion)
   },
   actions: {
     async getBmcFirmware({ commit }) {
@@ -27,17 +23,6 @@
         .catch(error => {
           console.log(error);
         });
-    },
-    async getHostFirmware({ commit }) {
-      return await api
-        .get('/redfish/v1/Systems/system')
-        .then(response => {
-          const hostFirmwareVersion = response.data.BiosVersion;
-          commit('setHostFirmwareVersion', hostFirmwareVersion);
-        })
-        .catch(error => {
-          console.log(error);
-        });
     }
   }
 };
diff --git a/src/store/modules/Health/SystemStore.js b/src/store/modules/Health/SystemStore.js
index 9c4c477..828b78b 100644
--- a/src/store/modules/Health/SystemStore.js
+++ b/src/store/modules/Health/SystemStore.js
@@ -13,9 +13,11 @@
       const system = {};
       system.assetTag = data.AssetTag;
       system.description = data.Description;
+      system.firmwareVersion = data.BiosVersion;
       system.health = data.Status.Health;
       system.id = data.Id;
       system.indicatorLed = data.IndicatorLED;
+      system.manufacturer = data.Manufacturer;
       system.model = data.Model;
       system.partNumber = data.PartNumber;
       system.powerState = data.PowerState;
diff --git a/src/store/modules/Overview/OverviewStore.js b/src/store/modules/Overview/OverviewStore.js
deleted file mode 100644
index 314728c..0000000
--- a/src/store/modules/Overview/OverviewStore.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import api from '../../api';
-
-const OverviewStore = {
-  namespaced: true,
-  state: {
-    serverInfo: null,
-    serverModel: '--',
-    serverManufacturer: '--',
-    serverSerialNumber: '--'
-  },
-  getters: {
-    serverInfo: state => state.serverInfo,
-    serverModel: state => state.serverModel,
-    serverManufacturer: state => state.serverManufacturer,
-    serverSerialNumber: state => state.serverSerialNumber
-  },
-  mutations: {
-    setServerInfo: (state, serverInfo) => (state.serverInfo = serverInfo),
-    setServerModel: (state, serverModel) => (state.serverModel = serverModel),
-    setServerManufacturer: (state, serverManufacturer) =>
-      (state.serverManufacturer = serverManufacturer),
-    setServerSerialNumber: (state, serverSerialNumber) =>
-      (state.serverSerialNumber = serverSerialNumber)
-  },
-  actions: {
-    async getServerInfo({ commit }) {
-      return await api
-        .get('/redfish/v1/Systems/system')
-        .then(response => {
-          const serverInfo = response.data;
-          if (serverInfo.Model) {
-            commit('setServerModel', serverInfo.Model);
-          }
-          if (serverInfo.SerialNumber) {
-            commit('setServerSerialNumber', serverInfo.SerialNumber);
-          }
-          if (serverInfo.Manufacturer) {
-            commit('setServerManufacturer', serverInfo.Manufacturer);
-          }
-        })
-        .catch(error => {
-          console.log(error);
-        });
-    }
-  }
-};
-
-export default OverviewStore;
