diff --git a/src/common/architecture/dependenciesProvider/DependenciesProvider.ts b/src/common/architecture/dependenciesProvider/DependenciesProvider.ts
index 61a7425..8bbe0b8 100644
--- a/src/common/architecture/dependenciesProvider/DependenciesProvider.ts
+++ b/src/common/architecture/dependenciesProvider/DependenciesProvider.ts
@@ -3,7 +3,7 @@
 import OptionsProviderAdapter from '../../../infrastructure/services/options/OptionsProvider.adapter';
 import WorkflowsImport from '../../../features/workflows/core/communityConsole/import';
 import Workflows from '../../../features/workflows/core/communityConsole/workflows';
-import StartupDataStorage from '../../../contentScripts/communityConsole/utils/StartupDataStorage';
+import StartupDataStorageAdapter from '../../../infrastructure/services/communityConsole/StartupDataStorage.adapter';
 import ReportDialogColorThemeFix from '../../../features/ccDarkTheme/core/logic/reportDialog';
 
 export const AutoRefreshDependency = 'autoRefresh';
@@ -19,7 +19,7 @@
   [ExtraInfoDependency]: ExtraInfo,
   [OptionsProviderDependency]: OptionsProviderAdapter,
   [ReportDialogColorThemeFixDependency]: ReportDialogColorThemeFix,
-  [StartupDataStorageDependency]: StartupDataStorage,
+  [StartupDataStorageDependency]: StartupDataStorageAdapter,
   [WorkflowsDependency]: Workflows,
   [WorkflowsImportDependency]: WorkflowsImport,
 };
diff --git a/src/contentScripts/communityConsole/utils/StartupDataStorage.ts b/src/infrastructure/services/communityConsole/StartupDataStorage.adapter.ts
similarity index 67%
rename from src/contentScripts/communityConsole/utils/StartupDataStorage.ts
rename to src/infrastructure/services/communityConsole/StartupDataStorage.adapter.ts
index 6e67a5d..39e6b90 100644
--- a/src/contentScripts/communityConsole/utils/StartupDataStorage.ts
+++ b/src/infrastructure/services/communityConsole/StartupDataStorage.adapter.ts
@@ -1,30 +1,31 @@
 import { Queue } from '@datastructures-js/queue';
 import StartupDataModel from '../../../models/StartupData';
+import {
+  StartupDataModification,
+  StartupDataStoragePort,
+} from '../../../services/communityConsole/StartupDataStorage.port';
 
-type StartupDataModification = (startupData: StartupDataModel) => void;
-
-export default class StartupDataStorage {
+export default class StartupDataStorageAdapter
+  implements StartupDataStoragePort
+{
+  private isSetUp = false;
   private startupData: StartupDataModel;
-  private modificationsQueue: Queue<StartupDataModification>;
-
-  constructor() {
-    const rawData = this.getHtmlElement().getAttribute('data-startup');
-    this.startupData = new StartupDataModel(rawData ? JSON.parse(rawData) : {});
-    this.modificationsQueue = new Queue();
-  }
+  private modificationsQueue = new Queue<StartupDataModification>();
 
   get(): StartupDataModel {
+    this.setUp();
     return this.startupData;
   }
 
   enqueueModification(
     modification: StartupDataModification,
-  ): StartupDataStorage {
+  ): StartupDataStorageAdapter {
     this.modificationsQueue.enqueue(modification);
     return this;
   }
 
-  applyModifications(): StartupDataStorage {
+  applyModifications(): StartupDataStorageAdapter {
+    this.setUp();
     while (!this.modificationsQueue.isEmpty()) {
       const modification = this.modificationsQueue.dequeue();
       modification(this.startupData);
@@ -33,6 +34,14 @@
     return this;
   }
 
+  private setUp() {
+    if (this.isSetUp) return;
+
+    this.isSetUp = true;
+    const rawData = this.getHtmlElement().getAttribute('data-startup');
+    this.startupData = new StartupDataModel(rawData ? JSON.parse(rawData) : {});
+  }
+
   private persistToDOM() {
     const serializedData = JSON.stringify(this.startupData.data);
     this.getHtmlElement().setAttribute('data-startup', serializedData);
diff --git a/src/services/communityConsole/StartupDataStorage.port.ts b/src/services/communityConsole/StartupDataStorage.port.ts
new file mode 100644
index 0000000..827cd36
--- /dev/null
+++ b/src/services/communityConsole/StartupDataStorage.port.ts
@@ -0,0 +1,22 @@
+import StartupDataModel from "../../models/StartupData";
+
+export interface StartupDataStoragePort {
+  /**
+   * Get the startup data as stored in this class (without having applied any
+   * queued modification).
+   *
+   * NOTE: This might not be synced with the live startup data which exists in the
+   * DOM.
+   */
+  get(): StartupDataModel;
+
+  /* Enqueue a function which includes a modification to the startup data. */
+  enqueueModification(
+    modification: StartupDataModification,
+  ): StartupDataStoragePort;
+
+  /* Apply all the queued modifications and persist the result to the DOM. */
+  applyModifications(): StartupDataStoragePort;
+}
+
+export type StartupDataModification = (startupData: StartupDataModel) => void;
