diff --git a/app/static/js/CorpusAnalysis/CorpusAnalysisApp.js b/app/static/js/corpus-analysis/app.js
similarity index 99%
rename from app/static/js/CorpusAnalysis/CorpusAnalysisApp.js
rename to app/static/js/corpus-analysis/app.js
index f364d816..522dc7f4 100644
--- a/app/static/js/CorpusAnalysis/CorpusAnalysisApp.js
+++ b/app/static/js/corpus-analysis/app.js
@@ -1,4 +1,4 @@
-class CorpusAnalysisApp {
+nopaque.corpus_analysis.App = class App {
constructor(corpusId) {
this.corpusId = corpusId;
diff --git a/app/static/js/CorpusAnalysis/CorpusAnalysisConcordance.js b/app/static/js/corpus-analysis/concordance-extension.js
similarity index 99%
rename from app/static/js/CorpusAnalysis/CorpusAnalysisConcordance.js
rename to app/static/js/corpus-analysis/concordance-extension.js
index fd32c49c..46a5c32a 100644
--- a/app/static/js/CorpusAnalysis/CorpusAnalysisConcordance.js
+++ b/app/static/js/corpus-analysis/concordance-extension.js
@@ -1,4 +1,4 @@
-class CorpusAnalysisConcordance {
+nopaque.corpus_analysis.ConcordanceExtension = class ConcordanceExtension {
name = 'Concordance';
constructor(app) {
diff --git a/app/static/js/CorpusAnalysis/cqi/api/client.js b/app/static/js/corpus-analysis/cqi/api/client.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/api/client.js
rename to app/static/js/corpus-analysis/cqi/api/client.js
diff --git a/app/static/js/CorpusAnalysis/cqi/api/index.js b/app/static/js/corpus-analysis/cqi/api/index.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/api/index.js
rename to app/static/js/corpus-analysis/cqi/api/index.js
diff --git a/app/static/js/CorpusAnalysis/cqi/client.js b/app/static/js/corpus-analysis/cqi/client.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/client.js
rename to app/static/js/corpus-analysis/cqi/client.js
diff --git a/app/static/js/CorpusAnalysis/cqi/constants.js b/app/static/js/corpus-analysis/cqi/constants.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/constants.js
rename to app/static/js/corpus-analysis/cqi/constants.js
diff --git a/app/static/js/CorpusAnalysis/cqi/errors.js b/app/static/js/corpus-analysis/cqi/errors.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/errors.js
rename to app/static/js/corpus-analysis/cqi/errors.js
diff --git a/app/static/js/CorpusAnalysis/cqi/index.js b/app/static/js/corpus-analysis/cqi/index.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/index.js
rename to app/static/js/corpus-analysis/cqi/index.js
diff --git a/app/static/js/CorpusAnalysis/cqi/models/attributes.js b/app/static/js/corpus-analysis/cqi/models/attributes.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/models/attributes.js
rename to app/static/js/corpus-analysis/cqi/models/attributes.js
diff --git a/app/static/js/CorpusAnalysis/cqi/models/corpora.js b/app/static/js/corpus-analysis/cqi/models/corpora.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/models/corpora.js
rename to app/static/js/corpus-analysis/cqi/models/corpora.js
diff --git a/app/static/js/CorpusAnalysis/cqi/models/index.js b/app/static/js/corpus-analysis/cqi/models/index.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/models/index.js
rename to app/static/js/corpus-analysis/cqi/models/index.js
diff --git a/app/static/js/CorpusAnalysis/cqi/models/resource.js b/app/static/js/corpus-analysis/cqi/models/resource.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/models/resource.js
rename to app/static/js/corpus-analysis/cqi/models/resource.js
diff --git a/app/static/js/CorpusAnalysis/cqi/models/subcorpora.js b/app/static/js/corpus-analysis/cqi/models/subcorpora.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/models/subcorpora.js
rename to app/static/js/corpus-analysis/cqi/models/subcorpora.js
diff --git a/app/static/js/CorpusAnalysis/cqi/status.js b/app/static/js/corpus-analysis/cqi/status.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/cqi/status.js
rename to app/static/js/corpus-analysis/cqi/status.js
diff --git a/app/static/js/CorpusAnalysis/index.js b/app/static/js/corpus-analysis/index.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/index.js
rename to app/static/js/corpus-analysis/index.js
diff --git a/app/static/js/CorpusAnalysis/query-builder/element-references.js b/app/static/js/corpus-analysis/query-builder/element-references.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/query-builder/element-references.js
rename to app/static/js/corpus-analysis/query-builder/element-references.js
diff --git a/app/static/js/CorpusAnalysis/query-builder/general-query-builder-functions.js b/app/static/js/corpus-analysis/query-builder/general-query-builder-functions.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/query-builder/general-query-builder-functions.js
rename to app/static/js/corpus-analysis/query-builder/general-query-builder-functions.js
diff --git a/app/static/js/CorpusAnalysis/query-builder/index.js b/app/static/js/corpus-analysis/query-builder/index.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/query-builder/index.js
rename to app/static/js/corpus-analysis/query-builder/index.js
diff --git a/app/static/js/CorpusAnalysis/query-builder/structural-attribute-builder-functions.js b/app/static/js/corpus-analysis/query-builder/structural-attribute-builder-functions.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/query-builder/structural-attribute-builder-functions.js
rename to app/static/js/corpus-analysis/query-builder/structural-attribute-builder-functions.js
diff --git a/app/static/js/CorpusAnalysis/query-builder/token-attribute-builder-functions.js b/app/static/js/corpus-analysis/query-builder/token-attribute-builder-functions.js
similarity index 100%
rename from app/static/js/CorpusAnalysis/query-builder/token-attribute-builder-functions.js
rename to app/static/js/corpus-analysis/query-builder/token-attribute-builder-functions.js
diff --git a/app/static/js/CorpusAnalysis/CorpusAnalysisReader.js b/app/static/js/corpus-analysis/reader-extension.js
similarity index 99%
rename from app/static/js/CorpusAnalysis/CorpusAnalysisReader.js
rename to app/static/js/corpus-analysis/reader-extension.js
index bbafbc27..da871c5a 100644
--- a/app/static/js/CorpusAnalysis/CorpusAnalysisReader.js
+++ b/app/static/js/corpus-analysis/reader-extension.js
@@ -1,4 +1,4 @@
-class CorpusAnalysisReader {
+nopaque.corpus_analysis.ReaderExtension = class ReaderExtension {
name = 'Reader';
constructor(app) {
diff --git a/app/static/js/CorpusAnalysis/CorpusAnalysisStaticVisualization.js b/app/static/js/corpus-analysis/static-visualization-extension.js
similarity index 99%
rename from app/static/js/CorpusAnalysis/CorpusAnalysisStaticVisualization.js
rename to app/static/js/corpus-analysis/static-visualization-extension.js
index 3865512c..2deb728b 100644
--- a/app/static/js/CorpusAnalysis/CorpusAnalysisStaticVisualization.js
+++ b/app/static/js/corpus-analysis/static-visualization-extension.js
@@ -1,4 +1,4 @@
-class CorpusAnalysisStaticVisualization {
+nopaque.corpus_analysis.StaticVisualizationExtension = class StaticVisualizationExtension {
name = 'Static Visualization (beta)';
constructor(app) {
diff --git a/app/templates/_scripts.html.j2 b/app/templates/_scripts.html.j2
index f361f1dd..7b6aad12 100644
--- a/app/templates/_scripts.html.j2
+++ b/app/templates/_scripts.html.j2
@@ -76,28 +76,28 @@
{%- assets
filters='rjsmin',
output='gen/corpus-analysis.%(version)s.js',
- 'js/CorpusAnalysis/index.js',
- 'js/CorpusAnalysis/cqi/index.js',
- 'js/CorpusAnalysis/cqi/constants.js',
- 'js/CorpusAnalysis/cqi/errors.js',
- 'js/CorpusAnalysis/cqi/status.js',
- 'js/CorpusAnalysis/cqi/api/index.js',
- 'js/CorpusAnalysis/cqi/api/client.js',
- 'js/CorpusAnalysis/cqi/models/index.js',
- 'js/CorpusAnalysis/cqi/models/resource.js',
- 'js/CorpusAnalysis/cqi/models/attributes.js',
- 'js/CorpusAnalysis/cqi/models/subcorpora.js',
- 'js/CorpusAnalysis/cqi/models/corpora.js',
- 'js/CorpusAnalysis/cqi/client.js',
- 'js/CorpusAnalysis/query-builder/index.js',
- 'js/CorpusAnalysis/query-builder/element-references.js',
- 'js/CorpusAnalysis/query-builder/general-query-builder-functions.js',
- 'js/CorpusAnalysis/query-builder/structural-attribute-builder-functions.js',
- 'js/CorpusAnalysis/query-builder/token-attribute-builder-functions.js',
- 'js/CorpusAnalysis/CorpusAnalysisApp.js',
- 'js/CorpusAnalysis/CorpusAnalysisConcordance.js',
- 'js/CorpusAnalysis/CorpusAnalysisReader.js',
- 'js/CorpusAnalysis/CorpusAnalysisStaticVisualization.js'
+ 'js/corpus-analysis/index.js',
+ 'js/corpus-analysis/cqi/index.js',
+ 'js/corpus-analysis/cqi/constants.js',
+ 'js/corpus-analysis/cqi/errors.js',
+ 'js/corpus-analysis/cqi/status.js',
+ 'js/corpus-analysis/cqi/api/index.js',
+ 'js/corpus-analysis/cqi/api/client.js',
+ 'js/corpus-analysis/cqi/models/index.js',
+ 'js/corpus-analysis/cqi/models/resource.js',
+ 'js/corpus-analysis/cqi/models/attributes.js',
+ 'js/corpus-analysis/cqi/models/subcorpora.js',
+ 'js/corpus-analysis/cqi/models/corpora.js',
+ 'js/corpus-analysis/cqi/client.js',
+ 'js/corpus-analysis/query-builder/index.js',
+ 'js/corpus-analysis/query-builder/element-references.js',
+ 'js/corpus-analysis/query-builder/general-query-builder-functions.js',
+ 'js/corpus-analysis/query-builder/structural-attribute-builder-functions.js',
+ 'js/corpus-analysis/query-builder/token-attribute-builder-functions.js',
+ 'js/corpus-analysis/app.js',
+ 'js/corpus-analysis/concordance-extension.js',
+ 'js/corpus-analysis/reader-extension.js',
+ 'js/corpus-analysis/static-visualization-extension.js'
%}
{%- endassets %}
diff --git a/app/templates/corpora/_analysis/concordance.html.j2 b/app/templates/corpora/_analysis/concordance.html.j2
index f50578bd..9ff4a4bd 100644
--- a/app/templates/corpora/_analysis/concordance.html.j2
+++ b/app/templates/corpora/_analysis/concordance.html.j2
@@ -128,7 +128,7 @@
{# The extension scripts #}
{% macro scripts() %}
{% endmacro %}
diff --git a/app/templates/corpora/_analysis/reader.html.j2 b/app/templates/corpora/_analysis/reader.html.j2
index ebed2dae..187a4aab 100644
--- a/app/templates/corpora/_analysis/reader.html.j2
+++ b/app/templates/corpora/_analysis/reader.html.j2
@@ -79,6 +79,6 @@
{# The extension scripts #}
{% macro scripts() %}
{% endmacro %}
diff --git a/app/templates/corpora/_analysis/static_visualization.html.j2 b/app/templates/corpora/_analysis/static_visualization.html.j2
index 61b03916..141b4dbb 100644
--- a/app/templates/corpora/_analysis/static_visualization.html.j2
+++ b/app/templates/corpora/_analysis/static_visualization.html.j2
@@ -158,7 +158,7 @@
{% macro scripts() %}
{% endmacro %}
\ No newline at end of file
diff --git a/app/templates/corpora/analysis.html.j2 b/app/templates/corpora/analysis.html.j2
index 4f33ca34..1d501b31 100644
--- a/app/templates/corpora/analysis.html.j2
+++ b/app/templates/corpora/analysis.html.j2
@@ -81,7 +81,7 @@
{% block scripts %}
{{ super() }}
{{ concordance_extension.scripts() }}