diff --git a/plugins/CoreHome/angularjs/reporting-menu/reportingmenu-model.js b/plugins/CoreHome/angularjs/reporting-menu/reportingmenu-model.js
index 1ac9e223f34815f378ece2bbbfdd970b9ae7c0c7..7b999aab08f746bbc90652790191b56dcdd6fd87 100644
--- a/plugins/CoreHome/angularjs/reporting-menu/reportingmenu-model.js
+++ b/plugins/CoreHome/angularjs/reporting-menu/reportingmenu-model.js
@@ -30,6 +30,7 @@
         {
             var foundCategory = null;
             var foundSubcategory = null;
+            var foundSubSubcategory = null;
 
             angular.forEach(model.menu, function (category) {
                 if (category.id !== categoryId) {
@@ -40,10 +41,20 @@
                         foundCategory = category;
                         foundSubcategory = subcategory;
                     }
+
+                    if (subcategory.isGroup) {
+                        angular.forEach(subcategory.subcategories, function (subcat) {
+                            if (subcat.id === subcategoryId) {
+                                foundCategory = category;
+                                foundSubcategory = subcategory;
+                                foundSubSubcategory = subcat;
+                            }
+                        });
+                    }
                 });
             });
 
-            return {category: foundCategory, subcategory: foundSubcategory};
+            return {category: foundCategory, subcategory: foundSubcategory, subsubcategory: foundSubSubcategory};
         }
 
         function buildMenuFromPages(pages)
