diff --git a/static/formatter-registry.ts b/static/formatter-registry.ts
index 0842de05c8cea35fe5732bafdd4d793b3ee2d9fe..52b790f6566ed89c357c16a2103f6e78e4949460 100644
--- a/static/formatter-registry.ts
+++ b/static/formatter-registry.ts
@@ -24,7 +24,7 @@
 
 import * as monaco from 'monaco-editor';
 
-import {Alert} from './alert';
+import {Alert} from './widgets/alert';
 import {Settings} from './settings';
 import {FormattingRequest} from './api/formatting.interfaces';
 import {getFormattedCode} from './api/api';
diff --git a/static/main.js b/static/main.js
index 02bc7e3e687cbc5e98ddf4ccc29887f04253a7c9..3d8293a6a772115293bcf92c7664f6a491238923 100644
--- a/static/main.js
+++ b/static/main.js
@@ -43,7 +43,7 @@ var Hub = require('./hub').Hub;
 var Sentry = require('@sentry/browser');
 var Settings = require('./settings').Settings;
 var local = require('./local');
-var Alert = require('./alert').Alert;
+var Alert = require('./widgets/alert').Alert;
 var themer = require('./themes');
 var motd = require('./motd');
 var jsCookie = require('js-cookie');
diff --git a/static/panes/compiler.ts b/static/panes/compiler.ts
index cfca3cef3a260762556951c1c6427cffc82379d9..0ef070db99da8a8804f340592b5110861ff4bcaa 100644
--- a/static/panes/compiler.ts
+++ b/static/panes/compiler.ts
@@ -31,13 +31,13 @@ import * as Components from '../components';
 import LruCache from 'lru-cache';
 import {options} from '../options';
 import * as monaco from 'monaco-editor';
-import {Alert} from '../alert';
+import {Alert} from '../widgets/alert';
 import bigInt from 'big-integer';
 import {LibsWidget} from '../widgets/libs-widget';
 import * as codeLensHandler from '../codelens-handler';
 import * as monacoConfig from '../monaco-config';
 import * as TimingWidget from '../widgets/timing-info-widget';
-import {CompilerPicker} from '../compiler-picker';
+import {CompilerPicker} from '../widgets/compiler-picker';
 import {CompilerService} from '../compiler-service';
 import {SiteSettings} from '../settings';
 import * as LibUtils from '../lib-utils';
diff --git a/static/panes/conformance-view.ts b/static/panes/conformance-view.ts
index e5bdaae3b3ca5f184c127a33239b8cd57660799a..e3d151bd09cc437ef4e3fd3a58c881d7ac0f90be 100644
--- a/static/panes/conformance-view.ts
+++ b/static/panes/conformance-view.ts
@@ -28,7 +28,7 @@ import $ from 'jquery';
 import {ga} from '../analytics';
 import * as Components from '../components';
 import {CompilerLibs, LibsWidget} from '../widgets/libs-widget';
-import {CompilerPicker} from '../compiler-picker';
+import {CompilerPicker} from '../widgets/compiler-picker';
 import * as utils from '../utils';
 import * as LibUtils from '../lib-utils';
 import {PaneRenaming} from '../widgets/pane-renaming';
diff --git a/static/panes/editor.ts b/static/panes/editor.ts
index 6fda0fafb17cc45cda9439b94be3ca488fdf741f..3b96e962d566df0d805fa525cc5df5ad3201fcf1 100644
--- a/static/panes/editor.ts
+++ b/static/panes/editor.ts
@@ -30,7 +30,7 @@ import * as Components from '../components';
 import * as monaco from 'monaco-editor';
 import {Buffer} from 'buffer';
 import {options} from '../options';
-import {Alert} from '../alert';
+import {Alert} from '../widgets/alert';
 import {ga} from '../analytics';
 import * as monacoVim from 'monaco-vim';
 import * as monacoConfig from '../monaco-config';
diff --git a/static/panes/executor.js b/static/panes/executor.js
index 6350e8b1500a504657ee9263a0c6cfc7e30a2212..fc5441a0f1904b63b725f773faa76c5769a60c67 100644
--- a/static/panes/executor.js
+++ b/static/panes/executor.js
@@ -30,11 +30,11 @@ var ga = require('../analytics').ga;
 var Toggles = require('../widgets/toggles').Toggles;
 var FontScale = require('../widgets/fontscale').FontScale;
 var options = require('../options').options;
