diff --git a/core/Config.php b/core/Config.php
index ffc095d038c77dbbf39de77f3e75454aaf76dfe1..1ed8ddee47cc874674d2339eeb18c3eff55891fc 100644
--- a/core/Config.php
+++ b/core/Config.php
@@ -13,8 +13,6 @@ namespace Piwik;
 
 use Exception;
 
-require_once PIWIK_INCLUDE_PATH . '/core/functions.php';
-
 /**
  * For general performance (and specifically, the Tracker), we use deferred (lazy) initialization
  * and cache sections.  We also avoid any dependency on Zend Framework's Zend_Config.
diff --git a/core/Controller.php b/core/Controller.php
index 5eb739a937d4b2cdbb445e6c6f97b6d117fcbad4..dd3fe35bdebfd559c43034bf2b469ed54831c5bf 100644
--- a/core/Controller.php
+++ b/core/Controller.php
@@ -13,6 +13,7 @@ namespace Piwik;
 use Exception;
 use Piwik\API\Request;
 use Piwik\DataTable\Filter\CalculateEvolutionFilter;
+use Piwik\Menu\MenuTop;
 use Piwik\Period\Month;
 use Piwik\Period;
 use Piwik\Period\Range;
@@ -423,7 +424,7 @@ abstract class Controller
 
             $this->setBasicVariablesView($view);
 
-            $view->topMenu = Piwik_GetTopMenu();
+            $view->topMenu = MenuTop::getInstance()->getMenu();
         } catch (Exception $e) {
             Piwik_ExitWithMessage($e->getMessage(), $e->getTraceAsString());
         }
diff --git a/core/Controller/Admin.php b/core/Controller/Admin.php
index 75849258e582275efc90fe805ca3496d4baa00c0..a955403b6e001ca4cbea4794c4133754624dbb1f 100644
--- a/core/Controller/Admin.php
+++ b/core/Controller/Admin.php
@@ -12,6 +12,8 @@ namespace Piwik\Controller;
 
 use Piwik\Config;
 use Piwik\Controller;
+use Piwik\Menu\MenuAdmin;
+use Piwik\Menu\MenuTop;
 use Piwik\Piwik;
 use Piwik\PluginsManager;
 use Piwik\Url;
@@ -52,8 +54,8 @@ abstract class Admin extends Controller
             $view->statisticsNotRecorded = true;
         }
 
-        $view->topMenu = Piwik_GetTopMenu();
-        $view->currentAdminMenuName = \Piwik\Menu\Admin::getInstance()->getCurrentAdminMenuName();
+        $view->topMenu = MenuTop::getInstance()->getMenu();
+        $view->currentAdminMenuName = MenuAdmin::getInstance()->getCurrentAdminMenuName();
 
         $view->enableFrames = Config::getInstance()->General['enable_framed_settings'];
         if (!$view->enableFrames) {
@@ -83,7 +85,8 @@ abstract class Admin extends Controller
 
         self::checkPhpVersion($view);
 
-        $view->menu = Piwik_GetAdminMenu();
+        $adminMenu = MenuAdmin::getInstance()->getMenu();
+        $view->adminMenu = $adminMenu;
     }
 
     static protected function getPiwikVersion()
diff --git a/core/DataTable.php b/core/DataTable.php
index c09cb3bfe339ed7235a1f1370c4defe8752ed758..8bb6a93227de283f5a88e57e44eb6e98a9cc3fc9 100644
--- a/core/DataTable.php
+++ b/core/DataTable.php
@@ -1509,3 +1509,13 @@ class DataTable
         return $result;
     }
 }
+
+
+// Bridge for when serialized classes were not using namespaces yet (pre Piwik 2.0)
+class Piwik_DataTable_Row_DataTableSummary extends DataTableSummaryRow
+{
+}
+
+class Piwik_DataTable_Row extends Row
+{
+}
diff --git a/core/Menu/MenuAbstract.php b/core/Menu/MenuAbstract.php
index a0fa8c4c2ba836f049cd567b38448fcb853d6904..fc4eddb0ca88935a9706bc5804803ab31176265d 100644
--- a/core/Menu/MenuAbstract.php
+++ b/core/Menu/MenuAbstract.php
@@ -36,7 +36,7 @@ abstract class MenuAbstract
      *
      * @return Array
      */