@@ -77,7 +88,7 @@
                     if (page.category.id === categoryId) {
                         var subcategory = page.subcategory;
 
-                        if (subcategory.id === activeSubcategory) {
+                        if (subcategory.id === activeSubcategory && categoryId === activeCategory) {
                             subcategory.active = true;
                         }
 
diff --git a/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.controller.js b/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.controller.js
index 57d202b250eab222b5768c66fb58efee4f23f6da..719058da2954004eb4bc8b4dd40fd6351272636f 100644
--- a/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.controller.js
+++ b/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.controller.js
@@ -12,6 +12,13 @@
     function ReportingMenuController($scope, piwik, $location, $timeout, menuModel, $rootScope) {
 
         function markAllCategoriesAsInactive()
+        {
+            angular.forEach(menuModel.menu, function (cat) {
+                cat.active = false;
+            });
+        }
+
+        function markAllCategoriesAndChildrenInactive()
         {
             angular.forEach(menuModel.menu, function (cat) {
                 cat.active = false;
@@ -40,15 +47,19 @@
         $scope.menuModel = menuModel;
 
         // highlight the currently hovered subcategory (and category)
-        function enterSubcategory(category, subcategory) {
+        function enterSubcategory(category, subcategory, subsubcategory) {
             if (!category || !subcategory) {
                 return;
             }
 
-            markAllCategoriesAsInactive();
+            markAllCategoriesAndChildrenInactive();
 
             category.active = true;
             subcategory.active = true;
+
+            if (subsubcategory) {
+                subsubcategory.active = true;
+            }
         };
 
         var idSite = getUrlParam('idSite');
@@ -70,6 +81,11 @@
             return url;
         }
 
+        $scope.loadCategory = function (category) {
+            markAllCategoriesAsInactive();
+            category.active = true;
+        };
+
         $scope.loadSubcategory = function (category, subcategory) {
             if (subcategory && subcategory.active) {
                 // this menu item is already active, a location change success would not be triggered,
@@ -95,7 +111,7 @@
             }
 
             var found = menuModel.findSubcategory(category, subcategory);
-            enterSubcategory(found.category, found.subcategory);
+            enterSubcategory(found.category, found.subcategory, found.subsubcategory);
         });
 
     }
diff --git a/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.directive.html b/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.directive.html
index c31a66a602d17272f3dd3f7f1c716f874e0ead21..8cf6a9a67b9a60c38c58a52c6452eccd1ce0d06c 100644
--- a/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.directive.html
+++ b/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.directive.html
@@ -3,8 +3,8 @@
         class="menuTab"
         ng-class="{'active': category.active}">
         <a class="item"
-           ng-href="#?{{ makeUrl(category,category.subcategories[0]) }}"
-           ng-click="loadSubcategory(category, category.subcategories[0])">
+           href=""
+           ng-click="loadCategory(category)">
             <span class="menu-icon {{ category.icon ? category.icon : 'icon-arrow-right' }}"></span>{{ category.name }}
             <span class="hidden">
              {{ 'CoreHome_Menu'|translate }}
diff --git a/plugins/CoreHome/angularjs/siteselector/siteselector.directive.js b/plugins/CoreHome/angularjs/siteselector/siteselector.directive.js
index ba5c492cb84f57d045807b317e69044a7b817ece..40996d2b57f7634c779d352fb77011b2abfdf629 100644
--- a/plugins/CoreHome/angularjs/siteselector/siteselector.directive.js
+++ b/plugins/CoreHome/angularjs/siteselector/siteselector.directive.js
@@ -63,7 +63,6 @@
 
                 return function (scope, element, attrs, ngModel) {
                     scope.selectedSite = {id: attrs.siteid, name: attrs.sitename};
-                    scope.model.loadInitialSites();
 
                     if (ngModel) {
                         ngModel.$setViewValue(scope.selectedSite);
diff --git a/plugins/CoreHome/angularjs/widget-loader/widgetloader.directive.js b/plugins/CoreHome/angularjs/widget-loader/widgetloader.directive.js
index 4e1859e789f1dfc7ce4af65327898f89ea0b396a..b1d49579fce858fcc8f74b0ded5c0c2921589fbc 100644
--- a/plugins/CoreHome/angularjs/widget-loader/widgetloader.directive.js
+++ b/plugins/CoreHome/angularjs/widget-loader/widgetloader.directive.js
@@ -19,9 +19,9 @@
 (function () {
     angular.module('piwikApp').directive('piwikWidgetLoader', piwikWidgetLoader);
 
-    piwikWidgetLoader.$inject = ['piwik', 'piwikUrl', '$http', '$compile', '$q'];
+    piwikWidgetLoader.$inject = ['piwik', 'piwikUrl', '$http', '$compile', '$q', '$location'];
 
-    function piwikWidgetLoader(piwik, piwikUrl, $http, $compile, $q){
+    function piwikWidgetLoader(piwik, piwikUrl, $http, $compile, $q, $location){
         return {
             restrict: 'A',
             transclude: true,
@@ -60,17 +60,18 @@
 
                         var url = $.param(parameters);
 
-                        var idSite  = piwikUrl.getSearchParam('idSite');
-                        var period  = piwikUrl.getSearchParam('period');
-                        var date    = piwikUrl.getSearchParam('date');
-                        var segment = piwikUrl.getSearchParam('segment');
+                        var $urlParams = $location.search();
+                        $urlParams = angular.copy($urlParams);
+                        delete $urlParams['category'];
+                        delete $urlParams['subcategory'];
 
-                        url += '&idSite=' + idSite + '&period=' + period;
-                        url += '&date=' + date + '&random=' + parseInt(Math.random() * 10000);
+                        angular.forEach($urlParams, function (value, key) {
+                            if (!(key in parameters)) {
+                                url += '&' + key + '=' + piwikUrl.getSearchParam(key);
+                            }
+                        });
 
-                        if (segment) {
-                            url += '&segment=' + segment;
-                        }
+                        url += '&random=' + parseInt(Math.random() * 10000);
 
                         return '?' + url;
                     }
diff --git a/plugins/CoreHome/javascripts/corehome.js b/plugins/CoreHome/javascripts/corehome.js
index f2a7468d6a82c5e2e69fadfd6b08de797d0243c3..7b145155384c0ad4330e9f437f8bf70cc1793a44 100755
--- a/plugins/CoreHome/javascripts/corehome.js
+++ b/plugins/CoreHome/javascripts/corehome.js
@@ -15,6 +15,8 @@
 
         var headerMessageParent = $('#header_message').parent();
 
+        initTopControls();
+
         // when 'check for updates...' link is clicked, force a check & display the result
         headerMessageParent.on('click', '#updateCheckLinkContainer', function (e) {
             e.preventDefault();
diff --git a/plugins/CoreHome/javascripts/top_controls.js b/plugins/CoreHome/javascripts/top_controls.js
index 38b069d6c59e26b1de1552ce9eb4320c3ec508c7..c94bcc128b44c130971293fb7468332ea6af48ed 100644
--- a/plugins/CoreHome/javascripts/top_controls.js
+++ b/plugins/CoreHome/javascripts/top_controls.js
@@ -62,6 +62,5 @@ function initTopControls() {
                 header.css('right', (Math.abs(overlap) + 18) * -1);
             }
         }
-
     }
 }
\ No newline at end of file
diff --git a/plugins/Dashboard/angularjs/dashboard/dashboard.directive.js b/plugins/Dashboard/angularjs/dashboard/dashboard.directive.js
index b9db49f4b37882ce78ae4bfb516188f2b1c324b2..9af79047f791e2aadea265a185d719102b1c6817 100644
--- a/plugins/Dashboard/angularjs/dashboard/dashboard.directive.js
+++ b/plugins/Dashboard/angularjs/dashboard/dashboard.directive.js
@@ -20,10 +20,11 @@
             $('.dashboardSettings').show();
             initTopControls();
 
-            // Embed dashboard
+            // Embed dashboard / exported as widget
             if (!$('#topBars').length) {
                 $('.dashboardSettings').after($('#Dashboard'));
-                $('#Dashboard_embeddedIndex_' + dashboardId).addClass('sfHover');
+                $('#Dashboard ul li').removeClass('active');
+                $('#Dashboard_embeddedIndex_' + dashboardId).addClass('active');
             }
 
             widgetsHelper.getAvailableWidgets();
diff --git a/plugins/Dashboard/javascripts/dashboardObject.js b/plugins/Dashboard/javascripts/dashboardObject.js
index beb590c4f666d335cc18733fad6c4e01ee239c8d..457fc67f7a860bfeec5ba1f51d447806cf35df3f 100644
--- a/plugins/Dashboard/javascripts/dashboardObject.js
+++ b/plugins/Dashboard/javascripts/dashboardObject.js
@@ -536,11 +536,11 @@
 
                 var idDashboard = $(this).attr('data-idDashboard');
 
-                $('#Dashboard ul li').removeClass('sfHover');
+                $('#Dashboard ul li').removeClass('active');
 
                 methods.loadDashboard.apply(_self, [idDashboard]);
 
-                $(this).closest('li').addClass('sfHover');
+                $(this).closest('li').addClass('active');
             });
         };
 
diff --git a/plugins/Goals/Menu.php b/plugins/Goals/Menu.php
index 503c7e0430fec5ee7732b68a7cda6620fa86d22e..258a0677e23e6892c9cc96a7a6e967c01a0fbc08 100644
--- a/plugins/Goals/Menu.php
+++ b/plugins/Goals/Menu.php
@@ -9,11 +9,9 @@
 namespace Piwik\Plugins\Goals;
 
 use Piwik\Common;
-use Piwik\Menu\Group;
 use Piwik\Menu\MenuUser;
 use Piwik\Piwik;
 use Piwik\Plugins\UsersManager\UserPreferences;
-use Piwik\Translate;
 
 class Menu extends \Piwik\Plugin\Menu
 {
@@ -25,7 +23,6 @@ class Menu extends \Piwik\Plugin\Menu
         if (Piwik::isUserHasAdminAccess($idSite)) {
             $menu->addManageItem('Goals_Goals', $this->urlForAction('manage', array('idSite' => $idSite)), 1);
         }
-
     }
 
     private function getIdSite($default = null)