diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php
index bbc4cd3b018702aa33042c5134d23ed299e80104..e80054c04be65bc5a3734b71919e36edcb56f29b 100644
--- a/plugins/CoreHome/CoreHome.php
+++ b/plugins/CoreHome/CoreHome.php
@@ -92,29 +92,29 @@ class CoreHome extends \Piwik\Plugin
         $jsFiles[] = "plugins/CoreHome/javascripts/notification.js";
         $jsFiles[] = "plugins/CoreHome/javascripts/notification_parser.js";
 
-        $jsFiles[] = "plugins/CoreHome/javascripts/piwikAppConfig.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/piwikAppConfig.js";
 
-        $jsFiles[] = "plugins/CoreHome/javascripts/services/service.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/services/piwik-service.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/services/piwik-api-service.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/services/service.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/services/piwik-service.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/services/piwik-api-service.js";
 
-        $jsFiles[] = "plugins/CoreHome/javascripts/filters/filter.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/filters/translate-filter.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/filters/startfrom-filter.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/filters/evolution-filter.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/filters/filter.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/filters/translate-filter.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/filters/startfrom-filter.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/filters/evolution-filter.js";
 
-        $jsFiles[] = "plugins/CoreHome/javascripts/directives/directive.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/directives/autocomplete-matched-directive.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/directives/focus-anywhere-but-here-directive.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/directives/ignore-click-directive.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/directives/onenter.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/directives/focusif.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/directive.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/autocomplete-matched-directive.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here-directive.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/ignore-click-directive.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/onenter.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/focusif.js";
 
-        $jsFiles[] = "plugins/CoreHome/javascripts/piwikApp.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/piwikApp.js";
 
-        $jsFiles[] = "plugins/CoreHome/javascripts/siteselector/siteselector-model.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/siteselector/siteselector-controller.js";
-        $jsFiles[] = "plugins/CoreHome/javascripts/siteselector/siteselector-directive.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/siteselector/siteselector-model.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/siteselector/siteselector-controller.js";
+        $jsFiles[] = "plugins/CoreHome/angularjs/siteselector/siteselector-directive.js";
     }
 
     public function getClientSideTranslationKeys(&$translationKeys)