-var Alert = require('../alert').Alert;
+var Alert = require('../widgets/alert').Alert;
 var LibsWidget = require('../widgets/libs-widget').LibsWidget;
 var AnsiToHtml = require('../ansi-to-html').Filter;
 var TimingWidget = require('../widgets/timing-info-widget');
-var CompilerPicker = require('../compiler-picker').CompilerPicker;
+var CompilerPicker = require('../widgets/compiler-picker').CompilerPicker;
 var Settings = require('../settings').Settings;
 var utils = require('../utils');
 var LibUtils = require('../lib-utils');
diff --git a/static/panes/tree.ts b/static/panes/tree.ts
index 9106e46a28fa8bbe1c018a5b066e7126d3d2b53f..90b401361b1f07b02afd7e5f304cf8eed2fa135e 100644
--- a/static/panes/tree.ts
+++ b/static/panes/tree.ts
@@ -30,7 +30,7 @@ import {Settings, SiteSettings} from '../settings';
 import {PaneRenaming} from '../widgets/pane-renaming';
 import {Hub} from '../hub';
 import {EventHub} from '../event-hub';
-import {Alert} from '../alert';
+import {Alert} from '../widgets/alert';
 import * as Components from '../components';
 import {ga} from '../analytics';
 import TomSelect from 'tom-select';
diff --git a/static/alert.interfaces.ts b/static/widgets/alert.interfaces.ts
similarity index 100%
rename from static/alert.interfaces.ts
rename to static/widgets/alert.interfaces.ts
diff --git a/static/alert.ts b/static/widgets/alert.ts
similarity index 99%
rename from static/alert.ts
rename to static/widgets/alert.ts
index 5f432317d8b1beb812aa1c40eaf8c38aac235937..eb582169f9d4ef39453640a264261b3240dae30b 100644
--- a/static/alert.ts
+++ b/static/widgets/alert.ts
@@ -25,7 +25,7 @@
 import $ from 'jquery';
 
 import {AlertAskOptions, AlertEnterTextOptions, AlertNotifyOptions} from './alert.interfaces';
-import {toggleEventListener} from './utils';
+import {toggleEventListener} from '../utils';
 
 export class Alert {
     yesHandler: ((answer?: string | string[] | number) => void) | null = null;
diff --git a/static/compiler-picker.ts b/static/widgets/compiler-picker.ts
similarity index 98%
rename from static/compiler-picker.ts
rename to static/widgets/compiler-picker.ts
index aed09bf2725d39e0afa1b796045f337c0e579d4c..33f22fa46742331cb64357e2a6fae2c43e3c24ee 100644
--- a/static/compiler-picker.ts
+++ b/static/widgets/compiler-picker.ts
@@ -25,11 +25,11 @@
 import $ from 'jquery';
 import TomSelect from 'tom-select';
 
-import {ga} from './analytics';
-import * as local from './local';
-import {EventHub} from './event-hub';
-import {Hub} from './hub';
-import {CompilerService} from './compiler-service';
+import {ga} from '../analytics';
+import * as local from '../local';
+import {EventHub} from '../event-hub';
+import {Hub} from '../hub';
+import {CompilerService} from '../compiler-service';
 
 type Favourites = {
     [compilerId: string]: boolean;
diff --git a/static/widgets/load-save.ts b/static/widgets/load-save.ts
index 7b27e0119fc0eddb34955d6eb964b52f93046630..eeea642a835938494ed65b5df3147141aafa3dc4 100644
--- a/static/widgets/load-save.ts
+++ b/static/widgets/load-save.ts
@@ -25,7 +25,7 @@
 import $ from 'jquery';
 import _ from 'underscore';
 import {saveAs} from 'file-saver';
-import {Alert} from '../alert';
+import {Alert} from './alert';
 import {ga} from '../analytics';
 import * as local from '../local';
 import {Language} from '../../types/languages.interfaces';
diff --git a/static/widgets/pane-renaming.ts b/static/widgets/pane-renaming.ts
index 6c1c07d51c38773e749a324407ac20effe819e4a..509a2370b1f490e00ff06d25ad223d34d3ff465e 100644
--- a/static/widgets/pane-renaming.ts
+++ b/static/widgets/pane-renaming.ts
@@ -25,7 +25,7 @@
 import $ from 'jquery';
 import {Tab} from 'golden-layout';
 import {EventEmitter} from 'events';
-import {Alert} from '../alert';
+import {Alert} from './alert';
 
 export class PaneRenaming extends EventEmitter.EventEmitter {
     private pane: any;