diff --git a/src/features/Features.ts b/src/features/Features.ts
index b79d4fa..f3c9c98 100644
--- a/src/features/Features.ts
+++ b/src/features/Features.ts
@@ -1,13 +1,10 @@
 import Feature from '../common/architecture/features/Feature';
 import ScriptFilterListProvider from '../common/architecture/scripts/ScriptFilterListProvider';
-import ExtraInfoFeature from './extraInfo/extraInfo.feature';
 
 export type ConcreteFeatureClass = { new (): Feature };
 
 export default class Features extends ScriptFilterListProvider {
-  private features: ConcreteFeatureClass[] = [
-    ExtraInfoFeature,
-  ];
+  private features: ConcreteFeatureClass[] = [];
   private initializedFeatures: Feature[];
 
   protected getUnfilteredScriptsList() {
diff --git a/src/features/extraInfo/core/index.js b/src/features/extraInfo/core/index.js
index 29ae400..43268be 100644
--- a/src/features/extraInfo/core/index.js
+++ b/src/features/extraInfo/core/index.js
@@ -12,7 +12,7 @@
 import ThreadReplyExtraInfoInjection from './injections/threadReply.js';
 
 export default class ExtraInfo {
-  constructor() {
+  setUp() {
     const optionsWatcher = new PartialOptionsWatcher(['extrainfo', 'perforumstats']);
 
     const profileInfoHandler = new ProfileInfoHandler();
diff --git a/src/features/extraInfo/extraInfo.feature.ts b/src/features/extraInfo/extraInfo.feature.ts
deleted file mode 100644
index 0f2ccd7..0000000
--- a/src/features/extraInfo/extraInfo.feature.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import Feature from '../../common/architecture/features/Feature';
-import { ConcreteScript } from '../../common/architecture/scripts/Script';
-import { OptionCodename } from '../../common/options/optionsPrototype';
-import CCExtraInfoDependencySetUpScript from './scripts/ccExtraInfoDependencySetUp.script';
-import CCExtraInfoInjectScript from './scripts/ccExtraInfoInject.script';
-import CCExtraInfoMainScript from './scripts/ccExtraInfoMain.script';
-import CCExtraInfoStylesScript from './scripts/ccExtraInfoStyles.script';
-
-export default class ExtraInfoFeature extends Feature {
-  public readonly scripts: ConcreteScript[] = [
-    CCExtraInfoDependencySetUpScript,
-    CCExtraInfoInjectScript,
-    CCExtraInfoMainScript,
-    CCExtraInfoStylesScript,
-  ];
-
-  readonly codename = 'extraInfo';
-  readonly relatedOptions: OptionCodename[] = ['extrainfo', 'perforumstats'];
-}
diff --git a/src/features/extraInfo/nodeWatcherHandlers/profile/ccExtraInfoProfileAbuseChips.handler.ts b/src/features/extraInfo/nodeWatcherHandlers/profile/ccExtraInfoProfileAbuseChips.handler.ts
deleted file mode 100644
index 482a456..0000000
--- a/src/features/extraInfo/nodeWatcherHandlers/profile/ccExtraInfoProfileAbuseChips.handler.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import CssSelectorNodeWatcherScriptHandler from '../../../../common/architecture/scripts/nodeWatcher/handlers/CssSelectorNodeWatcherScriptHandler';
-import { NodeMutation } from '../../../../presentation/nodeWatcher/NodeWatcherHandler';
-import { CCExtraInfoMainOptions } from '../../scripts/ccExtraInfoMain.script';
-
-export default class CCExtraInfoProfileAbuseChipsHandler extends CssSelectorNodeWatcherScriptHandler<CCExtraInfoMainOptions> {
-  cssSelector = 'ec-unified-user .scTailwindUser_profileUsercardmain';
-
-  onMutatedNode({ node }: NodeMutation) {
-    this.options.extraInfo.injectAbuseChipsAtProfileIfEnabled(node);
-  }
-}
diff --git a/src/features/extraInfo/nodeWatcherHandlers/profile/ccExtraInfoProfilePerForumStats.handler.ts b/src/features/extraInfo/nodeWatcherHandlers/profile/ccExtraInfoProfilePerForumStats.handler.ts
deleted file mode 100644
index bd2bb1c..0000000
--- a/src/features/extraInfo/nodeWatcherHandlers/profile/ccExtraInfoProfilePerForumStats.handler.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import CssSelectorNodeWatcherScriptHandler from '../../../../common/architecture/scripts/nodeWatcher/handlers/CssSelectorNodeWatcherScriptHandler';
-import { NodeMutation } from '../../../../presentation/nodeWatcher/NodeWatcherHandler';
-import { CCExtraInfoMainOptions } from '../../scripts/ccExtraInfoMain.script';
-
-export default class CCExtraInfoProfilePerForumStatsHandler extends CssSelectorNodeWatcherScriptHandler<CCExtraInfoMainOptions> {
-  cssSelector =
-    'ec-unified-user .scTailwindUser_profileUserprofilesection sc-tailwind-shared-activity-chart';
-
-  onMutatedNode({ node }: NodeMutation) {
-    this.options.extraInfo.injectPerForumStatsIfEnabled(node);
-  }
-}
diff --git a/src/features/extraInfo/nodeWatcherHandlers/thread/ccExtraInfoThreadComment.handler.ts b/src/features/extraInfo/nodeWatcherHandlers/thread/ccExtraInfoThreadComment.handler.ts
deleted file mode 100644
index 5527e1a..0000000
--- a/src/features/extraInfo/nodeWatcherHandlers/thread/ccExtraInfoThreadComment.handler.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import CssSelectorNodeWatcherScriptHandler from '../../../../common/architecture/scripts/nodeWatcher/handlers/CssSelectorNodeWatcherScriptHandler';
-import { NodeMutation } from '../../../../presentation/nodeWatcher/NodeWatcherHandler';
-import { CCExtraInfoMainOptions } from '../../scripts/ccExtraInfoMain.script';
-
-/**
- * Inject extra info to threads in the thread list.
- */
-export default class CCExtraInfoThreadCommentHandler extends CssSelectorNodeWatcherScriptHandler<CCExtraInfoMainOptions> {
-  cssSelector = 'sc-tailwind-thread-message-message-list sc-tailwind-thread-message-comment-card';
-
-  onMutatedNode({ node }: NodeMutation) {
-    this.options.extraInfo.injectAtCommentIfEnabled(node);
-  }
-}
diff --git a/src/features/extraInfo/nodeWatcherHandlers/thread/ccExtraInfoThreadQuestion.handler.ts b/src/features/extraInfo/nodeWatcherHandlers/thread/ccExtraInfoThreadQuestion.handler.ts
deleted file mode 100644
index 028b9a3..0000000
--- a/src/features/extraInfo/nodeWatcherHandlers/thread/ccExtraInfoThreadQuestion.handler.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import CssSelectorNodeWatcherScriptHandler from '../../../../common/architecture/scripts/nodeWatcher/handlers/CssSelectorNodeWatcherScriptHandler';
-import { NodeMutation } from '../../../../presentation/nodeWatcher/NodeWatcherHandler';
-import { CCExtraInfoMainOptions } from '../../scripts/ccExtraInfoMain.script';
-
-/**
- * Inject extra info to threads in the thread list.
- */
-export default class CCExtraInfoThreadQuestionHandler extends CssSelectorNodeWatcherScriptHandler<CCExtraInfoMainOptions> {
-  cssSelector = 'sc-tailwind-thread-question-question-card sc-tailwind-thread-question-state-chips';
-
-  onMutatedNode({ node }: NodeMutation) {
-    this.options.extraInfo.injectAtQuestionIfEnabled(node);
-  }
-}
diff --git a/src/features/extraInfo/nodeWatcherHandlers/thread/ccExtraInfoThreadReply.handler.ts b/src/features/extraInfo/nodeWatcherHandlers/thread/ccExtraInfoThreadReply.handler.ts
deleted file mode 100644
index 94ad753..0000000
--- a/src/features/extraInfo/nodeWatcherHandlers/thread/ccExtraInfoThreadReply.handler.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import CssSelectorNodeWatcherScriptHandler from '../../../../common/architecture/scripts/nodeWatcher/handlers/CssSelectorNodeWatcherScriptHandler';
-import { NodeMutation } from '../../../../presentation/nodeWatcher/NodeWatcherHandler';
-import { CCExtraInfoMainOptions } from '../../scripts/ccExtraInfoMain.script';
-
-/**
- * Inject extra info to threads in the thread list.
- */
-export default class CCExtraInfoThreadReplyHandler extends CssSelectorNodeWatcherScriptHandler<CCExtraInfoMainOptions> {
-  cssSelector = 'sc-tailwind-thread-message-message-list sc-tailwind-thread-message-message-card';
-
-  onMutatedNode({ node }: NodeMutation) {
-    this.options.extraInfo.injectAtReplyIfEnabled(node);
-  }
-}
diff --git a/src/features/extraInfo/nodeWatcherHandlers/threadList/ccExtraInfoThreadList.handler.ts b/src/features/extraInfo/nodeWatcherHandlers/threadList/ccExtraInfoThreadList.handler.ts
deleted file mode 100644
index d2e7008..0000000
--- a/src/features/extraInfo/nodeWatcherHandlers/threadList/ccExtraInfoThreadList.handler.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import CssSelectorNodeWatcherScriptHandler from '../../../../common/architecture/scripts/nodeWatcher/handlers/CssSelectorNodeWatcherScriptHandler';
-import { NodeMutation } from '../../../../presentation/nodeWatcher/NodeWatcherHandler';
-import { CCExtraInfoMainOptions } from '../../scripts/ccExtraInfoMain.script';
-
-/**
- * Inject extra info to threads in the thread list.
- */
-export default class CCExtraInfoThreadListHandler extends CssSelectorNodeWatcherScriptHandler<CCExtraInfoMainOptions> {
-  cssSelector = 'li:has(ec-thread-summary)';
-
-  onMutatedNode({ node }: NodeMutation) {
-    this.options.extraInfo.injectAtThreadListIfEnabled(node);
-  }
-}
diff --git a/src/features/extraInfo/nodeWatcherHandlers/threadList/ccExtraInfoThreadListToolbelt.handler.ts b/src/features/extraInfo/nodeWatcherHandlers/threadList/ccExtraInfoThreadListToolbelt.handler.ts
deleted file mode 100644
index d28f6f8..0000000
--- a/src/features/extraInfo/nodeWatcherHandlers/threadList/ccExtraInfoThreadListToolbelt.handler.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import CssSelectorNodeWatcherScriptHandler from '../../../../common/architecture/scripts/nodeWatcher/handlers/CssSelectorNodeWatcherScriptHandler';
-import { NodeMutation } from '../../../../presentation/nodeWatcher/NodeWatcherHandler';
-import { CCExtraInfoMainOptions } from '../../scripts/ccExtraInfoMain.script';
-
-/**
- * Inject extra info in the toolbelt of an expanded thread list item.
- */
-export default class CCExtraInfoThreadListToolbeltHandler extends CssSelectorNodeWatcherScriptHandler<CCExtraInfoMainOptions> {
-  cssSelector = 'ec-thread-summary .main .toolbelt';
-
-  onMutatedNode({ node }: NodeMutation) {
-    this.options.extraInfo.injectAtExpandedThreadListIfEnabled(node);
-  }
-}
diff --git a/src/features/extraInfo/presentation/nodeWatcherHandlers/profile/ccExtraInfoProfileAbuseChips.handler.ts b/src/features/extraInfo/presentation/nodeWatcherHandlers/profile/ccExtraInfoProfileAbuseChips.handler.ts
new file mode 100644
index 0000000..98f40f4
--- /dev/null
+++ b/src/features/extraInfo/presentation/nodeWatcherHandlers/profile/ccExtraInfoProfileAbuseChips.handler.ts
@@ -0,0 +1,16 @@
+import CssSelectorNodeWatcherHandler from '../../../../../infrastructure/presentation/nodeWatcher/handlers/CssSelectorHandler.adapter';
+import { NodeMutation } from '../../../../../presentation/nodeWatcher/NodeWatcherHandler';
+import ExtraInfo from '../../../core';
+
+/** Inject abuse info chip in profiles. */
+export default class CCExtraInfoProfileAbuseChipsHandler extends CssSelectorNodeWatcherHandler {
+  cssSelector = 'ec-unified-user .scTailwindUser_profileUsercardmain';
+
+  constructor(private extraInfo: ExtraInfo) {
+    super();
+  }
+
+  onMutatedNode({ node }: NodeMutation) {
+    this.extraInfo.injectAbuseChipsAtProfileIfEnabled(node);
+  }
+}
diff --git a/src/features/extraInfo/presentation/nodeWatcherHandlers/profile/ccExtraInfoProfilePerForumStats.handler.ts b/src/features/extraInfo/presentation/nodeWatcherHandlers/profile/ccExtraInfoProfilePerForumStats.handler.ts
new file mode 100644
index 0000000..8bc543e
--- /dev/null
+++ b/src/features/extraInfo/presentation/nodeWatcherHandlers/profile/ccExtraInfoProfilePerForumStats.handler.ts
@@ -0,0 +1,17 @@
+import CssSelectorNodeWatcherHandler from '../../../../../infrastructure/presentation/nodeWatcher/handlers/CssSelectorHandler.adapter';
+import { NodeMutation } from '../../../../../presentation/nodeWatcher/NodeWatcherHandler';
+import ExtraInfo from '../../../core';
+
+/** Inject a per-forum stats section in profiles. */
+export default class CCExtraInfoProfilePerForumStatsHandler extends CssSelectorNodeWatcherHandler {
+  cssSelector =
+    'ec-unified-user .scTailwindUser_profileUserprofilesection sc-tailwind-shared-activity-chart';
+
+  constructor(private extraInfo: ExtraInfo) {
+    super();
+  }
+
+  onMutatedNode({ node }: NodeMutation) {
+    this.extraInfo.injectPerForumStatsIfEnabled(node);
+  }
+}
diff --git a/src/features/extraInfo/presentation/nodeWatcherHandlers/thread/ccExtraInfoThreadComment.handler.ts b/src/features/extraInfo/presentation/nodeWatcherHandlers/thread/ccExtraInfoThreadComment.handler.ts
new file mode 100644
index 0000000..f3e8c3c
--- /dev/null
+++ b/src/features/extraInfo/presentation/nodeWatcherHandlers/thread/ccExtraInfoThreadComment.handler.ts
@@ -0,0 +1,17 @@
+import CssSelectorNodeWatcherHandler from '../../../../../infrastructure/presentation/nodeWatcher/handlers/CssSelectorHandler.adapter';
+import { NodeMutation } from '../../../../../presentation/nodeWatcher/NodeWatcherHandler';
+import ExtraInfo from '../../../core';
+
+/** Inject extra info in comments. */
+export default class CCExtraInfoThreadCommentHandler extends CssSelectorNodeWatcherHandler {
+  cssSelector =
+    'sc-tailwind-thread-message-message-list sc-tailwind-thread-message-comment-card';
+
+  constructor(private extraInfo: ExtraInfo) {
+    super();
+  }
+
+  onMutatedNode({ node }: NodeMutation) {
+    this.extraInfo.injectAtCommentIfEnabled(node);
+  }
+}
diff --git a/src/features/extraInfo/presentation/nodeWatcherHandlers/thread/ccExtraInfoThreadQuestion.handler.ts b/src/features/extraInfo/presentation/nodeWatcherHandlers/thread/ccExtraInfoThreadQuestion.handler.ts
new file mode 100644
index 0000000..2a694c5
--- /dev/null
+++ b/src/features/extraInfo/presentation/nodeWatcherHandlers/thread/ccExtraInfoThreadQuestion.handler.ts
@@ -0,0 +1,17 @@
+import CssSelectorNodeWatcherHandler from '../../../../../infrastructure/presentation/nodeWatcher/handlers/CssSelectorHandler.adapter';
+import { NodeMutation } from '../../../../../presentation/nodeWatcher/NodeWatcherHandler';
+import ExtraInfo from '../../../core';
+
+/** Inject extra info in questions. */
+export default class CCExtraInfoThreadQuestionHandler extends CssSelectorNodeWatcherHandler {
+  cssSelector =
+    'sc-tailwind-thread-question-question-card sc-tailwind-thread-question-state-chips';
+
+  constructor(private extraInfo: ExtraInfo) {
+    super();
+  }
+
+  onMutatedNode({ node }: NodeMutation) {
+    this.extraInfo.injectAtQuestionIfEnabled(node);
+  }
+}
diff --git a/src/features/extraInfo/presentation/nodeWatcherHandlers/thread/ccExtraInfoThreadReply.handler.ts b/src/features/extraInfo/presentation/nodeWatcherHandlers/thread/ccExtraInfoThreadReply.handler.ts
new file mode 100644
index 0000000..dbfac69
--- /dev/null
+++ b/src/features/extraInfo/presentation/nodeWatcherHandlers/thread/ccExtraInfoThreadReply.handler.ts
@@ -0,0 +1,17 @@
+import CssSelectorNodeWatcherHandler from '../../../../../infrastructure/presentation/nodeWatcher/handlers/CssSelectorHandler.adapter';
+import { NodeMutation } from '../../../../../presentation/nodeWatcher/NodeWatcherHandler';
+import ExtraInfo from '../../../core';
+
+/** Inject extra info in replies. */
+export default class CCExtraInfoThreadReplyHandler extends CssSelectorNodeWatcherHandler {
+  cssSelector =
+    'sc-tailwind-thread-message-message-list sc-tailwind-thread-message-message-card';
+
+  constructor(private extraInfo: ExtraInfo) {
+    super();
+  }
+
+  onMutatedNode({ node }: NodeMutation) {
+    this.extraInfo.injectAtReplyIfEnabled(node);
+  }
+}
diff --git a/src/features/extraInfo/presentation/nodeWatcherHandlers/threadList/ccExtraInfoThreadList.handler.ts b/src/features/extraInfo/presentation/nodeWatcherHandlers/threadList/ccExtraInfoThreadList.handler.ts
new file mode 100644
index 0000000..71bf38a
--- /dev/null
+++ b/src/features/extraInfo/presentation/nodeWatcherHandlers/threadList/ccExtraInfoThreadList.handler.ts
@@ -0,0 +1,16 @@
+import CssSelectorNodeWatcherHandler from '../../../../../infrastructure/presentation/nodeWatcher/handlers/CssSelectorHandler.adapter';
+import { NodeMutation } from '../../../../../presentation/nodeWatcher/NodeWatcherHandler';
+import ExtraInfo from '../../../core';
+
+/** Inject extra info to threads in the thread list. */
+export default class CCExtraInfoThreadListHandler extends CssSelectorNodeWatcherHandler {
+  cssSelector = 'li:has(ec-thread-summary)';
+
+  constructor(private extraInfo: ExtraInfo) {
+    super();
+  }
+
+  onMutatedNode({ node }: NodeMutation) {
+    this.extraInfo.injectAtThreadListIfEnabled(node);
+  }
+}
diff --git a/src/features/extraInfo/presentation/nodeWatcherHandlers/threadList/ccExtraInfoThreadListToolbelt.handler.ts b/src/features/extraInfo/presentation/nodeWatcherHandlers/threadList/ccExtraInfoThreadListToolbelt.handler.ts
new file mode 100644
index 0000000..bc1fe6a
--- /dev/null
+++ b/src/features/extraInfo/presentation/nodeWatcherHandlers/threadList/ccExtraInfoThreadListToolbelt.handler.ts
@@ -0,0 +1,16 @@
+import CssSelectorNodeWatcherHandler from '../../../../../infrastructure/presentation/nodeWatcher/handlers/CssSelectorHandler.adapter';
+import { NodeMutation } from '../../../../../presentation/nodeWatcher/NodeWatcherHandler';
+import ExtraInfo from '../../../core';
+
+/** Inject extra info in the toolbelt of an expanded thread list item. */
+export default class CCExtraInfoThreadListToolbeltHandler extends CssSelectorNodeWatcherHandler {
+  cssSelector = 'ec-thread-summary .main .toolbelt';
+
+  constructor(private extraInfo: ExtraInfo) {
+    super();
+  }
+
+  onMutatedNode({ node }: NodeMutation) {
+    this.extraInfo.injectAtExpandedThreadListIfEnabled(node);
+  }
+}
diff --git a/src/features/extraInfo/presentation/scripts/ccExtraInfoInject.script.ts b/src/features/extraInfo/presentation/scripts/ccExtraInfoInject.script.ts
new file mode 100644
index 0000000..e268d28
--- /dev/null
+++ b/src/features/extraInfo/presentation/scripts/ccExtraInfoInject.script.ts
@@ -0,0 +1,14 @@
+import Script from '../../../../common/architecture/scripts/Script';
+import { injectScript } from '../../../../common/contentScriptsUtils';
+
+export default class CCExtraInfoInjectScript extends Script {
+  priority = 11;
+
+  page: never;
+  environment: never;
+  runPhase: never;
+
+  execute() {
+    injectScript(chrome.runtime.getURL('extraInfoInject.bundle.js'));
+  }
+}
diff --git a/src/features/extraInfo/presentation/scripts/ccExtraInfoSetUp.script.ts b/src/features/extraInfo/presentation/scripts/ccExtraInfoSetUp.script.ts
new file mode 100644
index 0000000..9c4df76
--- /dev/null
+++ b/src/features/extraInfo/presentation/scripts/ccExtraInfoSetUp.script.ts
@@ -0,0 +1,17 @@
+import Script from '../../../../common/architecture/scripts/Script';
+import ExtraInfo from '../../core';
+
+export default class CCExtraInfoSetUpScript extends Script {
+  public priority = 101;
+  public page: never;
+  public environment: never;
+  public runPhase: never;
+
+  constructor(private extraInfo: ExtraInfo) {
+    super();
+  }
+
+  execute() {
+    this.extraInfo.setUp();
+  }
+}
diff --git a/src/features/extraInfo/presentation/scripts/ccExtraInfoStyles.script.ts b/src/features/extraInfo/presentation/scripts/ccExtraInfoStyles.script.ts
new file mode 100644
index 0000000..9395895
--- /dev/null
+++ b/src/features/extraInfo/presentation/scripts/ccExtraInfoStyles.script.ts
@@ -0,0 +1,13 @@
+import Script from '../../../../common/architecture/scripts/Script';
+import { injectStylesheet } from '../../../../common/contentScriptsUtils';
+
+export default class CCExtraInfoStylesScript extends Script {
+  page: never;
+  environment: never;
+  runPhase: never;
+
+  execute() {
+    injectStylesheet(chrome.runtime.getURL('css/extrainfo.css'));
+    injectStylesheet(chrome.runtime.getURL('css/extrainfo_perforumstats.css'));
+  }
+}
diff --git a/src/features/extraInfo/scripts/ccExtraInfoDependencySetUp.script.ts b/src/features/extraInfo/scripts/ccExtraInfoDependencySetUp.script.ts
deleted file mode 100644
index cd595c5..0000000
--- a/src/features/extraInfo/scripts/ccExtraInfoDependencySetUp.script.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { Dependency, ExtraInfoDependency } from '../../../common/architecture/dependenciesProvider/DependenciesProvider';
-import {
-  ScriptEnvironment,
-  ScriptPage,
-  ScriptRunPhase,
-} from '../../../common/architecture/scripts/Script';
-import SetUpDependenciesScript from '../../../common/architecture/scripts/setUpDependencies/SetUpDependenciesScript';
-
-export default class CCExtraInfoDependencySetUpScript extends SetUpDependenciesScript {
-  public priority = 101;
-  public page = ScriptPage.CommunityConsole;
-  public environment = ScriptEnvironment.ContentScript;
-  public runPhase = ScriptRunPhase.Start;
-  public dependencies: Dependency[] = [ExtraInfoDependency];
-}
diff --git a/src/features/extraInfo/scripts/ccExtraInfoInject.script.ts b/src/features/extraInfo/scripts/ccExtraInfoInject.script.ts
deleted file mode 100644
index 2bd6364..0000000
--- a/src/features/extraInfo/scripts/ccExtraInfoInject.script.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import Script, { ScriptEnvironment, ScriptPage, ScriptRunPhase } from "../../../common/architecture/scripts/Script";
-import { injectScript } from "../../../common/contentScriptsUtils";
-
-export default class CCExtraInfoInjectScript extends Script {
-  priority = 11;
-
-  page = ScriptPage.CommunityConsole;
-  environment = ScriptEnvironment.ContentScript;
-  runPhase = ScriptRunPhase.Start;
-
-  execute() {
-    injectScript(chrome.runtime.getURL('extraInfoInject.bundle.js'));
-  }
-}
diff --git a/src/features/extraInfo/scripts/ccExtraInfoMain.script.ts b/src/features/extraInfo/scripts/ccExtraInfoMain.script.ts
deleted file mode 100644
index 199ff18..0000000
--- a/src/features/extraInfo/scripts/ccExtraInfoMain.script.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import DependenciesProviderSingleton, {
-  ExtraInfoDependency,
-} from '../../../common/architecture/dependenciesProvider/DependenciesProvider';
-import {
-  ScriptEnvironment,
-  ScriptPage,
-  ScriptRunPhase,
-} from '../../../common/architecture/scripts/Script';
-import LegacyNodeWatcherScript from '../../../common/architecture/scripts/nodeWatcher/LegacyNodeWatcherScript';
-import ExtraInfo from '../core';
-import CCExtraInfoProfileAbuseChipsHandler from '../nodeWatcherHandlers/profile/ccExtraInfoProfileAbuseChips.handler';
-import CCExtraInfoProfilePerForumStatsHandler from '../nodeWatcherHandlers/profile/ccExtraInfoProfilePerForumStats.handler';
-import CCExtraInfoThreadCommentHandler from '../nodeWatcherHandlers/thread/ccExtraInfoThreadComment.handler';
-import CCExtraInfoThreadListHandler from '../nodeWatcherHandlers/threadList/ccExtraInfoThreadList.handler';
-import CCExtraInfoThreadListToolbeltHandler from '../nodeWatcherHandlers/threadList/ccExtraInfoThreadListToolbelt.handler';
-import CCExtraInfoThreadQuestionHandler from '../nodeWatcherHandlers/thread/ccExtraInfoThreadQuestion.handler';
-import CCExtraInfoThreadReplyHandler from '../nodeWatcherHandlers/thread/ccExtraInfoThreadReply.handler';
-
-export interface CCExtraInfoMainOptions {
-  extraInfo: ExtraInfo;
-}
-
-export default class CCExtraInfoMainScript extends LegacyNodeWatcherScript<CCExtraInfoMainOptions> {
-  page = ScriptPage.CommunityConsole;
-  environment = ScriptEnvironment.ContentScript;
-  runPhase = ScriptRunPhase.Main;
-  handlers = new Map([
-    ['ccExtraInfoProfile', CCExtraInfoProfileAbuseChipsHandler],
-    ['ccExtraInfoProfilePerForumStats', CCExtraInfoProfilePerForumStatsHandler],
-    ['ccExtraInfoThreadComment', CCExtraInfoThreadCommentHandler],
-    ['ccExtraInfoThreadList', CCExtraInfoThreadListHandler],
-    ['ccExtraInfoThreadListToolbelt', CCExtraInfoThreadListToolbeltHandler],
-    ['ccExtraInfoThreadQuestion', CCExtraInfoThreadQuestionHandler],
-    ['ccExtraInfoThreadReply', CCExtraInfoThreadReplyHandler],
-  ]);
-
-  protected optionsFactory(): CCExtraInfoMainOptions {
-    const dependenciesProvider = DependenciesProviderSingleton.getInstance();
-    return {
-      extraInfo: dependenciesProvider.getDependency(ExtraInfoDependency),
-    };
-  }
-}
diff --git a/src/features/extraInfo/scripts/ccExtraInfoStyles.script.ts b/src/features/extraInfo/scripts/ccExtraInfoStyles.script.ts
deleted file mode 100644
index 4d806f6..0000000
--- a/src/features/extraInfo/scripts/ccExtraInfoStyles.script.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import Script, {
-  ScriptEnvironment,
-  ScriptPage,
-  ScriptRunPhase,
-} from '../../../common/architecture/scripts/Script';
-import { injectStylesheet } from '../../../common/contentScriptsUtils';
-
-export default class CCExtraInfoStylesScript extends Script {
-  page = ScriptPage.CommunityConsole;
-  environment = ScriptEnvironment.ContentScript;
-  runPhase = ScriptRunPhase.Main;
-
-  execute() {
-    injectStylesheet(chrome.runtime.getURL('css/extrainfo.css'));
-    injectStylesheet(chrome.runtime.getURL('css/extrainfo_perforumstats.css'));
-  }
-}
