diff --git a/src/contentScripts/communityConsole/start.js b/src/contentScripts/communityConsole/start.js
index b9c7f58..f890bd0 100644
--- a/src/contentScripts/communityConsole/start.js
+++ b/src/contentScripts/communityConsole/start.js
@@ -4,21 +4,6 @@
 import FlattenThreadsReplyActionHandler from './flattenThreads/replyActionHandler.js';
 
 getOptions(null).then(options => {
-  /* IMPORTANT NOTE: Remember to change this when changing the "ifs" below!! */
-  if (options.fixpekb269560789) {
-    var startup =
-        JSON.parse(document.querySelector('html').getAttribute('data-startup'));
-
-    if (options.fixpekb269560789) {
-      if (startup[1]?.[1]?.[8]?.[7]) {
-        delete startup[1]?.[1]?.[8]?.[7];
-      }
-    }
-
-    document.querySelector('html').setAttribute(
-        'data-startup', JSON.stringify(startup));
-  }
-
   if (options.uispacing) {
     injectStylesheet(chrome.runtime.getURL('css/ui_spacing/shared.css'));
     injectStylesheet(chrome.runtime.getURL('css/ui_spacing/console.css'));
diff --git a/src/features/Features.ts b/src/features/Features.ts
index 67c93aa..bf4d83c 100644
--- a/src/features/Features.ts
+++ b/src/features/Features.ts
@@ -5,6 +5,7 @@
 import ExtraInfoFeature from './extraInfo/extraInfo.feature';
 import WorkflowsFeature from './workflows/workflows.feature';
 import CCDarkThemeFeature from './ccDarkTheme/ccDarkTheme.feature';
+import FixCCSlownessFeature from './fixCCSlowness/fixCCSlowness.feature';
 
 export type ConcreteFeatureClass = { new (): Feature };
 
@@ -13,6 +14,7 @@
     AutoRefreshFeature,
     CCDarkThemeFeature,
     ExtraInfoFeature,
+    FixCCSlownessFeature,
     InfiniteScrollFeature,
     WorkflowsFeature,
   ];
diff --git a/src/features/fixCCSlowness/fixCCSlowness.feature.ts b/src/features/fixCCSlowness/fixCCSlowness.feature.ts
new file mode 100644
index 0000000..5703311
--- /dev/null
+++ b/src/features/fixCCSlowness/fixCCSlowness.feature.ts
@@ -0,0 +1,14 @@
+import Feature from '../../common/architecture/features/Feature';
+import { ConcreteScript } from '../../common/architecture/scripts/Script';
+import { OptionCodename } from '../../common/options/optionsPrototype';
+import RemoveUserAbuseEventsFromDataStartupScript from './scripts/removeUserAbuseEventsFromDataStartup.script';
+
+// This feature also has an associated response modifier.
+export default class FixCCSlownessFeature extends Feature {
+  public readonly scripts: ConcreteScript[] = [
+    RemoveUserAbuseEventsFromDataStartupScript,
+  ];
+
+  readonly codename = 'fixCCSlowness';
+  readonly relatedOptions: OptionCodename[] = ['fixpekb269560789'];
+}
diff --git a/src/features/fixCCSlowness/scripts/removeUserAbuseEventsFromDataStartup.script.ts b/src/features/fixCCSlowness/scripts/removeUserAbuseEventsFromDataStartup.script.ts
new file mode 100644
index 0000000..7618b78
--- /dev/null
+++ b/src/features/fixCCSlowness/scripts/removeUserAbuseEventsFromDataStartup.script.ts
@@ -0,0 +1,32 @@
+import DependenciesProviderSingleton, {
+  OptionsProviderDependency,
+  StartupDataStorageDependency,
+} from '../../../common/architecture/dependenciesProvider/DependenciesProvider';
+import Script, {
+  ScriptEnvironment,
+  ScriptPage,
+  ScriptRunPhase,
+} from '../../../common/architecture/scripts/Script';
+
+export default class RemoveUserAbuseEventsFromDataStartupScript extends Script {
+  page = ScriptPage.CommunityConsole;
+  environment = ScriptEnvironment.ContentScript;
+  runPhase = ScriptRunPhase.Start;
+
+  async execute() {
+    const dependenciesProvider = DependenciesProviderSingleton.getInstance();
+    const optionsProvider = dependenciesProvider.getDependency(
+      OptionsProviderDependency,
+    );
+    if (optionsProvider.isEnabled('fixpekb269560789')) {
+      const startupDataStorage = dependenciesProvider.getDependency(
+        StartupDataStorageDependency,
+      );
+      startupDataStorage.enqueueModification((startupDataModel) => {
+        if (startupDataModel.data[1]?.[1]?.[8]?.[7]) {
+          delete startupDataModel.data[1]?.[1]?.[8]?.[7];
+        }
+      });
+    }
+  }
+}
