diff --git a/package-lock.json b/package-lock.json
index 424d64e2e290b16696d3c84cbc1a746b131b2463..5047befa13aa1ab0499602045ec54ec192d8961c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4046,9 +4046,9 @@
       "dev": true
     },
     "node_modules/eslint": {
-      "version": "8.33.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz",
-      "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==",
+      "version": "8.34.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz",
+      "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==",
       "dev": true,
       "dependencies": {
         "ignore": "^5.2.0",
@@ -9890,9 +9890,9 @@
       "dev": true
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.4.294",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.294.tgz",
-      "integrity": "sha512-PuHZB3jEN7D8WPPjLmBQAsqQz8tWHlkkB4n0E2OYw8RwVdmBYV0Wn+rUFH8JqYyIRb4HQhhedgxlZL163wqLrQ==",
+      "version": "1.4.295",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz",
+      "integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==",
       "dev": true
     },
     "node_modules/@babel/parser": {
@@ -21025,9 +21025,9 @@
       }
     },
     "node_modules/define-properties": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
-      "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
+      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
       "dependencies": {
         "has-property-descriptors": "^1.0.0",
         "object-keys": "^1.1.1"
@@ -37660,9 +37660,9 @@
       }
     },
     "node_modules/ci-info": {
-      "version": "3.7.1",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz",
-      "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==",
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+      "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
       "funding": [
         {
           "type": "github",
@@ -52672,9 +52672,9 @@
       "dev": true
     },
     "ci-info": {
-      "version": "3.7.1",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz",
-      "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w=="
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+      "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw=="
     },
     "cipher-base": {
       "version": "1.0.4",
@@ -54794,9 +54794,9 @@
       "dev": true
     },
     "define-properties": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
-      "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
+      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
       "requires": {
         "has-property-descriptors": "^1.0.0",
         "object-keys": "^1.1.1"
@@ -55335,9 +55335,9 @@
       "dev": true
     },
     "electron-to-chromium": {
-      "version": "1.4.294",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.294.tgz",
-      "integrity": "sha512-PuHZB3jEN7D8WPPjLmBQAsqQz8tWHlkkB4n0E2OYw8RwVdmBYV0Wn+rUFH8JqYyIRb4HQhhedgxlZL163wqLrQ==",
+      "version": "1.4.295",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz",
+      "integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==",
       "dev": true
     },
     "elliptic": {
@@ -55640,9 +55640,9 @@
       }
     },
     "eslint": {
-      "version": "8.33.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz",
-      "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==",
+      "version": "8.34.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz",
+      "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==",
       "dev": true,
       "requires": {
         "@eslint/eslintrc": "^1.4.1",
diff --git a/src/components/IOC/AdministerUndeployment.js b/src/components/IOC/AdministerUndeployment/AdministerUndeployment.js
similarity index 90%
rename from src/components/IOC/AdministerUndeployment.js
rename to src/components/IOC/AdministerUndeployment/AdministerUndeployment.js
index 96696090834fc4dcc95c17501284b060f94a0bb9..b7903d1824e026df672a20396e984bf01a4e1009 100644
--- a/src/components/IOC/AdministerUndeployment.js
+++ b/src/components/IOC/AdministerUndeployment/AdministerUndeployment.js
@@ -2,14 +2,14 @@ import React, { useState, useRef, useEffect } from "react";
 import { useNavigate } from "react-router-dom";
 import { makeStyles } from "@material-ui/core/styles";
 import { Button, Typography, Grid, Tooltip } from "@material-ui/core";
-import { theme } from "../../style/Theme";
-import { useUndeployInDb } from "../../api/SwaggerApi";
-import { SimpleAccordion } from "../common/Accordion/SimpleAccordion";
-import { ConfirmationDialog } from "../dialog/ConfirmationDialog";
-import { SimpleModal } from "../../components/common/SimpleModal/SimpleModal";
+import { theme } from "../../../style/Theme";
+import { useUndeployInDb } from "../../../api/SwaggerApi";
+import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
+import { ConfirmationDialog } from "../../dialog/ConfirmationDialog";
+import { SimpleModal } from "../../common/SimpleModal/SimpleModal";
 import { Alert } from "@material-ui/lab";
-import AccessControl from "../auth/AccessControl";
-import { IocActiveDeployment } from "../../api/DataTypes";
+import AccessControl from "../../auth/AccessControl";
+import { IocActiveDeployment } from "../../../api/DataTypes";
 
 const useStyles = makeStyles({
   undeployButton: {
diff --git a/src/components/IOC/AdministerUndeployment/index.js b/src/components/IOC/AdministerUndeployment/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..fe2a4e6b6329fdcd86bd6465a41386717eafb621
--- /dev/null
+++ b/src/components/IOC/AdministerUndeployment/index.js
@@ -0,0 +1,4 @@
+import AdministerUndeployment from "./AdministerUndeployment";
+
+export { AdministerUndeployment };
+export default AdministerUndeployment;
diff --git a/src/components/IOC/AlertMessages.js b/src/components/IOC/AlertMessages/AlertMessages.js
similarity index 96%
rename from src/components/IOC/AlertMessages.js
rename to src/components/IOC/AlertMessages/AlertMessages.js
index a4aaf67e6fbf317ef0062bf57cf6421245a8b744..1fc2c82068a20cc61b7bf9a8660e70334979d301 100644
--- a/src/components/IOC/AlertMessages.js
+++ b/src/components/IOC/AlertMessages/AlertMessages.js
@@ -1,7 +1,7 @@
 import React from "react";
 import { Button, Grid, makeStyles } from "@material-ui/core";
 import { Alert } from "@material-ui/lab";
-import { theme } from "../../style/Theme";
+import { theme } from "../../../style/Theme";
 
 const useStyles = makeStyles((theme) => ({
   infoBadge: {
diff --git a/src/components/IOC/AlertMessages/index.js b/src/components/IOC/AlertMessages/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..67da3975e7080d8e84279bca16e3c0c975fd1a28
--- /dev/null
+++ b/src/components/IOC/AlertMessages/index.js
@@ -0,0 +1,4 @@
+import AlertMessages from "./AlertMessages";
+
+export { AlertMessages };
+export default AlertMessages;
diff --git a/src/components/IOC/ChangeHostAdmin.js b/src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js
similarity index 92%
rename from src/components/IOC/ChangeHostAdmin.js
rename to src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js
index a896052266b8eab96e583b0f92441a98253e468d..d3ed7f4b3aee45d65cf5a7174750c81ad8860e43 100644
--- a/src/components/IOC/ChangeHostAdmin.js
+++ b/src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js
@@ -1,6 +1,6 @@
 import React, { useState, useRef, useEffect, useCallback } from "react";
-import AccessControl from "../auth/AccessControl";
-import { SimpleAccordion } from "../common/Accordion/SimpleAccordion";
+import AccessControl from "../../auth/AccessControl";
+import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
 import {
   Button,
   Typography,
@@ -8,15 +8,15 @@ import {
   Tooltip,
   TextField
 } from "@material-ui/core";
-import { SimpleModal } from "../../components/common/SimpleModal/SimpleModal";
-import { ConfirmationDialog } from "../dialog/ConfirmationDialog";
+import { SimpleModal } from "../../common/SimpleModal/SimpleModal";
+import { ConfirmationDialog } from "../../dialog/ConfirmationDialog";
 import {
   useUpdateActiveDeploymentHost,
   useCSEntrySearch
-} from "../../api/SwaggerApi";
+} from "../../../api/SwaggerApi";
 import { Alert, Autocomplete } from "@material-ui/lab";
-import { useTypingTimer } from "../common/SearchBoxFilter/TypingTimer";
-import { transformHostQuery } from "../common/Helper";
+import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
+import { transformHostQuery } from "../../common/Helper";
 
 export default function ChangeHostAdmin({
   ioc,
diff --git a/src/components/IOC/ChangeHostAdmin/index.js b/src/components/IOC/ChangeHostAdmin/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..82c5de125101a060f979ccc118cea8a328f708df
--- /dev/null
+++ b/src/components/IOC/ChangeHostAdmin/index.js
@@ -0,0 +1,4 @@
+import ChangeHostAdmin from "./ChangeHostAdmin";
+
+export { ChangeHostAdmin };
+export default ChangeHostAdmin;
diff --git a/src/components/IOC/CreateIOC.js b/src/components/IOC/CreateIOC/CreateIOC.js
similarity index 93%
rename from src/components/IOC/CreateIOC.js
rename to src/components/IOC/CreateIOC/CreateIOC.js
index 21431b4156ea9c0e722b0fe49a22f09d48152532..c1e04fdc9f12dd87f9512666c1320b3764145179 100644
--- a/src/components/IOC/CreateIOC.js
+++ b/src/components/IOC/CreateIOC/CreateIOC.js
@@ -1,6 +1,6 @@
 import React, { useState } from "react";
 import { Navigate } from "react-router-dom";
-import { IOCCreateDialog } from "./IOCCreateDialog";
+import { IOCCreateDialog } from "../IOCCreateDialog";
 
 // Process component
 export function CreateIOC({ open, setOpen, submitCallback, hook }) {
diff --git a/src/components/IOC/CreateIOC/index.js b/src/components/IOC/CreateIOC/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc1901643c555bcd3e1b111c57eef9b40092f17a
--- /dev/null
+++ b/src/components/IOC/CreateIOC/index.js
@@ -0,0 +1,4 @@
+import { CreateIOC } from "./CreateIOC";
+
+export { CreateIOC };
+export default CreateIOC;
diff --git a/src/components/IOC/DeployIOC.js b/src/components/IOC/DeployIOC/DeployIOC.js
similarity index 87%
rename from src/components/IOC/DeployIOC.js
rename to src/components/IOC/DeployIOC/DeployIOC.js
index 9e840432b84503d6d1286520b891fce2f3bfe939..a892251acf4780894f221e119da48c49f9ea6a98 100644
--- a/src/components/IOC/DeployIOC.js
+++ b/src/components/IOC/DeployIOC/DeployIOC.js
@@ -1,7 +1,7 @@
 import React, { useContext, useState } from "react";
 import { Navigate } from "react-router-dom";
-import { IOCDeployDialog } from "./IOCDeployDialog";
-import { notificationContext } from "../../components/common/notification/Notifications";
+import { IOCDeployDialog } from "../IOCDeployDialog";
+import { notificationContext } from "../../common/notification/Notifications";
 
 // Process component
 export function DeployIOC({
diff --git a/src/components/IOC/DeployIOC/index.js b/src/components/IOC/DeployIOC/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f2c019ca3c35cf3d4eff2180469e05c3020097d
--- /dev/null
+++ b/src/components/IOC/DeployIOC/index.js
@@ -0,0 +1,4 @@
+import { DeployIOC } from "./DeployIOC";
+
+export { DeployIOC };
+export default DeployIOC;
diff --git a/src/components/IOC/GitRefLink.js b/src/components/IOC/GitRefLink/GitRefLink.js
similarity index 100%
rename from src/components/IOC/GitRefLink.js
rename to src/components/IOC/GitRefLink/GitRefLink.js
diff --git a/src/components/IOC/GitRefLink/index.js b/src/components/IOC/GitRefLink/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ed721b33e767481ff8257882052e35a518c25bb
--- /dev/null
+++ b/src/components/IOC/GitRefLink/index.js
@@ -0,0 +1,4 @@
+import GitRefLink from "./GitRefLink";
+
+export { GitRefLink };
+export default GitRefLink;
diff --git a/src/components/IOC/IOCAdmin.js b/src/components/IOC/IOCAdmin/IOCAdmin.js
similarity index 76%
rename from src/components/IOC/IOCAdmin.js
rename to src/components/IOC/IOCAdmin/IOCAdmin.js
index 9d981f51e1cd6d1916c2ba3d9212c75fbff2939b..3d3a967e1260ee7a4012527fe2ff60f7df7d3ef9 100644
--- a/src/components/IOC/IOCAdmin.js
+++ b/src/components/IOC/IOCAdmin/IOCAdmin.js
@@ -1,8 +1,8 @@
 import React from "react";
-import AdministerUndeployment from "./AdministerUndeployment";
-import IOCDelete from "./IOCDelete";
-import IOCDetailAdmin from "./IOCDetailAdmin";
-import ChangeHostAdmin from "./ChangeHostAdmin";
+import AdministerUndeployment from "../AdministerUndeployment";
+import IOCDelete from "../IOCDelete";
+import IOCDetailAdmin from "../IOCDetailAdmin";
+import ChangeHostAdmin from "../ChangeHostAdmin";
 
 export default function IOCAdmin({ ioc, getIOC, resetTab, buttonDisabled }) {
   return (
diff --git a/src/components/IOC/IOCAdmin/index.js b/src/components/IOC/IOCAdmin/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..86b22226d82cd7962adddcef8ac7600ca80de9bc
--- /dev/null
+++ b/src/components/IOC/IOCAdmin/index.js
@@ -0,0 +1,4 @@
+import IOCAdmin from "./IOCAdmin";
+
+export { IOCAdmin };
+export default IOCAdmin;
diff --git a/src/components/IOC/IOCAsyncList.js b/src/components/IOC/IOCAsyncList/IOCAsyncList.js
similarity index 86%
rename from src/components/IOC/IOCAsyncList.js
rename to src/components/IOC/IOCAsyncList/IOCAsyncList.js
index 0ec887ff65982bf3b2e1d630c4e6cdfd28758f62..a7a6c293c92312cb9b2c3b4ab6ce4445897e4946 100644
--- a/src/components/IOC/IOCAsyncList.js
+++ b/src/components/IOC/IOCAsyncList/IOCAsyncList.js
@@ -1,8 +1,8 @@
 import React from "react";
 import { Hidden } from "@material-ui/core";
-import { IOCDetailFetcher } from "./IOCDetailFetcher";
-import { IOCList } from "./IOCList";
-import { IOCTable } from "./IOCTable";
+import { IOCDetailFetcher } from "../IOCDetailFetcher";
+import { IOCList } from "../IOCList";
+import { IOCTable } from "../IOCTable";
 
 export function IOCAsyncList({
   iocs,
diff --git a/src/components/IOC/IOCAsyncList/index.js b/src/components/IOC/IOCAsyncList/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..f126132a95505fcfcdda2f2fd4598f67078b6c8d
--- /dev/null
+++ b/src/components/IOC/IOCAsyncList/index.js
@@ -0,0 +1,4 @@
+import { IOCAsyncList } from "./IOCAsyncList";
+
+export { IOCAsyncList };
+export default IOCAsyncList;
diff --git a/src/components/IOC/IOCBadge.js b/src/components/IOC/IOCBadge/IOCBadge.js
similarity index 70%
rename from src/components/IOC/IOCBadge.js
rename to src/components/IOC/IOCBadge/IOCBadge.js
index 96e48bacd9aad0254991da4e520897e24a7c1aee..83d6c39e838bbafc2c2d1f60da788f04a40ce39d 100644
--- a/src/components/IOC/IOCBadge.js
+++ b/src/components/IOC/IOCBadge/IOCBadge.js
@@ -1,6 +1,6 @@
 import React from "react";
-import { IconBadge } from "../common/Badge/IconBadge";
-import { IOCStatusIcon } from "./IOCIcons";
+import { IconBadge } from "../../common/Badge/IconBadge";
+import { IOCStatusIcon } from "../IOCIcons";
 
 export function IOCBadge({ ioc }) {
   return (
diff --git a/src/components/IOC/IOCBadge/index.js b/src/components/IOC/IOCBadge/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..712570a32c57585268cb5fd07e8c1a33480d62f6
--- /dev/null
+++ b/src/components/IOC/IOCBadge/index.js
@@ -0,0 +1,4 @@
+import { IOCBadge } from "./IOCBadge";
+
+export { IOCBadge };
+export default IOCBadge;
diff --git a/src/components/IOC/IOCCommandTable.js b/src/components/IOC/IOCCommandTable.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/components/IOC/IOCCreateDialog.js b/src/components/IOC/IOCCreateDialog/IOCCreateDialog.js
similarity index 96%
rename from src/components/IOC/IOCCreateDialog.js
rename to src/components/IOC/IOCCreateDialog/IOCCreateDialog.js
index 45b2a166773055a46834120c75cde78d496b5741..2b6844cbc93ca7a0210153aadd06df7df5ce54a0 100644
--- a/src/components/IOC/IOCCreateDialog.js
+++ b/src/components/IOC/IOCCreateDialog/IOCCreateDialog.js
@@ -9,8 +9,8 @@ import {
   makeStyles
 } from "@material-ui/core";
 import { Autocomplete, Alert } from "@material-ui/lab";
-import { useNamingNames, useAllowedGitProjects } from "../../api/SwaggerApi";
-import { useTypingTimer } from "../common/SearchBoxFilter/TypingTimer";
+import { useNamingNames, useAllowedGitProjects } from "../../../api/SwaggerApi";
+import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
 
 const useStyles = makeStyles((theme) => ({
   textField: {
diff --git a/src/components/IOC/IOCCreateDialog/index.js b/src/components/IOC/IOCCreateDialog/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..c60bf54917fef2321aa12172dbcb788dc098ff11
--- /dev/null
+++ b/src/components/IOC/IOCCreateDialog/index.js
@@ -0,0 +1,4 @@
+import { IOCCreateDialog } from "./IOCCreateDialog";
+
+export { IOCCreateDialog };
+export default IOCCreateDialog;
diff --git a/src/components/IOC/IOCDelete.js b/src/components/IOC/IOCDelete/IOCDelete.js
similarity index 91%
rename from src/components/IOC/IOCDelete.js
rename to src/components/IOC/IOCDelete/IOCDelete.js
index 391592cc55e78d713752c99df8d58dc0cb10e791..85453468ee9db8ba659a9502a24368f204414653 100644
--- a/src/components/IOC/IOCDelete.js
+++ b/src/components/IOC/IOCDelete/IOCDelete.js
@@ -2,13 +2,13 @@ import React, { useState, useRef, useEffect } from "react";
 import { useNavigate } from "react-router-dom";
 import { makeStyles } from "@material-ui/core/styles";
 import { Button, Typography, Grid, Tooltip } from "@material-ui/core";
-import { theme } from "../../style/Theme";
-import { useDeleteIOC } from "../../api/SwaggerApi";
-import { SimpleAccordion } from "../common/Accordion/SimpleAccordion";
-import { ConfirmationDialog } from "../dialog/ConfirmationDialog";
-import { SimpleModal } from "../../components/common/SimpleModal/SimpleModal";
+import { theme } from "../../../style/Theme";
+import { useDeleteIOC } from "../../../api/SwaggerApi";
+import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
+import { ConfirmationDialog } from "../../dialog/ConfirmationDialog";
+import { SimpleModal } from "../../common/SimpleModal/SimpleModal";
 import { Alert } from "@material-ui/lab";
-import AccessControl from "../auth/AccessControl";
+import AccessControl from "../../auth/AccessControl";
 
 const useStyles = makeStyles({
   deleteButton: {
diff --git a/src/components/IOC/IOCDelete/index.js b/src/components/IOC/IOCDelete/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..a2d977a008636503ea3f72a671124b41009ff881
--- /dev/null
+++ b/src/components/IOC/IOCDelete/index.js
@@ -0,0 +1,4 @@
+import IOCDelete from "./IOCDelete";
+
+export { IOCDelete };
+export default IOCDelete;
diff --git a/src/components/IOC/IOCDeployDialog.js b/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js
similarity index 96%
rename from src/components/IOC/IOCDeployDialog.js
rename to src/components/IOC/IOCDeployDialog/IOCDeployDialog.js
index 642bed94d81c0c0d49eda3a474f6423ec130510a..a45e2aba3b1ccbd70b67492b02e8e7600895c3eb 100644
--- a/src/components/IOC/IOCDeployDialog.js
+++ b/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js
@@ -11,9 +11,9 @@ import {
   Tooltip
 } from "@material-ui/core";
 import { Autocomplete, Alert } from "@material-ui/lab";
-import { useCSEntrySearch, useTagsAndCommitIds } from "../../api/SwaggerApi";
-import { useTypingTimer } from "../common/SearchBoxFilter/TypingTimer";
-import { formatDate, transformHostQuery } from "../common/Helper";
+import { useCSEntrySearch, useTagsAndCommitIds } from "../../../api/SwaggerApi";
+import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
+import { formatDate, transformHostQuery } from "../../common/Helper";
 
 const useStyles = makeStyles((theme) => ({
   textField: {
diff --git a/src/components/IOC/IOCDeployDialog/index.js b/src/components/IOC/IOCDeployDialog/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..d31b4d58993a2d85fee78964d5ec2c7afc91e60e
--- /dev/null
+++ b/src/components/IOC/IOCDeployDialog/index.js
@@ -0,0 +1,4 @@
+import { IOCDeployDialog } from "./IOCDeployDialog";
+
+export { IOCDeployDialog };
+export default IOCDeployDialog;
diff --git a/src/components/IOC/IOCDetailAdmin.js b/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js
similarity index 95%
rename from src/components/IOC/IOCDetailAdmin.js
rename to src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js
index 84f9530452092ba73ccf613b585c009e695e8ea4..8ea6a51d4eb553cbd32f05894c1dd51a82f90364 100644
--- a/src/components/IOC/IOCDetailAdmin.js
+++ b/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js
@@ -1,5 +1,5 @@
 import React, { useState, useEffect, useRef, useCallback } from "react";
-import { SimpleAccordion } from "../common/Accordion/SimpleAccordion";
+import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
 import {
   Button,
   makeStyles,
@@ -13,11 +13,11 @@ import {
   useNamingNames,
   useUpdateIoc,
   useUserNames
-} from "../../api/SwaggerApi";
-import { useTypingTimer } from "../common/SearchBoxFilter/TypingTimer";
-import { ConfirmationDialog } from "../dialog/ConfirmationDialog";
-import { SimpleModal } from "../../components/common/SimpleModal/SimpleModal";
-import AccessControl from "../../components/auth/AccessControl";
+} from "../../../api/SwaggerApi";
+import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
+import { ConfirmationDialog } from "../../dialog/ConfirmationDialog";
+import { SimpleModal } from "../../common/SimpleModal/SimpleModal";
+import AccessControl from "../../auth/AccessControl";
 
 const useStyles = makeStyles((theme) => ({
   textField: {
diff --git a/src/components/IOC/IOCDetailAdmin/index.js b/src/components/IOC/IOCDetailAdmin/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..ceb065fd0e8684e1afda261b56fdba9f9d453b89
--- /dev/null
+++ b/src/components/IOC/IOCDetailAdmin/index.js
@@ -0,0 +1,4 @@
+import IOCDetailAdmin from "./IOCDetailAdmin";
+
+export { IOCDetailAdmin };
+export default IOCDetailAdmin;
diff --git a/src/components/IOC/IOCDetailFetcher.js b/src/components/IOC/IOCDetailFetcher/IOCDetailFetcher.js
similarity index 92%
rename from src/components/IOC/IOCDetailFetcher.js
rename to src/components/IOC/IOCDetailFetcher/IOCDetailFetcher.js
index 67a305cdc2528f109fa7da0e39b02f0fd13edd15..fbf3e2093e480383abc9894277609c4512d480f4 100644
--- a/src/components/IOC/IOCDetailFetcher.js
+++ b/src/components/IOC/IOCDetailFetcher/IOCDetailFetcher.js
@@ -1,5 +1,5 @@
 import { useEffect } from "react";
-import { useTagsAndCommitIds, useIocStatus } from "../../api/SwaggerApi";
+import { useTagsAndCommitIds, useIocStatus } from "../../../api/SwaggerApi";
 
 function onError(message) {
   console.warn(message);
diff --git a/src/components/IOC/IOCDetailFetcher/index.js b/src/components/IOC/IOCDetailFetcher/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..65f9c27592610ea9b65ae9e748da49f7a6a929b5
--- /dev/null
+++ b/src/components/IOC/IOCDetailFetcher/index.js
@@ -0,0 +1,4 @@
+import { IOCDetailFetcher } from "./IOCDetailFetcher";
+
+export { IOCDetailFetcher };
+export default IOCDetailFetcher;
diff --git a/src/components/IOC/IOCDetails.js b/src/components/IOC/IOCDetails/IOCDetails.js
similarity index 86%
rename from src/components/IOC/IOCDetails.js
rename to src/components/IOC/IOCDetails/IOCDetails.js
index 96cdaab552dd6cc06f2dde984a6754caf8182dcb..556e67671f41af6a6c5dc30d173a794a2a677c38 100644
--- a/src/components/IOC/IOCDetails.js
+++ b/src/components/IOC/IOCDetails/IOCDetails.js
@@ -1,9 +1,9 @@
 import { Grid, Box } from "@material-ui/core";
 import React from "react";
-import { SimpleAccordion } from "../common/Accordion/SimpleAccordion";
-import { KeyValueTable } from "../common/KeyValueTable/KeyValueTable";
-import { IOCBadge } from "./IOCBadge";
-import AccessControl from "../auth/AccessControl";
+import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
+import { KeyValueTable } from "../../common/KeyValueTable/KeyValueTable";
+import { IOCBadge } from "../IOCBadge";
+import AccessControl from "../../auth/AccessControl";
 
 export function diff(o1, o2) {
   let diff = Object.keys(o2).reduce((diff, key) => {
diff --git a/src/components/IOC/IOCDetails/index.js b/src/components/IOC/IOCDetails/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..d057847f1c142b9bf174af43c4900c3c10d61159
--- /dev/null
+++ b/src/components/IOC/IOCDetails/index.js
@@ -0,0 +1,4 @@
+import { IOCDetails, diff } from "./IOCDetails";
+
+export { IOCDetails, diff };
+export default IOCDetails;
diff --git a/src/components/IOC/IOCIcons.js b/src/components/IOC/IOCIcons/IOCIcons.js
similarity index 100%
rename from src/components/IOC/IOCIcons.js
rename to src/components/IOC/IOCIcons/IOCIcons.js
diff --git a/src/components/IOC/IOCIcons/index.js b/src/components/IOC/IOCIcons/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..913ed4ccfb64d6251eaa2f0a9c9263971df15de6
--- /dev/null
+++ b/src/components/IOC/IOCIcons/index.js
@@ -0,0 +1,3 @@
+import { IOCStatusIcon, CommandTypeIcon } from "./IOCIcons";
+
+export { IOCStatusIcon, CommandTypeIcon };
diff --git a/src/components/IOC/IOCList.js b/src/components/IOC/IOCList/IOCList.js
similarity index 94%
rename from src/components/IOC/IOCList.js
rename to src/components/IOC/IOCList/IOCList.js
index f83e69bc4ac4ca8ba734d824d39c8a42b0da9500..e22da01364aae339b09a521f97a5633ef4e2be61 100644
--- a/src/components/IOC/IOCList.js
+++ b/src/components/IOC/IOCList/IOCList.js
@@ -1,7 +1,7 @@
 import React from "react";
 import { List, ListItem, Paper } from "@material-ui/core";
 import { Link } from "react-router-dom";
-import { IOCBadge } from "./IOCBadge";
+import { IOCBadge } from "../IOCBadge";
 
 export function IOCListItem({ ioc }) {
   return (
diff --git a/src/components/IOC/IOCList/index.js b/src/components/IOC/IOCList/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..ee0d0dbd6694717e4726969d04f461831a5de453
--- /dev/null
+++ b/src/components/IOC/IOCList/index.js
@@ -0,0 +1,4 @@
+import { IOCList, IOCListItem } from "./IOCList";
+
+export { IOCList, IOCListItem };
+export default IOCList;
diff --git a/src/components/IOC/IOCLiveStatus.js b/src/components/IOC/IOCLiveStatus/IOCLiveStatus.js
similarity index 86%
rename from src/components/IOC/IOCLiveStatus.js
rename to src/components/IOC/IOCLiveStatus/IOCLiveStatus.js
index 948bc2e07b4a80580455ae44266c6050c58d834e..8527e811b307502b7c033764e7fec061f7210de9 100644
--- a/src/components/IOC/IOCLiveStatus.js
+++ b/src/components/IOC/IOCLiveStatus/IOCLiveStatus.js
@@ -1,20 +1,17 @@
 import React, { useCallback } from "react";
 import { Typography, makeStyles, Link as MuiLink } from "@material-ui/core";
-import { SimpleAccordion } from "../common/Accordion/SimpleAccordion";
-import { IOCDetails } from "./IOCDetails";
+import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
+import { IOCDetails } from "../IOCDetails";
 import { Link as ReactRouterLink } from "react-router-dom";
-import { LokiContainer } from "../common/Loki/LokiContainer";
-import { RecordSearch } from "../records/RecordSearch";
-import GitRefLink from "./GitRefLink";
-import AlertMessages from "./AlertMessages";
-import AccessControl from "../../components/auth/AccessControl";
-import { IocActiveDeployment } from "../../api/DataTypes";
-import { theme } from "../../style/Theme";
+import { LokiContainer } from "../../common/Loki/LokiContainer";
+import { RecordSearch } from "../../records/RecordSearch";
+import GitRefLink from "../GitRefLink";
+import AlertMessages from "../AlertMessages";
+import AccessControl from "../../auth/AccessControl";
+import { IocActiveDeployment } from "../../../api/DataTypes";
+import { theme } from "../../../style/Theme";
 import useUrlState from "@ahooksjs/use-url-state";
-import {
-  serialize,
-  deserialize
-} from "../../components/common/URLState/URLState";
+import { serialize, deserialize } from "../../common/URLState/URLState";
 
 const useStyles = makeStyles((theme) => ({
   iocNotDeployed: {
diff --git a/src/components/IOC/IOCLiveStatus.spec.js b/src/components/IOC/IOCLiveStatus/IOCLiveStatus.spec.js
similarity index 90%
rename from src/components/IOC/IOCLiveStatus.spec.js
rename to src/components/IOC/IOCLiveStatus/IOCLiveStatus.spec.js
index d668f45bd6ade94464100e8dbd2483c315bea34a..3cc3a4b361d083962e2f3f64d7759d7064c2e508 100644
--- a/src/components/IOC/IOCLiveStatus.spec.js
+++ b/src/components/IOC/IOCLiveStatus/IOCLiveStatus.spec.js
@@ -1,8 +1,8 @@
 import { mount } from "@cypress/react";
 import React from "react";
-import { useIOC } from "../../api/SwaggerApi";
-import { AppHarness } from "../../mocks/AppHarness";
-import { IOCLiveStatus } from "./IOCLiveStatus";
+import { useIOC } from "../../../api/SwaggerApi";
+import { AppHarness } from "../../../mocks/AppHarness";
+import { IOCLiveStatus } from ".";
 
 function mountIntoHarness(children) {
   mount(<AppHarness>{children}</AppHarness>);
diff --git a/src/components/IOC/IOCLiveStatus/index.js b/src/components/IOC/IOCLiveStatus/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..3cf42dcd22ffbaad936c1dd0c16db97604432f37
--- /dev/null
+++ b/src/components/IOC/IOCLiveStatus/index.js
@@ -0,0 +1,4 @@
+import { IOCLiveStatus } from "./IOCLiveStatus";
+
+export { IOCLiveStatus };
+export default IOCLiveStatus;
diff --git a/src/components/IOC/IOCManage.js b/src/components/IOC/IOCManage/IOCManage.js
similarity index 91%
rename from src/components/IOC/IOCManage.js
rename to src/components/IOC/IOCManage/IOCManage.js
index 090f8257cb46d2f0ca72d223303fc7002a945100..583c39391f022d73c98886306d56e28299346fb7 100644
--- a/src/components/IOC/IOCManage.js
+++ b/src/components/IOC/IOCManage/IOCManage.js
@@ -5,27 +5,24 @@ import {
   Typography
 } from "@material-ui/core";
 import React, { useState, useEffect, useContext, useCallback } from "react";
-import { IOCDetails } from "../../components/IOC/IOCDetails";
-import { DeployIOC } from "../../components/IOC/DeployIOC";
-import { UndeployIOC } from "../../components/IOC/UndeployIOC";
-import { SimpleModal } from "../../components/common/SimpleModal/SimpleModal";
+import { IOCDetails } from "../IOCDetails";
+import { DeployIOC } from "../DeployIOC";
+import { UndeployIOC } from "../UndeployIOC";
+import { SimpleModal } from "../../common/SimpleModal/SimpleModal";
 import {
   useUpdateAndDeployIoc,
   useCreateUndeployment,
   useJobById,
   userContext
-} from "../../api/SwaggerApi";
-import AlertMessages from "./AlertMessages";
-import { SimpleAccordion } from "../common/Accordion/SimpleAccordion";
-import AccessControl from "../auth/AccessControl";
-import { JobAsyncList } from "../Job/JobAsyncList";
-import { DeploymentStatus } from "../../api/DataTypes";
-import { IOCService } from "./IOCService";
+} from "../../../api/SwaggerApi";
+import AlertMessages from "../AlertMessages";
+import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
+import AccessControl from "../../auth/AccessControl";
+import { JobAsyncList } from "../../Job/JobAsyncList";
+import { DeploymentStatus } from "../../../api/DataTypes";
+import { IOCService } from "../IOCService";
 import useUrlState from "@ahooksjs/use-url-state";
-import {
-  serialize,
-  deserialize
-} from "../../components/common/URLState/URLState";
+import { serialize, deserialize } from "../../common/URLState/URLState";
 
 export function IOCManage({
   ioc,
diff --git a/src/components/IOC/IOCManage/index.js b/src/components/IOC/IOCManage/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..b634e4018a812be77c2e4d4c7a6d8d31cbeeebb3
--- /dev/null
+++ b/src/components/IOC/IOCManage/index.js
@@ -0,0 +1,4 @@
+import { IOCManage } from "./IOCManage";
+
+export { IOCManage };
+export default IOCManage;
diff --git a/src/components/IOC/IOCService.js b/src/components/IOC/IOCService/IOCService.js
similarity index 92%
rename from src/components/IOC/IOCService.js
rename to src/components/IOC/IOCService/IOCService.js
index 7a582a95bdc93236d36ac031115101af4b5587b6..a0ec2fd2bba8e64c3ae1aa36dae4f93f33b87909 100644
--- a/src/components/IOC/IOCService.js
+++ b/src/components/IOC/IOCService/IOCService.js
@@ -7,15 +7,15 @@ import {
 } from "@material-ui/core";
 import { makeStyles } from "@material-ui/core/styles";
 import React, { useState, useEffect, useRef, useContext } from "react";
-import { useStartIOC, useStopIOC } from "../../api/SwaggerApi";
-import { SimpleModal } from "../../components/common/SimpleModal/SimpleModal";
-import { ConfirmationDialog } from "../dialog/ConfirmationDialog";
-import { notificationContext } from "../../components/common/notification/Notifications";
+import { useStartIOC, useStopIOC } from "../../../api/SwaggerApi";
+import { SimpleModal } from "../../common/SimpleModal/SimpleModal";
+import { ConfirmationDialog } from "../../dialog/ConfirmationDialog";
+import { notificationContext } from "../../common/notification/Notifications";
 import { Alert } from "@material-ui/lab";
-import { theme } from "../../style/Theme";
-import { initRequestParams } from "../common/Helper";
-import AccessControl from "../auth/AccessControl";
-import { essColors } from "../../style/Palette";
+import { theme } from "../../../style/Theme";
+import { initRequestParams } from "../../common/Helper";
+import AccessControl from "../../auth/AccessControl";
+import { essColors } from "../../../style/Palette";
 import { useNavigate } from "react-router-dom";
 
 const useStyles = makeStyles({
diff --git a/src/components/IOC/IOCService/index.js b/src/components/IOC/IOCService/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..809b8cc5bd61c75d87878c97bfe0057712fd4c60
--- /dev/null
+++ b/src/components/IOC/IOCService/index.js
@@ -0,0 +1,4 @@
+import { IOCService } from "./IOCService";
+
+export { IOCService };
+export default IOCService;
diff --git a/src/components/IOC/IOCTable.js b/src/components/IOC/IOCTable/IOCTable.js
similarity index 96%
rename from src/components/IOC/IOCTable.js
rename to src/components/IOC/IOCTable/IOCTable.js
index 0a93a2866964abeda91cd54e698f52fa1cf129ea..25a7e51638d64e5c5fcdd5a018b39099392a24e6 100644
--- a/src/components/IOC/IOCTable.js
+++ b/src/components/IOC/IOCTable/IOCTable.js
@@ -1,9 +1,9 @@
 import React, { useCallback } from "react";
-import { CustomTable } from "../common/table/CustomTable";
+import { CustomTable } from "../../common/table/CustomTable";
 import { Grid, Tooltip, Typography } from "@material-ui/core";
-import { IOCStatusIcon } from "./IOCIcons";
-import { noWrapText } from "../common/Helper";
-import { useRedirect } from "../../hooks/Redirect";
+import { IOCStatusIcon } from "../IOCIcons";
+import { noWrapText } from "../../common/Helper";
+import { useRedirect } from "../../../hooks/Redirect";
 
 const ownIocsColumns = [
   { id: "status", label: "Status", width: "8ch", textAlign: "center" },
diff --git a/src/components/IOC/IOCTable.spec.js b/src/components/IOC/IOCTable/IOCTable.spec.js
similarity index 95%
rename from src/components/IOC/IOCTable.spec.js
rename to src/components/IOC/IOCTable/IOCTable.spec.js
index fd88195cf06c7c25ed46907838126fa8cb9448ef..2aef5a0c5b37e2edf43e1ca073c4e72fc0018b3f 100644
--- a/src/components/IOC/IOCTable.spec.js
+++ b/src/components/IOC/IOCTable/IOCTable.spec.js
@@ -1,7 +1,7 @@
 import React from "react";
 import { mount } from "@cypress/react";
 import { composeStories } from "@storybook/testing-react";
-import * as stories from "../../stories/components/common/IOC/IOCTable.stories";
+import * as stories from "../../../stories/components/common/IOC/IOCTable.stories";
 
 const { AfterAsync } = composeStories(stories);
 const textColumns = ["IOC name", "Host", "Network", "Maintainer", "Reference"];
diff --git a/src/components/IOC/IOCTable/index.js b/src/components/IOC/IOCTable/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..ff82ea636c3b3d2018b98fc018633381d59c8f03
--- /dev/null
+++ b/src/components/IOC/IOCTable/index.js
@@ -0,0 +1,4 @@
+import { IOCTable } from "./IOCTable";
+
+export { IOCTable };
+export default IOCTable;
diff --git a/src/components/IOC/IOCUndeployDialog.js b/src/components/IOC/IOCUndeployDialog/IOCUndeployDialog.js
similarity index 100%
rename from src/components/IOC/IOCUndeployDialog.js
rename to src/components/IOC/IOCUndeployDialog/IOCUndeployDialog.js
diff --git a/src/components/IOC/IOCUndeployDialog/index.js b/src/components/IOC/IOCUndeployDialog/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..0ee6ccb777778742d9d9536d58c5d64246c32090
--- /dev/null
+++ b/src/components/IOC/IOCUndeployDialog/index.js
@@ -0,0 +1,4 @@
+import { IOCUndeployDialog } from "./IOCUndeployDialog";
+
+export { IOCUndeployDialog };
+export default IOCUndeployDialog;
diff --git a/src/components/IOC/UndeployIOC.js b/src/components/IOC/UndeployIOC/UndeployIOC.js
similarity index 86%
rename from src/components/IOC/UndeployIOC.js
rename to src/components/IOC/UndeployIOC/UndeployIOC.js
index a262a6217772e9d2eaa3544ebe7ea70f6e88b8d9..895fdc28eb2cbeb114ad0d18abaef65868e29614 100644
--- a/src/components/IOC/UndeployIOC.js
+++ b/src/components/IOC/UndeployIOC/UndeployIOC.js
@@ -1,7 +1,7 @@
 import React, { useContext, useState } from "react";
 import { Navigate } from "react-router-dom";
-import { IOCUndeployDialog } from "./IOCUndeployDialog";
-import { notificationContext } from "../../components/common/notification/Notifications";
+import { IOCUndeployDialog } from "../IOCUndeployDialog";
+import { notificationContext } from "../../common/notification/Notifications";
 
 // Process component
 export function UndeployIOC({ open, setOpen, submitCallback, hook, ioc }) {
diff --git a/src/components/IOC/UndeployIOC/index.js b/src/components/IOC/UndeployIOC/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..8e8736d7851f466d29b322cf42b66010f90cefc7
--- /dev/null
+++ b/src/components/IOC/UndeployIOC/index.js
@@ -0,0 +1,4 @@
+import { UndeployIOC } from "./UndeployIOC";
+
+export { UndeployIOC };
+export default UndeployIOC;
diff --git a/src/components/auth/AccessControl.js b/src/components/auth/AccessControl/AccessControl.js
similarity index 90%
rename from src/components/auth/AccessControl.js
rename to src/components/auth/AccessControl/AccessControl.js
index c62efdc9c20e210162ae33d53b37a10dcd85ef38..b4c8122890c1efb75802dc025154b6610eb90cdb 100644
--- a/src/components/auth/AccessControl.js
+++ b/src/components/auth/AccessControl/AccessControl.js
@@ -1,6 +1,6 @@
 import React, { useContext } from "react";
-import { userContext } from "../../api/SwaggerApi";
-import AccessDenied from "./AccessDenied";
+import { userContext } from "../../../api/SwaggerApi";
+import AccessDenied from "../AccessDenied";
 
 const checkPermissions = (userRoles, allowedRoles) => {
   if (allowedRoles.length === 0) {
diff --git a/src/components/auth/AccessControl/index.js b/src/components/auth/AccessControl/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..1b9542b384d2bc6695ac9d7daae72a91762d045b
--- /dev/null
+++ b/src/components/auth/AccessControl/index.js
@@ -0,0 +1,4 @@
+import AccessControl from "./AccessControl";
+
+export { AccessControl };
+export default AccessControl;
diff --git a/src/components/auth/AccessDenied.js b/src/components/auth/AccessDenied/AccessDenied.js
similarity index 92%
rename from src/components/auth/AccessDenied.js
rename to src/components/auth/AccessDenied/AccessDenied.js
index c9f29548ef19ff0fafb71d9a83ca23a6d848b188..3497d1cc93331e2a94588ff49ced939654901bde 100644
--- a/src/components/auth/AccessDenied.js
+++ b/src/components/auth/AccessDenied/AccessDenied.js
@@ -9,8 +9,8 @@ import {
 } from "@material-ui/core";
 import ArrowBackIcon from "@material-ui/icons/ArrowBack";
 import { useNavigate } from "react-router-dom";
-import { RootContainer } from "../../components/common/Container/RootContainer";
-import { useRedirect } from "../../hooks/Redirect";
+import { RootContainer } from "../../common/Container/RootContainer";
+import { useRedirect } from "../../../hooks/Redirect";
 
 const useStyles = makeStyles((theme) => ({
   paper: {
diff --git a/src/components/auth/AccessDenied/index.js b/src/components/auth/AccessDenied/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..69a86dc008f4fd544140c3724674cc5708deb3ee
--- /dev/null
+++ b/src/components/auth/AccessDenied/index.js
@@ -0,0 +1,4 @@
+import AccessDenied from "./AccessDenied";
+
+export { AccessDenied };
+export default AccessDenied;
diff --git a/src/components/auth/Login.js b/src/components/auth/Login/Login.js
similarity index 100%
rename from src/components/auth/Login.js
rename to src/components/auth/Login/Login.js
diff --git a/src/components/auth/Login/index.js b/src/components/auth/Login/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f501ad10ba79231f7fe7582be457a890234ae86
--- /dev/null
+++ b/src/components/auth/Login/index.js
@@ -0,0 +1,3 @@
+import { LoginForm, LoginDialog } from "./Login";
+
+export { LoginForm, LoginDialog };
diff --git a/src/components/auth/TokenRenew.js b/src/components/auth/TokenRenew/TokenRenew.js
similarity index 76%
rename from src/components/auth/TokenRenew.js
rename to src/components/auth/TokenRenew/TokenRenew.js
index dcb50f7f859a745a2e3f4533df2839ede0c06a69..536266fa3f6773d2517b20b7bfb13bf6cfad54f7 100644
--- a/src/components/auth/TokenRenew.js
+++ b/src/components/auth/TokenRenew/TokenRenew.js
@@ -1,6 +1,6 @@
 import { useContext, useCallback } from "react";
-import { useRenewToken, userContext } from "../../api/SwaggerApi";
-import { useSafePolling } from "../../hooks/Polling";
+import { useRenewToken, userContext } from "../../../api/SwaggerApi";
+import { useSafePolling } from "../../../hooks/Polling";
 
 export default function TokenRenew() {
   const { user } = useContext(userContext);
diff --git a/src/components/auth/TokenRenew.spec.js b/src/components/auth/TokenRenew/TokenRenew.spec.js
similarity index 89%
rename from src/components/auth/TokenRenew.spec.js
rename to src/components/auth/TokenRenew/TokenRenew.spec.js
index d457982083b6d252bf91d19038dc8ab91bc8112d..f92d2d9a55115dbdecfccaf83e7dff769e91d172 100644
--- a/src/components/auth/TokenRenew.spec.js
+++ b/src/components/auth/TokenRenew/TokenRenew.spec.js
@@ -1,8 +1,8 @@
 import { mount } from "@cypress/react";
 import { SnackbarProvider } from "notistack";
 import React from "react";
-import { APIProvider, UserProvider } from "../../api/SwaggerApi";
-import TokenRenew from "./TokenRenew";
+import { APIProvider, UserProvider } from "../../../api/SwaggerApi";
+import TokenRenew from ".";
 
 function AppHarness({ children }) {
   return (
diff --git a/src/components/auth/TokenRenew/index.js b/src/components/auth/TokenRenew/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..8c42ce86e53e924f4bcff4ce15bab929376e4e69
--- /dev/null
+++ b/src/components/auth/TokenRenew/index.js
@@ -0,0 +1,4 @@
+import TokenRenew from "./TokenRenew";
+
+export { TokenRenew };
+export default TokenRenew;
diff --git a/src/components/statistics/ActiveIOCChart.js b/src/components/statistics/ActiveIOCChart/ActiveIOCChart.js
similarity index 95%
rename from src/components/statistics/ActiveIOCChart.js
rename to src/components/statistics/ActiveIOCChart/ActiveIOCChart.js
index d94a7da4d094a74e76d2f68c01f44a51f168665d..33188c8a7f2d7950c31ae0cfb18ccd8b6fc95457 100644
--- a/src/components/statistics/ActiveIOCChart.js
+++ b/src/components/statistics/ActiveIOCChart/ActiveIOCChart.js
@@ -1,8 +1,8 @@
 import React from "react";
-import { useCurrentlyActiveIOCs } from "../../api/SwaggerApi";
+import { useCurrentlyActiveIOCs } from "../../../api/SwaggerApi";
 import { useEffect } from "react";
 import { LinearProgress, useTheme } from "@material-ui/core";
-import { circularPalette } from "../common/Helper";
+import { circularPalette } from "../../common/Helper";
 import {
   BarChart,
   Bar,
diff --git a/src/components/statistics/ActiveIOCChart/index.js b/src/components/statistics/ActiveIOCChart/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..aea1769d25c367814141821497e71c51c9c106f6
--- /dev/null
+++ b/src/components/statistics/ActiveIOCChart/index.js
@@ -0,0 +1,4 @@
+import ActiveIOCChart from "./ActiveIOCChart";
+
+export { ActiveIOCChart };
+export default ActiveIOCChart;
diff --git a/src/components/statistics/DeploymentLineChart.js b/src/components/statistics/DeploymentLineChart/DeploymentLineChart.js
similarity index 94%
rename from src/components/statistics/DeploymentLineChart.js
rename to src/components/statistics/DeploymentLineChart/DeploymentLineChart.js
index 8036cdd05c0c4eb516164b22bde1d86c2d3c1672..d4fcf11d282855e7276f2027e260d21a37da9a8d 100644
--- a/src/components/statistics/DeploymentLineChart.js
+++ b/src/components/statistics/DeploymentLineChart/DeploymentLineChart.js
@@ -1,7 +1,7 @@
 import React from "react";
 import { useEffect } from "react";
-import { formatDateOnly } from "../common/Helper";
-import { circularPalette } from "../common/Helper";
+import { formatDateOnly } from "../../common/Helper";
+import { circularPalette } from "../../common/Helper";
 import { LinearProgress, useTheme } from "@material-ui/core";
 import {
   AreaChart,
diff --git a/src/components/statistics/DeploymentLineChart/index.js b/src/components/statistics/DeploymentLineChart/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..d6c7aea8983cfa0e4eadf5486527a3d2d13e0358
--- /dev/null
+++ b/src/components/statistics/DeploymentLineChart/index.js
@@ -0,0 +1,4 @@
+import DeploymentLineChart from "./DeploymentLineChart";
+
+export { DeploymentLineChart };
+export default DeploymentLineChart;
diff --git a/src/components/statistics/HostStatistics.js b/src/components/statistics/HostStatistics/HostStatistics.js
similarity index 84%
rename from src/components/statistics/HostStatistics.js
rename to src/components/statistics/HostStatistics/HostStatistics.js
index 97434fa6519f88eca29fdbef716552510ebf5899..f301627df43a395e8eb0711c79026bfb22b27a99 100644
--- a/src/components/statistics/HostStatistics.js
+++ b/src/components/statistics/HostStatistics/HostStatistics.js
@@ -1,8 +1,8 @@
 import React from "react";
 import { useEffect } from "react";
 import { LinearProgress } from "@material-ui/core";
-import { PrimeKeyValueTable } from "../common/PrimeKeyValueTable/PrimeKeyValueTable";
-import { useHostStatistics } from "../../api/SwaggerApi";
+import { PrimeKeyValueTable } from "../../common/PrimeKeyValueTable/PrimeKeyValueTable";
+import { useHostStatistics } from "../../../api/SwaggerApi";
 
 export function HostStatistics() {
   const [statistics, getStatistics] = useHostStatistics();
diff --git a/src/components/statistics/HostStatistics/index.js b/src/components/statistics/HostStatistics/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..7d0df3bdcd2686575f3cea4fda710c2b611941ff
--- /dev/null
+++ b/src/components/statistics/HostStatistics/index.js
@@ -0,0 +1,4 @@
+import { HostStatistics } from "./HostStatistics";
+
+export { HostStatistics };
+export default HostStatistics;
diff --git a/src/components/statistics/IOCStatistics.js b/src/components/statistics/IOCStatistics/IOCStatistics.js
similarity index 83%
rename from src/components/statistics/IOCStatistics.js
rename to src/components/statistics/IOCStatistics/IOCStatistics.js
index 11fed4e85c2a17fd5fcf9eef2e0830a4da6b0480..7e5144e91eaf93410ea4f3b589aba9389ad92d7c 100644
--- a/src/components/statistics/IOCStatistics.js
+++ b/src/components/statistics/IOCStatistics/IOCStatistics.js
@@ -1,8 +1,8 @@
 import React from "react";
 import { useEffect } from "react";
 import { LinearProgress } from "@material-ui/core";
-import { PrimeKeyValueTable } from "../common/PrimeKeyValueTable/PrimeKeyValueTable";
-import { useIocStatistics } from "../../api/SwaggerApi";
+import { PrimeKeyValueTable } from "../../common/PrimeKeyValueTable/PrimeKeyValueTable";
+import { useIocStatistics } from "../../../api/SwaggerApi";
 
 export function IOCStatistics() {
   const [statistics, getStatistics] = useIocStatistics();
diff --git a/src/components/statistics/IOCStatistics/index.js b/src/components/statistics/IOCStatistics/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..38d142bb25c40ad14f0da9afca18443aae2f0e25
--- /dev/null
+++ b/src/components/statistics/IOCStatistics/index.js
@@ -0,0 +1,4 @@
+import { IOCStatistics } from "./IOCStatistics";
+
+export { IOCStatistics };
+export default IOCStatistics;
diff --git a/src/components/statistics/IocCountStat.js b/src/components/statistics/IocCountStat/IocCountStat.js
similarity index 100%
rename from src/components/statistics/IocCountStat.js
rename to src/components/statistics/IocCountStat/IocCountStat.js
diff --git a/src/components/statistics/IocCountStat/index.js b/src/components/statistics/IocCountStat/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..1ebf96359177c90bec49ecf39d16ddc6f28de295
--- /dev/null
+++ b/src/components/statistics/IocCountStat/index.js
@@ -0,0 +1,4 @@
+import IocCountStat from "./IocCountStat";
+
+export { IocCountStat };
+export default IocCountStat;