diff --git a/composer.lock b/composer.lock
index 956f407d39e7a3046b41b39bea453581a5bb28c0..395cf4e41a14f986480d95662c2df47f3e508960 100644
--- a/composer.lock
+++ b/composer.lock
@@ -3,7 +3,7 @@
         "This file locks the dependencies of your project to a known state",
         "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
     ],
-    "hash": "4dc75e9d8e28b0f2f3b1f5cb36402142",
+    "hash": "58a326346eb1d9e3f1211c8d8044842a",
     "packages": [
         {
             "name": "leafo/lessphp",
@@ -46,18 +46,71 @@
             "homepage": "http://leafo.net/lessphp/",
             "time": "2013-03-02 16:13:31"
         },
+        {
+            "name": "symfony/console",
+            "version": "v2.3.5",
+            "target-dir": "Symfony/Component/Console",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Console.git",
+                "reference": "f880062d56edefb25b36f2defa65aafe65959dc7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Console/zipball/f880062d56edefb25b36f2defa65aafe65959dc7",
+                "reference": "f880062d56edefb25b36f2defa65aafe65959dc7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/event-dispatcher": "~2.1"
+            },
+            "suggest": {
+                "symfony/event-dispatcher": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Console\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "http://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Console Component",
+            "homepage": "http://symfony.com",
+            "time": "2013-09-25 06:04:15"
+        },
         {
             "name": "twig/twig",
-            "version": "v1.13.1",
+            "version": "v1.14.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/fabpot/Twig.git",
-                "reference": "v1.13.1"
+                "reference": "224fc55635d544a2ec8edb3592be18db5a093f59"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/fabpot/Twig/zipball/v1.13.1",
-                "reference": "v1.13.1",
+                "url": "https://api.github.com/repos/fabpot/Twig/zipball/224fc55635d544a2ec8edb3592be18db5a093f59",
+                "reference": "224fc55635d544a2ec8edb3592be18db5a093f59",
                 "shasum": ""
             },
             "require": {
@@ -66,7 +119,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.13-dev"
+                    "dev-master": "1.14-dev"
                 }
             },
             "autoload": {
@@ -76,7 +129,7 @@
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
-                "BSD-3"
+                "BSD-3-Clause"
             ],
             "authors": [
                 {
@@ -93,7 +146,7 @@
             "keywords": [
                 "templating"
             ],
-            "time": "2013-06-06 06:06:01"
+            "time": "2013-10-03 06:41:20"
         }
     ],
     "packages-dev": [
diff --git a/core/ArchiveProcessor/Rules.php b/core/ArchiveProcessor/Rules.php
index 18f13703accf27a2e9731b8c3fafb35985712824..1589757187afaec045b8b1144e8e44bb5ffdb8dd 100644
--- a/core/ArchiveProcessor/Rules.php
+++ b/core/ArchiveProcessor/Rules.php
@@ -15,6 +15,7 @@ use Piwik\Common;
 use Piwik\Config;
 use Piwik\Date;
 use Piwik\Log;
+use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Segment;
 use Piwik\SettingsPiwik;
@@ -114,7 +115,7 @@ class Rules
             return false;
         }
         $key = self::FLAG_TABLE_PURGED . "blob_" . $date->toString('Y_m');
-        $timestamp = Piwik_GetOption($key);
+        $timestamp = Option::get($key);
 
         // we shall purge temporary archives after their timeout is finished, plus an extra 6 hours
         // in case archiving is disabled or run once a day, we give it this extra time to run
