diff --git a/core/API/Request.php b/core/API/Request.php
index 53654cec5874bb9fbdf1226c11b2cea9b2207fbd..838df1610ab50b5b45b5d3809a2784741137cece 100644
--- a/core/API/Request.php
+++ b/core/API/Request.php
@@ -165,7 +165,7 @@ class Piwik_API_Request
         $token_auth = Piwik_Common::getRequestVar('token_auth', '', 'string', $request);
         if ($token_auth) {
             Piwik_PostEvent('API.Request.authenticate', array($token_auth));
-            Zend_Registry::get('access')->reloadAccess();
+            Piwik_Access::getInstance()->reloadAccess();
             Piwik::raiseMemoryLimitIfNecessary();
         }
     }
diff --git a/core/Access.php b/core/Access.php
index 30cb7a656c2b0c7f4319c2d478d76f5d8dfb84e2..6422926702eece27ec657216d4c817508c9b5b4e 100644
--- a/core/Access.php
+++ b/core/Access.php
@@ -36,6 +36,27 @@
  */
 class Piwik_Access
 {
+    private static $instance = null;
+    
+    /**
+     * Gets the singleton instance. Creates it if necessary.
+     */
+    public static function getInstance()
+    {
+        if (self::$instance == null) {
+            self::$instance = new self;
+        }
+        return self::$instance;
+    }
+    
+    /**
+     * Sets the singleton instance. For testing purposes.
+     */
+    public static function setSingletonInstance($instance)
+    {
+        self::$instance = $instance;
+    }
+    
     /**
      * Array of idsites available to the current user, indexed by permission level
      * @see getSitesIdWith*()
diff --git a/core/Controller.php b/core/Controller.php
index b961f8759e28ef1a8e535b7fda8c0895659dbb66..e8c485d5f79978c67d8a04d73995b0b5318ca7a9 100644
--- a/core/Controller.php
+++ b/core/Controller.php
@@ -448,7 +448,7 @@ abstract class Piwik_Controller
     protected function setBasicVariablesView($view)
     {
         $view->debugTrackVisitsInsidePiwikUI = Piwik_Config::getInstance()->Debug['track_visits_inside_piwik_ui'];
-        $view->isSuperUser = Zend_Registry::get('access')->isSuperUser();
+        $view->isSuperUser = Piwik_Access::getInstance()->isSuperUser();
         $view->hasSomeAdminAccess = Piwik::isUserHasSomeAdminAccess();
         $view->isCustomLogo = Piwik_Config::getInstance()->branding['use_custom_logo'];
         $view->logoHeader = Piwik_API_API::getInstance()->getHeaderLogoUrl();
diff --git a/core/FrontController.php b/core/FrontController.php
index 10fa3a3f31be4089143e0befde0f6fc30c7df64b..74348d05687decbcdd152d8b26a9e3df2b34c712 100644
--- a/core/FrontController.php
+++ b/core/FrontController.php
@@ -290,7 +290,7 @@ class Piwik_FrontController
 									<code>Plugins[] = Login</code><br />
 									under the <code>[Plugins]</code> section in your config/config.ini.php");
             }
-            Zend_Registry::get('access')->reloadAccess($authAdapter);
+            Piwik_Access::getInstance()->reloadAccess($authAdapter);
 
             // Force the auth to use the token_auth if specified, so that embed dashboard
             // and all other non widgetized controller methods works fine
diff --git a/core/Piwik.php b/core/Piwik.php
index 5e40ea0dabcd01beeb21c13e0957743f2b98b0be..a04ed15025f4858c3cfef60cf65d06188add332f 100644
--- a/core/Piwik.php
+++ b/core/Piwik.php
@@ -1573,7 +1573,7 @@ class Piwik
      */
     static public function getSuperUserLogin()
     {
-        return Zend_Registry::get('access')->getSuperUserLogin();
+        return Piwik_Access::getInstance()->getSuperUserLogin();
     }
 
     /**
@@ -1594,7 +1594,7 @@ class Piwik
      */
     static public function getCurrentUserLogin()
     {
-        return Zend_Registry::get('access')->getLogin();
+        return Piwik_Access::getInstance()->getLogin();
     }
 
     /**
@@ -1604,7 +1604,7 @@ class Piwik
      */
     static public function getCurrentUserTokenAuth()
     {
-        return Zend_Registry::get('access')->getTokenAuth();
+        return Piwik_Access::getInstance()->getTokenAuth();
     }
 
     /**
@@ -1687,7 +1687,7 @@ class Piwik
      */
     static public function setUserIsSuperUser($bool = true)
     {
-        Zend_Registry::get('access')->setSuperUser($bool);
+        Piwik_Access::getInstance()->setSuperUser($bool);
     }
 
     /**
@@ -1697,7 +1697,7 @@ class Piwik
      */
     static public function checkUserIsSuperUser()
     {
-        Zend_Registry::get('access')->checkUserIsSuperUser();
+        Piwik_Access::getInstance()->checkUserIsSuperUser();
     }
 
     /**
@@ -1724,7 +1724,7 @@ class Piwik
      */
     static public function checkUserHasAdminAccess($idSites)
     {
-        Zend_Registry::get('access')->checkUserHasAdminAccess($idSites);
+        Piwik_Access::getInstance()->checkUserHasAdminAccess($idSites);
     }
 
     /**
@@ -1749,7 +1749,7 @@ class Piwik
      */
     static public function checkUserHasSomeAdminAccess()
     {
-        Zend_Registry::get('access')->checkUserHasSomeAdminAccess();
+        Piwik_Access::getInstance()->checkUserHasSomeAdminAccess();
     }
 
     /**
@@ -1776,7 +1776,7 @@ class Piwik
      */
     static public function checkUserHasViewAccess($idSites)
     {
-        Zend_Registry::get('access')->checkUserHasViewAccess($idSites);
+        Piwik_Access::getInstance()->checkUserHasViewAccess($idSites);
     }
 
     /**
@@ -1801,7 +1801,7 @@ class Piwik
      */
     static public function checkUserHasSomeViewAccess()
     {
-        Zend_Registry::get('access')->checkUserHasSomeViewAccess();
+        Piwik_Access::getInstance()->checkUserHasSomeViewAccess();
     }
 
     /*
@@ -2011,7 +2011,8 @@ class Piwik
      */
     static public function createAccessObject()
     {
-        Zend_Registry::set('access', new Piwik_Access());
+        Piwik_Access::getInstance();
+        //Zend_Registry::set('access', new Piwik_Access());
     }
 
     /*
diff --git a/core/Tracker.php b/core/Tracker.php
index 67a6df9883e64e617183116fae3d6eb707f347e4..9f568146fe1333dc41fe690b3ac99cb17cfff0b2 100644
--- a/core/Tracker.php
+++ b/core/Tracker.php
@@ -338,12 +338,10 @@ class Piwik_Tracker
             self::$initTrackerMode = true;
             require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
             require_once PIWIK_INCLUDE_PATH . '/core/Option.php';
-            try {
-                $access = Zend_Registry::get('access');
-            } catch (Exception $e) {
-                Piwik::createAccessObject();
-            }
+            
+            $access = Piwik_Access::getInstance();
             $config = Piwik_Config::getInstance();
+            
             try {
                 $db = Zend_Registry::get('db');
             } catch (Exception $e) {
diff --git a/plugins/Overlay/API.php b/plugins/Overlay/API.php
index 9c06d11177315b7580baa1626ed7b72856a11620..70f55adf6ca0324fc1e5c33b27eb3bd75c4e24de 100644
--- a/plugins/Overlay/API.php
+++ b/plugins/Overlay/API.php
@@ -110,7 +110,7 @@ class Piwik_Overlay_API
             array(&$notification, $allowCookieAuthentication = true));
 
         $auth = Zend_Registry::get('auth');
-        $success = Zend_Registry::get('access')->reloadAccess($auth);
+        $success = Piwik_Access::getInstance()->reloadAccess($auth);
 
         if (!$success) {
             throw new Exception('Authentication failed');
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index 1f6c342af49728bb01a546e92ad03714d93f472c..d5d26a627dcf1bc7c3328b59049945355ca368c3 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -282,7 +282,7 @@ class Piwik_SitesManager_API
      */
     public function getSitesIdWithAdminAccess()
     {
-        $sitesId = Zend_Registry::get('access')->getSitesIdWithAdminAccess();
+        $sitesId = Piwik_Access::getInstance()->getSitesIdWithAdminAccess();
         return $sitesId;
     }
 
@@ -294,7 +294,7 @@ class Piwik_SitesManager_API
      */
     public function getSitesIdWithViewAccess()
     {
-        return Zend_Registry::get('access')->getSitesIdWithViewAccess();
+        return Piwik_Access::getInstance()->getSitesIdWithViewAccess();
     }
 
     /**
@@ -313,14 +313,14 @@ class Piwik_SitesManager_API
             && (Piwik::isUserIsSuperUserOrTheUser($_restrictSitesToLogin)
                 || Piwik_TaskScheduler::isTaskBeingExecuted())
         ) {
-            $accessRaw = Zend_Registry::get('access')->getRawSitesWithSomeViewAccess($_restrictSitesToLogin);
+            $accessRaw = Piwik_Access::getInstance()->getRawSitesWithSomeViewAccess($_restrictSitesToLogin);
             $sitesId = array();
             foreach ($accessRaw as $access) {
                 $sitesId[] = $access['idsite'];
             }
             return $sitesId;
         } else {
-            return Zend_Registry::get('access')->getSitesIdWithAtLeastViewAccess();
+            return Piwik_Access::getInstance()->getSitesIdWithAtLeastViewAccess();
         }
     }
 
@@ -525,7 +525,7 @@ class Piwik_SitesManager_API
         $this->insertSiteUrls($idSite, $urls);
 
         // we reload the access list which doesn't yet take in consideration this new website
-        Zend_Registry::get('access')->reloadAccess();
+        Piwik_Access::getInstance()->reloadAccess();
         $this->postUpdateWebsite($idSite);
 
         Piwik_PostEvent('SitesManager.addSite', array($idSite));
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php
index dd009bbcaf4223b25e94be858119706adc8cecff..bfb273e1d129fe51daafadfb76e91d92107be562 100644
--- a/plugins/UsersManager/API.php
+++ b/plugins/UsersManager/API.php
@@ -385,7 +385,7 @@ class Piwik_UsersManager_API
         );
 
         // we reload the access list which doesn't yet take in consideration this new user
-        Zend_Registry::get('access')->reloadAccess();
+        Piwik_Access::getInstance()->reloadAccess();
         Piwik_Tracker_Cache::deleteTrackerCache();
 
         Piwik_PostEvent('UsersManager.addUser', array($userLogin));
@@ -564,7 +564,7 @@ class Piwik_UsersManager_API
         }
 
         // we reload the access list which doesn't yet take in consideration this new user access
-        Zend_Registry::get('access')->reloadAccess();
+        Piwik_Access::getInstance()->reloadAccess();
         Piwik_Tracker_Cache::deleteTrackerCache();
     }
 
diff --git a/tests/PHPUnit/BaseFixture.php b/tests/PHPUnit/BaseFixture.php
index dad1e559e7caa9cb38b6602094e6a8b74c8de8ea..edbc6de5a7089fc95403de8f7ec3e81e8de22592 100644
--- a/tests/PHPUnit/BaseFixture.php
+++ b/tests/PHPUnit/BaseFixture.php
@@ -198,7 +198,7 @@ abstract class Test_Piwik_BaseFixture extends PHPUnit_Framework_Assert
         // fake access is needed so API methods can call Piwik::getCurrentUserLogin(), e.g: 'PDFReports.addReport'
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         // retrieve available reports
         $availableReportMetadata = Piwik_PDFReports_API::getReportMetadata($idSite, Piwik_PDFReports::EMAIL_TYPE);
diff --git a/tests/PHPUnit/Core/AccessTest.php b/tests/PHPUnit/Core/AccessTest.php
index 5fe6d2158086b7963502f660a45e3455e6322ec2..09637df503b934e123e42d1f0b0cb6172fbfdf06 100644
--- a/tests/PHPUnit/Core/AccessTest.php
+++ b/tests/PHPUnit/Core/AccessTest.php
@@ -54,8 +54,7 @@ class AccessTest extends DatabaseTestCase
      */
     public function testIsSuperUserWithSuperUserAccess()
     {
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $access->setSuperUser(true);
         $this->assertTrue($access->isSuperUser());
     }
@@ -66,8 +65,7 @@ class AccessTest extends DatabaseTestCase
      */
     public function testIsSuperUserWithNoSuperUserAccess()
     {
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $access->setSuperUser(false);
         $this->assertFalse($access->isSuperUser());
     }
@@ -119,8 +117,7 @@ class AccessTest extends DatabaseTestCase
      */
     public function testCheckUserIsSuperUserWithSuperUserAccess()
     {
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $access->setSuperUser(true);
         $access->checkUserIsSuperUser();
     }
@@ -142,8 +139,7 @@ class AccessTest extends DatabaseTestCase
      */
     public function testCheckUserHasSomeAdminAccessWithSuperUserAccess()
     {
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $access->setSuperUser(true);
         $access->checkUserHasSomeAdminAccess();
     }
@@ -183,8 +179,7 @@ class AccessTest extends DatabaseTestCase
      */
     public function testCheckUserHasSomeViewAccessWithSuperUserAccess()
     {
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $access->setSuperUser(true);
         $access->checkUserHasSomeViewAccess();
     }
@@ -224,8 +219,7 @@ class AccessTest extends DatabaseTestCase
      */
     public function testCheckUserHasViewAccessWithSuperUserAccess()
     {
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $access->setSuperUser(true);
         $access->checkUserHasViewAccess(array());
     }
@@ -291,8 +285,7 @@ class AccessTest extends DatabaseTestCase
      */
     public function testCheckUserHasAdminAccessWithSuperUserAccess()
     {
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $access->setSuperUser(true);
         $access->checkUserHasAdminAccess(array());
     }
@@ -383,8 +376,7 @@ class AccessTest extends DatabaseTestCase
      */
     public function testReloadAccessWithEmptyAuthSuperUser()
     {
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $access->setSuperUser(true);
         $this->assertTrue($access->reloadAccess(null));
     }
@@ -400,8 +392,7 @@ class AccessTest extends DatabaseTestCase
             ->method('authenticate')
             ->will($this->returnValue(new Piwik_Auth_Result(Piwik_Auth_Result::SUCCESS, 'login', 'token')));
 
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $this->assertTrue($access->reloadAccess($mock));
         $this->assertFalse($access->isSuperUser());
     }