-    public function get()
+    public function getMenu()
     {
         $this->buildMenu();
         $this->applyEdits();
@@ -55,7 +55,7 @@ abstract class MenuAbstract
      * @param int $order
      * @param bool|string $tooltip Tooltip to display.
      */
-    public function add($menuName, $subMenuName, $url, $displayedForCurrentUser, $order = 50, $tooltip = false)
+    public function add($menuName, $subMenuName, $url, $displayedForCurrentUser = true, $order = 50, $tooltip = false)
     {
         if ($displayedForCurrentUser) {
             // make sure the idSite value used is numeric (hack-y fix for #3426)
diff --git a/core/Menu/MenuAdmin.php b/core/Menu/MenuAdmin.php
index f34aa15865ab7cc33980c8883942a703cd0dc06b..852e252e647d958748b402f42f22b7d35a569450 100644
--- a/core/Menu/MenuAdmin.php
+++ b/core/Menu/MenuAdmin.php
@@ -20,7 +20,7 @@ class MenuAdmin extends MenuAbstract
     static private $instance = null;
 
     /**
-     * @return \Piwik\Menu\MenuAdmin
+     * @return MenuAdmin
      */
     static public function getInstance()
     {
@@ -63,7 +63,7 @@ class MenuAdmin extends MenuAbstract
              * ```
              * public function addMenuItems()
              * {
-             *     \Piwik\Menu\MenuAdmin::getInstance()->add(
+             *     MenuAdmin::getInstance()->add(
              *         'MenuName',
              *         'SubmenuName',
              *         array('module' => 'MyPlugin', 'action' => 'index'),
@@ -73,7 +73,7 @@ class MenuAdmin extends MenuAbstract
              * }
              * ```
              */
-            Piwik::postEvent('Menu.MenuAdmin.addItems');
+            Piwik::postEvent('Menu.Admin.addItems');
         }
         return parent::getMenu();
     }
@@ -85,7 +85,7 @@ class MenuAdmin extends MenuAbstract
      */
     function getCurrentAdminMenuName()
     {
-        $menu = \Piwik\Menu\MenuAdmin::getInstance();
+        $menu = MenuAdmin::getInstance()->getMenu();
         $currentModule = Piwik::getModule();
         $currentAction = Piwik::getAction();
         foreach ($menu as $submenu) {
diff --git a/core/Menu/MenuTop.php b/core/Menu/MenuTop.php
index 8573e527fd6e51c81f830e2f45c6cf135a9710d7..29f056367a896f6faff724d157bfddee4250925a 100644
--- a/core/Menu/MenuTop.php
+++ b/core/Menu/MenuTop.php
@@ -20,7 +20,7 @@ class MenuTop extends MenuAbstract
     static private $instance = null;
 
     /**
-     * @return \Piwik\Menu\MenuTop
+     * @return MenuTop
      */
     static public function getInstance()
     {
@@ -30,6 +30,28 @@ class MenuTop extends MenuAbstract
         return self::$instance;
     }
 
+
+    /**
+     * Adds a new entry to the TopMenu.
+     *
+     * @param string $topMenuName
+     * @param string $data
+     * @param boolean $displayedForCurrentUser
+     * @param int $order
+     * @param bool $isHTML
+     * @param bool|string $tooltip Tooltip to display.
+     * @api
+     */
+    public static function addEntry($topMenuName, $data, $displayedForCurrentUser = true, $order = 10, $isHTML = false, $tooltip = false)
+    {
+        if ($isHTML) {
+            MenuTop::getInstance()->addHtml($topMenuName, $data, $displayedForCurrentUser, $order, $tooltip);
+        } else {
+            MenuTop::getInstance()->add($topMenuName, null, $data, $displayedForCurrentUser, $order, $tooltip);
+        }
+    }
+
+
     /**
      * Directly adds a menu entry containing html.
      *
@@ -52,7 +74,7 @@ class MenuTop extends MenuAbstract
     }
 
     /**
-     * Triggers the Menu.MenuTop.addItems hook and returns the menu.
+     * Triggers the Menu.Top.addItems hook and returns the menu.
      *
      * @return Array
      */
@@ -71,7 +93,7 @@ class MenuTop extends MenuAbstract
              * ```
              * public function addMenuItems()
              * {
-             *     Piwik_AddTopMenu(
+             *     MenuTop::addEntry(
              *         'TopMenuName',
              *         array('module' => 'MyPlugin', 'action' => 'index'),
              *         Piwik::isUserIsSuperUser(),
@@ -80,7 +102,7 @@ class MenuTop extends MenuAbstract
              * }
              * ```
              */
-            Piwik::postEvent('Menu.MenuTop.addItems');
+            Piwik::postEvent('Menu.Top.addItems');
         }
         return parent::getMenu();
     }
diff --git a/core/Url.php b/core/Url.php
index 6a4f4a4ad72fa0374f35f2d39f097d3915eab8ed..bb16135e84ad33f4eb0ddaed6a4b2abae2a2dd39 100644
--- a/core/Url.php
+++ b/core/Url.php
@@ -343,6 +343,7 @@ class Url
      */
     static function getCurrentQueryStringWithParametersModified($params)
     {
+        var_dump($params);
         $urlValues = self::getArrayFromCurrentQueryString();
         foreach ($params as $key => $value) {
             $urlValues[$key] = $value;
diff --git a/index.php b/index.php
index d464377c568fe19e8967309a848848a0d8ce32c4..ba74026dce2f9bb6806aaae0cdd70e0aff99ec49 100644
--- a/index.php
+++ b/index.php
@@ -38,7 +38,6 @@ session_cache_limiter('nocache');
 @date_default_timezone_set('UTC');
 require_once PIWIK_INCLUDE_PATH . '/vendor/autoload.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
-require_once PIWIK_INCLUDE_PATH . '/core/functions.php';
 
 if(!defined('PIWIK_PRINT_ERROR_BACKTRACE')) {
     define('PIWIK_PRINT_ERROR_BACKTRACE', false);
diff --git a/js/index.php b/js/index.php
index b47cc5c2f3f2fb90868e5dc7dab235964d55c6c8..cece8a336f992f99eef3b905089c3b63398b7cbc 100644
--- a/js/index.php
+++ b/js/index.php
@@ -25,7 +25,6 @@ define('PIWIK_DOCUMENT_ROOT', '..');
 define('PIWIK_USER_PATH', '..');
 
 require_once PIWIK_INCLUDE_PATH . '/libs/upgradephp/upgrade.php';
-require_once PIWIK_INCLUDE_PATH . '/core/functions.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
 
 $file = '../piwik.js';
diff --git a/piwik.php b/piwik.php
index f3ba98e68b0de9896fd1e1b04491a847228b5542..e4ab339d589c7e3ce4868e2e57d250ffd2d56e78 100644
--- a/piwik.php
+++ b/piwik.php
@@ -36,7 +36,6 @@ if (!defined('PIWIK_INCLUDE_PATH')) {
 @ignore_user_abort(true);
 
 require_once PIWIK_INCLUDE_PATH . '/libs/upgradephp/upgrade.php';
-require_once PIWIK_INCLUDE_PATH . '/core/functions.php';
 require_once PIWIK_INCLUDE_PATH . '/core/PluginsManager.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Plugin.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Common.php';
diff --git a/plugins/API/API.php b/plugins/API/API.php
index 1cc57b35511870dc20e12f0d156b650a3982931a..fda5c70ca14ed4904cc8a47067890eed5b480c4f 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -18,6 +18,7 @@ use Piwik\DataTable\Row;
 use Piwik\DataTable;
 use Piwik\Date;
 use Piwik\Filesystem;
+use Piwik\Menu\MenuTop;
 use Piwik\Metrics;
 use Piwik\Piwik;
 use Piwik\SettingsPiwik;
@@ -666,7 +667,7 @@ class Plugin extends \Piwik\Plugin
         $apiUrlParams = array('module' => 'API', 'action' => 'listAllAPI', 'segment' => false);
         $tooltip = Piwik::translate('API_TopLinkTooltip');
 
-        Piwik_AddTopMenu('General_API', $apiUrlParams, true, 7, $isHTML = false, $tooltip);
+        MenuTop::addEntry('General_API', $apiUrlParams, true, 7, $isHTML = false, $tooltip);
 
         $this->addTopMenuMobileApp();
     }
@@ -679,7 +680,7 @@ class Plugin extends \Piwik\Plugin
         require_once PIWIK_INCLUDE_PATH . '/libs/UserAgentParser/UserAgentParser.php';
         $os = \UserAgentParser::getOperatingSystem($_SERVER['HTTP_USER_AGENT']);
         if ($os && in_array($os['id'], array('AND', 'IPD', 'IPA', 'IPH'))) {
-            Piwik_AddTopMenu('Piwik Mobile App', array('module' => 'Proxy', 'action' => 'redirect', 'url' => 'http://piwik.org/mobile/'), true, 4);
+            MenuTop::addEntry('Piwik Mobile App', array('module' => 'Proxy', 'action' => 'redirect', 'url' => 'http://piwik.org/mobile/'), true, 4);
         }
     }
 
diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php
index 9f904d74099cd03d8da43a703f050e06c2054a7f..97398fee586490b60ba0db06b39432e8902722c4 100644
--- a/plugins/Actions/Actions.php
+++ b/plugins/Actions/Actions.php
@@ -14,6 +14,7 @@ use Piwik\API\Request;
 use Piwik\ArchiveProcessor;
 use Piwik\Common;
 use Piwik\Db;
+use Piwik\Menu\MenuMain;
 use Piwik\MetricsFormatter;
 use Piwik\Piwik;
 use Piwik\SegmentExpression;
@@ -565,16 +566,16 @@ class Actions extends \Piwik\Plugin
 
     function addMenus()
     {
-        Piwik_AddMenu('General_Actions', '', array('module' => 'Actions', 'action' => 'indexPageUrls'), true, 15);
-        Piwik_AddMenu('General_Actions', 'General_Pages', array('module' => 'Actions', 'action' => 'indexPageUrls'), true, 1);
-        Piwik_AddMenu('General_Actions', 'Actions_SubmenuPagesEntry', array('module' => 'Actions', 'action' => 'indexEntryPageUrls'), true, 2);
-        Piwik_AddMenu('General_Actions', 'Actions_SubmenuPagesExit', array('module' => 'Actions', 'action' => 'indexExitPageUrls'), true, 3);
-        Piwik_AddMenu('General_Actions', 'Actions_SubmenuPageTitles', array('module' => 'Actions', 'action' => 'indexPageTitles'), true, 4);
-        Piwik_AddMenu('General_Actions', 'General_Outlinks', array('module' => 'Actions', 'action' => 'indexOutlinks'), true, 6);
-        Piwik_AddMenu('General_Actions', 'General_Downloads', array('module' => 'Actions', 'action' => 'indexDownloads'), true, 7);
+        MenuMain::getInstance()->add('General_Actions', '', array('module' => 'Actions', 'action' => 'indexPageUrls'), true, 15);
+        MenuMain::getInstance()->add('General_Actions', 'General_Pages', array('module' => 'Actions', 'action' => 'indexPageUrls'), true, 1);
+        MenuMain::getInstance()->add('General_Actions', 'Actions_SubmenuPagesEntry', array('module' => 'Actions', 'action' => 'indexEntryPageUrls'), true, 2);
+        MenuMain::getInstance()->add('General_Actions', 'Actions_SubmenuPagesExit', array('module' => 'Actions', 'action' => 'indexExitPageUrls'), true, 3);
+        MenuMain::getInstance()->add('General_Actions', 'Actions_SubmenuPageTitles', array('module' => 'Actions', 'action' => 'indexPageTitles'), true, 4);
+        MenuMain::getInstance()->add('General_Actions', 'General_Outlinks', array('module' => 'Actions', 'action' => 'indexOutlinks'), true, 6);
+        MenuMain::getInstance()->add('General_Actions', 'General_Downloads', array('module' => 'Actions', 'action' => 'indexDownloads'), true, 7);
 
         if ($this->isSiteSearchEnabled()) {
-            Piwik_AddMenu('General_Actions', 'Actions_SubmenuSitesearch', array('module' => 'Actions', 'action' => 'indexSiteSearch'), true, 5);
+            MenuMain::getInstance()->add('General_Actions', 'Actions_SubmenuSitesearch', array('module' => 'Actions', 'action' => 'indexSiteSearch'), true, 5);
         }
     }
 
diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php
index 77ed3e8f95d6bbbd0c845a4ff950cd18b97a83b8..ffedbcf624d95be22d7ed6ddbc680d3145b42e74 100644
--- a/plugins/CoreAdminHome/Controller.php
+++ b/plugins/CoreAdminHome/Controller.php
@@ -15,6 +15,7 @@ use Piwik\API\ResponseBuilder;
 use Piwik\ArchiveProcessor\Rules;
 use Piwik\Common;
 use Piwik\Config;
+use Piwik\Menu\MenuTop;
 use Piwik\Nonce;
 use Piwik\Piwik;
 use Piwik\Plugins\LanguagesManager\API as APILanguagesManager;
@@ -144,7 +145,7 @@ class Controller extends \Piwik\Controller\Admin
     {
         $view = new View('@CoreAdminHome/trackingCodeGenerator');
         $this->setBasicVariablesView($view);
-        $view->topMenu = Piwik_GetTopMenu();
+        $view->topMenu = MenuTop::getInstance()->getMenu();
 
         $viewableIdSites = APISitesManager::getInstance()->getSitesIdWithAtLeastViewAccess();
 
diff --git a/plugins/CoreAdminHome/CoreAdminHome.php b/plugins/CoreAdminHome/CoreAdminHome.php
index 24fb7e52b23fb3410620de0641975cccafc9c0ab..923c729555f802d0dcf255f784b66a659b3f707f 100644
--- a/plugins/CoreAdminHome/CoreAdminHome.php
+++ b/plugins/CoreAdminHome/CoreAdminHome.php
@@ -14,6 +14,7 @@ use Piwik\DataAccess\ArchiveSelector;
 use Piwik\DataAccess\ArchiveTableCreator;
 use Piwik\Date;
 use Piwik\Db;
+use Piwik\Menu\MenuAdmin;
 use Piwik\Piwik;
 use Piwik\ScheduledTask;
 use Piwik\ScheduledTime\Daily;
@@ -80,14 +81,14 @@ class CoreAdminHome extends \Piwik\Plugin
 
     function addMenu()
     {
-        Piwik_AddAdminSubMenu('CoreAdminHome_MenuManage', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 1);
-        Piwik_AddAdminSubMenu('CoreAdminHome_MenuDiagnostic', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 6);
-        Piwik_AddAdminSubMenu('General_Settings', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 5);
-        Piwik_AddAdminSubMenu('General_Settings', 'CoreAdminHome_MenuGeneralSettings',
+        MenuAdmin::getInstance()->add('CoreAdminHome_MenuManage', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 1);
+        MenuAdmin::getInstance()->add('CoreAdminHome_MenuDiagnostic', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 6);
+        MenuAdmin::getInstance()->add('General_Settings', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 5);
+        MenuAdmin::getInstance()->add('General_Settings', 'CoreAdminHome_MenuGeneralSettings',
             array('module' => 'CoreAdminHome', 'action' => 'generalSettings'),
             Piwik::isUserHasSomeAdminAccess(),
             $order = 6);
-        Piwik_AddAdminSubMenu('CoreAdminHome_MenuManage', 'CoreAdminHome_TrackingCode',
+        MenuAdmin::getInstance()->add('CoreAdminHome_MenuManage', 'CoreAdminHome_TrackingCode',
             array('module' => 'CoreAdminHome', 'action' => 'trackingCodeGenerator'),
             Piwik::isUserHasSomeAdminAccess(),
             $order = 4);
diff --git a/plugins/CoreAdminHome/templates/_menu.twig b/plugins/CoreAdminHome/templates/_menu.twig
index 70ba3572c2819487ce551fa6cbb8c97bf5457033..5ec9b95cbd621b66496374b9de2c9f45cdc258b2 100644
--- a/plugins/CoreAdminHome/templates/_menu.twig
+++ b/plugins/CoreAdminHome/templates/_menu.twig
@@ -1,7 +1,7 @@
-{% if menu|length > 1 %}
+{% if adminMenu|length > 1 %}
     <div class="Menu Menu--admin">
         <ul class="Menu-tabList">
-        {% for name,submenu in menu %}
+        {% for name,submenu in adminMenu %}
             {% if submenu._hasSubmenu %}
             <li>
                 <span>{{ name|translate }}</span>
diff --git a/plugins/CoreHome/Controller.php b/plugins/CoreHome/Controller.php
index 63053b7ca9c1a190517fff21cdca8ce2720b17eb..b201d304632968db51b95e7839101f8dc40c304e 100644
--- a/plugins/CoreHome/Controller.php
+++ b/plugins/CoreHome/Controller.php
@@ -15,6 +15,7 @@ use Piwik\API\Request;
 use Piwik\Common;
 use Piwik\Date;
 use Piwik\FrontController;
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\Plugins\CoreHome\DataTableRowAction\MultiRowEvolution;
 use Piwik\Plugins\CoreHome\DataTableRowAction\RowEvolution;
@@ -72,7 +73,7 @@ class Controller extends \Piwik\Controller
     {
         $view = new View('@CoreHome/getDefaultIndexView');
         $this->setGeneralVariablesView($view);
-        $view->menu = Piwik_GetMenu();
+        $view->menu = MenuMain::getInstance()->getMenu();
         $view->content = '';
         return $view;
     }
diff --git a/plugins/CorePluginsAdmin/CorePluginsAdmin.php b/plugins/CorePluginsAdmin/CorePluginsAdmin.php
index b1fe58b414208891fe15d16ccccfe0585c6c9cb9..c84fef6f72e3b8d013de16f1273629bfa32d72bc 100644
--- a/plugins/CorePluginsAdmin/CorePluginsAdmin.php
+++ b/plugins/CorePluginsAdmin/CorePluginsAdmin.php
@@ -10,6 +10,7 @@
  */
 namespace Piwik\Plugins\CorePluginsAdmin;
 
+use Piwik\Menu\MenuAdmin;
 use Piwik\Piwik;
 use Piwik\ScheduledTask;
 use Piwik\ScheduledTime\Daily;
@@ -71,16 +72,16 @@ class CorePluginsAdmin extends \Piwik\Plugin
             }
         }
 
-        Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', null, "", !Piwik::isUserIsAnonymous(), $order = 15);
-        Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', Piwik::translate('General_Plugins') . $pluginsUpdateMessage,
+        MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', null, "", !Piwik::isUserIsAnonymous(), $order = 15);
+        MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', Piwik::translate('General_Plugins') . $pluginsUpdateMessage,
             array('module' => 'CorePluginsAdmin', 'action' => 'plugins', 'activated' => ''),
             Piwik::isUserIsSuperUser(),
             $order = 1);
-        Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', Piwik::translate('CorePluginsAdmin_Themes') . $themesUpdateMessage,
+        MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', Piwik::translate('CorePluginsAdmin_Themes') . $themesUpdateMessage,
             array('module' => 'CorePluginsAdmin', 'action' => 'themes', 'activated' => ''),
             Piwik::isUserIsSuperUser(),
             $order = 3);
-        Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', 'CorePluginsAdmin_MenuExtend',
+        MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', 'CorePluginsAdmin_MenuExtend',
             array('module' => 'CorePluginsAdmin', 'action' => 'extend', 'activated' => ''),
             !Piwik::isUserIsAnonymous(),
             $order = 5);
diff --git a/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php b/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
index 342bd1bdb024f53cdf7b7a0fff363b75be4b3339..8fbf5e7e783afd3df81e07ddbe110afe06ff373a 100644
--- a/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
+++ b/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
@@ -14,6 +14,7 @@ namespace Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
 use Piwik\Common;
 use Piwik\DataTable;
 use Piwik\DataTable\Row;
+use Piwik\Menu\MenuMain;
 use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
 use Piwik\Url;
 use Piwik\ViewDataTable;
@@ -168,7 +169,7 @@ class Evolution extends JqplotDataGenerator
         foreach ($piwikParameters as $parameter) {
             unset($queryString[$parameter]);
         }
-        if (\Piwik\Menu\Main::getInstance()->isUrlFound($queryString)) {
+        if (MenuMain::getInstance()->isUrlFound($queryString)) {
             return $queryString;
         }
         return false;
diff --git a/plugins/CustomVariables/CustomVariables.php b/plugins/CustomVariables/CustomVariables.php
index b6a5e72fd65ea5d7b76fb276398d49c8954e1057..763ee09634bbf4fe3880f0bd852b774364dd9cc5 100644
--- a/plugins/CustomVariables/CustomVariables.php
+++ b/plugins/CustomVariables/CustomVariables.php
@@ -11,6 +11,7 @@
 namespace Piwik\Plugins\CustomVariables;
 
 use Piwik\ArchiveProcessor;
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\Tracker;
 use Piwik\WidgetsList;
@@ -52,7 +53,7 @@ class CustomVariables extends \Piwik\Plugin
 
     public function addMenus()
     {
-        Piwik_AddMenu('General_Visitors', 'CustomVariables_CustomVariables', array('module' => 'CustomVariables', 'action' => 'index'), $display = true, $order = 50);
+        MenuMain::getInstance()->add('General_Visitors', 'CustomVariables_CustomVariables', array('module' => 'CustomVariables', 'action' => 'index'), $display = true, $order = 50);
     }
 
     /**
diff --git a/plugins/DBStats/DBStats.php b/plugins/DBStats/DBStats.php
index c1f3c58f59618a308ebb987ec003dd024e97d161..be12d261fa856f28b5e32b07ab752ff8224f9e3f 100644
--- a/plugins/DBStats/DBStats.php
+++ b/plugins/DBStats/DBStats.php
@@ -13,6 +13,7 @@ namespace Piwik\Plugins\DBStats;
 use Piwik\Common;
 
 use Piwik\Date;
+use Piwik\Menu\MenuAdmin;
 use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\ScheduledTask;
@@ -41,7 +42,7 @@ class DBStats extends \Piwik\Plugin
 
     function addMenu()
     {
-        Piwik_AddAdminSubMenu('CoreAdminHome_MenuDiagnostic', 'DBStats_DatabaseUsage',
+        MenuAdmin::getInstance()->add('CoreAdminHome_MenuDiagnostic', 'DBStats_DatabaseUsage',
             array('module' => 'DBStats', 'action' => 'index'),
             Piwik::isUserIsSuperUser(),
             $order = 6);
diff --git a/plugins/Dashboard/Dashboard.php b/plugins/Dashboard/Dashboard.php
index 6311043d99dee830729b52f977e322be217053fd..dd6a0741fd370881d311b43bfbaef824a88f1619 100644
--- a/plugins/Dashboard/Dashboard.php
+++ b/plugins/Dashboard/Dashboard.php
@@ -13,6 +13,8 @@ namespace Piwik\Plugins\Dashboard;
 use Exception;
 use Piwik\Common;
 use Piwik\Db;
+use Piwik\Menu\MenuMain;
+use Piwik\Menu\MenuTop;
 use Piwik\Piwik;
 use Piwik\Site;
 use Piwik\WidgetsList;
@@ -198,7 +200,7 @@ class Dashboard extends \Piwik\Plugin
 
     public function addMenus()
     {
-        Piwik_AddMenu('Dashboard_Dashboard', '', array('module' => 'Dashboard', 'action' => 'embeddedIndex', 'idDashboard' => 1), true, 5);
+        MenuMain::getInstance()->add('Dashboard_Dashboard', '', array('module' => 'Dashboard', 'action' => 'embeddedIndex', 'idDashboard' => 1), true, 5);
 
         if (!Piwik::isUserIsAnonymous()) {
             $login = Piwik::getCurrentUserLogin();
@@ -207,7 +209,7 @@ class Dashboard extends \Piwik\Plugin
             if (count($dashboards) > 1) {
                 $pos = 0;
                 foreach ($dashboards AS $dashboard) {
-                    Piwik_AddMenu('Dashboard_Dashboard', $dashboard['name'], array('module' => 'Dashboard', 'action' => 'embeddedIndex', 'idDashboard' => $dashboard['iddashboard']), true, $pos);
+                    MenuMain::getInstance()->add('Dashboard_Dashboard', $dashboard['name'], array('module' => 'Dashboard', 'action' => 'embeddedIndex', 'idDashboard' => $dashboard['iddashboard']), true, $pos);
                     $pos++;
                 }
             }
@@ -225,7 +227,7 @@ class Dashboard extends \Piwik\Plugin
         }
 
         $urlParams = array('module' => 'CoreHome', 'action' => 'index');
-        Piwik_AddTopMenu('Dashboard_Dashboard', $urlParams, true, 1, $isHTML = false, $tooltip);
+        MenuTop::addEntry('Dashboard_Dashboard', $urlParams, true, 1, $isHTML = false, $tooltip);
     }
 
     public function getJsFiles(&$jsFiles)
diff --git a/plugins/DevicesDetection/DevicesDetection.php b/plugins/DevicesDetection/DevicesDetection.php
index 01075107ec11b3a70c49b976433066e244d15bc7..b2d42e4390865069517914edfab0f4476bde0167 100644
--- a/plugins/DevicesDetection/DevicesDetection.php
+++ b/plugins/DevicesDetection/DevicesDetection.php
@@ -17,6 +17,7 @@ use Piwik\ArchiveProcessor;
 use Piwik\Common;
 use Piwik\Config;
 use Piwik\Db;
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\WidgetsList;
 use UserAgentParserEnhanced;
@@ -290,7 +291,7 @@ class DevicesDetection extends \Piwik\Plugin
 
     public function addMenu()
     {
-        Piwik_AddMenu('General_Visitors', 'DevicesDetection_submenu', array('module' => 'DevicesDetection', 'action' => 'index'));
+        MenuMain::getInstance()->add('General_Visitors', 'DevicesDetection_submenu', array('module' => 'DevicesDetection', 'action' => 'index'));
     }
 
     public function getReportDisplayProperties(&$properties)
diff --git a/plugins/ExamplePlugin/Controller.php b/plugins/ExamplePlugin/Controller.php
index 38104a177f1eed9ac31945ae082967590420a7f5..1dc8c07e5999cb46fa03bcff08b628aec6e6cad1 100644
--- a/plugins/ExamplePlugin/Controller.php
+++ b/plugins/ExamplePlugin/Controller.php
@@ -85,7 +85,7 @@ class Controller extends \Piwik\Controller
         $out .= '<code>$this->str_date</code> = current selected date in YYYY-MM-DD format<br />';
 
         $out .= '<h3>Misc</h3>';
-        $out .= '<code>Piwik_AddMenu( $mainMenuName, $subMenuName, $url );</code> - Adds an entry to the menu in the Piwik interface (See the example in the <a href="https://github.com/piwik/piwik/blob/1.0/plugins/UserCountry/UserCountry.php#L76">UserCountry Plugin file</a>)<br />';
+        $out .= '<code>\Piwik\Menu\Main::getInstance()->add( $mainMenuName, $subMenuName, $url );</code> - Adds an entry to the menu in the Piwik interface (See the example in the <a href="https://github.com/piwik/piwik/blob/1.0/plugins/UserCountry/UserCountry.php#L76">UserCountry Plugin file</a>)<br />';
         $out .= '<code>WidgetsList::add( $widgetCategory, $widgetName, $controllerName, $controllerAction, $customParameters = array());</code> - Adds a widget that users can add in the dashboard, or export using the Widgets link at the top of the screen. See the example in the <a href="https://github.com/piwik/piwik/blob/1.0/plugins/UserCountry/UserCountry.php#L70">UserCountry Plugin file</a> or any other plugin)<br />';
         $out .= '<code>Common::prefixTable("site")</code> = <b>' . Common::prefixTable("site") . '</b><br />';
 
diff --git a/plugins/ExampleUI/ExampleUI.php b/plugins/ExampleUI/ExampleUI.php
index 2c22bb90b7ad415cee40d9eba7928d7f53ad14d8..e5d11ffddd2025c647f2997f7deb7c34e86ba2c6 100644
--- a/plugins/ExampleUI/ExampleUI.php
+++ b/plugins/ExampleUI/ExampleUI.php
@@ -10,6 +10,7 @@
  */
 
 namespace Piwik\Plugins\ExampleUI;
+use Piwik\Menu\MenuMain;
 
 /**
  * @package ExampleUI
@@ -28,7 +29,7 @@ class ExampleUI extends \Piwik\Plugin
 
     function addMenus()
     {
-        Piwik_AddMenu('UI Framework', '', array('module' => 'ExampleUI', 'action' => 'dataTables'), true, 30);
+        MenuMain::getInstance()->add('UI Framework', '', array('module' => 'ExampleUI', 'action' => 'dataTables'), true, 30);
 
         $this->addSubMenu('Data tables', 'dataTables', 1);
         $this->addSubMenu('Bar graph', 'barGraph', 2);
@@ -40,6 +41,6 @@ class ExampleUI extends \Piwik\Plugin
 
     private function addSubMenu($subMenu, $action, $order)
     {
-        Piwik_AddMenu('UI Framework', $subMenu, array('module' => 'ExampleUI', 'action' => $action), true, $order);
+        MenuMain::getInstance()->add('UI Framework', $subMenu, array('module' => 'ExampleUI', 'action' => $action), true, $order);
     }
 }
diff --git a/plugins/Feedback/Feedback.php b/plugins/Feedback/Feedback.php
index f59e988a24293945e71d97c1416f44870f874971..1e39ff47f5d415031cf09523178cea914cb14fc1 100644
--- a/plugins/Feedback/Feedback.php
+++ b/plugins/Feedback/Feedback.php
@@ -9,6 +9,7 @@
  * @package Feedback
  */
 namespace Piwik\Plugins\Feedback;
+use Piwik\Menu\MenuTop;
 use Piwik\Piwik;
 
 
@@ -34,7 +35,7 @@ class Feedback extends \Piwik\Plugin
 
     public function addTopMenu()
     {
-        Piwik_AddTopMenu(
+        MenuTop::addEntry(
             'General_GiveUsYourFeedback',
             array('module' => 'Feedback', 'action' => 'index', 'segment' => false),
             true,
diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php
index 8e7955c75c195e373adb7cdf2cd410f3c657e727..1d60a52966fddb8cd818672ca0e6241abc09b405 100644
--- a/plugins/Goals/Goals.php
+++ b/plugins/Goals/Goals.php
@@ -14,6 +14,7 @@ use Piwik\ArchiveProcessor;
 use Piwik\Common;
 
 use Piwik\Db;
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\Site;
 use Piwik\Tracker\GoalManager;
@@ -458,18 +459,18 @@ class Goals extends \Piwik\Plugin
         $mainGoalMenu = $this->getGoalCategoryName($idSite);
         $site = new Site($idSite);
         if (count($goals) == 0) {
-            Piwik_AddMenu($mainGoalMenu, '', array(
+            MenuMain::getInstance()->add($mainGoalMenu, '', array(
                                                   'module' => 'Goals',
                                                   'action' => ($site->isEcommerceEnabled() ? 'ecommerceReport' : 'addNewGoal'),
                                                   'idGoal' => ($site->isEcommerceEnabled() ? Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER : null)),
                 true,
                 25);
             if ($site->isEcommerceEnabled()) {
-                Piwik_AddMenu($mainGoalMenu, 'Goals_Ecommerce', array('module' => 'Goals', 'action' => 'ecommerceReport', 'idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER), true, 1);
+                MenuMain::getInstance()->add($mainGoalMenu, 'Goals_Ecommerce', array('module' => 'Goals', 'action' => 'ecommerceReport', 'idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER), true, 1);
             }
-            Piwik_AddMenu($mainGoalMenu, 'Goals_AddNewGoal', array('module' => 'Goals', 'action' => 'addNewGoal'));
+            MenuMain::getInstance()->add($mainGoalMenu, 'Goals_AddNewGoal', array('module' => 'Goals', 'action' => 'addNewGoal'));
         } else {
-            Piwik_AddMenu($mainGoalMenu, '', array(
+            MenuMain::getInstance()->add($mainGoalMenu, '', array(
                                                   'module' => 'Goals',
                                                   'action' => ($site->isEcommerceEnabled() ? 'ecommerceReport' : 'index'),
                                                   'idGoal' => ($site->isEcommerceEnabled() ? Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER : null)),
@@ -477,11 +478,11 @@ class Goals extends \Piwik\Plugin
                 25);
 
             if ($site->isEcommerceEnabled()) {
-                Piwik_AddMenu($mainGoalMenu, 'Goals_Ecommerce', array('module' => 'Goals', 'action' => 'ecommerceReport', 'idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER), true, 1);
+                MenuMain::getInstance()->add($mainGoalMenu, 'Goals_Ecommerce', array('module' => 'Goals', 'action' => 'ecommerceReport', 'idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER), true, 1);
             }
-            Piwik_AddMenu($mainGoalMenu, 'Goals_GoalsOverview', array('module' => 'Goals', 'action' => 'index'), true, 2);
+            MenuMain::getInstance()->add($mainGoalMenu, 'Goals_GoalsOverview', array('module' => 'Goals', 'action' => 'index'), true, 2);
             foreach ($goals as $goal) {
-                Piwik_AddMenu($mainGoalMenu, str_replace('%', '%%', Translate::clean($goal['name'])), array('module' => 'Goals', 'action' => 'goalReport', 'idGoal' => $goal['idgoal']));
+                MenuMain::getInstance()->add($mainGoalMenu, str_replace('%', '%%', Translate::clean($goal['name'])), array('module' => 'Goals', 'action' => 'goalReport', 'idGoal' => $goal['idgoal']));
             }
         }
     }
diff --git a/plugins/Installation/Installation.php b/plugins/Installation/Installation.php
index dca5ecb666e2b90d97a645c95017d35eccedd843..5f7bafd4e52fb513c224a953e36f1625ff8f4872 100644
--- a/plugins/Installation/Installation.php
+++ b/plugins/Installation/Installation.php
@@ -11,6 +11,7 @@
 namespace Piwik\Plugins\Installation;
 
 use Piwik\Common;
+use Piwik\Menu\MenuAdmin;
 use Piwik\Piwik;
 use Piwik\Translate;
 
@@ -78,7 +79,7 @@ class Installation extends \Piwik\Plugin
      */
     public function addMenu()
     {
-        Piwik_AddAdminMenu('Installation_SystemCheck',
+        MenuAdmin::addEntry('Installation_SystemCheck',
             array('module' => 'Installation', 'action' => 'systemCheckPage'),
             $addIf = Piwik::isUserIsSuperUser(),
             $order = 15);
diff --git a/plugins/LanguagesManager/LanguagesManager.php b/plugins/LanguagesManager/LanguagesManager.php
index f46ddacfe6307f53329a139e3f6bd66b556910ea..d3e162a87579d99b7fc97daead04fe8a2a26524d 100644
--- a/plugins/LanguagesManager/LanguagesManager.php
+++ b/plugins/LanguagesManager/LanguagesManager.php
@@ -17,6 +17,7 @@ use Piwik\Config;
 use Piwik\Cookie;
 
 use Piwik\Db;
+use Piwik\Menu\MenuTop;
 use Piwik\Piwik;
 use Piwik\Translate;
 use Piwik\View;
@@ -54,7 +55,7 @@ class LanguagesManager extends \Piwik\Plugin
 
     public function showLanguagesSelector()
     {
-        Piwik_AddTopMenu('LanguageSelector', $this->getLanguagesSelector(), true, $order = 30, true);
+        MenuTop::addEntry('LanguageSelector', $this->getLanguagesSelector(), true, $order = 30, true);
     }
 
     /**
diff --git a/plugins/Live/Live.php b/plugins/Live/Live.php
index e08d556b0a1d2989faa16957185fad9665d2df96..f309877ce00bfdc5e02f6dbfdf40fff85bdb8c56 100644
--- a/plugins/Live/Live.php
+++ b/plugins/Live/Live.php
@@ -12,6 +12,7 @@ namespace Piwik\Plugins\Live;
 
 
 use Piwik\Common;
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\WidgetsList;
 
@@ -52,7 +53,7 @@ class Live extends \Piwik\Plugin
 
     public function addMenu()
     {
-        Piwik_AddMenu('General_Visitors', 'Live_VisitorLog', array('module' => 'Live', 'action' => 'indexVisitorLog'), true, $order = 5);
+        MenuMain::getInstance()->add('General_Visitors', 'Live_VisitorLog', array('module' => 'Live', 'action' => 'indexVisitorLog'), true, $order = 5);
     }
 
     public function addWidget()
diff --git a/plugins/MobileMessaging/MobileMessaging.php b/plugins/MobileMessaging/MobileMessaging.php
index 846a453ff62d5505a9bdc7f5795b1e5682ec2877..736bdf0d3d13cc4d6b6a2164163fc4575c41bd98 100644
--- a/plugins/MobileMessaging/MobileMessaging.php
+++ b/plugins/MobileMessaging/MobileMessaging.php
@@ -10,6 +10,7 @@
  */
 namespace Piwik\Plugins\MobileMessaging;
 
+use Piwik\Menu\MenuAdmin;
 use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Plugins\API\API as APIPlugins;
@@ -86,10 +87,11 @@ class MobileMessaging extends \Piwik\Plugin
 
     function addMenu()
     {
-        Piwik_AddAdminMenu(
+        MenuAdmin::addEntry(
             'MobileMessaging_SettingsMenu',
             array('module' => 'MobileMessaging', 'action' => 'index'),
-            true
+            true,
+            $order = 12
         );
     }
 
diff --git a/plugins/MultiSites/MultiSites.php b/plugins/MultiSites/MultiSites.php
index ef38a890dae783c1c276f2fe02ff774c3a346c81..00d718d00dff2d21b5127fe4b0be2cefdb2e0dd8 100644
--- a/plugins/MultiSites/MultiSites.php
+++ b/plugins/MultiSites/MultiSites.php
@@ -9,6 +9,7 @@
  * @package MultiSites
  */
 namespace Piwik\Plugins\MultiSites;
+use Piwik\Menu\MenuTop;
 use Piwik\Piwik;
 
 
@@ -78,7 +79,7 @@ class MultiSites extends \Piwik\Plugin
     {
         $urlParams = array('module' => 'MultiSites', 'action' => 'index', 'segment' => false);
         $tooltip = Piwik::translate('MultiSites_TopLinkTooltip');
-        Piwik_AddTopMenu('General_MultiSitesSummary', $urlParams, true, 3, $isHTML = false, $tooltip);
+        MenuTop::addEntry('General_MultiSitesSummary', $urlParams, true, 3, $isHTML = false, $tooltip);
     }
 
     public function getJsFiles(&$jsFiles)
diff --git a/plugins/PrivacyManager/PrivacyManager.php b/plugins/PrivacyManager/PrivacyManager.php
index 7c1880cc3f388141e296de2ea03dce2b0dad6115..98de8bd5e094f18fa04d989dd02dce96f8fd64d8 100644
--- a/plugins/PrivacyManager/PrivacyManager.php
+++ b/plugins/PrivacyManager/PrivacyManager.php
@@ -15,6 +15,7 @@ use Piwik\Common;
 use Piwik\Config;
 use Piwik\Date;
 use Piwik\Db;
+use Piwik\Menu\MenuAdmin;
 use Piwik\Metrics;
 
 use Piwik\Option;
@@ -97,7 +98,7 @@ class PrivacyManager extends \Piwik\Plugin
 
     function addMenu()
     {
-        Piwik_AddAdminMenu('PrivacyManager_MenuPrivacySettings',
+        MenuAdmin::addEntry('PrivacyManager_MenuPrivacySettings',
             array('module' => 'PrivacyManager', 'action' => 'privacySettings'),
             Piwik::isUserHasSomeAdminAccess(),
             $order = 7);
diff --git a/plugins/Provider/Provider.php b/plugins/Provider/Provider.php
index d47e774d2dfbedf7a187e232c9997c55db1b1f8c..41dc2e6fffd9c664f2f8cf76a4e89f339d66c377 100644
--- a/plugins/Provider/Provider.php
+++ b/plugins/Provider/Provider.php
@@ -17,6 +17,7 @@ use Piwik\Db;
 
 use Piwik\FrontController;
 use Piwik\IP;
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\WidgetsList;
 
@@ -98,7 +99,7 @@ class Provider extends \Piwik\Plugin
 
     public function addMenu()
     {
-        Piwik_RenameMenuEntry('General_Visitors', 'UserCountry_SubmenuLocations',
+        MenuMain::getInstance()->rename('General_Visitors', 'UserCountry_SubmenuLocations',
             'General_Visitors', 'Provider_SubmenuLocationsProvider');
     }
 
diff --git a/plugins/Referrers/Referrers.php b/plugins/Referrers/Referrers.php
index 96cd26d1111c3d84682d13efeee1f87dace4c8b5..e2714706ebe29124ad4a3d260ff764c561de718c 100644
--- a/plugins/Referrers/Referrers.php
+++ b/plugins/Referrers/Referrers.php
@@ -12,6 +12,7 @@ namespace Piwik\Plugins\Referrers;
 
 use Piwik\ArchiveProcessor;
 use Piwik\Common;
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\SettingsPiwik;
 use Piwik\WidgetsList;
@@ -230,11 +231,11 @@ class Referrers extends \Piwik\Plugin
      */
     function addMenus()
     {
-        Piwik_AddMenu('Referrers_Referrers', '', array('module' => 'Referrers', 'action' => 'index'), true, 20);
-        Piwik_AddMenu('Referrers_Referrers', 'General_Overview', array('module' => 'Referrers', 'action' => 'index'), true, 1);
-        Piwik_AddMenu('Referrers_Referrers', 'Referrers_SubmenuSearchEngines', array('module' => 'Referrers', 'action' => 'getSearchEnginesAndKeywords'), true, 2);
-        Piwik_AddMenu('Referrers_Referrers', 'Referrers_SubmenuWebsites', array('module' => 'Referrers', 'action' => 'indexWebsites'), true, 3);
-        Piwik_AddMenu('Referrers_Referrers', 'Referrers_Campaigns', array('module' => 'Referrers', 'action' => 'indexCampaigns'), true, 4);
+        MenuMain::getInstance()->add('Referrers_Referrers', '', array('module' => 'Referrers', 'action' => 'index'), true, 20);
+        MenuMain::getInstance()->add('Referrers_Referrers', 'General_Overview', array('module' => 'Referrers', 'action' => 'index'), true, 1);
+        MenuMain::getInstance()->add('Referrers_Referrers', 'Referrers_SubmenuSearchEngines', array('module' => 'Referrers', 'action' => 'getSearchEnginesAndKeywords'), true, 2);
+        MenuMain::getInstance()->add('Referrers_Referrers', 'Referrers_SubmenuWebsites', array('module' => 'Referrers', 'action' => 'indexWebsites'), true, 3);
+        MenuMain::getInstance()->add('Referrers_Referrers', 'Referrers_Campaigns', array('module' => 'Referrers', 'action' => 'indexCampaigns'), true, 4);
     }
 
     /**
diff --git a/plugins/ScheduledReports/ScheduledReports.php b/plugins/ScheduledReports/ScheduledReports.php
index b31f2af3129ab835c84f35351ac6dd7484b911a5..f59f6a4dbe7ee6457bc08ea29a1e955fa42999bb 100644
--- a/plugins/ScheduledReports/ScheduledReports.php
+++ b/plugins/ScheduledReports/ScheduledReports.php
@@ -16,6 +16,7 @@ use Piwik\Config;
 use Piwik\Date;
 use Piwik\Db;
 use Piwik\Mail;
+use Piwik\Menu\MenuTop;
 use Piwik\Piwik;
 use Piwik\Plugins\MobileMessaging\API as APIMobileMessaging;
 use Piwik\Plugins\MobileMessaging\MobileMessaging;
@@ -470,7 +471,7 @@ class ScheduledReports extends \Piwik\Plugin
 
     function addTopMenu()
     {
-        Piwik_AddTopMenu(
+        MenuTop::addEntry(
             $this->getTopMenuTranslationKey(),
             array('module' => 'ScheduledReports', 'action' => 'index', 'segment' => false),
             true,
diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index 0671890c2aba96c650775117438a3f994bee0fb4..5b4f8db0610f940cfdd63f19ca81cf97b95f899c 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -10,6 +10,7 @@
  */
 namespace Piwik\Plugins\SitesManager;
 
+use Piwik\Menu\MenuAdmin;
 use Piwik\Piwik;
 
 /**
@@ -38,7 +39,7 @@ class SitesManager extends \Piwik\Plugin
 
     function addMenu()
     {
-        Piwik_AddAdminSubMenu('CoreAdminHome_MenuManage', 'SitesManager_Sites',
+        MenuAdmin::getInstance()->add('CoreAdminHome_MenuManage', 'SitesManager_Sites',
             array('module' => 'SitesManager', 'action' => 'index'),
             Piwik::isUserHasSomeAdminAccess(),
             $order = 1);
diff --git a/plugins/UserCountry/UserCountry.php b/plugins/UserCountry/UserCountry.php
index 7ca55000116107494be7f531ac69845db3536c2f..2a8fb5af51c21b95fe8c350149eb80ece2b1fc14 100644
--- a/plugins/UserCountry/UserCountry.php
+++ b/plugins/UserCountry/UserCountry.php
@@ -13,6 +13,8 @@ namespace Piwik\Plugins\UserCountry;
 use Piwik\ArchiveProcessor;
 use Piwik\Common;
 use Piwik\IP;
+use Piwik\Menu\MenuAdmin;
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
 use Piwik\Plugins\UserCountry\LocationProvider;
@@ -186,15 +188,15 @@ class UserCountry extends \Piwik\Plugin
 
     public function addMenu()
     {
-        Piwik_AddMenu('General_Visitors', 'UserCountry_SubmenuLocations', array('module' => 'UserCountry', 'action' => 'index'));
+        MenuMain::getInstance()->add('General_Visitors', 'UserCountry_SubmenuLocations', array('module' => 'UserCountry', 'action' => 'index'));
     }
 
     /**
-     * Event handler. Adds menu items to the Admin menu.
+     * Event handler. Adds menu items to the MenuAdmin menu.
      */
     public function addAdminMenu()
     {
-        Piwik_AddAdminSubMenu('General_Settings', 'UserCountry_Geolocation',
+        MenuAdmin::getInstance()->add('General_Settings', 'UserCountry_Geolocation',
             array('module' => 'UserCountry', 'action' => 'adminIndex'),
             Piwik::isUserIsSuperUser(),
             $order = 8);
diff --git a/plugins/UserCountryMap/UserCountryMap.php b/plugins/UserCountryMap/UserCountryMap.php
index c976d784fb13844cfd6c9b15fe830219f4647f69..1fd94f98dd0f07cb8a326d0f2d458f5be884e403 100644
--- a/plugins/UserCountryMap/UserCountryMap.php
+++ b/plugins/UserCountryMap/UserCountryMap.php
@@ -11,6 +11,7 @@
 namespace Piwik\Plugins\UserCountryMap;
 
 use Piwik\FrontController;
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\Version;
 use Piwik\WidgetsList;
@@ -64,7 +65,7 @@ class UserCountryMap extends \Piwik\Plugin
 
     public function addMenu()
     {
-        Piwik_AddMenu('General_Visitors', 'UserCountryMap_RealTimeMap', array('module' => 'UserCountryMap', 'action' => 'realtimeWorldMap'), true, $order = 70);
+        MenuMain::getInstance()->add('General_Visitors', 'UserCountryMap_RealTimeMap', array('module' => 'UserCountryMap', 'action' => 'realtimeWorldMap'), true, $order = 70);
     }
 
     public function getJsFiles(&$jsFiles)
diff --git a/plugins/UserSettings/UserSettings.php b/plugins/UserSettings/UserSettings.php
index 51c93d0122d4889e601d2ad8dfebfb3d2ec9e256..8db1ba1dbf23ab1cb0e4fd6f4c1043a8e726f957 100644
--- a/plugins/UserSettings/UserSettings.php
+++ b/plugins/UserSettings/UserSettings.php
@@ -11,6 +11,7 @@
 namespace Piwik\Plugins\UserSettings;
 
 use Piwik\ArchiveProcessor;
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\WidgetsList;
 
@@ -428,7 +429,7 @@ class UserSettings extends \Piwik\Plugin
      */
     function addMenu()
     {
-        Piwik_AddMenu('General_Visitors', 'General_Settings', array('module' => 'UserSettings', 'action' => 'index'));
+        MenuMain::getInstance()->add('General_Visitors', 'General_Settings', array('module' => 'UserSettings', 'action' => 'index'));
     }
 
     /**
diff --git a/plugins/UsersManager/UsersManager.php b/plugins/UsersManager/UsersManager.php
index f86cb58f39e74a2568f274bf8b9244cf9540046d..5e6bd1c4282827adf35639e58a1eee25687654f4 100644
--- a/plugins/UsersManager/UsersManager.php
+++ b/plugins/UsersManager/UsersManager.php
@@ -11,6 +11,7 @@
 namespace Piwik\Plugins\UsersManager;
 
 use Exception;
+use Piwik\Menu\MenuAdmin;
 use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\SettingsPiwik;
@@ -93,11 +94,11 @@ class UsersManager extends \Piwik\Plugin
      */
     function addMenu()
     {
-        Piwik_AddAdminSubMenu('CoreAdminHome_MenuManage', 'UsersManager_MenuUsers',
+        MenuAdmin::getInstance()->add('CoreAdminHome_MenuManage', 'UsersManager_MenuUsers',
             array('module' => 'UsersManager', 'action' => 'index'),
             Piwik::isUserHasSomeAdminAccess(),
             $order = 2);
-        Piwik_AddAdminSubMenu('CoreAdminHome_MenuManage', 'UsersManager_MenuUserSettings',
+        MenuAdmin::getInstance()->add('CoreAdminHome_MenuManage', 'UsersManager_MenuUserSettings',
             array('module' => 'UsersManager', 'action' => 'userSettings'),
             Piwik::isUserHasSomeViewAccess(),
             $order = 3);
diff --git a/plugins/VisitFrequency/VisitFrequency.php b/plugins/VisitFrequency/VisitFrequency.php
index a3199e9624589510842948a0cefe8a746a13c629..6b9f4340614aa65dafdc4732bf3c3f4446a76554 100644
--- a/plugins/VisitFrequency/VisitFrequency.php
+++ b/plugins/VisitFrequency/VisitFrequency.php
@@ -10,6 +10,7 @@
  */
 namespace Piwik\Plugins\VisitFrequency;
 
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\WidgetsList;
 
@@ -65,6 +66,6 @@ class VisitFrequency extends \Piwik\Plugin
 
     function addMenu()
     {
-        Piwik_AddMenu('General_Visitors', 'VisitFrequency_SubmenuFrequency', array('module' => 'VisitFrequency', 'action' => 'index'));
+        MenuMain::getInstance()->add('General_Visitors', 'VisitFrequency_SubmenuFrequency', array('module' => 'VisitFrequency', 'action' => 'index'));
     }
 }
diff --git a/plugins/VisitTime/VisitTime.php b/plugins/VisitTime/VisitTime.php
index b6b3c9d3ba86b8c2e0a0c2fb287e43952cdf25d2..62c3f6fc9f7cbb2623e9cc0125824ab0ebd38053 100644
--- a/plugins/VisitTime/VisitTime.php
+++ b/plugins/VisitTime/VisitTime.php
@@ -14,6 +14,7 @@ use Exception;
 use Piwik\ArchiveProcessor;
 
 use Piwik\Common;
+use Piwik\Menu\MenuMain;
 use Piwik\Period;
 use Piwik\Piwik;
 use Piwik\Site;
@@ -88,7 +89,7 @@ class VisitTime extends \Piwik\Plugin
 
     function addMenu()
     {
-        Piwik_AddMenu('General_Visitors', 'VisitTime_SubmenuTimes', array('module' => 'VisitTime', 'action' => 'index'));
+        MenuMain::getInstance()->add('General_Visitors', 'VisitTime_SubmenuTimes', array('module' => 'VisitTime', 'action' => 'index'));
     }
 
     public function getReportsWithGoalMetrics(&$dimensions)
diff --git a/plugins/VisitorInterest/VisitorInterest.php b/plugins/VisitorInterest/VisitorInterest.php
index a6a9b41509c501efe01da0e220c7daca5285381b..4225f5cfc3d34d81f5f14522069a5c6feb8ef822 100644
--- a/plugins/VisitorInterest/VisitorInterest.php
+++ b/plugins/VisitorInterest/VisitorInterest.php
@@ -13,6 +13,7 @@ namespace Piwik\Plugins\VisitorInterest;
 use Piwik\ArchiveProcessor;
 
 use Piwik\FrontController;
+use Piwik\Menu\MenuMain;
 use Piwik\Metrics;
 use Piwik\Piwik;
 use Piwik\WidgetsList;
@@ -110,7 +111,7 @@ class VisitorInterest extends \Piwik\Plugin
 
     public function addMenu()
     {
-        Piwik_RenameMenuEntry('General_Visitors', 'VisitFrequency_SubmenuFrequency',
+        MenuMain::getInstance()->rename('General_Visitors', 'VisitFrequency_SubmenuFrequency',
             'General_Visitors', 'VisitorInterest_Engagement');
     }
 
diff --git a/plugins/VisitsSummary/VisitsSummary.php b/plugins/VisitsSummary/VisitsSummary.php
index a2022b25cd8fa7f66e521c86e9cf7fc525ba04c8..9a19633e113e3b0d278d97f8d649605045d02c16 100644
--- a/plugins/VisitsSummary/VisitsSummary.php
+++ b/plugins/VisitsSummary/VisitsSummary.php
@@ -10,6 +10,7 @@
  */
 namespace Piwik\Plugins\VisitsSummary;
 
+use Piwik\Menu\MenuMain;
 use Piwik\Piwik;
 use Piwik\WidgetsList;
 
@@ -68,8 +69,8 @@ class VisitsSummary extends \Piwik\Plugin
 
     function addMenu()
     {
-        Piwik_AddMenu('General_Visitors', '', array('module' => 'VisitsSummary', 'action' => 'index'), true, 10);
-        Piwik_AddMenu('General_Visitors', 'General_Overview', array('module' => 'VisitsSummary', 'action' => 'index'), true, 1);
+        MenuMain::getInstance()->add('General_Visitors', '', array('module' => 'VisitsSummary', 'action' => 'index'), true, 10);
+        MenuMain::getInstance()->add('General_Visitors', 'General_Overview', array('module' => 'VisitsSummary', 'action' => 'index'), true, 1);
     }
 }
 
diff --git a/plugins/Widgetize/Widgetize.php b/plugins/Widgetize/Widgetize.php
index c9941994da00c789c5d8df1437de5566aca2ef43..eeb8e31e3b1b713dc55abf38009a19cb055a1097 100644
--- a/plugins/Widgetize/Widgetize.php
+++ b/plugins/Widgetize/Widgetize.php
@@ -11,6 +11,7 @@
  */
 
 namespace Piwik\Plugins\Widgetize;
+use Piwik\Menu\MenuTop;
 use Piwik\Piwik;
 
 /**
@@ -37,7 +38,7 @@ class Widgetize extends \Piwik\Plugin
         $tooltip = Piwik::translate('Widgetize_TopLinkTooltip');
         $urlParams = array('module' => 'Widgetize', 'action' => 'index', 'segment' => false);
 
-        Piwik_AddTopMenu('General_Widgets', $urlParams, true, 5, $isHTML = false, $tooltip);
+        MenuTop::addEntry('General_Widgets', $urlParams, true, 5, $isHTML = false, $tooltip);
     }
 
     public function getJsFiles(&$jsFiles)
diff --git a/tests/PHPUnit/bootstrap.php b/tests/PHPUnit/bootstrap.php
index a4148e9f3f9c622734fe4d7c64eb305b4cc45aec..9cb810492e7a671f5c50c63a15780b080feec15b 100644
--- a/tests/PHPUnit/bootstrap.php
+++ b/tests/PHPUnit/bootstrap.php
@@ -58,7 +58,6 @@ if ($useXhprof) {
 require_once PIWIK_INCLUDE_PATH . '/libs/upgradephp/upgrade.php';
 require_once PIWIK_INCLUDE_PATH . '/core/testMinimumPhpVersion.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
-require_once PIWIK_INCLUDE_PATH . '/core/functions.php';
 require_once PIWIK_INCLUDE_PATH . '/core/FrontController.php';
 require_once PIWIK_INCLUDE_PATH . '/libs/spyc.php';
 require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/DatabaseTestCase.php';
diff --git a/tests/PHPUnit/proxy/includes.php b/tests/PHPUnit/proxy/includes.php
index 44dde260321a75ebc1ea5ef9a4185ff0f07757cb..c5c75e66b85ac800584ad73e5fd297cc94fb6e06 100644
--- a/tests/PHPUnit/proxy/includes.php
+++ b/tests/PHPUnit/proxy/includes.php
@@ -10,6 +10,5 @@ require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
 require_once PIWIK_INCLUDE_PATH . '/core/EventDispatcher.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Piwik.php';
 require_once PIWIK_INCLUDE_PATH . '/libs/upgradephp/upgrade.php';
-require_once PIWIK_INCLUDE_PATH . '/core/functions.php';
 require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/TestingEnvironment.php';