@@ -130,7 +131,7 @@ class Rules
             && (!$timestamp
                 || $timestamp < time() - $purgeEveryNSeconds)
         ) {
-            Piwik_SetOption($key, time());
+            Option::set($key, time());
 
             if (self::isBrowserTriggerEnabled()) {
                 // If Browser Archiving is enabled, it is likely there are many more temporary archives
@@ -176,12 +177,12 @@ class Rules
         if ($timeToLiveSeconds <= 0) {
             throw new Exception(Piwik_TranslateException('General_ExceptionInvalidArchiveTimeToLive'));
         }
-        Piwik_SetOption(self::OPTION_TODAY_ARCHIVE_TTL, $timeToLiveSeconds, $autoLoad = true);
+        Option::set(self::OPTION_TODAY_ARCHIVE_TTL, $timeToLiveSeconds, $autoLoad = true);
     }
 
     public static function getTodayArchiveTimeToLive()
     {
-        $timeToLive = Piwik_GetOption(self::OPTION_TODAY_ARCHIVE_TTL);
+        $timeToLive = Option::get(self::OPTION_TODAY_ARCHIVE_TTL);
         if ($timeToLive !== false) {
             return $timeToLive;
         }
@@ -223,7 +224,7 @@ class Rules
 
     public static function isBrowserTriggerEnabled()
     {
-        $browserArchivingEnabled = Piwik_GetOption(self::OPTION_BROWSER_TRIGGER_ARCHIVING);
+        $browserArchivingEnabled = Option::get(self::OPTION_BROWSER_TRIGGER_ARCHIVING);
         if ($browserArchivingEnabled !== false) {
             return (bool)$browserArchivingEnabled;
         }
@@ -235,7 +236,7 @@ class Rules
         if (!is_bool($enabled)) {
             throw new Exception('Browser trigger archiving must be set to true or false.');
         }
-        Piwik_SetOption(self::OPTION_BROWSER_TRIGGER_ARCHIVING, (int)$enabled, $autoLoad = true);
+        Option::set(self::OPTION_BROWSER_TRIGGER_ARCHIVING, (int)$enabled, $autoLoad = true);
         Cache::clearCacheGeneral();
     }
 }
\ No newline at end of file
diff --git a/core/FrontController.php b/core/FrontController.php
index e1068e46d8ae1aae8e55bb1c08f613cff84663bd..ebed44b919b960e0860a465f8d97b32c18a5fdf4 100644
--- a/core/FrontController.php
+++ b/core/FrontController.php
@@ -307,11 +307,11 @@ class FrontController
 
             try {
                 Db::createDatabaseObject();
-                Piwik_GetOption('TestingIfDatabaseConnectionWorked');
+                Option::get('TestingIfDatabaseConnectionWorked');
             } catch (Exception $exception) {
                 if (self::shouldRethrowException()) {
                     throw $exception;
-                }
+        }
 
                 /**
                  * This event is triggered in case a config file is not in the correct format or in case required values
diff --git a/core/Http.php b/core/Http.php
index 2b30cc620d394d789f597a0c31aa2d30278ea25e..ddd773999f0609e766ecfd82563888b191062da4 100644
--- a/core/Http.php
+++ b/core/Http.php
@@ -581,9 +581,9 @@ class Http
                 throw new Exception(Piwik_Translate('General_DownloadFail_HttpRequestFail'));
             }
 
-            Piwik_SetOption($downloadOption, $expectedFileSize);
+            Option::set($downloadOption, $expectedFileSize);
         } else {
-            $expectedFileSize = (int)Piwik_GetOption($downloadOption);
+            $expectedFileSize = (int)Option::get($downloadOption);
             if ($expectedFileSize === false) { // sanity check
                 throw new Exception("Trying to continue a download that never started?! That's not supposed to happen...");
             }
diff --git a/core/Option.php b/core/Option.php
index 3e4ad542d3138afd2a854aa42df72063fea4e272..b784fe0f6378d07d0674a1806be55a5af8c06cfb 100644
--- a/core/Option.php
+++ b/core/Option.php
@@ -20,6 +20,65 @@ namespace Piwik;
  */
 class Option
 {
+    /**
+     * Returns the option value for the requested option $name, fetching from database, if not in cache.
+     *
+     * @param string $name Key
+     * @return string|bool  Value or false, if not found
+     */
+    public static function get($name)
+    {
+        return self::getInstance()->getValue($name);
+    }
+
+    /**
+     * Sets the option value in the database and cache
+     *
+     * @param string $name
+     * @param string $value
+     * @param int $autoLoad if set to 1, this option value will be automatically loaded; should be set to 1 for options that will always be used in the Piwik request.
+     */
+    public static function set($name, $value, $autoload = 0)
+    {
+        return self::getInstance()->setValue($name, $value, $autoload);
+    }
+
+    /**
+     * Delete key-value pair from database and reload cache.
+     *
+     * @param string $name Key to match exactly
+     * @param string $value Optional value
+     */
+    public static function delete($name, $value = null)
+    {
+        return self::getInstance()->deleteValue($name, $value);
+    }
+
+    /**
+     * Delete key-value pair(s) from database and reload cache.
+     * The supplied pattern should use '%' as wildcards, and literal '_' should be escaped.
+     *
+     * @param string $name Pattern of key to match.
+     * @param string $value Optional value
+     */
+    public static function deleteLike($name, $value = null)
+    {
+        return self::getInstance()->deleteNameLike($name, $value);
+    }
+
+    /**
+     * Clears the cache
+     * Used in unit tests to reset the state of the object between tests
+     *
+     * @return void
+     */
+    public static function clearCache()
+    {
+        $option = self::getInstance();
+        $option->loaded = false;
+        $option->all = array();
+    }
+
     /**
      * @var array
      */
@@ -41,7 +100,7 @@ class Option
      *
      * @return \Piwik\Option
      */
-    static public function getInstance()
+    static private function getInstance()
     {
         if (self::$instance == null) {
             self::$instance = new self;
@@ -56,13 +115,7 @@ class Option
     {
     }
 
-    /**
-     * Returns the option value for the requested option $name, fetching from database, if not in cache.
-     *
-     * @param string $name Key
-     * @return string|bool  Value or false, if not found
-     */
-    public function get($name)
+    private function getValue($name)
     {
         $this->autoload();
         if (isset($this->all[$name])) {
@@ -78,14 +131,7 @@ class Option
         return $value;
     }
 
-    /**
-     * Sets the option value in the database and cache
-     *
-     * @param string $name
-     * @param string $value
-     * @param int $autoLoad if set to 1, this option value will be automatically loaded; should be set to 1 for options that will always be used in the Piwik request.
-     */
-    public function set($name, $value, $autoLoad = 0)
+    private function setValue($name, $value, $autoLoad = 0)
     {
         $autoLoad = (int)$autoLoad;
         Db::query('INSERT INTO `' . Common::prefixTable('option') . '` (option_name, option_value, autoload) ' .
@@ -95,13 +141,7 @@ class Option
         $this->all[$name] = $value;
     }
 
-    /**
-     * Delete key-value pair from database and reload cache.
-     *
-     * @param string $name Key to match exactly
-     * @param string $value Optional value
-     */
-    public function delete($name, $value = null)
+    private function deleteValue($name, $value)
     {
         $sql = 'DELETE FROM `' . Common::prefixTable('option') . '` WHERE option_name = ?';
         $bind[] = $name;
@@ -116,14 +156,7 @@ class Option
         $this->clearCache();
     }
 
-    /**
-     * Delete key-value pair(s) from database and reload cache.
-     * The supplied pattern should use '%' as wildcards, and literal '_' should be escaped.
-     *
-     * @param string $name Pattern of key to match.
-     * @param string $value Optional value
-     */
-    public function deleteLike($name, $value = null)
+    private function deleteNameLike($name, $value = null)
     {
         $sql = 'DELETE FROM `' . Common::prefixTable('option') . '` WHERE option_name LIKE ?';
         $bind[] = $name;
@@ -159,15 +192,4 @@ class Option
         $this->loaded = true;
     }
 
-    /**
-     * Clears the cache
-     * Used in unit tests to reset the state of the object between tests
-     *
-     * @return void
-     */
-    public function clearCache()
-    {
-        $this->loaded = false;
-        $this->all = array();
-    }
 }
diff --git a/core/PluginsManager.php b/core/PluginsManager.php
index fbe39c40bd028153a98a57e9f043b4016c7f6fe1..605451e1454cba1fe3fb19041940eb7d854fd366 100644
--- a/core/PluginsManager.php
+++ b/core/PluginsManager.php
@@ -204,7 +204,7 @@ class PluginsManager
         $this->returnLoadedPluginsInfo();
         $plugin = $this->getLoadedPlugin($pluginName);
         $plugin->uninstall();
-        Option::getInstance()->delete('version_' . $pluginName);
+        Option::delete('version_' . $pluginName);
 
         $this->removePluginFromPluginsConfig($pluginName);
         $this->removePluginFromPluginsInstalledConfig($pluginName);
diff --git a/core/SettingsPiwik.php b/core/SettingsPiwik.php
index 5dd9d6192064d2ca6a21037f2dd91f511f3e6891..6662b11a3927877b661f47ea8ccbe7866ca295ea 100644
--- a/core/SettingsPiwik.php
+++ b/core/SettingsPiwik.php
@@ -125,7 +125,7 @@ class SettingsPiwik
         }
 
         $key = 'piwikUrl';
-        $url = Piwik_GetOption($key);
+        $url = Option::get($key);
         if (Common::isPhpCliMode()
             // in case archive.php is triggered with domain localhost
             || SettingsServer::isArchivePhpTriggered()
@@ -141,7 +141,7 @@ class SettingsPiwik
             || $currentUrl != $url
         ) {
             if (strlen($currentUrl) >= strlen('http://a/')) {
-                Piwik_SetOption($key, $currentUrl, $autoLoad = true);
+                Option::set($key, $currentUrl, $autoLoad = true);
             }
             $url = $currentUrl;
         }
diff --git a/core/TaskScheduler.php b/core/TaskScheduler.php
index a81268c4c99636809909cae675ae2c7095fdd228..80bbc25f7aae4c4cc5887a211e91324ecc64d30c 100644
--- a/core/TaskScheduler.php
+++ b/core/TaskScheduler.php
@@ -103,7 +103,7 @@ class TaskScheduler
                 if (self::taskShouldBeRescheduled($taskName, $timetable)) {
                     // update the scheduled time
                     $timetable[$taskName] = $task->getRescheduledTime();
-                    Piwik_SetOption(self::TIMETABLE_OPTION_STRING, serialize($timetable));
+                    Option::set(self::TIMETABLE_OPTION_STRING, serialize($timetable));
                 }
             }
         }
@@ -186,7 +186,7 @@ class TaskScheduler
 
     static private function getTimetableFromOptionTable()
     {
-        return self::getTimetableFromOptionValue(Piwik_GetOption(self::TIMETABLE_OPTION_STRING));
+        return self::getTimetableFromOptionValue(Option::get(self::TIMETABLE_OPTION_STRING));
     }
 
     /**
diff --git a/core/Tracker.php b/core/Tracker.php
index 0db9fb2adf31295d39a0dcff1f6f1a9b45f636dc..0d3a00ee9ba433cb7734a990cee4607cc19570c8 100644
--- a/core/Tracker.php
+++ b/core/Tracker.php
@@ -353,7 +353,7 @@ class Tracker
             $cache['lastTrackerCronRun'] = $now;
             Cache::setCacheGeneral($cache);
             self::initCorePiwikInTrackerMode();
-            Piwik_SetOption('lastTrackerCronRun', $cache['lastTrackerCronRun']);
+            Option::set('lastTrackerCronRun', $cache['lastTrackerCronRun']);
             Common::printDebug('-> Scheduled Tasks: Starting...');
 
             // save current user privilege and temporarily assume super user privilege
diff --git a/core/Tracker/Cache.php b/core/Tracker/Cache.php
index 948d1a34ad87dc24f367062c5fc722f354ab6080..ae328aed385cd1da7c216735441b15ff40d0f637 100644
--- a/core/Tracker/Cache.php
+++ b/core/Tracker/Cache.php
@@ -13,6 +13,7 @@ namespace Piwik\Tracker;
 use Piwik\ArchiveProcessor\Rules;
 use Piwik\CacheFile;
 use Piwik\Config;
+use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Tracker;
 
@@ -106,7 +107,7 @@ class Cache
         Tracker::initCorePiwikInTrackerMode();
         $cacheContent = array(
             'isBrowserTriggerEnabled' => Rules::isBrowserTriggerEnabled(),
-            'lastTrackerCronRun'      => Piwik_GetOption('lastTrackerCronRun'),
+            'lastTrackerCronRun'      => Option::get('lastTrackerCronRun'),
         );
 
         /**
diff --git a/core/UpdateCheck.php b/core/UpdateCheck.php
index a677abdd43fcfb0dd4ef83676b09d7827728aa54..f1ba7edb9aa5bf91a32adbac2431223ae8495ecf 100644
--- a/core/UpdateCheck.php
+++ b/core/UpdateCheck.php
@@ -38,13 +38,13 @@ class UpdateCheck
             $interval = self::CHECK_INTERVAL;
         }
 
-        $lastTimeChecked = Piwik_GetOption(self::LAST_TIME_CHECKED);
+        $lastTimeChecked = Option::get(self::LAST_TIME_CHECKED);
         if ($force
             || $lastTimeChecked === false
             || time() - $interval > $lastTimeChecked
         ) {
             // set the time checked first, so that parallel Piwik requests don't all trigger the http requests
-            Piwik_SetOption(self::LAST_TIME_CHECKED, time(), $autoLoad = 1);
+            Option::set(self::LAST_TIME_CHECKED, time(), $autoLoad = 1);
             $parameters = array(
                 'piwik_version' => Version::VERSION,
                 'php_version'   => PHP_VERSION,
@@ -71,7 +71,7 @@ class UpdateCheck
                 // e.g., disable_functions = fsockopen; allow_url_open = Off
                 $latestVersion = '';
             }
-            Piwik_SetOption(self::LATEST_VERSION, $latestVersion);
+            Option::set(self::LATEST_VERSION, $latestVersion);
         }
     }
 
@@ -83,7 +83,7 @@ class UpdateCheck
      */
     public static function isNewestVersionAvailable()
     {
-        $latestVersion = Piwik_GetOption(self::LATEST_VERSION);
+        $latestVersion = Option::get(self::LATEST_VERSION);
         if (!empty($latestVersion)
             && version_compare(Version::VERSION, $latestVersion) == -1
         ) {
diff --git a/core/Updater.php b/core/Updater.php
index 0bbc6280ae7644f8b03013ddaca806b32a389501..1ccdb78e18e6245c0681b8f703e05b0f0e7540e4 100644
--- a/core/Updater.php
+++ b/core/Updater.php
@@ -55,7 +55,7 @@ class Updater
     public static function recordComponentSuccessfullyUpdated($name, $version)
     {
         try {
-            Piwik_SetOption(self::getNameInOptionTable($name), $version, $autoLoad = 1);
+            Option::set(self::getNameInOptionTable($name), $version, $autoLoad = 1);
         } catch (\Exception $e) {
             // case when the option table is not yet created (before 0.2.10)
         }
@@ -245,7 +245,7 @@ class Updater
 
         foreach ($this->componentsToCheck as $name => $version) {
             try {
-                $currentVersion = Piwik_GetOption(self::getNameInOptionTable($name));
+                $currentVersion = Option::get(self::getNameInOptionTable($name));
             } catch (\Exception $e) {
                 // mysql error 1146: table doesn't exist
                 if (Db::get()->isErrNo($e, '1146')) {
diff --git a/core/Updates/2.0-a13.php b/core/Updates/2.0-a13.php
index fac9982240bd611ad1875a899a9fdde039ba8d8d..1e4c0145f4433a8ecb830152150c14340501e672 100644
--- a/core/Updates/2.0-a13.php
+++ b/core/Updates/2.0-a13.php
@@ -13,6 +13,7 @@ namespace Piwik\Updates;
 use Piwik\Common;
 use Piwik\Db;
 use Piwik\Filesystem;
+use Piwik\Option;
 use Piwik\Updater;
 use Piwik\Updates;
 
@@ -50,7 +51,7 @@ class Updates_2_0_a13 extends Updates
     public static function update()
     {
         // delete schema version_
-        \Piwik\Option::getInstance()->delete('version_Referers');
+        Option::delete('version_Referers');
 
         Updater::updateDatabase(__FILE__, self::getSql());
 
diff --git a/core/ViewDataTable.php b/core/ViewDataTable.php
index 1977cf8243b889682b7bc8437f7e7f4ca36f94fd..9bf0a4b5445a2823456810434ddc30a60e18c626 100644
--- a/core/ViewDataTable.php
+++ b/core/ViewDataTable.php
@@ -1144,7 +1144,7 @@ class ViewDataTable
             // if it's likely that the report data for this data table has been purged,
             // set whether we should display a message to that effect.
             $view->showReportDataWasPurgedMessage = $this->hasReportBeenPurged();
-            $view->deleteReportsOlderThan = Piwik_GetOption('delete_reports_older_than');
+            $view->deleteReportsOlderThan = Option::get('delete_reports_older_than');
         }
         $view->idSubtable = $this->idSubtable;
         $view->clientSideParameters = $this->getClientSideParametersToSet();
diff --git a/core/functions.php b/core/functions.php
index 6cca433647a3ea6de6ce7a1229b5eea63ea58656..38fae1c387f43c782fe45ceabc5763fa1eec28e6 100644
--- a/core/functions.php
+++ b/core/functions.php
@@ -61,32 +61,6 @@ namespace {
         }
     }
 
-
-    /**
-     * Returns the option value for the requested option $name
-     *
-     * @param string $name Key
-     * @return string|bool  Value or false, if not found
-     * @api
-     */
-    function Piwik_GetOption($name)
-    {
-        return Piwik\Option::getInstance()->get($name);
-    }
-
-    /**
-     * Sets the option value in the database
-     *
-     * @param string $name
-     * @param string $value
-     * @param int $autoLoad if set to 1, this option value will be automatically loaded; should be set to 1 for options that will always be used in the Piwik request.
-     * @api
-     */
-    function Piwik_SetOption($name, $value, $autoLoad = 0)
-    {
-        Piwik\Option::getInstance()->set($name, $value, $autoLoad);
-    }
-
     /**
      * Returns the AdminMenu
      *
diff --git a/misc/cron/archive.php b/misc/cron/archive.php
index 4fecde56626a5bcd5574cc9efd2f2b95758c3282..61cdb807c973056ec33a13931ebd449b14b172f8 100644
--- a/misc/cron/archive.php
+++ b/misc/cron/archive.php
@@ -223,8 +223,8 @@ class CronArchive
 
             $lastTimestampWebsiteProcessedPeriods = $lastTimestampWebsiteProcessedDay = false;
             if (!$this->shouldResetState) {
-                $lastTimestampWebsiteProcessedPeriods = Piwik_GetOption($this->lastRunKey($idsite, "periods"));
-                $lastTimestampWebsiteProcessedDay = Piwik_GetOption($this->lastRunKey($idsite, "day"));
+                $lastTimestampWebsiteProcessedPeriods = Option::get($this->lastRunKey($idsite, "periods"));
+                $lastTimestampWebsiteProcessedDay = Option::get($this->lastRunKey($idsite, "day"));
             }
 
             // For period other than days, we only re-process the reports at most
@@ -272,7 +272,7 @@ class CronArchive
 
             // Fake that the request is already done, so that other archive.php
             // running do not grab the same website from the queue
-            Piwik_SetOption($this->lastRunKey($idsite, "day"), time());
+            Option::set($this->lastRunKey($idsite, "day"), time());
 
             $url = $this->getVisitsRequestUrl($idsite, "day",
                 // when some data was purged from this website
@@ -292,7 +292,7 @@ class CronArchive
                 || count($response) == 0
             ) {
                 // cancel the succesful run flag
-                Piwik_SetOption($this->lastRunKey($idsite, "day"), 0);
+                Option::set($this->lastRunKey($idsite, "day"), 0);
 
                 $this->log("WARNING: Empty or invalid response '$content' for website id $idsite, " . $timerWebsite->__toString() . ", skipping");
                 $skipped++;
@@ -334,7 +334,7 @@ class CronArchive
                 }
                 // Record succesful run of this website's periods archiving
                 if ($success) {
-                    Piwik_SetOption($this->lastRunKey($idsite, "periods"), time());
+                    Option::set($this->lastRunKey($idsite, "periods"), time());
 
                     // Remove this website from the list of websites to be invalidated
                     // since it's now just been re-processing the reports, job is done!
@@ -345,7 +345,7 @@ class CronArchive
                             if ($found !== false) {
                                 unset($websiteIdsInvalidated[$found]);
 //								$this->log("Websites left to invalidate: " . implode(", ", $websiteIdsInvalidated));
-                                Piwik_SetOption(APICoreAdminHome::OPTION_INVALIDATED_IDSITES, serialize($websiteIdsInvalidated));
+                                Option::set(APICoreAdminHome::OPTION_INVALIDATED_IDSITES, serialize($websiteIdsInvalidated));
                             }
                         }
                     }
@@ -548,7 +548,7 @@ class CronArchive
             $this->logFatalError($summary);
         } else {
             // No error -> Logs the successful script execution until completion
-            Piwik_SetOption(self::OPTION_ARCHIVING_FINISHED_TS, time());
+            Option::set(self::OPTION_ARCHIVING_FINISHED_TS, time());
         }
     }
 
@@ -739,7 +739,7 @@ class CronArchive
             $this->shouldArchiveAllWebsites = true;
         }
 
-        $this->timeLastCompleted = Piwik_GetOption(self::OPTION_ARCHIVING_FINISHED_TS);
+        $this->timeLastCompleted = Option::get(self::OPTION_ARCHIVING_FINISHED_TS);
         if ($this->shouldResetState) {
             $this->timeLastCompleted = false;
         }
diff --git a/plugins/Annotations/AnnotationList.php b/plugins/Annotations/AnnotationList.php
index 9f114608e6857d6d76e33d98090b736e8b3ed4c7..deca05a5576a8d6d96ea8cbb36117a26903bc917 100755
--- a/plugins/Annotations/AnnotationList.php
+++ b/plugins/Annotations/AnnotationList.php
@@ -12,6 +12,7 @@ namespace Piwik\Plugins\Annotations;
 
 use Exception;
 use Piwik\Date;
+use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Site;
 
@@ -107,7 +108,7 @@ class AnnotationList
         $this->checkIdSiteIsLoaded($idSite);
 
         $optionName = self::getAnnotationCollectionOptionName($idSite);
-        Piwik_SetOption($optionName, serialize($this->annotations[$idSite]));
+        Option::set($optionName, serialize($this->annotations[$idSite]));
     }
 
     /**
@@ -312,7 +313,7 @@ class AnnotationList
         $result = array();
         foreach ($this->idSites as $id) {
             $optionName = self::getAnnotationCollectionOptionName($id);
-            $serialized = Piwik_GetOption($optionName);
+            $serialized = Option::get($optionName);
 
             if ($serialized !== false) {
                 $result[$id] = unserialize($serialized);
diff --git a/plugins/CoreAdminHome/API.php b/plugins/CoreAdminHome/API.php
index 8c52b97b09f31ac7fff7af00a7c03e3b396c74f0..909a178738fff35f2da1a8785dcb77773476b546 100644
--- a/plugins/CoreAdminHome/API.php
+++ b/plugins/CoreAdminHome/API.php
@@ -16,6 +16,7 @@ use Piwik\Config;
 use Piwik\DataAccess\ArchiveTableCreator;
 use Piwik\Date;
 use Piwik\Db;
+use Piwik\Option;
 use Piwik\Period;
 use Piwik\Period\Week;
 use Piwik\Piwik;
@@ -195,7 +196,7 @@ class API
         $invalidatedIdSites = array_merge($invalidatedIdSites, $idSites);
         $invalidatedIdSites = array_unique($invalidatedIdSites);
         $invalidatedIdSites = array_values($invalidatedIdSites);
-        Piwik_SetOption(self::OPTION_INVALIDATED_IDSITES, serialize($invalidatedIdSites));
+        Option::set(self::OPTION_INVALIDATED_IDSITES, serialize($invalidatedIdSites));
 
         Site::clearCache();
 
@@ -221,7 +222,7 @@ class API
     static public function getWebsiteIdsToInvalidate()
     {
         Piwik::checkUserHasSomeAdminAccess();
-        $invalidatedIdSites = Piwik_GetOption(self::OPTION_INVALIDATED_IDSITES);
+        $invalidatedIdSites = Option::get(self::OPTION_INVALIDATED_IDSITES);
         if ($invalidatedIdSites
             && ($invalidatedIdSites = unserialize($invalidatedIdSites))
             && count($invalidatedIdSites)
diff --git a/plugins/CoreUpdater/Controller.php b/plugins/CoreUpdater/Controller.php
index 59b6645af0c310af1a7ac861d67713b1aebc8ec7..d2474acf683ff97c1882f8c3da58c37c26a81647 100644
--- a/plugins/CoreUpdater/Controller.php
+++ b/plugins/CoreUpdater/Controller.php
@@ -19,6 +19,7 @@ use Piwik\DbHelper;
 use Piwik\Filechecks;
 use Piwik\Filesystem;
 use Piwik\Http;
+use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Plugins\LanguagesManager\LanguagesManager;
 use Piwik\SettingsPiwik;
@@ -311,7 +312,7 @@ class Controller extends \Piwik\Controller
         } else {
             $this->errorMessages = array();
             try {
-                $currentVersion = Piwik_GetOption('version_core');
+                $currentVersion = Option::get('version_core');
             } catch (Exception $e) {
                 $currentVersion = '<= 0.2.9';
             }
diff --git a/plugins/DBStats/DBStats.php b/plugins/DBStats/DBStats.php
index 7a042565b6594b06aa02e02ad713bcd2d2aef51f..8a9915051b52efc590152020cedaa549f93003de 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\Option;
 use Piwik\Piwik;
 use Piwik\ScheduledTask;
 use Piwik\ScheduledTime\Weekly;
@@ -72,7 +73,7 @@ class DBStats extends \Piwik\Plugin
         $api->getIndividualMetricsSummary(true);
 
         $now = Date::now()->getLocalized("%longYear%, %shortMonth% %day%");
-        Piwik_SetOption(self::TIME_OF_LAST_TASK_RUN_OPTION, $now);
+        Option::set(self::TIME_OF_LAST_TASK_RUN_OPTION, $now);
     }
 
     public function getStylesheetFiles(&$stylesheets)
@@ -83,7 +84,7 @@ class DBStats extends \Piwik\Plugin
     /** Returns the date when the cacheDataByArchiveNameReports was last run. */
     public static function getDateOfLastCachingRun()
     {
-        return Piwik_GetOption(self::TIME_OF_LAST_TASK_RUN_OPTION);
+        return Option::get(self::TIME_OF_LAST_TASK_RUN_OPTION);
     }
 
     public function getReportDisplayProperties(&$properties)
diff --git a/plugins/DBStats/MySQLMetadataProvider.php b/plugins/DBStats/MySQLMetadataProvider.php
index 3a9dc5ed1d50c73bee14b612d10a4ccc103a4b1f..fe7d722fd4244e2ef9a347f8eb30d020f4f0ad8d 100755
--- a/plugins/DBStats/MySQLMetadataProvider.php
+++ b/plugins/DBStats/MySQLMetadataProvider.php
@@ -16,6 +16,7 @@ use Piwik\Config;
 use Piwik\DataTable;
 use Piwik\Db;
 use Piwik\DbHelper;
+use Piwik\Option;
 
 /**
  * Utility class that provides general information about databases, including the size of
@@ -227,7 +228,7 @@ class MySQLMetadataProvider
             $dataTableOptionName = $this->getCachedOptionName($status['Name'], 'byArchiveName');
 
             // if option exists && !$forceCache, use the cached data, otherwise create the
-            $cachedData = Piwik_GetOption($dataTableOptionName);
+            $cachedData = Option::get($dataTableOptionName);
             if ($cachedData !== false && !$forceCache) {
                 $table = new DataTable();
                 $table->addRowsFromSerializedArray($cachedData);
@@ -243,7 +244,7 @@ class MySQLMetadataProvider
 
                 $serializedTables = $table->getSerialized();
                 $serializedTable = reset($serializedTables);
-                Piwik_SetOption($dataTableOptionName, $serializedTable);
+                Option::set($dataTableOptionName, $serializedTable);
             }
 
             // add estimated_size column
diff --git a/plugins/Login/Login.php b/plugins/Login/Login.php
index 5a55e33f5e84071029a8545a250f41cc82a30ffe..fd242c32308c2fae86c8307aa4054a87025c2081 100644
--- a/plugins/Login/Login.php
+++ b/plugins/Login/Login.php
@@ -144,7 +144,7 @@ class Login extends \Piwik\Plugin
         $optionName = self::getPasswordResetInfoOptionName($login);
         $optionData = UsersManager::getPasswordHash($password);
 
-        Piwik_SetOption($optionName, $optionData);
+        Option::set($optionName, $optionData);
     }
 
     /**
@@ -155,7 +155,7 @@ class Login extends \Piwik\Plugin
     public static function removePasswordResetInfo($login)
     {
         $optionName = self::getPasswordResetInfoOptionName($login);
-        Option::getInstance()->delete($optionName);
+        Option::delete($optionName);
     }
 
     /**
@@ -167,7 +167,7 @@ class Login extends \Piwik\Plugin
     public static function getPasswordToResetTo($login)
     {
         $optionName = self::getPasswordResetInfoOptionName($login);
-        return Piwik_GetOption($optionName);
+        return Option::get($optionName);
     }
 
     /**
diff --git a/plugins/MobileMessaging/API.php b/plugins/MobileMessaging/API.php
index 538cbee1cc0df0033e3f65a1b85b00501b1fb947..3b345e94c4c953b2f49068bad55fce33a55cdabc 100644
--- a/plugins/MobileMessaging/API.php
+++ b/plugins/MobileMessaging/API.php
@@ -11,6 +11,7 @@
 namespace Piwik\Plugins\MobileMessaging;
 
 use Piwik\Common;
+use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Plugins\MobileMessaging\SMSProvider;
 use Piwik\Plugins\ScheduledReports\API as APIScheduledReports;
@@ -401,7 +402,7 @@ class API
 
     private function setUserSettings($user, $settings)
     {
-        Piwik_SetOption(
+        Option::set(
             $user . MobileMessaging::USER_SETTINGS_POSTFIX_OPTION,
             Common::json_encode($settings)
         );
@@ -425,7 +426,7 @@ class API
     private function getUserSettings($user)
     {
         $optionIndex = $user . MobileMessaging::USER_SETTINGS_POSTFIX_OPTION;
-        $userSettings = Piwik_GetOption($optionIndex);
+        $userSettings = Option::get($optionIndex);
 
         if (empty($userSettings)) {
             $userSettings = array();
@@ -454,7 +455,7 @@ class API
     public function setDelegatedManagement($delegatedManagement)
     {
         Piwik::checkUserIsSuperUser();
-        Piwik_SetOption(MobileMessaging::DELEGATED_MANAGEMENT_OPTION, $delegatedManagement);
+        Option::set(MobileMessaging::DELEGATED_MANAGEMENT_OPTION, $delegatedManagement);
     }
 
     /**
@@ -465,6 +466,6 @@ class API
     public function getDelegatedManagement()
     {
         Piwik::checkUserHasSomeViewAccess();
-        return Piwik_GetOption(MobileMessaging::DELEGATED_MANAGEMENT_OPTION) == 'true';
+        return Option::get(MobileMessaging::DELEGATED_MANAGEMENT_OPTION) == 'true';
     }
 }
diff --git a/plugins/MobileMessaging/MobileMessaging.php b/plugins/MobileMessaging/MobileMessaging.php
index bca9f4a2e9a6b5f9b904b493b3119f3612b95107..34017d195611d26d25c137e14466e74b47f847c4 100644
--- a/plugins/MobileMessaging/MobileMessaging.php
+++ b/plugins/MobileMessaging/MobileMessaging.php
@@ -10,6 +10,7 @@
  */
 namespace Piwik\Plugins\MobileMessaging;
 
+use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Plugins\API\API as APIPlugins;
 use Piwik\Plugins\MobileMessaging\API as APIMobileMessaging;
@@ -236,9 +237,9 @@ class MobileMessaging extends \Piwik\Plugin
 
     function install()
     {
-        $delegatedManagement = Piwik_GetOption(self::DELEGATED_MANAGEMENT_OPTION);
+        $delegatedManagement = Option::get(self::DELEGATED_MANAGEMENT_OPTION);
         if (empty($delegatedManagement)) {
-            Piwik_SetOption(self::DELEGATED_MANAGEMENT_OPTION, self::DELEGATED_MANAGEMENT_OPTION_DEFAULT);
+            Option::set(self::DELEGATED_MANAGEMENT_OPTION, self::DELEGATED_MANAGEMENT_OPTION_DEFAULT);
         }
     }
 
diff --git a/plugins/PrivacyManager/Controller.php b/plugins/PrivacyManager/Controller.php
index 1a8debbdc42d923164882565979a1b3c57debe7f..3a29c285b42e086b48a4447bef5e6c2d0eadb945 100644
--- a/plugins/PrivacyManager/Controller.php
+++ b/plugins/PrivacyManager/Controller.php
@@ -15,6 +15,7 @@ use Piwik\Config;
 use Piwik\Date;
 use Piwik\Db;
 use Piwik\MetricsFormatter;
+use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Plugins\DBStats\MySQLMetadataProvider;
 use Piwik\Plugins\LanguagesManager\LanguagesManager;
@@ -245,7 +246,7 @@ class Controller extends \Piwik\Controller\Admin
 
         $scheduleTimetable = $taskScheduler->getScheduledTimeForMethod("PrivacyManager", "deleteLogTables");
 
-        $optionTable = Piwik_GetOption(self::OPTION_LAST_DELETE_PIWIK_LOGS);
+        $optionTable = Option::get(self::OPTION_LAST_DELETE_PIWIK_LOGS);
 
         //If task was already rescheduled, read time from taskTimetable. Else, calculate next possible runtime.
         if (!empty($scheduleTimetable) && ($scheduleTimetable - time() > 0)) {
diff --git a/plugins/PrivacyManager/PrivacyManager.php b/plugins/PrivacyManager/PrivacyManager.php
index 006afd77cd570f68039ac044b2675753cdfafb9d..7c1880cc3f388141e296de2ea03dce2b0dad6115 100644
--- a/plugins/PrivacyManager/PrivacyManager.php
+++ b/plugins/PrivacyManager/PrivacyManager.php
@@ -17,6 +17,7 @@ use Piwik\Date;
 use Piwik\Db;
 use Piwik\Metrics;
 
+use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Plugins\Goals\Archiver;
 use Piwik\ScheduledTask;
@@ -132,7 +133,7 @@ class PrivacyManager extends \Piwik\Plugin
 
         // load the settings for the data purging settings
         foreach (self::$defaultPurgeDataOptions as $optionName => $defaultValue) {
-            $value = Piwik_GetOption($optionName);
+            $value = Option::get($optionName);
             if ($value !== false) {
                 $settings[$optionName] = $value;
             } else {
@@ -142,7 +143,7 @@ class PrivacyManager extends \Piwik\Plugin
                 }
 
                 // option is not saved in the DB, so save it now
-                Piwik_SetOption($optionName, $settings[$optionName]);
+                Option::set($optionName, $settings[$optionName]);
             }
         }
 
@@ -160,7 +161,7 @@ class PrivacyManager extends \Piwik\Plugin
 
         foreach (self::$defaultPurgeDataOptions as $optionName => $defaultValue) {
             if (isset($settings[$optionName])) {
-                Piwik_SetOption($optionName, $settings[$optionName]);
+                Option::set($optionName, $settings[$optionName]);
             }
         }
     }
@@ -199,7 +200,7 @@ class PrivacyManager extends \Piwik\Plugin
         }
 
         // set last run time
-        Piwik_SetOption(self::OPTION_LAST_DELETE_PIWIK_REPORTS, Date::factory('today')->getTimestamp());
+        Option::set(self::OPTION_LAST_DELETE_PIWIK_REPORTS, Date::factory('today')->getTimestamp());
 
         ReportsPurger::make($settings, self::getAllMetricsToKeep())->purgeData();
     }
@@ -237,7 +238,7 @@ class PrivacyManager extends \Piwik\Plugin
          * every time, when the schedule is triggered.
          */
         $lastDeleteDate = Date::factory("today")->getTimestamp();
-        Piwik_SetOption(self::OPTION_LAST_DELETE_PIWIK_LOGS, $lastDeleteDate);
+        Option::set(self::OPTION_LAST_DELETE_PIWIK_LOGS, $lastDeleteDate);
 
         // execute the purge
         LogDataPurger::make($settings)->purgeData();
@@ -370,14 +371,14 @@ class PrivacyManager extends \Piwik\Plugin
     {
         // Log deletion may not run until it is once rescheduled (initial run). This is the
         // only way to guarantee the calculated next scheduled deletion time.
-        $initialDelete = Piwik_GetOption(self::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL);
+        $initialDelete = Option::get(self::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL);
         if (empty($initialDelete)) {
-            Piwik_SetOption(self::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL, 1);
+            Option::set(self::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL, 1);
             return false;
         }
 
         // Make sure, log purging is allowed to run now
-        $lastDelete = Piwik_GetOption($lastRanOption);
+        $lastDelete = Option::get($lastRanOption);
         $deleteIntervalDays = $settings['delete_logs_schedule_lowest_interval'];
         $deleteIntervalSeconds = $this->getDeleteIntervalInSeconds($deleteIntervalDays);
 
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index 00ba33b32fcdade7234eb4711ec22ca938e422a5..6c6dab9f542176d16d83b459cfc4ec802fec4ceb 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -17,6 +17,7 @@ use Piwik\Date;
 use Piwik\Db;
 use Piwik\IP;
 use Piwik\MetricsFormatter;
+use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\SettingsPiwik;
 use Piwik\SettingsServer;
@@ -714,7 +715,7 @@ class API
     {
         Piwik::checkUserIsSuperUser();
         $excludedIps = $this->checkAndReturnExcludedIps($excludedIps);
-        Piwik_SetOption(self::OPTION_EXCLUDED_IPS_GLOBAL, $excludedIps);
+        Option::set(self::OPTION_EXCLUDED_IPS_GLOBAL, $excludedIps);
         Cache::deleteTrackerCache();
         return true;
     }
@@ -730,8 +731,8 @@ class API
     public function setGlobalSearchParameters($searchKeywordParameters, $searchCategoryParameters)
     {
         Piwik::checkUserIsSuperUser();
-        Piwik_SetOption(self::OPTION_SEARCH_KEYWORD_QUERY_PARAMETERS_GLOBAL, $searchKeywordParameters);
-        Piwik_SetOption(self::OPTION_SEARCH_CATEGORY_QUERY_PARAMETERS_GLOBAL, $searchCategoryParameters);
+        Option::set(self::OPTION_SEARCH_KEYWORD_QUERY_PARAMETERS_GLOBAL, $searchKeywordParameters);
+        Option::set(self::OPTION_SEARCH_CATEGORY_QUERY_PARAMETERS_GLOBAL, $searchCategoryParameters);
         Cache::deleteTrackerCache();
         return true;
     }
@@ -742,7 +743,7 @@ class API
     public function getSearchKeywordParametersGlobal()
     {
         Piwik::checkUserHasSomeAdminAccess();
-        $names = Piwik_GetOption(self::OPTION_SEARCH_KEYWORD_QUERY_PARAMETERS_GLOBAL);
+        $names = Option::get(self::OPTION_SEARCH_KEYWORD_QUERY_PARAMETERS_GLOBAL);
         if ($names === false) {
             $names = self::DEFAULT_SEARCH_KEYWORD_PARAMETERS;
         }
@@ -758,7 +759,7 @@ class API
     public function getSearchCategoryParametersGlobal()
     {
         Piwik::checkUserHasSomeAdminAccess();
-        return Piwik_GetOption(self::OPTION_SEARCH_CATEGORY_QUERY_PARAMETERS_GLOBAL);
+        return Option::get(self::OPTION_SEARCH_CATEGORY_QUERY_PARAMETERS_GLOBAL);
     }
 
     /**
@@ -769,7 +770,7 @@ class API
     public function getExcludedQueryParametersGlobal()
     {
         Piwik::checkUserHasSomeViewAccess();
-        return Piwik_GetOption(self::OPTION_EXCLUDED_QUERY_PARAMETERS_GLOBAL);
+        return Option::get(self::OPTION_EXCLUDED_QUERY_PARAMETERS_GLOBAL);
     }
 
     /**
@@ -782,7 +783,7 @@ class API
     public function getExcludedUserAgentsGlobal()
     {
         Piwik::checkUserHasSomeAdminAccess();
-        return Piwik_GetOption(self::OPTION_EXCLUDED_USER_AGENTS_GLOBAL);
+        return Option::get(self::OPTION_EXCLUDED_USER_AGENTS_GLOBAL);
     }
 
     /**
@@ -798,7 +799,7 @@ class API
 
         // update option
         $excludedUserAgents = $this->checkAndReturnCommaSeparatedStringList($excludedUserAgents);
-        Piwik_SetOption(self::OPTION_EXCLUDED_USER_AGENTS_GLOBAL, $excludedUserAgents);
+        Option::set(self::OPTION_EXCLUDED_USER_AGENTS_GLOBAL, $excludedUserAgents);
 
         // make sure tracker cache will reflect change
         Cache::deleteTrackerCache();
@@ -813,7 +814,7 @@ class API
     public function isSiteSpecificUserAgentExcludeEnabled()
     {
         Piwik::checkUserHasSomeAdminAccess();
-        return (bool)Piwik_GetOption(self::OPTION_SITE_SPECIFIC_USER_AGENT_EXCLUDE_ENABLE);
+        return (bool)Option::get(self::OPTION_SITE_SPECIFIC_USER_AGENT_EXCLUDE_ENABLE);
     }
 
     /**
@@ -827,7 +828,7 @@ class API
         Piwik::checkUserIsSuperUser();
 
         // update option
-        Piwik_SetOption(self::OPTION_SITE_SPECIFIC_USER_AGENT_EXCLUDE_ENABLE, $enabled);
+        Option::set(self::OPTION_SITE_SPECIFIC_USER_AGENT_EXCLUDE_ENABLE, $enabled);
 
         // make sure tracker cache will reflect change
         Cache::deleteTrackerCache();
@@ -842,7 +843,7 @@ class API
     public function getKeepURLFragmentsGlobal()
     {
         Piwik::checkUserHasSomeViewAccess();
-        return (bool)Piwik_GetOption(self::OPTION_KEEP_URL_FRAGMENTS_GLOBAL);
+        return (bool)Option::get(self::OPTION_KEEP_URL_FRAGMENTS_GLOBAL);
     }
 
     /**
@@ -858,7 +859,7 @@ class API
         Piwik::checkUserIsSuperUser();
 
         // update option
-        Piwik_SetOption(self::OPTION_KEEP_URL_FRAGMENTS_GLOBAL, $enabled);
+        Option::set(self::OPTION_KEEP_URL_FRAGMENTS_GLOBAL, $enabled);
 
         // make sure tracker cache will reflect change
         Cache::deleteTrackerCache();
@@ -875,7 +876,7 @@ class API
     {
         Piwik::checkUserIsSuperUser();
         $excludedQueryParameters = $this->checkAndReturnCommaSeparatedStringList($excludedQueryParameters);
-        Piwik_SetOption(self::OPTION_EXCLUDED_QUERY_PARAMETERS_GLOBAL, $excludedQueryParameters);
+        Option::set(self::OPTION_EXCLUDED_QUERY_PARAMETERS_GLOBAL, $excludedQueryParameters);
         Cache::deleteTrackerCache();
         return true;
     }
@@ -888,7 +889,7 @@ class API
     public function getExcludedIpsGlobal()
     {
         Piwik::checkUserHasSomeAdminAccess();
-        return Piwik_GetOption(self::OPTION_EXCLUDED_IPS_GLOBAL);
+        return Option::get(self::OPTION_EXCLUDED_IPS_GLOBAL);
     }
 
     /**
@@ -899,7 +900,7 @@ class API
     public function getDefaultCurrency()
     {
         Piwik::checkUserHasSomeAdminAccess();
-        $defaultCurrency = Piwik_GetOption(self::OPTION_DEFAULT_CURRENCY);
+        $defaultCurrency = Option::get(self::OPTION_DEFAULT_CURRENCY);
         if ($defaultCurrency) {
             return $defaultCurrency;
         }
@@ -916,7 +917,7 @@ class API
     {
         Piwik::checkUserIsSuperUser();
         $this->checkValidCurrency($defaultCurrency);
-        Piwik_SetOption(self::OPTION_DEFAULT_CURRENCY, $defaultCurrency);
+        Option::set(self::OPTION_DEFAULT_CURRENCY, $defaultCurrency);
         return true;
     }
 
@@ -928,7 +929,7 @@ class API
      */
     public function getDefaultTimezone()
     {
-        $defaultTimezone = Piwik_GetOption(self::OPTION_DEFAULT_TIMEZONE);
+        $defaultTimezone = Option::get(self::OPTION_DEFAULT_TIMEZONE);
         if ($defaultTimezone) {
             return $defaultTimezone;
         }
@@ -945,7 +946,7 @@ class API
     {
         Piwik::checkUserIsSuperUser();
         $this->checkValidTimezone($defaultTimezone);
-        Piwik_SetOption(self::OPTION_DEFAULT_TIMEZONE, $defaultTimezone);
+        Option::set(self::OPTION_DEFAULT_TIMEZONE, $defaultTimezone);
         return true;
     }
 
diff --git a/plugins/UserCountry/GeoIPAutoUpdater.php b/plugins/UserCountry/GeoIPAutoUpdater.php
index ec1627a5fb36b24ed85f8db134cd6bf4a7f714c6..8a8064db57fe71f074f825f624b2125c34ba4356 100755
--- a/plugins/UserCountry/GeoIPAutoUpdater.php
+++ b/plugins/UserCountry/GeoIPAutoUpdater.php
@@ -15,6 +15,7 @@ use Piwik\Common;
 use Piwik\Date;
 use Piwik\Http;
 use Piwik\Log;
+use Piwik\Option;
 use Piwik\Plugins\UserCountry\LocationProvider;
 use Piwik\Plugins\UserCountry\LocationProvider\GeoIp;
 use Piwik\Plugins\UserCountry\LocationProvider\GeoIp\Php;
@@ -60,19 +61,19 @@ class GeoIPAutoUpdater
     public function update()
     {
         try {
-            Piwik_SetOption(self::LAST_RUN_TIME_OPTION_NAME, Date::factory('today')->getTimestamp());
+            Option::set(self::LAST_RUN_TIME_OPTION_NAME, Date::factory('today')->getTimestamp());
 
-            $locUrl = Piwik_GetOption(self::LOC_URL_OPTION_NAME);
+            $locUrl = Option::get(self::LOC_URL_OPTION_NAME);
             if (!empty($locUrl)) {
                 $this->downloadFile('loc', $locUrl);
             }
 
-            $ispUrl = Piwik_GetOption(self::ISP_URL_OPTION_NAME);
+            $ispUrl = Option::get(self::ISP_URL_OPTION_NAME);
             if (!empty($ispUrl)) {
                 $this->downloadFile('isp', $ispUrl);
             }
 
-            $orgUrl = Piwik_GetOption(self::ORG_URL_OPTION_NAME);
+            $orgUrl = Option::get(self::ORG_URL_OPTION_NAME);
             if (!empty($orgUrl)) {
                 $this->downloadFile('org', $orgUrl);
             }
@@ -324,7 +325,7 @@ class GeoIPAutoUpdater
             $url = $options[$optionKey];
             $url = self::removeDateFromUrl($url);
 
-            Piwik_SetOption($optionName, $url);
+            Option::set($optionName, $url);
         }
 
         // set period option
@@ -339,7 +340,7 @@ class GeoIPAutoUpdater
                 ));
             }
 
-            Piwik_SetOption(self::SCHEDULE_PERIOD_OPTION_NAME, $period);
+            Option::set(self::SCHEDULE_PERIOD_OPTION_NAME, $period);
         }
     }
 
@@ -351,9 +352,9 @@ class GeoIPAutoUpdater
      */
     public static function isUpdaterSetup()
     {
-        if (Piwik_GetOption(self::LOC_URL_OPTION_NAME) !== false
-            || Piwik_GetOption(self::ISP_URL_OPTION_NAME) !== false
-            || Piwik_GetOption(self::ORG_URL_OPTION_NAME) !== false
+        if (Option::get(self::LOC_URL_OPTION_NAME) !== false
+            || Option::get(self::ISP_URL_OPTION_NAME) !== false
+            || Option::get(self::ORG_URL_OPTION_NAME) !== false
         ) {
             return true;
         }
@@ -370,7 +371,7 @@ class GeoIPAutoUpdater
     {
         $result = array();
         foreach (self::$urlOptions as $key => $optionName) {
-            $result[$key] = Piwik_GetOption($optionName);
+            $result[$key] = Option::get($optionName);
         }
         return $result;
     }
@@ -387,7 +388,7 @@ class GeoIPAutoUpdater
         if (empty(self::$urlOptions[$key])) {
             throw new Exception("Invalid key $key");
         }
-        $url = Piwik_GetOption(self::$urlOptions[$key]);
+        $url = Option::get(self::$urlOptions[$key]);
         return $url;
     }
 
@@ -408,7 +409,7 @@ class GeoIPAutoUpdater
      */
     public static function getSchedulePeriod()
     {
-        $period = Piwik_GetOption(self::SCHEDULE_PERIOD_OPTION_NAME);
+        $period = Option::get(self::SCHEDULE_PERIOD_OPTION_NAME);
         if ($period === false) {
             $period = self::SCHEDULE_PERIOD_MONTHLY;
         }
@@ -598,7 +599,7 @@ class GeoIPAutoUpdater
      */
     public static function getLastRunTime()
     {
-        $timestamp = Piwik_GetOption(self::LAST_RUN_TIME_OPTION_NAME);
+        $timestamp = Option::get(self::LAST_RUN_TIME_OPTION_NAME);
         return $timestamp === false ? false : Date::factory((int)$timestamp);
     }
 
diff --git a/plugins/UserCountry/LocationProvider.php b/plugins/UserCountry/LocationProvider.php
index 554ee735d3c4ada64b01128041696909bb1dbf24..23d3f47a2466523613f0dba79b0f702fb46b92af 100755
--- a/plugins/UserCountry/LocationProvider.php
+++ b/plugins/UserCountry/LocationProvider.php
@@ -13,6 +13,7 @@ namespace Piwik\Plugins\UserCountry;
 use Exception;
 use Piwik\Common;
 use Piwik\IP;
+use Piwik\Option;
 use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
 use Piwik\Tracker\Cache;
 use ReflectionClass;
@@ -263,7 +264,7 @@ abstract class LocationProvider
      */
     public static function getCurrentProviderId()
     {
-        $optionValue = Piwik_GetOption(self::CURRENT_PROVIDER_OPTION_NAME);
+        $optionValue = Option::get(self::CURRENT_PROVIDER_OPTION_NAME);
         return $optionValue === false ? DefaultProvider::ID : $optionValue;
     }
 
@@ -293,7 +294,7 @@ abstract class LocationProvider
             throw new Exception(
                 "Invalid provider ID '$providerId'. The provider either does not exist or is not available");
         }
-        Piwik_SetOption(self::CURRENT_PROVIDER_OPTION_NAME, $providerId);
+        Option::set(self::CURRENT_PROVIDER_OPTION_NAME, $providerId);
         Cache::clearCacheGeneral();
         return $provider;
     }
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php
index 12a246b5a22e22f82eb7f0747904f7d41fe0512c..47217e73b17839d91c6f87a6835c09def1a225c7 100644
--- a/plugins/UsersManager/API.php
+++ b/plugins/UsersManager/API.php
@@ -16,6 +16,7 @@ use Piwik\Common;
 use Piwik\Config;
 use Piwik\Date;
 use Piwik\Db;
+use Piwik\Option;
 use Piwik\Piwik;
 use Piwik\Site;
 use Piwik\Tracker\Cache;
@@ -76,7 +77,7 @@ class API
     public function setUserPreference($userLogin, $preferenceName, $preferenceValue)
     {
         Piwik::checkUserIsSuperUserOrTheUser($userLogin);
-        Piwik_SetOption($this->getPreferenceId($userLogin, $preferenceName), $preferenceValue);
+        Option::set($this->getPreferenceId($userLogin, $preferenceName), $preferenceValue);
     }
 
     /**
@@ -89,7 +90,7 @@ class API
     {
         Piwik::checkUserIsSuperUserOrTheUser($userLogin);
 
-        $optionValue = Piwik_GetOption($this->getPreferenceId($userLogin, $preferenceName));
+        $optionValue = Option::get($this->getPreferenceId($userLogin, $preferenceName));
         if ($optionValue !== false) {
             return $optionValue;
         }
diff --git a/plugins/UsersManager/UsersManager.php b/plugins/UsersManager/UsersManager.php
index 3193315e1e53830020875c05992e317a947353e8..4f4ff6bfde36476ac355b606f2355268557015ec 100644
--- a/plugins/UsersManager/UsersManager.php
+++ b/plugins/UsersManager/UsersManager.php
@@ -66,7 +66,7 @@ class UsersManager extends \Piwik\Plugin
      */
     public function deleteSite($idSite)
     {
-        Option::getInstance()->deleteLike('%\_' . API::PREFERENCE_DEFAULT_REPORT, $idSite);
+        Option::deleteLike('%\_' . API::PREFERENCE_DEFAULT_REPORT, $idSite);
     }
 
     /**
diff --git a/tests/PHPUnit/BenchmarkTestCase.php b/tests/PHPUnit/BenchmarkTestCase.php
index 42b54260e64b3694e17d666302995286ed29fdb0..2152ccb583dcd2c75f407baefa450b4b069e0a73 100755
--- a/tests/PHPUnit/BenchmarkTestCase.php
+++ b/tests/PHPUnit/BenchmarkTestCase.php
@@ -53,7 +53,7 @@ abstract class BenchmarkTestCase extends IntegrationTestCase
             }
 
             Db::query("USE " . $dbName);
-            $installedFixture = Piwik_GetOption('benchmark_fixture_name');
+            $installedFixture = \Piwik\Option::get('benchmark_fixture_name');
         } catch (Exception $ex) {
             // ignore
         }
@@ -64,7 +64,7 @@ abstract class BenchmarkTestCase extends IntegrationTestCase
         // if we created an empty database, setup the fixture
         if ($createEmptyDatabase) {
             self::$fixture->setUp();
-            Piwik_SetOption('benchmark_fixture_name', $fixtureName);
+            \Piwik\Option::set('benchmark_fixture_name', $fixtureName);
         }
     }
 
diff --git a/tests/PHPUnit/Core/OptionTest.php b/tests/PHPUnit/Core/OptionTest.php
index e921a38ad9777f3be9fa0e190066fd98da5423a1..f6bd624d6073489164f2a2b16cfa62b1c2b7ecee 100644
--- a/tests/PHPUnit/Core/OptionTest.php
+++ b/tests/PHPUnit/Core/OptionTest.php
@@ -20,19 +20,19 @@ class OptionTest extends DatabaseTestCase
     public function testGet()
     {
         // empty table, expect false (i.e., not found)
-        $this->assertFalse(Option::getInstance()->get('anonymous_defaultReport'));
+        $this->assertFalse(Option::get('anonymous_defaultReport'));
 
         // populate table, expect '1' (i.e., found)
         Db::query("INSERT INTO " . Common::prefixTable('option') . " VALUES ('anonymous_defaultReport', '1', false)");
-        $this->assertSame('1', Option::getInstance()->get('anonymous_defaultReport'));
+        $this->assertSame('1', Option::get('anonymous_defaultReport'));
 
         // delete row (bypassing API), expect '1' (i.e., from cache)
         Db::query("DELETE FROM " . Common::prefixTable('option') . " WHERE option_name = ?", array('anonymous_defaultReport'));
-        $this->assertSame('1', Option::getInstance()->get('anonymous_defaultReport'));
+        $this->assertSame('1', Option::get('anonymous_defaultReport'));
 
         // force cache reload, expect false (i.e., not found)
-        Option::getInstance()->clearCache();
-        $this->assertFalse(Option::getInstance()->get('anonymous_defaultReport'));
+        Option::clearCache();
+        $this->assertFalse(Option::get('anonymous_defaultReport'));
     }
 
     /**
@@ -42,19 +42,19 @@ class OptionTest extends DatabaseTestCase
     public function testGetOption()
     {
         // empty table, expect false (i.e., not found)
-        $this->assertFalse(Piwik_GetOption('anonymous_defaultReport'));
+        $this->assertFalse(Option::get('anonymous_defaultReport'));
 
         // populate table, expect '1' (i.e., found)
         Db::query("INSERT INTO " . Common::prefixTable('option') . " VALUES ('anonymous_defaultReport', '1',true)");
-        $this->assertSame('1', Piwik_GetOption('anonymous_defaultReport'));
+        $this->assertSame('1', Option::get('anonymous_defaultReport'));
 
         // delete row (bypassing API), expect '1' (i.e., from cache)
         Db::query("DELETE FROM " . Common::prefixTable('option') . " WHERE option_name = ?", array('anonymous_defaultReport'));
-        $this->assertSame('1', Piwik_GetOption('anonymous_defaultReport'));
+        $this->assertSame('1', Option::get('anonymous_defaultReport'));
 
         // force cache reload, expect false (i.e., not found)
-        Option::getInstance()->clearCache();
-        $this->assertFalse(Piwik_GetOption('anonymous_defaultReport'));
+        Option::clearCache();
+        $this->assertFalse(Option::get('anonymous_defaultReport'));
     }
 
     /**
@@ -64,11 +64,11 @@ class OptionTest extends DatabaseTestCase
     public function testSet()
     {
         // empty table, expect false (i.e., not found)
-        $this->assertFalse(Piwik_GetOption('anonymous_defaultReport'));
+        $this->assertFalse(Option::get('anonymous_defaultReport'));
 
         // populate table, expect '1'
-        Option::getInstance()->set('anonymous_defaultReport', '1', true);
-        $this->assertSame('1', Option::getInstance()->get('anonymous_defaultReport'));
+        Option::set('anonymous_defaultReport', '1', true);
+        $this->assertSame('1', Option::get('anonymous_defaultReport'));
     }
 
     /**
@@ -78,11 +78,11 @@ class OptionTest extends DatabaseTestCase
     public function testSetOption()
     {
         // empty table, expect false (i.e., not found)
-        $this->assertFalse(Piwik_GetOption('anonymous_defaultReport'));
+        $this->assertFalse(Option::get('anonymous_defaultReport'));
 
         // populate table, expect '1'
-        Piwik_SetOption('anonymous_defaultReport', '1', false);
-        $this->assertSame('1', Option::getInstance()->get('anonymous_defaultReport'));
+        Option::set('anonymous_defaultReport', '1', false);
+        $this->assertSame('1', Option::get('anonymous_defaultReport'));
     }
 
     /**
@@ -92,33 +92,33 @@ class OptionTest extends DatabaseTestCase
     public function testDelete()
     {
         // empty table, expect false (i.e., not found)
-        $this->assertFalse(Piwik_GetOption('anonymous_defaultReport'));
-        $this->assertFalse(Piwik_GetOption('admin_defaultReport'));
+        $this->assertFalse(Option::get('anonymous_defaultReport'));
+        $this->assertFalse(Option::get('admin_defaultReport'));
 
         // populate table, expect '1'
-        Piwik_SetOption('anonymous_defaultReport', '1', true);
-        Option::getInstance()->delete('_defaultReport');
-        $this->assertSame('1', Option::getInstance()->get('anonymous_defaultReport'));
+        Option::set('anonymous_defaultReport', '1', true);
+        Option::delete('_defaultReport');
+        $this->assertSame('1', Option::get('anonymous_defaultReport'));
 
         // populate table, expect '2'
-        Piwik_SetOption('admin_defaultReport', '2', false);
-        Option::getInstance()->delete('_defaultReport');
-        $this->assertSame('2', Option::getInstance()->get('admin_defaultReport'));
+        Option::set('admin_defaultReport', '2', false);
+        Option::delete('_defaultReport');
+        $this->assertSame('2', Option::get('admin_defaultReport'));
 
         // delete with non-matching value, expect '1'
-        Option::getInstance()->delete('anonymous_defaultReport', '2');
-        $this->assertSame('1', Option::getInstance()->get('anonymous_defaultReport'));
+        Option::delete('anonymous_defaultReport', '2');
+        $this->assertSame('1', Option::get('anonymous_defaultReport'));
 
         // delete with matching value, expect false
-        Option::getInstance()->delete('anonymous_defaultReport', '1');
-        $this->assertFalse(Option::getInstance()->get('anonymous_defaultReport'));
+        Option::delete('anonymous_defaultReport', '1');
+        $this->assertFalse(Option::get('anonymous_defaultReport'));
 
         // this shouldn't have been deleted, expect '2'
-        $this->assertSame('2', Option::getInstance()->get('admin_defaultReport'));
+        $this->assertSame('2', Option::get('admin_defaultReport'));
 
         // deleted, expect false
-        Option::getInstance()->delete('admin_defaultReport');
-        $this->assertFalse(Option::getInstance()->get('admin_defaultReport'));
+        Option::delete('admin_defaultReport');
+        $this->assertFalse(Option::get('admin_defaultReport'));
     }
 
     /**
@@ -128,66 +128,66 @@ class OptionTest extends DatabaseTestCase
     public function testDeleteLike()
     {
         // empty table, expect false (i.e., not found)
-        $this->assertFalse(Piwik_GetOption('anonymous_defaultReport'));
-        $this->assertFalse(Piwik_GetOption('admin_defaultReport'));
-        $this->assertFalse(Piwik_GetOption('visitor_defaultReport'));
+        $this->assertFalse(Option::get('anonymous_defaultReport'));
+        $this->assertFalse(Option::get('admin_defaultReport'));
+        $this->assertFalse(Option::get('visitor_defaultReport'));
 
         // insert guard - to test unescaped underscore
-        Piwik_SetOption('adefaultReport', '0', true);
-        $this->assertTrue(Piwik_GetOption('adefaultReport') === '0');
+        Option::set('adefaultReport', '0', true);
+        $this->assertTrue(Option::get('adefaultReport') === '0');
 
         // populate table, expect '1'
-        Piwik_SetOption('anonymous_defaultReport', '1', true);
-        Option::getInstance()->deleteLike('\_defaultReport');
-        $this->assertSame('1', Option::getInstance()->get('anonymous_defaultReport'));
-        $this->assertSame('0', Piwik_GetOption('adefaultReport'));
+        Option::set('anonymous_defaultReport', '1', true);
+        Option::deleteLike('\_defaultReport');
+        $this->assertSame('1', Option::get('anonymous_defaultReport'));
+        $this->assertSame('0', Option::get('adefaultReport'));
 
         // populate table, expect '2'
-        Piwik_SetOption('admin_defaultReport', '2', false);
-        Option::getInstance()->deleteLike('\_defaultReport');
-        $this->assertSame('2', Option::getInstance()->get('admin_defaultReport'));
-        $this->assertSame('0', Piwik_GetOption('adefaultReport'));
+        Option::set('admin_defaultReport', '2', false);
+        Option::deleteLike('\_defaultReport');
+        $this->assertSame('2', Option::get('admin_defaultReport'));
+        $this->assertSame('0', Option::get('adefaultReport'));
 
         // populate table, expect '3'
-        Piwik_SetOption('visitor_defaultReport', '3', false);
-        Option::getInstance()->deleteLike('\_defaultReport');
-        $this->assertSame('3', Option::getInstance()->get('visitor_defaultReport'));
-        $this->assertSame('0', Piwik_GetOption('adefaultReport'));
+        Option::set('visitor_defaultReport', '3', false);
+        Option::deleteLike('\_defaultReport');
+        $this->assertSame('3', Option::get('visitor_defaultReport'));
+        $this->assertSame('0', Option::get('adefaultReport'));
 
         // delete with non-matching value, expect '1'
-        Option::getInstance()->deleteLike('%\_defaultReport', '4');
-        $this->assertSame('1', Option::getInstance()->get('anonymous_defaultReport'));
-        $this->assertSame('0', Piwik_GetOption('adefaultReport'));
+        Option::deleteLike('%\_defaultReport', '4');
+        $this->assertSame('1', Option::get('anonymous_defaultReport'));
+        $this->assertSame('0', Option::get('adefaultReport'));
 
         // delete with matching pattern, expect false
-        Option::getInstance()->deleteLike('%\_defaultReport', '1');
-        $this->assertFalse(Option::getInstance()->get('anonymous_defaultReport'));
-        $this->assertSame('0', Piwik_GetOption('adefaultReport'));
+        Option::deleteLike('%\_defaultReport', '1');
+        $this->assertFalse(Option::get('anonymous_defaultReport'));
+        $this->assertSame('0', Option::get('adefaultReport'));
 
         // this shouldn't have been deleted, expect '2' and '3'
-        $this->assertSame('2', Option::getInstance()->get('admin_defaultReport'));
-        $this->assertSame('3', Option::getInstance()->get('visitor_defaultReport'));
-        $this->assertSame('0', Piwik_GetOption('adefaultReport'));
+        $this->assertSame('2', Option::get('admin_defaultReport'));
+        $this->assertSame('3', Option::get('visitor_defaultReport'));
+        $this->assertSame('0', Option::get('adefaultReport'));
 
         // deleted, expect false (except for the guard)
-        Option::getInstance()->deleteLike('%\_defaultReport');
-        $this->assertFalse(Option::getInstance()->get('admin_defaultReport'));
-        $this->assertFalse(Option::getInstance()->get('visitor_defaultReport'));
+        Option::deleteLike('%\_defaultReport');
+        $this->assertFalse(Option::get('admin_defaultReport'));
+        $this->assertFalse(Option::get('visitor_defaultReport'));
 
         // unescaped backslash (single quotes)
-        Option::getInstance()->deleteLike('%\_defaultReport');
-        $this->assertSame('0', Piwik_GetOption('adefaultReport'));
+        Option::deleteLike('%\_defaultReport');
+        $this->assertSame('0', Option::get('adefaultReport'));
 
         // escaped backslash (single quotes)
-        Option::getInstance()->deleteLike('%\\_defaultReport');
-        $this->assertSame('0', Piwik_GetOption('adefaultReport'));
+        Option::deleteLike('%\\_defaultReport');
+        $this->assertSame('0', Option::get('adefaultReport'));
 
         // unescaped backslash (double quotes)
-        Option::getInstance()->deleteLike("%\_defaultReport");
-        $this->assertSame('0', Piwik_GetOption('adefaultReport'));
+        Option::deleteLike("%\_defaultReport");
+        $this->assertSame('0', Option::get('adefaultReport'));
 
         // escaped backslash (double quotes)
-        Option::getInstance()->deleteLike("%\\_defaultReport");
-        $this->assertSame('0', Piwik_GetOption('adefaultReport'));
+        Option::deleteLike("%\\_defaultReport");
+        $this->assertSame('0', Option::get('adefaultReport'));
     }
 }
diff --git a/tests/PHPUnit/DatabaseTestCase.php b/tests/PHPUnit/DatabaseTestCase.php
index 1f5a2507fbfd81f3ed7fd59b581eb1d39571a7c2..4b2fe845c098ae8370411e0b1b06cf7da2ec4f59 100644
--- a/tests/PHPUnit/DatabaseTestCase.php
+++ b/tests/PHPUnit/DatabaseTestCase.php
@@ -71,7 +71,7 @@ class DatabaseTestCase extends PHPUnit_Framework_TestCase
         IntegrationTestCase::unloadAllPlugins();
         DbHelper::dropDatabase();
         Manager::getInstance()->deleteAll();
-        Option::getInstance()->clearCache();
+        Option::clearCache();
         API::$cache = array();
         Site::clearCache();
         Cache::deleteTrackerCache();
diff --git a/tests/PHPUnit/Integration/ArchiveCronTest.php b/tests/PHPUnit/Integration/ArchiveCronTest.php
index 2464d59fad10d92fa0ab4b903edbce63fa1715e6..aa5eec778780cbd078f1bc58e9d1c02971cf0f98 100644
--- a/tests/PHPUnit/Integration/ArchiveCronTest.php
+++ b/tests/PHPUnit/Integration/ArchiveCronTest.php
@@ -100,7 +100,7 @@ class Test_Piwik_Integration_ArchiveCronTest extends IntegrationTestCase
                 // lastRunKey() function inlined
                 $lastRunArchiveOption = "lastRunArchive" . $period . "_" . $idSite;
                 
-                Piwik_SetOption($lastRunArchiveOption, $time);
+                \Piwik\Option::set($lastRunArchiveOption, $time);
             }
         }
     }
diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php
index 799ad6eaa372b36cf1fb861b45b61dd354a96719..4170b6abae3e3f919363b35e2e65db0b884d9d25 100755
--- a/tests/PHPUnit/IntegrationTestCase.php
+++ b/tests/PHPUnit/IntegrationTestCase.php
@@ -233,7 +233,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
             DbHelper::dropDatabase();
         }
         Manager::getInstance()->deleteAll();
-        Option::getInstance()->clearCache();
+        Option::clearCache();
         Site::clearCache();
         Cache::deleteTrackerCache();
         Config::getInstance()->clear();
diff --git a/tests/PHPUnit/MockPiwikOption.php b/tests/PHPUnit/MockPiwikOption.php
index 530a84a777d2e21fe113653bc074200d1e4047f5..aa7d4391f0e011d42d2862f7e910c69e2ad37563 100644
--- a/tests/PHPUnit/MockPiwikOption.php
+++ b/tests/PHPUnit/MockPiwikOption.php
@@ -9,20 +9,20 @@ use Piwik\Option;
 
 class MockPiwikOption extends Option
 {
-    private $forcedOptionValue = false;
+    private static $forcedOptionValue = false;
 
     function __construct($forcedOptionValue)
     {
-        $this->forcedOptionValue = $forcedOptionValue;
+        self::$forcedOptionValue = $forcedOptionValue;
     }
 
-    public function get($name)
+    public static function get($name)
     {
-        return $this->forcedOptionValue;
+        return self::$forcedOptionValue;
     }
 
-    public function set($name, $value, $autoLoad = 0)
+    public static function set($name, $value, $autoLoad = 0)
     {
-        $this->forcedOptionValue = $value;
+        self::$forcedOptionValue = $value;
     }
 }
diff --git a/tests/PHPUnit/Plugins/PrivacyManagerTest.php b/tests/PHPUnit/Plugins/PrivacyManagerTest.php
index 09fec4a10e938cb440efb4b0bd7352f9a9d00080..9f19f42052204cc551206b49678ae8c6d7a04e19 100755
--- a/tests/PHPUnit/Plugins/PrivacyManagerTest.php
+++ b/tests/PHPUnit/Plugins/PrivacyManagerTest.php
@@ -121,7 +121,7 @@ class PrivacyManagerTest extends IntegrationTestCase
     {
         parent::tearDown();
         Manager::getInstance()->deleteAll();
-        Option::getInstance()->clearCache();
+        Option::clearCache();
         Site::clearCache();
         Cache::deleteTrackerCache();
         ArchiveTableCreator::clear();
@@ -142,7 +142,7 @@ class PrivacyManagerTest extends IntegrationTestCase
 
         // check that initial option is set
         $this->assertEquals(
-            1, Piwik_GetOption(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL));
+            1, Option::get(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL));
 
         // perform other checks
         $this->_checkNoDataChanges();
@@ -159,7 +159,7 @@ class PrivacyManagerTest extends IntegrationTestCase
         $this->instance->deleteReportData();
 
         // check that initial option is set
-        $this->assertEquals(1, Piwik_GetOption(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL));
+        $this->assertEquals(1, Option::get(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL));
 
         // perform other checks
         $this->_checkNoDataChanges();
@@ -175,9 +175,9 @@ class PrivacyManagerTest extends IntegrationTestCase
     {
         $yesterdaySecs = Date::factory('yesterday')->getTimestamp();
 
-        Piwik_SetOption(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL, 1);
-        Piwik_SetOption(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS, $yesterdaySecs);
-        Piwik_SetOption(PrivacyManager::OPTION_LAST_DELETE_PIWIK_REPORTS, $yesterdaySecs);
+        Option::set(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL, 1);
+        Option::set(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS, $yesterdaySecs);
+        Option::set(PrivacyManager::OPTION_LAST_DELETE_PIWIK_REPORTS, $yesterdaySecs);
         $this->instance->deleteLogData();
         $this->instance->deleteReportData();
 
@@ -849,9 +849,9 @@ class PrivacyManagerTest extends IntegrationTestCase
     {
         $lastDateSecs = Date::factory('today')->subDay(8)->getTimestamp();
 
-        Piwik_SetOption(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL, 1);
-        Piwik_SetOption(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS, $lastDateSecs);
-        Piwik_SetOption(PrivacyManager::OPTION_LAST_DELETE_PIWIK_REPORTS, $lastDateSecs);
+        Option::set(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS_INITIAL, 1);
+        Option::set(PrivacyManager::OPTION_LAST_DELETE_PIWIK_LOGS, $lastDateSecs);
+        Option::set(PrivacyManager::OPTION_LAST_DELETE_PIWIK_REPORTS, $lastDateSecs);
     }
 
     protected function _getTableCount($tableName, $where = '')
diff --git a/tests/PHPUnit/proxy/piwik.php b/tests/PHPUnit/proxy/piwik.php
index 977a490394245ecc6e91f935e73fad247d28c450..8d68aacb97811d355609f5a7f6e94f95e5f574b2 100755
--- a/tests/PHPUnit/proxy/piwik.php
+++ b/tests/PHPUnit/proxy/piwik.php
@@ -44,7 +44,7 @@ GeoIp::$geoIPDatabaseDir = 'tests/lib/geoip-files';
 
 Tracker::setTestEnvironment();
 Manager::getInstance()->deleteAll();
-Option::getInstance()->clearCache();
+Option::clearCache();
 Site::clearCache();
 Cache::deleteTrackerCache();