@@ -417,8 +408,7 @@ class AccessTest extends DatabaseTestCase
             ->method('authenticate')
             ->will($this->returnValue(new Piwik_Auth_Result(Piwik_Auth_Result::SUCCESS_SUPERUSER_AUTH_CODE, 'superuser', 'superusertoken')));
 
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $this->assertTrue($access->reloadAccess($mock));
         $this->assertTrue($access->isSuperUser());
     }
@@ -434,9 +424,8 @@ class AccessTest extends DatabaseTestCase
             ->method('authenticate')
             ->will($this->returnValue(new Piwik_Auth_Result(Piwik_Auth_Result::FAILURE_CREDENTIAL_INVALID, null, null)));
 
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $this->assertFalse($access->reloadAccess($mock));
     }
 
-}
\ No newline at end of file
+}
diff --git a/tests/PHPUnit/Core/ArchiveProcessingTest.php b/tests/PHPUnit/Core/ArchiveProcessingTest.php
index 846b22d6908e2f3c66b2c3de0e66fe7f03f428e1..9ae4db35a4db5c296917438d70bd2606066bc184 100644
--- a/tests/PHPUnit/Core/ArchiveProcessingTest.php
+++ b/tests/PHPUnit/Core/ArchiveProcessingTest.php
@@ -14,7 +14,7 @@ class ArchiveProcessingTest extends DatabaseTestCase
         // setup the access layer
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
     }
 
     /**
diff --git a/tests/PHPUnit/Core/PiwikTest.php b/tests/PHPUnit/Core/PiwikTest.php
index 1d8f075c2b766845bd907db451bc03598c1e297c..82947630585ea00f319d654e44e94b7569165d44 100644
--- a/tests/PHPUnit/Core/PiwikTest.php
+++ b/tests/PHPUnit/Core/PiwikTest.php
@@ -210,8 +210,7 @@ class PiwikTest extends DatabaseTestCase
     {
         Piwik_Translate::getInstance()->loadEnglishTranslation();
 
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $access->setSuperUser(true);
 
         $idsite = Piwik_SitesManager_API::getInstance()->addSite("test", "http://test");
diff --git a/tests/PHPUnit/Core/PluginsFunctions/WidgetsListTest.php b/tests/PHPUnit/Core/PluginsFunctions/WidgetsListTest.php
index 8a0962f90ac0d565fc540c4586b9f12ed3157b48..b3f2add7c12c5d8824665f05bc7485126dcf87fb 100644
--- a/tests/PHPUnit/Core/PluginsFunctions/WidgetsListTest.php
+++ b/tests/PHPUnit/Core/PluginsFunctions/WidgetsListTest.php
@@ -18,7 +18,7 @@ class WidgetsListTest extends DatabaseTestCase
         // setup the access layer
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         Test_Piwik_BaseFixture::createWebsite('2009-01-04 00:11:42');
 
@@ -64,7 +64,7 @@ class WidgetsListTest extends DatabaseTestCase
         // setup the access layer
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         Test_Piwik_BaseFixture::createWebsite('2009-01-04 00:11:42');
         Piwik_Goals_API::getInstance()->addGoal(1, 'Goal 1 - Thank you', 'title', 'Thank you', 'contains', $caseSensitive = false, $revenue = 10, $allowMultipleConversions = 1);
@@ -101,7 +101,7 @@ class WidgetsListTest extends DatabaseTestCase
         // setup the access layer
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         Test_Piwik_BaseFixture::createWebsite('2009-01-04 00:11:42', true);
         Piwik_Goals_API::getInstance()->addGoal(1, 'Goal 1 - Thank you', 'title', 'Thank you', 'contains', $caseSensitive = false, $revenue = 10, $allowMultipleConversions = 1);
diff --git a/tests/PHPUnit/Core/SegmentTest.php b/tests/PHPUnit/Core/SegmentTest.php
index 2a00a0a9b90ae5b3a38966ec9325514bf79c64ae..3f881e9eb3e4e4e3a81c17a98708a2c9b9b66181 100644
--- a/tests/PHPUnit/Core/SegmentTest.php
+++ b/tests/PHPUnit/Core/SegmentTest.php
@@ -14,7 +14,7 @@ class SegmentTest extends PHPUnit_Framework_TestCase
         // setup the access layer (required in Segment contrustor testing if anonymous is allowed to use segments)
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         // Load and install plugins
         IntegrationTestCase::loadAllPlugins();
diff --git a/tests/PHPUnit/Core/Tracker/ActionTest.php b/tests/PHPUnit/Core/Tracker/ActionTest.php
index f72fed394df3a5ec9dc3dea88d3a72594d6f4daa..608cd33bc58a6221e8cd6de287dad8bb09045a99 100644
--- a/tests/PHPUnit/Core/Tracker/ActionTest.php
+++ b/tests/PHPUnit/Core/Tracker/ActionTest.php
@@ -24,7 +24,7 @@ class Tracker_ActionTest extends DatabaseTestCase
     {
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
     }
 
     public function getTestUrls()
diff --git a/tests/PHPUnit/Core/Tracker/VisitTest.php b/tests/PHPUnit/Core/Tracker/VisitTest.php
index 82bbf78e6fb4fd2f72cb253df7b3659c98ac095d..7441bb6fe4a5c3c48f84ddfbca291edd54e8c0c3 100644
--- a/tests/PHPUnit/Core/Tracker/VisitTest.php
+++ b/tests/PHPUnit/Core/Tracker/VisitTest.php
@@ -14,7 +14,7 @@ class Tracker_VisitTest extends DatabaseTestCase
         // setup the access layer
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         Piwik_PluginsManager::getInstance()->loadPlugins(array('SitesManager'));
     }
diff --git a/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php b/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
index af5efd26be6e9ac1213f6729fb916297c1831173..7344f79f4a3fd445c761f30a52117429231849be 100644
--- a/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
+++ b/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
@@ -31,7 +31,7 @@ class Test_Piwik_Fixture_TwoSitesWithAnnotations extends Test_Piwik_BaseFixture
         // create fake access for fake username
         $access = new FakeAccess();
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $access);
+        Piwik_Access::setSingletonInstance($access);
 
         // add two annotations per week for three months, starring every third annotation
         // first month in 2011, second two in 2012
diff --git a/tests/PHPUnit/Integration/AnnotationsTest.php b/tests/PHPUnit/Integration/AnnotationsTest.php
index 256f401eaa5bf6c431358aea9033c02e54b1e7dc..1e9995eeb5605d498b13779b88d3e39b723f9f1b 100755
--- a/tests/PHPUnit/Integration/AnnotationsTest.php
+++ b/tests/PHPUnit/Integration/AnnotationsTest.php
@@ -306,7 +306,7 @@ class AnnotationsTest extends IntegrationTestCase
         FakeAccess::$superUser = false;
         FakeAccess::$idSitesAdmin = $hasAdminAccess ? array(self::$fixture->idSite1) : array();
         FakeAccess::$idSitesView = $hasViewAccess ? array(self::$fixture->idSite1) : array();
-        Zend_Registry::set('access', $access);
+        Piwik_Access::setSingletonInstance($access);
 
         if ($checkException) {
             try {
diff --git a/tests/PHPUnit/Integration/ImportLogsTest.php b/tests/PHPUnit/Integration/ImportLogsTest.php
index 1e1027cb54d28d67c5f60fdce95dc4d9674ab55f..be9a6c1edee40258e7d6a918a5c7c93fe0a75f6a 100755
--- a/tests/PHPUnit/Integration/ImportLogsTest.php
+++ b/tests/PHPUnit/Integration/ImportLogsTest.php
@@ -51,7 +51,7 @@ class Test_Piwik_Integration_ImportLogs extends IntegrationTestCase
         self::$fixture->logVisitsWithDynamicResolver();
 
         // reload access so new sites are viewable
-        Zend_Registry::get('access')->setSuperUser(true);
+        Piwik_Access::getInstance()->setSuperUser(true);
 
         // make sure sites aren't created twice
         $piwikDotNet = Piwik_SitesManager_API::getInstance()->getSitesIdFromSiteUrl('http://piwik.net');
diff --git a/tests/PHPUnit/Plugins/LoginTest.php b/tests/PHPUnit/Plugins/LoginTest.php
index 783d137167a6a7434d625c409e47c598fd2d48f1..5ddbafcbc117acbf93944ec7d0428c6fc625cebe 100644
--- a/tests/PHPUnit/Plugins/LoginTest.php
+++ b/tests/PHPUnit/Plugins/LoginTest.php
@@ -20,7 +20,7 @@ class LoginTest extends DatabaseTestCase
 
         //finally we set the user as a super user by default
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         // we make sure the tests don't depend on the config file content
         Piwik_Config::getInstance()->superuser = array(
diff --git a/tests/PHPUnit/Plugins/MobileMessagingTest.php b/tests/PHPUnit/Plugins/MobileMessagingTest.php
index 8843b3e2c6f46c56ead3c98371abd9b5c1aa53a6..648038220fab4a78cd55603d23a48b18deccf9ef 100644
--- a/tests/PHPUnit/Plugins/MobileMessagingTest.php
+++ b/tests/PHPUnit/Plugins/MobileMessagingTest.php
@@ -18,7 +18,7 @@ class MobileMessagingTest extends DatabaseTestCase
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
         //finally we set the user as a super user by default
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         $this->idSiteAccess = Piwik_SitesManager_API::getInstance()->addSite("test", "http://test");
 
diff --git a/tests/PHPUnit/Plugins/MultiSitesTest.php b/tests/PHPUnit/Plugins/MultiSitesTest.php
index 8305809dc51849321fce6a6286f4a6e2b4902d6e..eab6e15bfb070dbe8983991a5aa5f5739a562957 100644
--- a/tests/PHPUnit/Plugins/MultiSitesTest.php
+++ b/tests/PHPUnit/Plugins/MultiSitesTest.php
@@ -14,8 +14,7 @@ class MultiSitesTest extends DatabaseTestCase
     {
         parent::setUp();
 
-        $access = new Piwik_Access();
-        Zend_Registry::set('access', $access);
+        $access = Piwik_Access::getInstance();
         $access->setSuperUser(true);
 
         $this->idSiteAccess = Piwik_SitesManager_API::getInstance()->addSite("test", "http://test");
diff --git a/tests/PHPUnit/Plugins/PDFReportsTest.php b/tests/PHPUnit/Plugins/PDFReportsTest.php
index 3ddb0c1915d7c404b6e108659c81101f1ed4cb1d..a643a8bd4c43bbf834d4b2c617124fc95078f558 100644
--- a/tests/PHPUnit/Plugins/PDFReportsTest.php
+++ b/tests/PHPUnit/Plugins/PDFReportsTest.php
@@ -208,7 +208,7 @@ class PDFReportsTest extends DatabaseTestCase
     {
         $anonymousAccess = new FakeAccess;
         FakeAccess::$identity = 'anonymous';
-        Zend_Registry::set('access', $anonymousAccess);
+        Piwik_Access::setSingletonInstance($anonymousAccess);
 
         $pdfReportPlugin = new Piwik_PDFReports();
         $this->assertEquals(
@@ -497,6 +497,6 @@ class PDFReportsTest extends DatabaseTestCase
     {
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
     }
 }
diff --git a/tests/PHPUnit/Plugins/SEOTest.php b/tests/PHPUnit/Plugins/SEOTest.php
index ff31b300e993a924c1467004bccb7fab88324385..d74c281ed5f69bc4e0875bdbc06c82298e9be343 100644
--- a/tests/PHPUnit/Plugins/SEOTest.php
+++ b/tests/PHPUnit/Plugins/SEOTest.php
@@ -18,7 +18,7 @@ class SEOTest extends PHPUnit_Framework_TestCase
 
         //finally we set the user as a super user by default
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         $user_agents = array(
             'Mozilla/6.0 (Macintosh; I; Intel Mac OS X 11_7_9; de-LI; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4',
diff --git a/tests/PHPUnit/Plugins/SegmentEditorTest.php b/tests/PHPUnit/Plugins/SegmentEditorTest.php
index f5e83d5c426af5bb5d5f0132dc157205671b7c73..3ef4238c8ad6bd90307293bdb7ecc6a58fa60558 100644
--- a/tests/PHPUnit/Plugins/SegmentEditorTest.php
+++ b/tests/PHPUnit/Plugins/SegmentEditorTest.php
@@ -22,7 +22,7 @@ class SegmentEditorTest extends DatabaseTestCase
         //finally we set the user as a super user by default
         FakeAccess::$superUser = true;
         FakeAccess::$superUserLogin = 'superusertest';
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         Piwik_SitesManager_API::getInstance()->addSite('test', 'http://example.org');
     }
diff --git a/tests/PHPUnit/Plugins/SitesManagerTest.php b/tests/PHPUnit/Plugins/SitesManagerTest.php
index 50aa07cd58a62e6a31aad2a67658d3ebe76e3db0..68a330239044b0329492086c4fcf7682d29c8a24 100644
--- a/tests/PHPUnit/Plugins/SitesManagerTest.php
+++ b/tests/PHPUnit/Plugins/SitesManagerTest.php
@@ -14,7 +14,7 @@ class SitesManagerTest extends DatabaseTestCase
         // setup the access layer
         $pseudoMockAccess = new FakeAccess;
         FakeAccess::$superUser = true;
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
     }
 
     /**
@@ -953,7 +953,7 @@ class SitesManagerTest extends DatabaseTestCase
         $idsite = Piwik_SitesManager_API::getInstance()->addSite("site2", array("http://piwik.com", "http://piwik.net"));
         $idsite = Piwik_SitesManager_API::getInstance()->addSite("site3", array("http://piwik.com", "http://piwik.org"));
 
-        $saveAccess = Zend_Registry::get('access');
+        $saveAccess = Piwik_Access::getInstance();
 
         Piwik_UsersManager_API::getInstance()->addUser("user1", "geqgegagae", "tegst@tesgt.com", "alias");
         Piwik_UsersManager_API::getInstance()->setUserAccess("user1", "view", array(1));
@@ -971,7 +971,7 @@ class SitesManagerTest extends DatabaseTestCase
         FakeAccess::$identity = 'user1';
         FakeAccess::setIdSitesView(array(1));
         FakeAccess::setIdSitesAdmin(array());
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
         $idsites = Piwik_SitesManager_API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
         $this->assertEquals(1, count($idsites));
 
@@ -986,7 +986,7 @@ class SitesManagerTest extends DatabaseTestCase
         FakeAccess::$identity = 'user2';
         FakeAccess::setIdSitesView(array(1));
         FakeAccess::setIdSitesAdmin(array(3));
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
         $idsites = Piwik_SitesManager_API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
         $this->assertEquals(2, count($idsites));
 
@@ -995,11 +995,11 @@ class SitesManagerTest extends DatabaseTestCase
         FakeAccess::$identity = 'user3';
         FakeAccess::setIdSitesView(array(1, 2));
         FakeAccess::setIdSitesAdmin(array(3));
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
         $idsites = Piwik_SitesManager_API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
         $this->assertEquals(3, count($idsites));
 
-        Zend_Registry::set('access', $saveAccess);
+        Piwik_Access::setSingletonInstance($saveAccess);
     }
 
     /**
diff --git a/tests/PHPUnit/Plugins/UsersManagerTest.php b/tests/PHPUnit/Plugins/UsersManagerTest.php
index 06cc951e30d1995a85ba3fc09ababe7d496a010e..2d2da44ba55ff6832d3d4421396917aa9b0049d4 100644
--- a/tests/PHPUnit/Plugins/UsersManagerTest.php
+++ b/tests/PHPUnit/Plugins/UsersManagerTest.php
@@ -22,7 +22,7 @@ class UsersManagerTest extends DatabaseTestCase
         //finally we set the user as a super user by default
         FakeAccess::$superUser = true;
         FakeAccess::$superUserLogin = 'superusertest';
-        Zend_Registry::set('access', $pseudoMockAccess);
+        Piwik_Access::setSingletonInstance($pseudoMockAccess);
 
         // we make sure the tests don't depend on the config file content
         Piwik_Config::getInstance()->superuser = array(