diff --git a/plugins/CoreHome/javascripts/directives/autocomplete-matched-directive.js b/plugins/CoreHome/angularjs/common/directives/autocomplete-matched-directive.js
similarity index 100%
rename from plugins/CoreHome/javascripts/directives/autocomplete-matched-directive.js
rename to plugins/CoreHome/angularjs/common/directives/autocomplete-matched-directive.js
diff --git a/plugins/CoreHome/javascripts/directives/directive.js b/plugins/CoreHome/angularjs/common/directives/directive.js
similarity index 100%
rename from plugins/CoreHome/javascripts/directives/directive.js
rename to plugins/CoreHome/angularjs/common/directives/directive.js
diff --git a/plugins/CoreHome/javascripts/directives/focus-anywhere-but-here-directive.js b/plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here-directive.js
similarity index 100%
rename from plugins/CoreHome/javascripts/directives/focus-anywhere-but-here-directive.js
rename to plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here-directive.js
diff --git a/plugins/CoreHome/javascripts/directives/focusif.js b/plugins/CoreHome/angularjs/common/directives/focusif.js
similarity index 100%
rename from plugins/CoreHome/javascripts/directives/focusif.js
rename to plugins/CoreHome/angularjs/common/directives/focusif.js
diff --git a/plugins/CoreHome/javascripts/directives/ignore-click-directive.js b/plugins/CoreHome/angularjs/common/directives/ignore-click-directive.js
similarity index 100%
rename from plugins/CoreHome/javascripts/directives/ignore-click-directive.js
rename to plugins/CoreHome/angularjs/common/directives/ignore-click-directive.js
diff --git a/plugins/CoreHome/javascripts/directives/onenter.js b/plugins/CoreHome/angularjs/common/directives/onenter.js
similarity index 100%
rename from plugins/CoreHome/javascripts/directives/onenter.js
rename to plugins/CoreHome/angularjs/common/directives/onenter.js
diff --git a/plugins/CoreHome/javascripts/filters/evolution-filter.js b/plugins/CoreHome/angularjs/common/filters/evolution-filter.js
similarity index 100%
rename from plugins/CoreHome/javascripts/filters/evolution-filter.js
rename to plugins/CoreHome/angularjs/common/filters/evolution-filter.js
diff --git a/plugins/CoreHome/javascripts/filters/filter.js b/plugins/CoreHome/angularjs/common/filters/filter.js
similarity index 100%
rename from plugins/CoreHome/javascripts/filters/filter.js
rename to plugins/CoreHome/angularjs/common/filters/filter.js
diff --git a/plugins/CoreHome/javascripts/filters/startfrom-filter.js b/plugins/CoreHome/angularjs/common/filters/startfrom-filter.js
similarity index 100%
rename from plugins/CoreHome/javascripts/filters/startfrom-filter.js
rename to plugins/CoreHome/angularjs/common/filters/startfrom-filter.js
diff --git a/plugins/CoreHome/javascripts/filters/translate-filter.js b/plugins/CoreHome/angularjs/common/filters/translate-filter.js
similarity index 100%
rename from plugins/CoreHome/javascripts/filters/translate-filter.js
rename to plugins/CoreHome/angularjs/common/filters/translate-filter.js
diff --git a/plugins/CoreHome/javascripts/services/piwik-api-service.js b/plugins/CoreHome/angularjs/common/services/piwik-api-service.js
similarity index 100%
rename from plugins/CoreHome/javascripts/services/piwik-api-service.js
rename to plugins/CoreHome/angularjs/common/services/piwik-api-service.js
diff --git a/plugins/CoreHome/javascripts/services/piwik-service.js b/plugins/CoreHome/angularjs/common/services/piwik-service.js
similarity index 100%
rename from plugins/CoreHome/javascripts/services/piwik-service.js
rename to plugins/CoreHome/angularjs/common/services/piwik-service.js
diff --git a/plugins/CoreHome/javascripts/services/service.js b/plugins/CoreHome/angularjs/common/services/service.js
similarity index 100%
rename from plugins/CoreHome/javascripts/services/service.js
rename to plugins/CoreHome/angularjs/common/services/service.js
diff --git a/plugins/CoreHome/javascripts/piwikApp.js b/plugins/CoreHome/angularjs/piwikApp.js
similarity index 100%
rename from plugins/CoreHome/javascripts/piwikApp.js
rename to plugins/CoreHome/angularjs/piwikApp.js
diff --git a/plugins/CoreHome/javascripts/piwikAppConfig.js b/plugins/CoreHome/angularjs/piwikAppConfig.js
similarity index 100%
rename from plugins/CoreHome/javascripts/piwikAppConfig.js
rename to plugins/CoreHome/angularjs/piwikAppConfig.js
diff --git a/plugins/CoreHome/javascripts/siteselector/siteselector-controller.js b/plugins/CoreHome/angularjs/siteselector/siteselector-controller.js
similarity index 100%
rename from plugins/CoreHome/javascripts/siteselector/siteselector-controller.js
rename to plugins/CoreHome/angularjs/siteselector/siteselector-controller.js
diff --git a/plugins/CoreHome/javascripts/siteselector/siteselector-controller_test.js b/plugins/CoreHome/angularjs/siteselector/siteselector-controller_test.js
similarity index 100%
rename from plugins/CoreHome/javascripts/siteselector/siteselector-controller_test.js
rename to plugins/CoreHome/angularjs/siteselector/siteselector-controller_test.js
diff --git a/plugins/CoreHome/javascripts/siteselector/siteselector-directive.js b/plugins/CoreHome/angularjs/siteselector/siteselector-directive.js
similarity index 94%
rename from plugins/CoreHome/javascripts/siteselector/siteselector-directive.js
rename to plugins/CoreHome/angularjs/siteselector/siteselector-directive.js
index fc789da5b551ea4430fdcdfdb83584b825610b0e..bcd5c0f0ab49d19aa681e7e67aba7d0c667831b4 100644
--- a/plugins/CoreHome/javascripts/siteselector/siteselector-directive.js
+++ b/plugins/CoreHome/angularjs/siteselector/siteselector-directive.js
@@ -27,7 +27,7 @@ angular.module('piwikApp').directive('piwikSiteselector', function($document, pi
             allSitesText: '@',
             allSitesLocation: '@'
         },
-        templateUrl: 'plugins/CoreHome/javascripts/siteselector/siteselector.html?cb=' + piwik.cacheBuster,
+        templateUrl: 'plugins/CoreHome/angularjs/siteselector/siteselector.html?cb=' + piwik.cacheBuster,
         controller: 'SiteSelectorController',
         compile: function (element, attrs) {
 
diff --git a/plugins/CoreHome/javascripts/siteselector/siteselector-model.js b/plugins/CoreHome/angularjs/siteselector/siteselector-model.js
similarity index 100%
rename from plugins/CoreHome/javascripts/siteselector/siteselector-model.js
rename to plugins/CoreHome/angularjs/siteselector/siteselector-model.js
diff --git a/plugins/CoreHome/javascripts/siteselector/siteselector.html b/plugins/CoreHome/angularjs/siteselector/siteselector.html
similarity index 100%
rename from plugins/CoreHome/javascripts/siteselector/siteselector.html
rename to plugins/CoreHome/angularjs/siteselector/siteselector.html
diff --git a/plugins/CoreHome/javascripts/siteselector/siteselector.less b/plugins/CoreHome/angularjs/siteselector/siteselector.less
similarity index 100%
rename from plugins/CoreHome/javascripts/siteselector/siteselector.less
rename to plugins/CoreHome/angularjs/siteselector/siteselector.less
diff --git a/plugins/MultiSites/MultiSites.php b/plugins/MultiSites/MultiSites.php
index 337e054476e5c279511de476d916d670d8441687..284001d496a373c2fd1188e170756b5c6b26aadd 100644
--- a/plugins/MultiSites/MultiSites.php
+++ b/plugins/MultiSites/MultiSites.php
@@ -102,15 +102,15 @@ class MultiSites extends \Piwik\Plugin
 
     public function getJsFiles(&$jsFiles)
     {
-        $jsFiles[] = "plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-model.js";
-        $jsFiles[] = "plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-controller.js";
-        $jsFiles[] = "plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-filter.js";
-        $jsFiles[] = "plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-directive.js";
-        $jsFiles[] = "plugins/MultiSites/javascripts/multisites-site/multisites-site-directive.js";
+        $jsFiles[] = "plugins/MultiSites/angularjs/dashboard/dashboard-model.js";
+        $jsFiles[] = "plugins/MultiSites/angularjs/dashboard/dashboard-controller.js";
+        $jsFiles[] = "plugins/MultiSites/angularjs/dashboard/dashboard-filter.js";
+        $jsFiles[] = "plugins/MultiSites/angularjs/dashboard/dashboard-directive.js";
+        $jsFiles[] = "plugins/MultiSites/angularjs/site/site-directive.js";
     }
 
     public function getStylesheetFiles(&$stylesheets)
     {
-        $stylesheets[] = "plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard.less";
+        $stylesheets[] = "plugins/MultiSites/angularjs/dashboard/dashboard.less";
     }
 }
diff --git a/plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-controller.js b/plugins/MultiSites/angularjs/dashboard/dashboard-controller.js
similarity index 100%
rename from plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-controller.js
rename to plugins/MultiSites/angularjs/dashboard/dashboard-controller.js
diff --git a/plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-directive.js b/plugins/MultiSites/angularjs/dashboard/dashboard-directive.js
similarity index 88%
rename from plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-directive.js
rename to plugins/MultiSites/angularjs/dashboard/dashboard-directive.js
index f29ea8876c8ebb18e612b72185d3aa5096dcecaa..5a8da8170d3dbc566925116a4c66198428b2aa49 100644
--- a/plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-directive.js
+++ b/plugins/MultiSites/angularjs/dashboard/dashboard-directive.js
@@ -26,7 +26,7 @@ angular.module('piwikApp').directive('piwikMultisitesDashboard', function($docum
             showSparklines: '@',
             dateSparkline: '@'
         },
-        templateUrl: 'plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard.html?cb=' + piwik.cacheBuster,
+        templateUrl: 'plugins/MultiSites/angularjs/dashboard/dashboard.html?cb=' + piwik.cacheBuster,
         controller: 'MultiSitesDashboardController',
         link: function (scope, element, attrs, controller) {
 
diff --git a/plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-filter.js b/plugins/MultiSites/angularjs/dashboard/dashboard-filter.js
similarity index 100%
rename from plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-filter.js
rename to plugins/MultiSites/angularjs/dashboard/dashboard-filter.js
diff --git a/plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-model.js b/plugins/MultiSites/angularjs/dashboard/dashboard-model.js
similarity index 100%
rename from plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard-model.js
rename to plugins/MultiSites/angularjs/dashboard/dashboard-model.js
diff --git a/plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard.html b/plugins/MultiSites/angularjs/dashboard/dashboard.html
similarity index 100%
rename from plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard.html
rename to plugins/MultiSites/angularjs/dashboard/dashboard.html
diff --git a/plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard.less b/plugins/MultiSites/angularjs/dashboard/dashboard.less
similarity index 100%
rename from plugins/MultiSites/javascripts/multisites-dashboard/multisites-dashboard.less
rename to plugins/MultiSites/angularjs/dashboard/dashboard.less
diff --git a/plugins/MultiSites/javascripts/multisites-site/multisites-site-directive.js b/plugins/MultiSites/angularjs/site/site-directive.js
similarity index 94%
rename from plugins/MultiSites/javascripts/multisites-site/multisites-site-directive.js
rename to plugins/MultiSites/angularjs/site/site-directive.js
index 14875dd3f6cad199192eecc428eb07c40d6c3f2c..d118a09889aec2839db9e32c4a198d562fbc6ca6 100644
--- a/plugins/MultiSites/javascripts/multisites-site/multisites-site-directive.js
+++ b/plugins/MultiSites/angularjs/site/site-directive.js
@@ -29,7 +29,7 @@ angular.module('piwikApp').directive('piwikMultisitesSite', function($document,
             dateSparkline: '=',
             displayRevenueColumn: '='
         },
-        templateUrl: 'plugins/MultiSites/javascripts/multisites-site/multisites-site.html?cb=' + piwik.cacheBuster,
+        templateUrl: 'plugins/MultiSites/angularjs/site/site.html?cb=' + piwik.cacheBuster,
         controller: function ($scope) {
 
             $scope.period   = piwik.period;
diff --git a/plugins/MultiSites/javascripts/multisites-site/multisites-site.html b/plugins/MultiSites/angularjs/site/site.html
similarity index 100%
rename from plugins/MultiSites/javascripts/multisites-site/multisites-site.html
rename to plugins/MultiSites/angularjs/site/site.html
diff --git a/plugins/SecurityInfo b/plugins/SecurityInfo
index f9aabdf4a4112b3c0505257978435dcee4039471..cd98a60c785ce56b45e4d142e9af3a470619a60b 160000
--- a/plugins/SecurityInfo
+++ b/plugins/SecurityInfo
@@ -1 +1 @@
-Subproject commit f9aabdf4a4112b3c0505257978435dcee4039471
+Subproject commit cd98a60c785ce56b45e4d142e9af3a470619a60b
diff --git a/plugins/TasksTimetable b/plugins/TasksTimetable
index 3189dec95a3b7be6e00a3d407837b26221513cdd..f6e252d5dc5e3cf004263f7450c2ca55bd2c5a71 160000
--- a/plugins/TasksTimetable
+++ b/plugins/TasksTimetable
@@ -1 +1 @@
-Subproject commit 3189dec95a3b7be6e00a3d407837b26221513cdd
+Subproject commit f6e252d5dc5e3cf004263f7450c2ca55bd2c5a71
diff --git a/plugins/TreemapVisualization b/plugins/TreemapVisualization
index 19978cb7cd926ec0fba111ce257b8f0450f34ce8..2cb15300a88f7ff2a1fc27ef633a1a1f4d5fef09 160000
--- a/plugins/TreemapVisualization
+++ b/plugins/TreemapVisualization
@@ -1 +1 @@
-Subproject commit 19978cb7cd926ec0fba111ce257b8f0450f34ce8
+Subproject commit 2cb15300a88f7ff2a1fc27ef633a1a1f4d5fef09
diff --git a/plugins/Zeitgeist/stylesheets/base.less b/plugins/Zeitgeist/stylesheets/base.less
index f6b45e8a4d7a1b7d35a6761b6994de99dd45f626..5fc643c4ddc40fa82429e8076d1187e0d6ec92b0 100644
--- a/plugins/Zeitgeist/stylesheets/base.less
+++ b/plugins/Zeitgeist/stylesheets/base.less
@@ -16,7 +16,7 @@
 
 @import "ui/_headerMessage.less";
 
-@import "../../CoreHome/javascripts/siteselector/siteselector.less";
+@import "../../CoreHome/angularjs/siteselector/siteselector.less";
 
 @import "ui/_periodSelect.less";