diff --git a/core/API/DataTableManipulator/LabelFilter.php b/core/API/DataTableManipulator/LabelFilter.php
index f8eb91ec6fcc4b4f51cebdcc813de52ea1582553..fdc5114c98f62bad38f0ec61360373ee2bfc8505 100644
--- a/core/API/DataTableManipulator/LabelFilter.php
+++ b/core/API/DataTableManipulator/LabelFilter.php
@@ -14,7 +14,6 @@ use Piwik\Common;
 use Piwik\DataTable;
 use Piwik\DataTable\Row;
 use Piwik\API\DataTableManipulator;
-use false;
 
 /**
  * This class is responsible for handling the label parameter that can be
diff --git a/core/ArchiveProcessor/Rules.php b/core/ArchiveProcessor/Rules.php
index d58c7e5fb3b3b91271306bb9e62be1e834722901..9b22d018bdec6363d6707abbdc1762ce87270ba9 100644
--- a/core/ArchiveProcessor/Rules.php
+++ b/core/ArchiveProcessor/Rules.php
@@ -17,7 +17,7 @@ use Piwik\Common;
 use Piwik\Segment;
 use Piwik\Site;
 use Piwik\Date;
-use Piwik_Tracker_Cache;
+use Piwik\Tracker\Cache;
 
 /**
  * This class contains Archiving rules/logic which are used in several places
@@ -232,6 +232,6 @@ class Rules
             throw new Exception('Browser trigger archiving must be set to true or false.');
         }
         Piwik_SetOption(self::OPTION_BROWSER_TRIGGER_ARCHIVING, (int)$enabled, $autoLoad = true);
-        Piwik_Tracker_Cache::clearCacheGeneral();
+        Cache::clearCacheGeneral();
     }
 }
\ No newline at end of file
diff --git a/core/Common.php b/core/Common.php
index 4f40424c9503ef39affa02cfbaf7702c2623408b..d947fc6fd7eecfc273c54a383c4554da5577199e 100644
--- a/core/Common.php
+++ b/core/Common.php
@@ -13,7 +13,7 @@ namespace Piwik;
 use Exception;
 use Piwik\IP;
 use Piwik\Tracker;
-use Piwik_Tracker_Cache;
+use Piwik\Tracker\Cache;
 use Piwik_UserCountry_LocationProvider_Default;
 
 /**
@@ -1551,7 +1551,7 @@ class Common
      */
     public static function getCurrentLocationProviderId()
     {
-        $cache = Piwik_Tracker_Cache::getCacheGeneral();
+        $cache = Cache::getCacheGeneral();
         return empty($cache['currentLocationProviderId'])
             ? Piwik_UserCountry_LocationProvider_Default::ID
             : $cache['currentLocationProviderId'];
diff --git a/core/DataAccess/LogAggregator.php b/core/DataAccess/LogAggregator.php
index 0035c121dd7b914bc97d846a36f775bf035c3cc8..b05bd327cb95f2252d9f0495e46e8303519827df 100644
--- a/core/DataAccess/LogAggregator.php
+++ b/core/DataAccess/LogAggregator.php
@@ -17,7 +17,7 @@ use Piwik\Date;
 use Piwik\Segment;
 use Piwik\Site;
 use Piwik\RankingQuery;
-use Piwik_Tracker_GoalManager;
+use Piwik\Tracker\GoalManager;
 use Zend_Registry;
 
 /**
@@ -115,7 +115,7 @@ class LogAggregator
 
     static public function getSqlRevenue($field)
     {
-        return "ROUND(" . $field . "," . Piwik_Tracker_GoalManager::REVENUE_PRECISION . ")";
+        return "ROUND(" . $field . "," . GoalManager::REVENUE_PRECISION . ")";
     }
 
     /**
@@ -321,7 +321,7 @@ class LogAggregator
 						" . self::getSqlRevenue('SUM(price)') . " as `" . Metrics::INDEX_ECOMMERCE_ITEM_PRICE . "`,
 						count(distinct idorder) as `" . Metrics::INDEX_ECOMMERCE_ORDERS . "`,
 						count(idvisit) as `" . Metrics::INDEX_NB_VISITS . "`,
-						case idorder when '0' then " . Piwik_Tracker_GoalManager::IDGOAL_CART . " else " . Piwik_Tracker_GoalManager::IDGOAL_ORDER . " end as ecommerceType
+						case idorder when '0' then " . GoalManager::IDGOAL_CART . " else " . GoalManager::IDGOAL_ORDER . " end as ecommerceType
 			 	FROM " . Common::prefixTable('log_conversion_item') . "
 			 		LEFT JOIN " . Common::prefixTable('log_action') . "
 			 		ON $field = idaction
diff --git a/core/DataArray.php b/core/DataArray.php
index e9971997d2a639a9718e6fc91c3b70d4f5b00dbf..5c2570392d3198eead3afd11e1ff0e7b38d9b32b 100644
--- a/core/DataArray.php
+++ b/core/DataArray.php
@@ -12,7 +12,7 @@ namespace Piwik;
 
 use Exception;
 use Piwik\Metrics;
-use Piwik_Tracker_GoalManager;
+use Piwik\Tracker\GoalManager;
 
 /**
  * The DataArray is a data structure used to aggregate datasets,
@@ -128,13 +128,13 @@ class DataArray
      */
     protected static function makeEmptyGoalRow($idGoal)
     {
-        if ($idGoal > Piwik_Tracker_GoalManager::IDGOAL_ORDER) {
+        if ($idGoal > GoalManager::IDGOAL_ORDER) {
             return array(Metrics::INDEX_GOAL_NB_CONVERSIONS      => 0,
                          Metrics::INDEX_GOAL_NB_VISITS_CONVERTED => 0,
                          Metrics::INDEX_GOAL_REVENUE             => 0,
             );
         }
-        if ($idGoal == Piwik_Tracker_GoalManager::IDGOAL_ORDER) {
+        if ($idGoal == GoalManager::IDGOAL_ORDER) {
             return array(Metrics::INDEX_GOAL_NB_CONVERSIONS             => 0,
                          Metrics::INDEX_GOAL_NB_VISITS_CONVERTED        => 0,
                          Metrics::INDEX_GOAL_REVENUE                    => 0,
@@ -145,7 +145,7 @@ class DataArray
                          Metrics::INDEX_GOAL_ECOMMERCE_ITEMS            => 0,
             );
         }
-        // idGoal == Piwik_Tracker_GoalManager::IDGOAL_CART
+        // idGoal == GoalManager::IDGOAL_CART
         return array(Metrics::INDEX_GOAL_NB_CONVERSIONS      => 0,
                      Metrics::INDEX_GOAL_NB_VISITS_CONVERTED => 0,
                      Metrics::INDEX_GOAL_REVENUE             => 0,
@@ -276,7 +276,7 @@ class DataArray
             $revenue = $conversions = 0;
             foreach ($values[Metrics::INDEX_GOALS] as $idgoal => $goalValues) {
                 // Do not sum Cart revenue since it is a lost revenue
-                if ($idgoal >= Piwik_Tracker_GoalManager::IDGOAL_ORDER) {
+                if ($idgoal >= GoalManager::IDGOAL_ORDER) {
                     $revenue += $goalValues[Metrics::INDEX_GOAL_REVENUE];
                     $conversions += $goalValues[Metrics::INDEX_GOAL_NB_CONVERSIONS];
                 }
diff --git a/core/DataFiles/SearchEngines.php b/core/DataFiles/SearchEngines.php
index 7df02fb1c0daa982c9fd989a01a60c00854d33a8..1c438530edfe51e326663e279abe765cd09e20be 100644
--- a/core/DataFiles/SearchEngines.php
+++ b/core/DataFiles/SearchEngines.php
@@ -903,7 +903,7 @@ if (!isset($GLOBALS['Piwik_SearchEngines'])) {
         'www.websearch.com'              => array('WebSearch', array('qkw', 'q'), 'search/results2.aspx?q={k}'),
 
         // Wedoo
-        // 2011-02-15 - keyword no longer appears to be in Referer URL; candidate for removal?
+        // 2011-02-15 - keyword no longer appears to be in Referrer URL; candidate for removal?
         'fr.wedoo.com'                   => array('Wedoo', 'keyword'),
         'en.wedoo.com'                   => array('Wedoo'),
         'es.wedoo.com'                   => array('Wedoo'),
diff --git a/core/DataTable.php b/core/DataTable.php
index 74d466cf5b6d15922912720c314290b813baae8e..d5e2866730096eb78bba3019aa3ffba8abaa7445 100644
--- a/core/DataTable.php
+++ b/core/DataTable.php
@@ -142,8 +142,6 @@ require_once PIWIK_INCLUDE_PATH . '/core/Common.php';
  *                        [ keyword2, +1000% ]
  *                        [ keyword3, -430% ]
  *
- * @see Piwik_DataTable\Row A DataTable is composed of Piwik_DataTable\Row
- *
  * @package Piwik
  * @subpackage DataTable
  */
@@ -261,7 +259,7 @@ class DataTable
 
     /**
      * The operations that should be used when aggregating columns from multiple rows.
-     * @see self::addDataTable() and Piwik_DataTable\Row::sumRow()
+     * @see self::addDataTable() and DataTable\Row::sumRow()
      */
     protected $columnAggregationOperations = array();
 
@@ -1445,7 +1443,7 @@ class DataTable
 
     /**
      * Set the aggregation operation for a column, e.g. "min".
-     * @see self::addDataTable() and Piwik_DataTable\Row::sumRow()
+     * @see self::addDataTable() and DataTable\Row::sumRow()
      *
      * @param string $columnName
      * @param string $operation
diff --git a/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php b/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php
index 1ab8d92c9338e5e9044ce2e1ce6fcc31a2797fa4..32fc8df72b5c1cc6692303ec633196fb34910eb9 100644
--- a/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php
+++ b/core/DataTable/Filter/AddColumnsProcessedMetricsGoal.php
@@ -15,7 +15,7 @@ use Piwik\DataTable;
 use Piwik\DataTable\Filter\AddColumnsProcessedMetrics;
 use Piwik\Metrics;
 use Piwik\Piwik;
-use Piwik_Tracker_GoalManager;
+use Piwik\Tracker\GoalManager;
 
 /**
  * @package Piwik
@@ -73,7 +73,7 @@ class AddColumnsProcessedMetricsGoal extends AddColumnsProcessedMetrics
     {
         // Add standard processed metrics
         parent::filter($table);
-        $roundingPrecision = Piwik_Tracker_GoalManager::REVENUE_PRECISION;
+        $roundingPrecision = GoalManager::REVENUE_PRECISION;
         $expectedColumns = array();
         foreach ($table->getRows() as $key => $row) {
             $currentColumns = $row->getColumns();
@@ -89,7 +89,7 @@ class AddColumnsProcessedMetricsGoal extends AddColumnsProcessedMetrics
                     if ($goalId == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART) {
                         continue;
                     }
-                    if ($goalId >= Piwik_Tracker_GoalManager::IDGOAL_ORDER
+                    if ($goalId >= GoalManager::IDGOAL_ORDER
                         || $goalId == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER
                     ) {
                         $revenue += (int)$this->getColumn($columnValue, Metrics::INDEX_GOAL_REVENUE, Metrics::$mappingFromIdToNameGoal);
diff --git a/core/DataTable/Filter/ReplaceColumnNames.php b/core/DataTable/Filter/ReplaceColumnNames.php
index abf802b82ac615f1abe4609c645e9dee31a6bdb2..0e1d40fe756787e55ec7592c9f7bcccbb9c59fc5 100644
--- a/core/DataTable/Filter/ReplaceColumnNames.php
+++ b/core/DataTable/Filter/ReplaceColumnNames.php
@@ -15,7 +15,7 @@ use Piwik\DataTable\Simple;
 use Piwik\Metrics;
 use Piwik\Piwik;
 use Piwik\DataTable;
-use Piwik_Tracker_GoalManager;
+use Piwik\Tracker\GoalManager;
 
 /**
  * This filter replaces column names using a mapping table that maps from the old name to the new name.
@@ -140,9 +140,9 @@ class ReplaceColumnNames extends Filter
         $newSubColumns = array();
         foreach ($columnValue as $idGoal => $goalValues) {
             $mapping = Metrics::$mappingFromIdToNameGoal;
-            if ($idGoal == Piwik_Tracker_GoalManager::IDGOAL_CART) {
+            if ($idGoal == GoalManager::IDGOAL_CART) {
                 $idGoal = Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART;
-            } elseif ($idGoal == Piwik_Tracker_GoalManager::IDGOAL_ORDER) {
+            } elseif ($idGoal == GoalManager::IDGOAL_ORDER) {
                 $idGoal = Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER;
             }
             foreach ($goalValues as $id => $goalValue) {
diff --git a/core/FrontController.php b/core/FrontController.php
index fec59e271523696ccf49a23829de788aa85a84cf..1e9e1ff6814a72304e346347351c0286e48926f8 100644
--- a/core/FrontController.php
+++ b/core/FrontController.php
@@ -186,7 +186,7 @@ class FrontController
      *
      * @return Exception
      */
-    public function createConfigObject()
+    static public function createConfigObject()
     {
         $exceptionToThrow = false;
         try {
@@ -233,7 +233,7 @@ class FrontController
 
             Translate::getInstance()->loadEnglishTranslation();
 
-            $exceptionToThrow = $this->createConfigObject();
+            $exceptionToThrow = self::createConfigObject();
 
             if (Session::isFileBasedSessions()) {
                 Session::start();
diff --git a/core/IP.php b/core/IP.php
index e1fecf600d9e9d58649695dafd9b29bbe285bc07..e4a87cb9ee9ed1cc5d5244a312494ccc6bb5c97e 100644
--- a/core/IP.php
+++ b/core/IP.php
@@ -13,7 +13,6 @@ namespace Piwik;
 
 use Piwik\Config;
 use Piwik\Common;
-use false;
 
 /**
  * Handling IP addresses (both IPv4 and IPv6).
diff --git a/core/Nonce.php b/core/Nonce.php
index ff6a97227bc2ec164a4f83a74a707d8d560d8803..8f876b189032aad86c80e2cb256c8fbce2a9b1e9 100644
--- a/core/Nonce.php
+++ b/core/Nonce.php
@@ -11,9 +11,8 @@
 namespace Piwik;
 
 use Piwik\Common;
-use Piwik_Session_Namespace;
+use Piwik\Session\SessionNamespace;
 use Piwik\Url;
-use false;
 
 /**
  * Nonce class.
@@ -40,7 +39,7 @@ class Nonce
     static public function getNonce($id, $ttl = 300)
     {
         // save session-dependent nonce
-        $ns = new Piwik_Session_Namespace($id);
+        $ns = new SessionNamespace($id);
         $nonce = $ns->nonce;
 
         // re-use an unexpired nonce (a small deviation from the "used only once" principle, so long as we do not reset the expiration)
@@ -64,7 +63,7 @@ class Nonce
      */
     static public function verifyNonce($id, $cnonce)
     {
-        $ns = new Piwik_Session_Namespace($id);
+        $ns = new SessionNamespace($id);
         $nonce = $ns->nonce;
 
         // validate token
@@ -97,7 +96,7 @@ class Nonce
      */
     static public function discardNonce($id)
     {
-        $ns = new Piwik_Session_Namespace($id);
+        $ns = new SessionNamespace($id);
         $ns->unsetAll();
     }
 
diff --git a/core/Piwik.php b/core/Piwik.php
index 7f0a25e51dccfd2c35249240a912dc8a0ad3440b..7c70d2a5c02ad0970fbe588fce21a5c56bcc5835 100644
--- a/core/Piwik.php
+++ b/core/Piwik.php
@@ -21,9 +21,8 @@ use Piwik\Db\Adapter;
 use Piwik\Db\Schema;
 use Piwik\Session;
 use Piwik\Tracker;
-use Piwik_Tracker_Cache;
-use Piwik_Tracker_Db;
-use Piwik_Tracker_GoalManager;
+use Piwik\Tracker\Cache;
+use Piwik\Tracker\GoalManager;
 use Piwik\Url;
 use Piwik_UsersManager_API;
 use Piwik\View;
@@ -148,7 +147,7 @@ class Piwik
     {
         AssetManager::removeMergedAssets();
         View::clearCompiledTemplates();
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
     }
 
     /**
@@ -1094,20 +1093,19 @@ class Piwik
         Piwik::log(sprintf("Total queries = %d (total sql time = %.2fs)", $queryCount, $totalTime));
     }
 
+
+    static function maxSumMsFirst($a, $b)
+    {
+        return $a['sum_time_ms'] < $b['sum_time_ms'];
+    }
+
     /**
      * Print profiling report for the tracker
      *
-     * @param Piwik_Tracker_Db $db  Tracker database object (or null)
+     * @param Db $db  Tracker database object (or null)
      */
     static public function printSqlProfilingReportTracker($db = null)
     {
-        if (!function_exists('maxSumMsFirst')) {
-            function maxSumMsFirst($a, $b)
-            {
-                return $a['sum_time_ms'] < $b['sum_time_ms'];
-            }
-        }
-
         if (is_null($db)) {
             $db = Tracker::getDatabase();
         }
@@ -1117,7 +1115,7 @@ class Piwik
         if ($all === false) {
             return;
         }
-        uasort($all, 'maxSumMsFirst');
+        uasort($all, 'self::maxSumMsFirst');
 
         $infoIndexedByQuery = array();
         foreach ($all as $infoQuery) {
@@ -1374,7 +1372,7 @@ class Piwik
                 // 0.0 => 0
                 $value = round($value);
             } else {
-                $precision = Piwik_Tracker_GoalManager::REVENUE_PRECISION;
+                $precision = GoalManager::REVENUE_PRECISION;
                 $value = sprintf("%01." . $precision . "f", $value);
             }
         }
diff --git a/core/ScheduledTime.php b/core/ScheduledTime.php
index b0c6b8b224cf3a3082992070bc9586cffee18880..a2dd0bb7e58bb4b2a452fb3b10bcf57f50d13b21 100644
--- a/core/ScheduledTime.php
+++ b/core/ScheduledTime.php
@@ -12,9 +12,9 @@
 namespace Piwik;
 
 use Exception;
-use Piwik_ScheduledTime_Daily;
-use Piwik_ScheduledTime_Monthly;
-use Piwik_ScheduledTime_Weekly;
+use Piwik\ScheduledTime\Daily;
+use Piwik\ScheduledTime\Monthly;
+use Piwik\ScheduledTime\Weekly;
 
 /**
  * The ScheduledTime abstract class is used as a base class for different types of scheduling intervals.
@@ -52,11 +52,11 @@ abstract class ScheduledTime
     {
         switch ($period) {
             case self::PERIOD_MONTH:
-                return new Piwik_ScheduledTime_Monthly();
+                return new Monthly();
             case self::PERIOD_WEEK:
-                return new Piwik_ScheduledTime_Weekly();
+                return new Weekly();
             case self::PERIOD_DAY:
-                return new Piwik_ScheduledTime_Daily();
+                return new Daily();
 
             default:
                 throw new Exception('period ' . $period . 'is undefined.');
diff --git a/core/ScheduledTime/Daily.php b/core/ScheduledTime/Daily.php
index 1783ddb1601768311653d820dadbfe865759f8f7..83fe3ecfe80c7dc717643c5df3551b86e2033df7 100644
--- a/core/ScheduledTime/Daily.php
+++ b/core/ScheduledTime/Daily.php
@@ -8,16 +8,19 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\ScheduledTime;
+
+use Exception;
 use Piwik\ScheduledTime;
 
 /**
- * Piwik_ScheduledTime_Daily class is used to schedule tasks every day.
+ * Daily class is used to schedule tasks every day.
  *
  * @see Piwik_ScheduledTask
  * @package Piwik
  * @subpackage ScheduledTime
  */
-class Piwik_ScheduledTime_Daily extends ScheduledTime
+class Daily extends ScheduledTime
 {
     public function getRescheduledTime()
     {
diff --git a/core/ScheduledTime/Hourly.php b/core/ScheduledTime/Hourly.php
index 142ce9586835a72896678e6bd5e0f1b2f206dce8..102359be86767270cd0a949c95487023d2421236 100644
--- a/core/ScheduledTime/Hourly.php
+++ b/core/ScheduledTime/Hourly.php
@@ -8,16 +8,19 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\ScheduledTime;
+
+use Exception;
 use Piwik\ScheduledTime;
 
 /**
- * Piwik_ScheduledTime_Hourly class is used to schedule tasks every hour.
+ * Hourly class is used to schedule tasks every hour.
  *
  * @see Piwik_ScheduledTask
  * @package Piwik
  * @subpackage ScheduledTime
  */
-class Piwik_ScheduledTime_Hourly extends ScheduledTime
+class Hourly extends ScheduledTime
 {
     public function getRescheduledTime()
     {
diff --git a/core/ScheduledTime/Monthly.php b/core/ScheduledTime/Monthly.php
index c3e4d759da4e174eb3860ae3cc5e28b2a717ff8f..d4e333586786def962b281ddd6c3529da49486e4 100644
--- a/core/ScheduledTime/Monthly.php
+++ b/core/ScheduledTime/Monthly.php
@@ -8,16 +8,19 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\ScheduledTime;
+
+use Exception;
 use Piwik\ScheduledTime;
 
 /**
- * Piwik_ScheduledTime_Monthly class is used to schedule tasks every month.
+ * Monthly class is used to schedule tasks every month.
  *
  * @see Piwik_ScheduledTask
  * @package Piwik
  * @subpackage ScheduledTime
  */
-class Piwik_ScheduledTime_Monthly extends ScheduledTime
+class Monthly extends ScheduledTime
 {
     /**
      * Day of the week for scheduled time.
diff --git a/core/ScheduledTime/Weekly.php b/core/ScheduledTime/Weekly.php
index af8a78214f2a26b3c95c6756133342cc67848790..497ca75d7ea592ae7b5a45194fe1ff2f837aaac3 100644
--- a/core/ScheduledTime/Weekly.php
+++ b/core/ScheduledTime/Weekly.php
@@ -8,16 +8,19 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\ScheduledTime;
+
+use Exception;
 use Piwik\ScheduledTime;
 
 /**
- * Piwik_ScheduledTime_Weekly class is used to schedule tasks every week.
+ * Weekly class is used to schedule tasks every week.
  *
  * @see Piwik_ScheduledTask
  * @package Piwik
  * @subpackage ScheduledTime
  */
-class Piwik_ScheduledTime_Weekly extends ScheduledTime
+class Weekly extends ScheduledTime
 {
 
     public function getRescheduledTime()
diff --git a/core/Session.php b/core/Session.php
index 5286d02bd3856e517b6def0f3a4c13bfbf7c6b9e..16378607edce983efb8e8d275a6d45bb8c607409 100644
--- a/core/Session.php
+++ b/core/Session.php
@@ -14,7 +14,7 @@ use Exception;
 use Piwik\Config;
 use Piwik\Piwik;
 use Piwik\Common;
-use Piwik_Session_SaveHandler_DbTable;
+use Piwik\Session\SaveHandler\DbTable;
 use Zend_Registry;
 use Zend_Session;
 
@@ -109,7 +109,7 @@ class Session extends Zend_Session
                 'db'             => $db,
             );
 
-            $saveHandler = new Piwik_Session_SaveHandler_DbTable($config);
+            $saveHandler = new DbTable($config);
             if ($saveHandler) {
                 self::setSaveHandler($saveHandler);
             }
diff --git a/core/Session/SaveHandler/DbTable.php b/core/Session/SaveHandler/DbTable.php
index a8bedd44efd88bf38d421f6c600123aefba3eb28..ddff2c167fe9f9b65ed35b9fda68cdbacd7f845e 100644
--- a/core/Session/SaveHandler/DbTable.php
+++ b/core/Session/SaveHandler/DbTable.php
@@ -9,13 +9,19 @@
  * @package Piwik
  */
 
+namespace Piwik\Session\SaveHandler;
+
+use Zend_Session;
+use Zend_Session_SaveHandler_Interface;
+use true;
+
 /**
  * Database-backed session save handler
  *
  * @package Piwik
  * @subpackage Session
  */
-class Piwik_Session_SaveHandler_DbTable implements Zend_Session_SaveHandler_Interface
+class DbTable implements Zend_Session_SaveHandler_Interface
 {
     protected $config;
     protected $maxLifetime;
diff --git a/core/Session/Namespace.php b/core/Session/SessionNamespace.php
similarity index 85%
rename from core/Session/Namespace.php
rename to core/Session/SessionNamespace.php
index d46ca799d75858a81d39e8db10c9e3b289c78fa1..63ede5f45ee9060a07508e453afe8b3aecf89d76 100644
--- a/core/Session/Namespace.php
+++ b/core/Session/SessionNamespace.php
@@ -8,7 +8,10 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Session;
+
 use Piwik\Common;
+use Zend_Session_Namespace;
 
 /**
  * Session namespace.
@@ -16,7 +19,7 @@ use Piwik\Common;
  * @package Piwik
  * @subpackage Session
  */
-class Piwik_Session_Namespace extends Zend_Session_Namespace
+class SessionNamespace extends Zend_Session_Namespace
 {
     /**
      * @param string $namespace
diff --git a/core/Tracker.php b/core/Tracker.php
index 0f8185a4384cc18783adb8606005f41d752f797a..404252442277adbf79152103e17bb4da4eb6efc1 100644
--- a/core/Tracker.php
+++ b/core/Tracker.php
@@ -17,15 +17,13 @@ use Piwik\Common;
 use Piwik\Access;
 use Piwik\Translate;
 use Piwik\TaskScheduler;
-use Piwik_Tracker_Cache;
-use Piwik_Tracker_Db;
-use Piwik_Tracker_Db_Exception;
-use Piwik_Tracker_Db_Mysqli;
-use Piwik_Tracker_Db_Pdo_Mysql;
-use Piwik_Tracker_Request;
-use Piwik_Tracker_Visit;
-use Piwik_Tracker_Visit_Excluded;
-use Piwik_Tracker_Visit_Interface;
+use Piwik\Tracker\Cache;
+use Piwik\Tracker\Db\DbException;
+use Piwik\Tracker\Db\Mysqli;
+use Piwik\Tracker\Db\Pdo\Mysql;
+use Piwik\Tracker\Request;
+use Piwik\Tracker\Visit;
+use Piwik\Tracker\VisitInterface;
 use Zend_Registry;
 
 /**
@@ -42,7 +40,7 @@ class Tracker
 {
     protected $stateValid = self::STATE_NOTHING_TO_NOTICE;
     /**
-     * @var Piwik_Tracker_Db
+     * @var Db
      */
     protected static $db = null;
 
@@ -205,7 +203,7 @@ class Tracker
             }
 
             // a Bulk Tracking request that is not authenticated should fail
-            if (!Piwik_Tracker_Request::authenticateSuperUserOrAdmin($tokenAuth, $idSiteForAuthentication)) {
+            if (!Request::authenticateSuperUserOrAdmin($tokenAuth, $idSiteForAuthentication)) {
                 throw new Exception(" token_auth specified is not valid for site " . intval($idSiteForAuthentication));
             }
         }
@@ -225,7 +223,7 @@ class Tracker
         $isAuthenticated = false;
         if (!empty($this->requests)) {
             foreach ($this->requests as $params) {
-                $request = new Piwik_Tracker_Request($params, $tokenAuth);
+                $request = new Request($params, $tokenAuth);
                 $this->init($request);
 
                 try {
@@ -244,10 +242,10 @@ class Tracker
                     } else {
                         Common::printDebug("The request is invalid: empty request, or maybe tracking is disabled in the config.ini.php via record_statistics=0");
                     }
-                } catch (Piwik_Tracker_Db_Exception $e) {
+                } catch (DbException $e) {
                     Common::printDebug("<b>" . $e->getMessage() . "</b>");
                     $this->exitWithException($e, $isAuthenticated);
-                } catch (Piwik_Tracker_Visit_Excluded $e) {
+                } catch (VisitExcluded $e) {
                 } catch (Exception $e) {
                     $this->exitWithException($e, $isAuthenticated);
                 }
@@ -269,7 +267,7 @@ class Tracker
                 $this->exitWithException($e);
             }
         } else {
-            $this->handleEmptyRequest(new Piwik_Tracker_Request($_GET + $_POST));
+            $this->handleEmptyRequest(new Request($_GET + $_POST));
         }
         $this->end();
     }
@@ -300,7 +298,7 @@ class Tracker
         // If the user disabled browser archiving, he has already setup a cron
         // To avoid parallel requests triggering the Scheduled Tasks,
         // Get last time tasks started executing
-        $cache = Piwik_Tracker_Cache::getCacheGeneral();
+        $cache = Cache::getCacheGeneral();
         if ($minimumInterval <= 0
             || empty($cache['isBrowserTriggerArchivingEnabled'])
         ) {
@@ -313,7 +311,7 @@ class Tracker
             || $nextRunTime < $now
         ) {
             $cache['lastTrackerCronRun'] = $now;
-            Piwik_Tracker_Cache::setCacheGeneral($cache);
+            Cache::setCacheGeneral($cache);
             self::initCorePiwikInTrackerMode();
             Piwik_SetOption('lastTrackerCronRun', $cache['lastTrackerCronRun']);
             Common::printDebug('-> Scheduled Tasks: Starting...');
@@ -424,7 +422,7 @@ class Tracker
     /**
      * Initialization
      */
-    protected function init(Piwik_Tracker_Request $request)
+    protected function init(Request $request)
     {
         $this->handleTrackingApi($request);
         $this->loadTrackerPlugins($request);
@@ -474,18 +472,18 @@ class Tracker
      *
      * @param array $configDb Database configuration
      * @throws Exception
-     * @return Piwik_Tracker_Db_Mysqli|Piwik_Tracker_Db_Pdo_Mysql
+     * @return \Piwik\Tracker\Db\Mysqli|\Piwik\Tracker\Db\Pdo\Mysql
      */
     public static function factory($configDb)
     {
         switch ($configDb['adapter']) {
             case 'PDO_MYSQL':
                 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db/Pdo/Mysql.php';
-                return new Piwik_Tracker_Db_Pdo_Mysql($configDb);
+                return new Mysql($configDb);
 
             case 'MYSQLI':
                 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db/Mysqli.php';
-                return new Piwik_Tracker_Db_Mysqli($configDb);
+                return new Mysqli($configDb);
         }
 
         throw new Exception('Unsupported database adapter ' . $configDb['adapter']);
@@ -523,12 +521,12 @@ class Tracker
             }
             self::$db = $db;
         } catch (Exception $e) {
-            throw new Piwik_Tracker_Db_Exception($e->getMessage(), $e->getCode());
+            throw new DbException($e->getMessage(), $e->getCode());
         }
     }
 
     /**
-     * @return Piwik_Tracker_Db
+     * @return Db
      */
     public static function getDatabase()
     {
@@ -548,7 +546,7 @@ class Tracker
      * This method can be overwritten to use a different Tracker_Visit object
      *
      * @throws Exception
-     * @return Piwik_Tracker_Visit
+     * @return \Piwik\Tracker\Visit
      */
     protected function getNewVisitObject()
     {
@@ -556,9 +554,9 @@ class Tracker
         Piwik_PostEvent('Tracker.getNewVisitObject', array(&$visit));
 
         if (is_null($visit)) {
-            $visit = new Piwik_Tracker_Visit();
-        } elseif (!($visit instanceof Piwik_Tracker_Visit_Interface)) {
-            throw new Exception("The Visit object set in the plugin must implement Piwik_Tracker_Visit_Interface");
+            $visit = new Visit();
+        } elseif (!($visit instanceof VisitInterface)) {
+            throw new Exception("The Visit object set in the plugin must implement VisitInterface");
         }
         return $visit;
     }
@@ -602,7 +600,7 @@ class Tracker
         $this->stateValid = $value;
     }
 
-    protected function loadTrackerPlugins(Piwik_Tracker_Request $request)
+    protected function loadTrackerPlugins(Request $request)
     {
         // Adding &dp=1 will disable the provider plugin, if token_auth is used (used to speed up bulk imports)
         $disableProvider = $request->getParam('dp');
@@ -627,7 +625,7 @@ class Tracker
         }
     }
 
-    protected function handleEmptyRequest(Piwik_Tracker_Request $request)
+    protected function handleEmptyRequest(Request $request)
     {
         $countParameters = $request->getParamsCount();
         if ($countParameters == 0) {
@@ -659,7 +657,7 @@ class Tracker
      * This method allows to set custom IP + server time + visitor ID, when using Tracking API.
      * These two attributes can be only set by the Super User (passing token_auth).
      */
-    protected function handleTrackingApi(Piwik_Tracker_Request $request)
+    protected function handleTrackingApi(Request $request)
     {
         if (!$request->isAuthenticated()) {
             return;
diff --git a/core/Tracker/Action.php b/core/Tracker/Action.php
index b7df4c0b1cd2f2ef8bdfbd39ef9fe165692a8c24..3d9e2908768f9ddc51441cd2cfa12aea6486149a 100644
--- a/core/Tracker/Action.php
+++ b/core/Tracker/Action.php
@@ -8,44 +8,14 @@
  * @category Piwik
  * @package Piwik
  */
-use Piwik\Config;
+
+namespace Piwik\Tracker;
+use Exception;
 use Piwik\Common;
+use Piwik\Config;
 use Piwik\Tracker;
-
-/**
- * Interface of the Action object.
- * New Action classes can be defined in plugins and used instead of the default one.
- *
- * @package Piwik
- * @subpackage Tracker
- */
-interface Piwik_Tracker_Action_Interface
-{
-    const TYPE_ACTION_URL = 1;
-    const TYPE_OUTLINK = 2;
-    const TYPE_DOWNLOAD = 3;
-    const TYPE_ACTION_NAME = 4;
-    const TYPE_ECOMMERCE_ITEM_SKU = 5;
-    const TYPE_ECOMMERCE_ITEM_NAME = 6;
-    const TYPE_ECOMMERCE_ITEM_CATEGORY = 7;
-    const TYPE_SITE_SEARCH = 8;
-
-    public function __construct(Piwik_Tracker_Request $request);
-
-    public function getActionUrl();
-
-    public function getActionName();
-
-    public function getActionType();
-
-    public function record($idVisit, $visitorIdCookie, $idRefererActionUrl, $idRefererActionName, $timeSpentRefererAction);
-
-    public function getIdActionUrl();
-
-    public function getIdActionName();
-
-    public function getIdLinkVisitAction();
-}
+use Piwik\Tracker\Cache;
+use Piwik\Tracker\Request;
 
 /**
  * Handles an action (page view, download or outlink) by the visitor.
@@ -54,10 +24,10 @@ interface Piwik_Tracker_Action_Interface
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
+class Action implements ActionInterface
 {
     /**
-     * @var Piwik_Tracker_Request
+     * @var Request
      */
     private $request;
 
@@ -151,8 +121,7 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
         return $fullUrl;
     }
 
-
-    public function __construct(Piwik_Tracker_Request $request)
+    public function __construct(Request $request)
     {
         $this->request = $request;
         $this->init();
@@ -184,12 +153,12 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
 
         // we can add here action types for names of other actions than page views (like downloads, outlinks)
         switch ($this->getActionType()) {
-            case Piwik_Tracker_Action_Interface::TYPE_ACTION_URL:
-                $actionNameType = Piwik_Tracker_Action_Interface::TYPE_ACTION_NAME;
+            case ActionInterface::TYPE_ACTION_URL:
+                $actionNameType = ActionInterface::TYPE_ACTION_NAME;
                 break;
 
-            case Piwik_Tracker_Action_Interface::TYPE_SITE_SEARCH:
-                $actionNameType = Piwik_Tracker_Action_Interface::TYPE_SITE_SEARCH;
+            case ActionInterface::TYPE_SITE_SEARCH:
+                $actionNameType = ActionInterface::TYPE_SITE_SEARCH;
                 break;
         }
 
@@ -332,7 +301,7 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
      */
     public static function shouldRemoveURLFragmentFor($idSite)
     {
-        $websiteAttributes = Piwik_Tracker_Cache::getCacheWebsiteAttributes($idSite);
+        $websiteAttributes = Cache::getCacheWebsiteAttributes($idSite);
         return !$websiteAttributes['keep_url_fragment'];
     }
 
@@ -383,7 +352,7 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
             $campaignTrackingParameters[1] // campaign keyword parameters
         );
 
-        $website = Piwik_Tracker_Cache::getCacheWebsiteAttributes($idSite);
+        $website = Cache::getCacheWebsiteAttributes($idSite);
         $excludedParameters = isset($website['excluded_parameters'])
             ? $website['excluded_parameters']
             : array();
@@ -460,7 +429,7 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
     static public function getSqlSelectActionId()
     {
         $sql = "SELECT idaction, type, name
-							FROM " . Common::prefixTable('log_action')
+                        FROM " . Common::prefixTable('log_action')
             . "  WHERE "
             . "		( hash = CRC32(?) AND name = ? AND type = ? ) ";
         return $sql;
@@ -492,7 +461,7 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
             if ($i > 0) {
                 $sql .= " OR ( hash = CRC32(?) AND name = ? AND type = ? ) ";
             }
-            if ($type == Piwik_Tracker_Action::TYPE_ACTION_URL) {
+            if ($type == Tracker\Action::TYPE_ACTION_URL) {
                 // normalize urls by stripping protocol and www
                 $normalizedUrls[$index] = self::normalizeUrl($name);
                 $name = $normalizedUrls[$index]['url'];
@@ -615,8 +584,8 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
         $url = $this->getActionUrl();
         // this code is a mess, but basically, getActionType() returns SITE_SEARCH,
         // but we do want to record the site search URL as an ACTION_URL
-        if ($nameType == Piwik_Tracker_Action::TYPE_SITE_SEARCH) {
-            $urlType = Piwik_Tracker_Action::TYPE_ACTION_URL;
+        if ($nameType == Tracker\Action::TYPE_SITE_SEARCH) {
+            $urlType = Tracker\Action::TYPE_ACTION_URL;
 
             // By default, Site Search does not record the URL for the Search Result page, to slightly improve performance
             if (empty(Config::getInstance()->Tracker['action_sitesearch_record_url'])) {
@@ -631,8 +600,8 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
 
         foreach ($loadedActionIds as $loadedActionId) {
             list($name, $type, $actionId) = $loadedActionId;
-            if ($type == Piwik_Tracker_Action::TYPE_ACTION_NAME
-                || $type == Piwik_Tracker_Action::TYPE_SITE_SEARCH
+            if ($type == Tracker\Action::TYPE_ACTION_NAME
+                || $type == Tracker\Action::TYPE_SITE_SEARCH
             ) {
                 $this->idActionName = $actionId;
             } else {
@@ -655,13 +624,12 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
     {
         $this->loadIdActionNameAndUrl();
 
-        $idActionName = in_array($this->getActionType(), array(Piwik_Tracker_Action::TYPE_ACTION_NAME,
-                                                               Piwik_Tracker_Action::TYPE_ACTION_URL,
-                                                               Piwik_Tracker_Action::TYPE_SITE_SEARCH))
+        $idActionName = in_array($this->getActionType(), array(Tracker\Action::TYPE_ACTION_NAME,
+                                                               Tracker\Action::TYPE_ACTION_URL,
+                                                               Tracker\Action::TYPE_SITE_SEARCH))
             ? (int)$this->getIdActionName()
             : null;
 
-
         $insert = array(
             'idvisit'               => $idVisit,
             'idsite'                => $this->request->getIdSite(),
@@ -725,7 +693,7 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
                 Common::printDebug("WARNING: Overwriting existing Custom Variable  in slot " . self::CVAR_INDEX_SEARCH_CATEGORY . " for this page view");
             }
             $customVariables['custom_var_k' . self::CVAR_INDEX_SEARCH_CATEGORY] = self::CVAR_KEY_SEARCH_CATEGORY;
-            $customVariables['custom_var_v' . self::CVAR_INDEX_SEARCH_CATEGORY] = Piwik_Tracker_Request::truncateCustomVariable($this->searchCategory);
+            $customVariables['custom_var_v' . self::CVAR_INDEX_SEARCH_CATEGORY] = Request::truncateCustomVariable($this->searchCategory);
         }
         if ($this->searchCount !== false) {
             if (!empty($customVariables['custom_var_k' . self::CVAR_INDEX_SEARCH_COUNT])) {
@@ -832,7 +800,7 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
 
     protected function detectSiteSearch($originalUrl)
     {
-        $website = Piwik_Tracker_Cache::getCacheWebsiteAttributes($this->request->getIdSite());
+        $website = Cache::getCacheWebsiteAttributes($this->request->getIdSite());
         if (empty($website['sitesearch'])) {
             Common::printDebug("Internal 'Site Search' tracking is not enabled for this site. ");
             return false;
@@ -842,7 +810,6 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
 
         $originalUrl = self::cleanupUrl($originalUrl);
 
-
         // Detect Site search from Tracking API parameters rather than URL
         $searchKwd = $this->request->getParam('search');
         if (!empty($searchKwd)) {
@@ -903,7 +870,6 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
         return is_numeric($count) && $count >= 0;
     }
 
-
     protected function setActionSearchMetadata($category, $count)
     {
         if (!empty($category)) {
@@ -992,7 +958,8 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
     {
         $generationTime = $this->request->getParam('gt_ms');
         if ($generationTime > 0
-            && $generationTime < self::GENERATION_TIME_MS_MAXIMUM) {
+            && $generationTime < self::GENERATION_TIME_MS_MAXIMUM
+        ) {
             $this->timeGeneration = (int)$generationTime;
         }
     }
@@ -1020,8 +987,8 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
      * charset of the page viewed and we can sometimes work around invalid data
      * being stored.
      *
-     * @param array        $queryParameters Name/value mapping of query parameters.
-     * @param bool|string  $encoding        of the HTML page the URL is for. Used to workaround
+     * @param array $queryParameters Name/value mapping of query parameters.
+     * @param bool|string $encoding        of the HTML page the URL is for. Used to workaround
      *                                      browser bugs & mis-coded webapps. See #3450.
      *
      * @return array
@@ -1062,3 +1029,39 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
         return $value;
     }
 }
+
+
+/**
+ * Interface of the Action object.
+ * New Action classes can be defined in plugins and used instead of the default one.
+ *
+ * @package Piwik
+ * @subpackage Tracker
+ */
+interface ActionInterface
+{
+    const TYPE_ACTION_URL = 1;
+    const TYPE_OUTLINK = 2;
+    const TYPE_DOWNLOAD = 3;
+    const TYPE_ACTION_NAME = 4;
+    const TYPE_ECOMMERCE_ITEM_SKU = 5;
+    const TYPE_ECOMMERCE_ITEM_NAME = 6;
+    const TYPE_ECOMMERCE_ITEM_CATEGORY = 7;
+    const TYPE_SITE_SEARCH = 8;
+
+    public function __construct(Request $request);
+
+    public function getActionUrl();
+
+    public function getActionName();
+
+    public function getActionType();
+
+    public function record($idVisit, $visitorIdCookie, $idRefererActionUrl, $idRefererActionName, $timeSpentRefererAction);
+
+    public function getIdActionUrl();
+
+    public function getIdActionName();
+
+    public function getIdLinkVisitAction();
+}
\ No newline at end of file
diff --git a/core/Tracker/Cache.php b/core/Tracker/Cache.php
index b65cbc37bd8da2d66216b5a1e4229cdad7900139..1e6423d8f6bf4d377eed17db8f212832f98ee17a 100644
--- a/core/Tracker/Cache.php
+++ b/core/Tracker/Cache.php
@@ -8,11 +8,14 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Tracker;
+
 use Piwik\ArchiveProcessor\Rules;
 use Piwik\Config;
 use Piwik\Piwik;
 use Piwik\CacheFile;
 use Piwik\Tracker;
+use Piwik_UserCountry_LocationProvider;
 
 /**
  * Simple cache mechanism used in Tracker to avoid requesting settings from mysql on every request
@@ -20,7 +23,7 @@ use Piwik\Tracker;
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_Cache
+class Cache
 {
     /**
      * Public for tests only
@@ -51,7 +54,7 @@ class Piwik_Tracker_Cache
         if (($cacheContent = $cache->get($idSite)) !== false) {
             return $cacheContent;
         }
-        
+
         Tracker::initCorePiwikInTrackerMode();
 
         // save current user privilege and temporarily assume super user privilege
@@ -99,9 +102,9 @@ class Piwik_Tracker_Cache
 
         Tracker::initCorePiwikInTrackerMode();
         $cacheContent = array(
-            'isBrowserTriggerEnabled' => Rules::isBrowserTriggerEnabled(),
-            'lastTrackerCronRun'               => Piwik_GetOption('lastTrackerCronRun'),
-            'currentLocationProviderId'        => Piwik_UserCountry_LocationProvider::getCurrentProviderId(),
+            'isBrowserTriggerEnabled'   => Rules::isBrowserTriggerEnabled(),
+            'lastTrackerCronRun'        => Piwik_GetOption('lastTrackerCronRun'),
+            'currentLocationProviderId' => Piwik_UserCountry_LocationProvider::getCurrentProviderId(),
         );
         self::setCacheGeneral($cacheContent);
         return $cacheContent;
@@ -155,5 +158,4 @@ class Piwik_Tracker_Cache
     {
         self::getInstance()->deleteAll();
     }
-
 }
diff --git a/core/Tracker/Config.php b/core/Tracker/Config.php
deleted file mode 100644
index e3e35fd7e0bb605aabca6fb2b52b979ac3478e2c..0000000000000000000000000000000000000000
--- a/core/Tracker/Config.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- * Piwik - Open source web analytics
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- * @category Piwik
- * @package Piwik
- */
-use Piwik\Config;
-
-/**
- * Backward compatibility layer
- * DO NOT USE
- *
- * Use this notation to fetch a config file value:
- *    Piwik_Config::getInstance()->General['enable_browser_archiving_triggering']
- *
- * @todo remove this in 2.0
- * @since 1.7
- * @deprecated 1.7
- *
- * @package Piwik
- * @subpackage Piwik_Tracker_Config
- */
-class Piwik_Tracker_Config
-{
-    /**
-     * Returns the singleton Piwik_Config
-     *
-     * @return Config
-     */
-    static public function getInstance()
-    {
-        return Config::getInstance();
-    }
-}
diff --git a/core/Tracker/Db.php b/core/Tracker/Db.php
index f917f3ed611dc89f9b96dd8f9ae16902874f9e09..bfb92f34b5f499256872783b91dd9403e6999502 100644
--- a/core/Tracker/Db.php
+++ b/core/Tracker/Db.php
@@ -8,8 +8,13 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Tracker;
+
+use Exception;
+use PDOStatement;
 use Piwik\Common;
 use Piwik\Timer;
+use Piwik\Tracker\Db\DbException;
 
 /**
  * Simple database wrapper.
@@ -19,7 +24,7 @@ use Piwik\Timer;
  * @package Piwik
  * @subpackage Tracker
  */
-abstract class Piwik_Tracker_Db
+abstract class Db
 {
     protected static $profiling = false;
 
@@ -101,7 +106,7 @@ abstract class Piwik_Tracker_Db
 
             $queryProfiling = "INSERT INTO " . Common::prefixTable('log_profiling') . "
 						(query,count,sum_time_ms) VALUES (?,$count,$time)
-						ON DUPLICATE KEY 
+						ON DUPLICATE KEY
 							UPDATE count=count+$count,sum_time_ms=sum_time_ms+$time";
             $this->query($queryProfiling, array($query));
         }
@@ -113,7 +118,7 @@ abstract class Piwik_Tracker_Db
     /**
      * Connects to the DB
      *
-     * @throws Piwik_Tracker_Db_Exception if there was an error connecting the DB
+     * @throws \Piwik\Tracker\Db\DbException if there was an error connecting the DB
      */
     abstract public function connect();
 
@@ -131,7 +136,7 @@ abstract class Piwik_Tracker_Db
      * @param string $query       Query
      * @param array $parameters  Parameters to bind
      * @see query()
-     * @throws Piwik_Tracker_Db_Exception if an exception occurred
+     * @throws \Piwik\Tracker\Db\DbException if an exception occurred
      */
     abstract public function fetchAll($query, $parameters = array());
 
@@ -142,7 +147,7 @@ abstract class Piwik_Tracker_Db
      * @param array $parameters  Parameters to bind
      * @see also query()
      *
-     * @throws Piwik_Tracker_Db_Exception if an exception occurred
+     * @throws DbException if an exception occurred
      */
     abstract public function fetch($query, $parameters = array());
 
@@ -201,7 +206,7 @@ abstract class Piwik_Tracker_Db
      * @param array $parameters  Parameters to bind array('idsite'=> 1)
      *
      * @return PDOStatement or false if failed
-     * @throws Piwik_Tracker_Db_Exception if an exception occurred
+     * @throws DbException if an exception occurred
      */
     abstract public function query($query, $parameters = array());
 
diff --git a/core/Tracker/Db/Exception.php b/core/Tracker/Db/DbException.php
similarity index 76%
rename from core/Tracker/Db/Exception.php
rename to core/Tracker/Db/DbException.php
index 236850379063ddbe7b6bfc03f34b73f5f9cb3464..620a461b70f7dadcd8f713f2dfb159826bdca395 100644
--- a/core/Tracker/Db/Exception.php
+++ b/core/Tracker/Db/DbException.php
@@ -9,12 +9,16 @@
  * @package Piwik
  */
 
+namespace Piwik\Tracker\Db;
+
+use Exception;
+
 /**
  * Database Exception
  *
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_Db_Exception extends Exception
+class DbException extends Exception
 {
 }
diff --git a/core/Tracker/Db/Mysqli.php b/core/Tracker/Db/Mysqli.php
index 12ed3ed725d55481dd70379ba5d200b467c71eb6..0fe9e4e7a132572b29b66e2ab7a441e64033f9ad 100644
--- a/core/Tracker/Db/Mysqli.php
+++ b/core/Tracker/Db/Mysqli.php
@@ -8,6 +8,11 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Tracker\Db;
+
+use Exception;
+use Piwik\Tracker\Db;
+use Piwik\Tracker\Db\DbException;
 
 /**
  * mysqli wrapper
@@ -15,7 +20,7 @@
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
+class Mysqli extends Db
 {
     protected $connection = null;
     protected $host;
@@ -64,7 +69,7 @@ class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
     /**
      * Connects to the DB
      *
-     * @throws Exception|Piwik_Tracker_Db_Exception  if there was an error connecting the DB
+     * @throws Exception|DbException  if there was an error connecting the DB
      */
     public function connect()
     {
@@ -74,11 +79,11 @@ class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
 
         $this->connection = mysqli_connect($this->host, $this->username, $this->password, $this->dbname, $this->port, $this->socket);
         if (!$this->connection || mysqli_connect_errno()) {
-            throw new Piwik_Tracker_Db_Exception("Connect failed: " . mysqli_connect_error());
+            throw new DbException("Connect failed: " . mysqli_connect_error());
         }
 
         if ($this->charset && !mysqli_set_charset($this->connection, $this->charset)) {
-            throw new Piwik_Tracker_Db_Exception("Set Charset failed: " . mysqli_error($this->connection));
+            throw new DbException("Set Charset failed: " . mysqli_error($this->connection));
         }
 
         $this->password = '';
@@ -105,7 +110,7 @@ class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
      * @param string $query       Query
      * @param array $parameters  Parameters to bind
      * @return array
-     * @throws Exception|Piwik_Tracker_Db_Exception if an exception occured
+     * @throws Exception|DbException if an exception occured
      */
     public function fetchAll($query, $parameters = array())
     {
@@ -118,7 +123,7 @@ class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
             $query = $this->prepare($query, $parameters);
             $rs = mysqli_query($this->connection, $query);
             if (is_bool($rs)) {
-                throw new Piwik_Tracker_Db_Exception('fetchAll() failed: ' . mysqli_error($this->connection) . ' : ' . $query);
+                throw new DbException('fetchAll() failed: ' . mysqli_error($this->connection) . ' : ' . $query);
             }
 
             while ($row = mysqli_fetch_array($rs, MYSQLI_ASSOC)) {
@@ -131,7 +136,7 @@ class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
             }
             return $rows;
         } catch (Exception $e) {
-            throw new Piwik_Tracker_Db_Exception("Error query: " . $e->getMessage());
+            throw new DbException("Error query: " . $e->getMessage());
         }
     }
 
@@ -145,7 +150,7 @@ class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
      *
      * @return array
      *
-     * @throws Piwik_Tracker_Db_Exception if an exception occurred
+     * @throws DbException if an exception occurred
      */
     public function fetch($query, $parameters = array())
     {
@@ -157,7 +162,7 @@ class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
             $query = $this->prepare($query, $parameters);
             $rs = mysqli_query($this->connection, $query);
             if (is_bool($rs)) {
-                throw new Piwik_Tracker_Db_Exception('fetch() failed: ' . mysqli_error($this->connection) . ' : ' . $query);
+                throw new DbException('fetch() failed: ' . mysqli_error($this->connection) . ' : ' . $query);
             }
 
             $row = mysqli_fetch_array($rs, MYSQLI_ASSOC);
@@ -168,7 +173,7 @@ class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
             }
             return $row;
         } catch (Exception $e) {
-            throw new Piwik_Tracker_Db_Exception("Error query: " . $e->getMessage());
+            throw new DbException("Error query: " . $e->getMessage());
         }
     }
 
@@ -179,7 +184,7 @@ class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
      * @param array|string $parameters  Parameters to bind array('idsite'=> 1)
      *
      * @return bool|resource  false if failed
-     * @throws Piwik_Tracker_Db_Exception  if an exception occurred
+     * @throws DbException  if an exception occurred
      */
     public function query($query, $parameters = array())
     {
@@ -203,7 +208,7 @@ class Piwik_Tracker_Db_Mysqli extends Piwik_Tracker_Db
             }
             return $result;
         } catch (Exception $e) {
-            throw new Piwik_Tracker_Db_Exception("Error query: " . $e->getMessage() . "
+            throw new DbException("Error query: " . $e->getMessage() . "
 								In query: $query
 								Parameters: " . var_export($parameters, true));
         }
diff --git a/core/Tracker/Db/Pdo/Mysql.php b/core/Tracker/Db/Pdo/Mysql.php
index de201fd511af8a358e3f5911bdfa257eea78e58f..da77824aab537e2e1fec00111dfc7c1694d43d60 100644
--- a/core/Tracker/Db/Pdo/Mysql.php
+++ b/core/Tracker/Db/Pdo/Mysql.php
@@ -8,6 +8,14 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Tracker\Db\Pdo;
+
+use Exception;
+use PDO;
+use PDOException;
+use PDOStatement;
+use Piwik\Tracker\Db;
+use Piwik\Tracker\Db\DbException;
 
 /**
  * PDO MySQL wrapper
@@ -15,7 +23,7 @@
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_Db_Pdo_Mysql extends Piwik_Tracker_Db
+class Mysql extends Db
 {
     protected $connection = null;
     protected $dsn;
@@ -96,7 +104,7 @@ class Piwik_Tracker_Db_Pdo_Mysql extends Piwik_Tracker_Db
      * @param array $parameters  Parameters to bind
      * @return array|bool
      * @see query()
-     * @throws Exception|Piwik_Tracker_Db_Exception if an exception occurred
+     * @throws Exception|DbException if an exception occurred
      */
     public function fetchAll($query, $parameters = array())
     {
@@ -107,7 +115,7 @@ class Piwik_Tracker_Db_Pdo_Mysql extends Piwik_Tracker_Db
             }
             return $sth->fetchAll(PDO::FETCH_ASSOC);
         } catch (PDOException $e) {
-            throw new Piwik_Tracker_Db_Exception("Error query: " . $e->getMessage());
+            throw new DbException("Error query: " . $e->getMessage());
         }
     }
 
@@ -118,7 +126,7 @@ class Piwik_Tracker_Db_Pdo_Mysql extends Piwik_Tracker_Db
      * @param array $parameters Parameters to bind
      * @return bool|mixed
      * @see query()
-     * @throws Exception|Piwik_Tracker_Db_Exception if an exception occurred
+     * @throws Exception|DbException if an exception occurred
      */
     public function fetch($query, $parameters = array())
     {
@@ -129,7 +137,7 @@ class Piwik_Tracker_Db_Pdo_Mysql extends Piwik_Tracker_Db
             }
             return $sth->fetch(PDO::FETCH_ASSOC);
         } catch (PDOException $e) {
-            throw new Piwik_Tracker_Db_Exception("Error query: " . $e->getMessage());
+            throw new DbException("Error query: " . $e->getMessage());
         }
     }
 
@@ -139,7 +147,7 @@ class Piwik_Tracker_Db_Pdo_Mysql extends Piwik_Tracker_Db
      * @param string $query       Query
      * @param array|string $parameters  Parameters to bind array('idsite'=> 1)
      * @return PDOStatement|bool  PDOStatement or false if failed
-     * @throws Piwik_Tracker_Db_Exception if an exception occured
+     * @throws DbException if an exception occured
      */
     public function query($query, $parameters = array())
     {
@@ -163,7 +171,7 @@ class Piwik_Tracker_Db_Pdo_Mysql extends Piwik_Tracker_Db
             }
             return $sth;
         } catch (PDOException $e) {
-            throw new Piwik_Tracker_Db_Exception("Error query: " . $e->getMessage() . "
+            throw new DbException("Error query: " . $e->getMessage() . "
 								In query: $query
 								Parameters: " . var_export($parameters, true));
         }
diff --git a/core/Tracker/Db/Pdo/Pgsql.php b/core/Tracker/Db/Pdo/Pgsql.php
index 52e04e27f469829f56c5ea5e7f01804d6e5b8b64..ef43742d4c1610722acabe70b9d7626eb7db00c9 100644
--- a/core/Tracker/Db/Pdo/Pgsql.php
+++ b/core/Tracker/Db/Pdo/Pgsql.php
@@ -9,13 +9,19 @@
  * @package Piwik
  */
 
+namespace Piwik\Tracker\Db\Pdo;
+
+use Exception;
+use PDO;
+use Piwik\Tracker\Db\Pdo\Mysql;
+
 /**
  * PDO PostgreSQL wrapper
  *
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_Db_Pdo_Pgsql extends Piwik_Tracker_Db_Pdo_Mysql
+class Pgsql extends Mysql
 {
     /**
      * Builds the DB object
@@ -39,7 +45,6 @@ class Piwik_Tracker_Db_Pdo_Pgsql extends Piwik_Tracker_Db_Pdo_Mysql
             $timer = $this->initProfiler();
         }
 
-
         $this->connection = new PDO($this->dsn, $this->username, $this->password, $config = array());
         $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
         // we may want to setAttribute(PDO::ATTR_TIMEOUT ) to a few seconds (default is 60) in case the DB is locked
diff --git a/core/Tracker/GoalManager.php b/core/Tracker/GoalManager.php
index 88e5057c0952a0e115b4dd2613dfb4dd6ced4492..aa87b58b91bd2dc954abad7114ab027ecb21c14c 100644
--- a/core/Tracker/GoalManager.php
+++ b/core/Tracker/GoalManager.php
@@ -8,15 +8,23 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Tracker;
+
+use Exception;
 use Piwik\Config;
 use Piwik\Common;
 use Piwik\Tracker;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Cache;
+use Piwik\Tracker\Referrer;
+use Piwik\Tracker\Request;
+use false;
 
 /**
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_GoalManager
+class GoalManager
 {
     // log_visit.visit_goal_buyer
     const TYPE_BUYER_NONE = 0;
@@ -39,18 +47,18 @@ class Piwik_Tracker_GoalManager
     public $isGoalAnOrder;
 
     /**
-     * @var Piwik_Tracker_Action
+     * @var Action
      */
     protected $action = null;
     protected $convertedGoals = array();
     protected $isThereExistingCartInVisit = false;
     /**
-     * @var Piwik_Tracker_Request
+     * @var Request
      */
     protected $request;
     protected $orderId;
 
-    public function __construct(Piwik_Tracker_Request $request)
+    public function __construct(Request $request)
     {
         $this->request = $request;
         $this->init();
@@ -64,12 +72,12 @@ class Piwik_Tracker_GoalManager
         $this->requestIsEcommerce = ($this->idGoal == 0);
     }
 
-    function getBuyerType($existingType = Piwik_Tracker_GoalManager::TYPE_BUYER_NONE)
+    function getBuyerType($existingType = GoalManager::TYPE_BUYER_NONE)
     {
         // Was there a Cart for this visit prior to the order?
         $this->isThereExistingCartInVisit = in_array($existingType,
-            array(Piwik_Tracker_GoalManager::TYPE_BUYER_OPEN_CART,
-                  Piwik_Tracker_GoalManager::TYPE_BUYER_ORDERED_AND_OPEN_CART));
+            array(GoalManager::TYPE_BUYER_OPEN_CART,
+                  GoalManager::TYPE_BUYER_ORDERED_AND_OPEN_CART));
 
         if (!$this->requestIsEcommerce) {
             return $existingType;
@@ -88,7 +96,7 @@ class Piwik_Tracker_GoalManager
 
     static public function getGoalDefinitions($idSite)
     {
-        $websiteAttributes = Piwik_Tracker_Cache::getCacheWebsiteAttributes($idSite);
+        $websiteAttributes = Cache::getCacheWebsiteAttributes($idSite);
         if (isset($websiteAttributes['goals'])) {
             return $websiteAttributes['goals'];
         }
@@ -120,7 +128,7 @@ class Piwik_Tracker_GoalManager
      * Look at the URL or Page Title and sees if it matches any existing Goal definition
      *
      * @param int $idSite
-     * @param Piwik_Tracker_Action $action
+     * @param Action $action
      * @throws Exception
      * @return int Number of goals matched
      */
@@ -136,9 +144,9 @@ class Piwik_Tracker_GoalManager
         foreach ($goals as $goal) {
             $attribute = $goal['match_attribute'];
             // if the attribute to match is not the type of the current action
-            if (($actionType == Piwik_Tracker_Action::TYPE_ACTION_URL && $attribute != 'url' && $attribute != 'title')
-                || ($actionType == Piwik_Tracker_Action::TYPE_DOWNLOAD && $attribute != 'file')
-                || ($actionType == Piwik_Tracker_Action::TYPE_OUTLINK && $attribute != 'external_website')
+            if (($actionType == Action::TYPE_ACTION_URL && $attribute != 'url' && $attribute != 'title')
+                || ($actionType == Action::TYPE_DOWNLOAD && $attribute != 'file')
+                || ($actionType == Action::TYPE_OUTLINK && $attribute != 'external_website')
                 || ($attribute == 'manually')
             ) {
                 continue;
@@ -205,8 +213,8 @@ class Piwik_Tracker_GoalManager
         $goal = $goals[$this->idGoal];
 
         $url = $this->request->getParam('url');
-        $goal['url'] = Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idSite);
-        $goal['revenue'] = $this->getRevenue( $this->request->getGoalRevenue($goal['revenue']));
+        $goal['url'] = Action::excludeQueryParametersFromUrl($url, $idSite);
+        $goal['revenue'] = $this->getRevenue($this->request->getGoalRevenue($goal['revenue']));
         $this->convertedGoals[] = $goal;
         return true;
     }
@@ -214,9 +222,9 @@ class Piwik_Tracker_GoalManager
     /**
      * Records one or several goals matched in this request.
      *
-     * @param int    $idSite
-     * @param array  $visitorInformation
-     * @param array  $visitCustomVariables
+     * @param int $idSite
+     * @param array $visitorInformation
+     * @param array $visitCustomVariables
      * @param string $action
      */
     public function recordGoals($idSite, $visitorInformation, $visitCustomVariables, $action)
@@ -298,10 +306,10 @@ class Piwik_Tracker_GoalManager
             $time = $refererTimestamp;
         } // 2) Referrer URL parsing
         elseif (!empty($refererUrl)) {
-            $referrer = new Piwik_Tracker_Referer();
+            $referrer = new Referrer();
             $referrer = $referrer->getRefererInformation($refererUrl, $currentUrl = '', $idSite);
 
-            // if the parsed referer is interesting enough, ie. website or search engine 
+            // if the parsed referer is interesting enough, ie. website or search engine
             if (in_array($referrer['referer_type'], array(Common::REFERER_TYPE_SEARCH_ENGINE, Common::REFERER_TYPE_WEBSITE))) {
                 $type = $referrer['referer_type'];
                 $name = $referrer['referer_name'];
@@ -363,7 +371,7 @@ class Piwik_Tracker_GoalManager
             $goal['idgoal'] = self::IDGOAL_ORDER;
             $goal['idorder'] = $this->orderId;
             $goal['buster'] = $orderIdNumeric;
-            $goal['revenue_subtotal'] = $this->getRevenue( $this->request->getParam('ec_st'));
+            $goal['revenue_subtotal'] = $this->getRevenue($this->request->getParam('ec_st'));
             $goal['revenue_tax'] = $this->getRevenue($this->request->getParam('ec_tx'));
             $goal['revenue_shipping'] = $this->getRevenue($this->request->getParam('ec_sh'));
             $goal['revenue_discount'] = $this->getRevenue($this->request->getParam('ec_dt'));
@@ -375,7 +383,7 @@ class Piwik_Tracker_GoalManager
             $goal['idgoal'] = self::IDGOAL_CART;
             $debugMessage = 'The conversion is an Ecommerce Cart Update';
         }
-        $goal['revenue'] = $this->getRevenue($this->request->getGoalRevenue( $defaultRevenue = 0));
+        $goal['revenue'] = $this->getRevenue($this->request->getGoalRevenue($defaultRevenue = 0));
 
         Common::printDebug($debugMessage . ':' . var_export($goal, true));
 
@@ -590,12 +598,12 @@ class Piwik_Tracker_GoalManager
         foreach ($cleanedItems as $item) {
             $actionsToLookup = array();
             list($sku, $name, $category, $price, $quantity) = $item;
-            $actionsToLookup[] = array(trim($sku), Piwik_Tracker_Action::TYPE_ECOMMERCE_ITEM_SKU);
-            $actionsToLookup[] = array(trim($name), Piwik_Tracker_Action::TYPE_ECOMMERCE_ITEM_NAME);
+            $actionsToLookup[] = array(trim($sku), Action::TYPE_ECOMMERCE_ITEM_SKU);
+            $actionsToLookup[] = array(trim($name), Action::TYPE_ECOMMERCE_ITEM_NAME);
 
             // Only one category
             if (!is_array($category)) {
-                $actionsToLookup[] = array(trim($category), Piwik_Tracker_Action::TYPE_ECOMMERCE_ITEM_CATEGORY);
+                $actionsToLookup[] = array(trim($category), Action::TYPE_ECOMMERCE_ITEM_CATEGORY);
             } // Multiple categories
             else {
                 $countCategories = 0;
@@ -608,17 +616,17 @@ class Piwik_Tracker_GoalManager
                     if ($countCategories > self::MAXIMUM_PRODUCT_CATEGORIES) {
                         break;
                     }
-                    $actionsToLookup[] = array($productCategory, Piwik_Tracker_Action::TYPE_ECOMMERCE_ITEM_CATEGORY);
+                    $actionsToLookup[] = array($productCategory, Action::TYPE_ECOMMERCE_ITEM_CATEGORY);
                 }
             }
             // Ensure that each row has the same number of columns, fill in the blanks
             for ($i = count($actionsToLookup); $i < $columnsInEachRow; $i++) {
-                $actionsToLookup[] = array(false, Piwik_Tracker_Action::TYPE_ECOMMERCE_ITEM_CATEGORY);
+                $actionsToLookup[] = array(false, Action::TYPE_ECOMMERCE_ITEM_CATEGORY);
             }
             $actionsToLookupAllItems = array_merge($actionsToLookupAllItems, $actionsToLookup);
         }
 
-        $actionsLookedUp = Piwik_Tracker_Action::loadActionId($actionsToLookupAllItems);
+        $actionsLookedUp = Action::loadActionId($actionsToLookupAllItems);
 
         // Replace SKU, name & category by their ID action
         foreach ($cleanedItems as $index => &$item) {
@@ -640,8 +648,8 @@ class Piwik_Tracker_GoalManager
      * Updates the cart items in the DB
      * that have been modified since the last cart update
      *
-     * @param array  $goal
-     * @param array  $itemsToUpdate
+     * @param array $goal
+     * @param array $itemsToUpdate
      *
      * @return void
      */
@@ -664,7 +672,7 @@ class Piwik_Tracker_GoalManager
             $sql = 'UPDATE ' . Common::prefixTable('log_conversion_item') . "
 					SET " . implode($updateParts, ', ') . "
 						WHERE idvisit = ?
-							AND idorder = ? 
+							AND idorder = ?
 							AND idaction_sku = ?";
             $sqlBind[] = $newRow['idvisit'];
             $sqlBind[] = $item['idorder_original_value'];
@@ -691,8 +699,8 @@ class Piwik_Tracker_GoalManager
         Common::printDebug($itemsToInsert);
 
         $sql = "INSERT INTO " . Common::prefixTable('log_conversion_item') . "
-					(idaction_sku, idaction_name, idaction_category, idaction_category2, idaction_category3, idaction_category4, idaction_category5, price, quantity, deleted, 
-					idorder, idsite, idvisitor, server_time, idvisit) 
+					(idaction_sku, idaction_name, idaction_category, idaction_category2, idaction_category3, idaction_category4, idaction_category5, price, quantity, deleted,
+					idorder, idsite, idvisitor, server_time, idvisit)
 					VALUES ";
         $i = 0;
         $bind = array();
@@ -736,7 +744,7 @@ class Piwik_Tracker_GoalManager
      * Records a standard non-Ecommerce goal in the DB (URL/Title matching),
      * linking the conversion to the action that triggered it
      * @param $goal
-     * @param Piwik_Tracker_Action $action
+     * @param Action $action
      * @param $visitorInformation
      */
     protected function recordStandardGoals($goal, $action, $visitorInformation)
diff --git a/core/Tracker/IgnoreCookie.php b/core/Tracker/IgnoreCookie.php
index 38f1b96f664b73341386def9b40dbfea580baa0e..6fcbfcf7965d27a4f5cc1d67e1c3ff0e7f8060ec 100644
--- a/core/Tracker/IgnoreCookie.php
+++ b/core/Tracker/IgnoreCookie.php
@@ -8,6 +8,8 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Tracker;
+
 use Piwik\Config;
 use Piwik\Cookie;
 
@@ -17,7 +19,7 @@ use Piwik\Cookie;
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_IgnoreCookie
+class IgnoreCookie
 {
     /**
      * Get tracking cookie
diff --git a/core/Tracker/Referer.php b/core/Tracker/Referrer.php
similarity index 97%
rename from core/Tracker/Referer.php
rename to core/Tracker/Referrer.php
index 5b9765eceab7856ea8a6f91b184e4311f86857b9..c288e0fbeb6469b0c182fd8905e6d66ecf27b1e1 100644
--- a/core/Tracker/Referer.php
+++ b/core/Tracker/Referrer.php
@@ -8,13 +8,16 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Tracker;
+
 use Piwik\Common;
+use Piwik\Tracker\Action;
 
 /**
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_Referer
+class Referrer
 {
     // @see detect*() referer methods
     protected $typeRefererAnalyzed;
@@ -29,7 +32,6 @@ class Piwik_Tracker_Referer
     // Used to prefix when a adsense referer is detected
     const LABEL_PREFIX_ADSENSE_KEYWORD = '(adsense) ';
 
-
     /**
      * Returns an array containing the following information:
      * - referer_type
@@ -71,7 +73,7 @@ class Piwik_Tracker_Referer
             $refererUrl = '';
         }
 
-        $currentUrl = Piwik_Tracker_Action::cleanupUrl($currentUrl);
+        $currentUrl = Action::cleanupUrl($currentUrl);
 
         $this->refererUrl = $refererUrl;
         $this->refererUrlParse = @parse_url($this->refererUrl);
@@ -162,13 +164,13 @@ class Piwik_Tracker_Referer
 
             // if the campaign keyword is empty, try to get a keyword from the referrer URL
             if (empty($this->keywordRefererAnalyzed)) {
-                // Set the Campaign keyword to the keyword found in the Referer URL if any
+                // Set the Campaign keyword to the keyword found in the Referrer URL if any
                 $referrerUrlInfo = Common::extractSearchEngineInformationFromUrl($this->refererUrl);
                 if (!empty($referrerUrlInfo['keywords'])) {
                     $this->keywordRefererAnalyzed = $referrerUrlInfo['keywords'];
                 }
 
-                // Set the keyword, to the hostname found, in a Adsense Referer URL '&url=' parameter
+                // Set the keyword, to the hostname found, in a Adsense Referrer URL '&url=' parameter
                 if (empty($this->keywordRefererAnalyzed)
                     && !empty($this->refererUrlParse['query'])
                     && !empty($this->refererHost)
@@ -245,7 +247,7 @@ class Piwik_Tracker_Referer
                     return true;
                 }
             }
-            if (Piwik_Tracker_Visit::isHostKnownAliasHost($this->refererHost, $this->idsite)) {
+            if (Visit::isHostKnownAliasHost($this->refererHost, $this->idsite)) {
                 $this->typeRefererAnalyzed = Common::REFERER_TYPE_DIRECT_ENTRY;
                 return true;
             }
diff --git a/core/Tracker/Request.php b/core/Tracker/Request.php
index bf878bb1068a18e2dda6390b952b64906c6c8433..668d23fa1e6efaac0ffb2096885d7bb56eef9521 100644
--- a/core/Tracker/Request.php
+++ b/core/Tracker/Request.php
@@ -1,9 +1,14 @@
 <?php
+namespace Piwik\Tracker;
+
+use Exception;
 use Piwik\Config;
 use Piwik\Common;
 use Piwik\Cookie;
 use Piwik\IP;
 use Piwik\Tracker;
+use Piwik\Tracker\Cache;
+use Piwik_UserCountry_LocationProvider;
 
 /**
  * Piwik - Open source web analytics
@@ -15,7 +20,7 @@ use Piwik\Tracker;
  * @package Piwik
  */
 
-class Piwik_Tracker_Request
+class Request
 {
     /**
      * @var array
@@ -24,7 +29,7 @@ class Piwik_Tracker_Request
 
     public function __construct($params, $tokenAuth = false)
     {
-        if(!is_array($params)) {
+        if (!is_array($params)) {
             $params = array();
         }
         $this->params = $params;
@@ -32,13 +37,13 @@ class Piwik_Tracker_Request
         $this->enforcedIp = false;
 
         // When the 'url' and referer url parameter are not given, we might be in the 'Simple Image Tracker' mode.
-        // The URL can default to the Referer, which will be in this case
+        // The URL can default to the Referrer, which will be in this case
         // the URL of the page containing the Simple Image beacon
         if (empty($this->params['urlref'])
             && empty($this->params['url'])
         ) {
             $url = @$_SERVER['HTTP_REFERER'];
-            if(!empty($url)) {
+            if (!empty($url)) {
                 $this->params['url'] = $url;
             }
         }
@@ -66,7 +71,7 @@ class Piwik_Tracker_Request
             try {
                 $idSite = $this->getIdSite();
                 $this->isAuthenticated = $this->authenticateSuperUserOrAdmin($tokenAuth, $idSite);
-            } catch(Exception $e) {
+            } catch (Exception $e) {
                 $this->isAuthenticated = false;
             }
             if (!$this->isAuthenticated) {
@@ -94,7 +99,7 @@ class Piwik_Tracker_Request
         if (!empty($idSite)
             && $idSite > 0
         ) {
-            $website = Piwik_Tracker_Cache::getCacheWebsiteAttributes($idSite);
+            $website = Cache::getCacheWebsiteAttributes($idSite);
             $adminTokenAuth = $website['admin_token_auth'];
             if (in_array($tokenAuth, $adminTokenAuth)) {
                 return true;
diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php
index 97e398b0f2bf6f2da6e9c3a865f46e44b3611bf3..3590b4c3194c14b6de9f6e3c696d834944b2595c 100644
--- a/core/Tracker/Visit.php
+++ b/core/Tracker/Visit.php
@@ -8,21 +8,33 @@
  * @category Piwik
  * @package Piwik
  */
-use Piwik\Config;
-use Piwik\Common;
-use Piwik\IP;
-use Piwik\Tracker;
 
+namespace Piwik\Tracker;
 /**
  * @package Piwik
  * @subpackage Tracker
  */
-interface Piwik_Tracker_Visit_Interface
+interface VisitInterface
 {
-    function setRequest(Piwik_Tracker_Request $request);
+    function setRequest(Request $request);
+
     function handle();
 }
 
+use Piwik\Config;
+use Piwik\Common;
+use Piwik\IP;
+use Piwik\Tracker;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Cache;
+use Piwik\Tracker\GoalManager;
+use Piwik\Tracker\Request;
+use Piwik\Tracker\Referrer;
+use Exception;
+use Piwik\Tracker\VisitExcluded;
+use Piwik_UserCountry_LocationProvider;
+use UserAgentParser;
+
 /**
  * Class used to handle a Visit.
  * A visit is either NEW or KNOWN.
@@ -37,17 +49,17 @@ interface Piwik_Tracker_Visit_Interface
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
+class Visit implements Tracker\VisitInterface
 {
     const UNKNOWN_CODE = 'xx';
 
     /**
-     * @var Piwik_Tracker_GoalManager
+     * @var GoalManager
      */
     protected $goalManager;
 
     /**
-     * @var  Piwik_Tracker_Request
+     * @var  Request
      */
     protected $request;
 
@@ -56,7 +68,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
     protected $visitorCustomVariables = array();
     protected $visitorKnown;
 
-    function setRequest(Piwik_Tracker_Request $request)
+    function setRequest(Request $request)
     {
         $this->request = $request;
     }
@@ -87,7 +99,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
         $ip = $this->request->getIp();
         $this->visitorInfo['location_ip'] = $ip;
 
-        $excluded = new Piwik_Tracker_VisitExcluded($this->request, $ip);
+        $excluded = new VisitExcluded($this->request, $ip);
         if ($excluded->isExcluded()) {
             return;
         }
@@ -101,7 +113,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
             Common::printDebug($this->visitorCustomVariables);
         }
 
-        $this->goalManager = new Piwik_Tracker_GoalManager($this->request);
+        $this->goalManager = new GoalManager($this->request);
 
         $visitIsConverted = false;
         $idActionUrl = $idActionName = $actionType = false;
@@ -134,10 +146,10 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
                 Common::printDebug("INFO: The outlink URL host is one of the known host for this website. ");
             }
             if (isset($GLOBALS['PIWIK_TRACKER_DEBUG']) && $GLOBALS['PIWIK_TRACKER_DEBUG']) {
-                $type = Piwik_Tracker_Action::getActionTypeName($action->getActionType());
+                $type = Action::getActionTypeName($action->getActionType());
                 Common::printDebug("Action is a $type,
-						Action name =  " . $action->getActionName() . ",
-						Action URL = " . $action->getActionUrl());
+                    Action name =  " . $action->getActionName() . ",
+                    Action URL = " . $action->getActionUrl());
             }
             $someGoalsConverted = $this->goalManager->detectGoalsMatchingUrl($this->request->getIdSite(), $action);
             $visitIsConverted = $someGoalsConverted;
@@ -181,7 +193,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
                         $this->visitorInfo['time_spent_ref_action']
                     );
                 }
-            } catch (Piwik_Tracker_Visit_VisitorNotFoundInDatabase $e) {
+            } catch (VisitorNotFoundInDatabase $e) {
 
                 // There is an edge case when:
                 // - two manual goal conversions happen in the same second
@@ -247,7 +259,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
      * @param $idActionName
      * @param $actionType
      * @param $visitIsConverted
-     * @throws Piwik_Tracker_Visit_VisitorNotFoundInDatabase
+     * @throws VisitorNotFoundInDatabase
      */
     protected function handleKnownVisit($idActionUrl, $idActionName, $actionType, $visitIsConverted)
     {
@@ -263,7 +275,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
             $valuesToUpdate['visit_exit_idaction_url'] = $idActionUrl;
             $incrementActions = true;
         }
-        if ($actionType == Piwik_Tracker_Action::TYPE_SITE_SEARCH) {
+        if ($actionType == Action::TYPE_SITE_SEARCH) {
             $sqlActionUpdate .= "visit_total_searches = visit_total_searches + 1, ";
             $incrementActions = true;
         }
@@ -321,9 +333,9 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
             $sqlBind[] = $value;
         }
         $sqlQuery = "UPDATE " . Common::prefixTable('log_visit') . "
-						SET $sqlActionUpdate " . implode($updateParts, ', ') . "
-						WHERE idsite = ?
-							AND idvisit = ?";
+                    SET $sqlActionUpdate " . implode($updateParts, ', ') . "
+                    WHERE idsite = ?
+                        AND idvisit = ?";
         array_push($sqlBind, $this->request->getIdSite(), (int)$this->visitorInfo['idvisit']);
 
         $result = Tracker::getDatabase()->query($sqlQuery, $sqlBind);
@@ -340,7 +352,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
             Common::printDebug("Visitor with this idvisit wasn't found in the DB.");
             Common::printDebug("$sqlQuery --- ");
             Common::printDebug($sqlBind);
-            throw new Piwik_Tracker_Visit_VisitorNotFoundInDatabase(
+            throw new VisitorNotFoundInDatabase(
                 "The visitor with idvisitor=" . bin2hex($this->visitorInfo['idvisitor']) . " and idvisit=" . $this->visitorInfo['idvisit']
                     . " wasn't found in the DB, we fallback to a new visitor");
         }
@@ -384,7 +396,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
         $daysSinceLastOrder = $this->request->getDaysSinceLastOrder();
         $isReturningCustomer = ($daysSinceLastOrder !== false);
 
-        if($daysSinceLastOrder === false) {
+        if ($daysSinceLastOrder === false) {
             $daysSinceLastOrder = 0;
         }
 
@@ -392,7 +404,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
         $userInfo = $this->getUserSettingsInformation();
 
         // Referrer data
-        $referrer = new Piwik_Tracker_Referer();
+        $referrer = new Referrer();
         $refererUrl = $this->request->getParam('urlref');
         $currentUrl = $this->request->getParam('url');
         $refererInfo = $referrer->getRefererInformation($refererUrl, $currentUrl, $this->request->getIdSite());
@@ -423,12 +435,12 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
             'visit_exit_idaction_url'   => (int)$idActionUrl,
             'visit_exit_idaction_name'  => (int)$idActionName,
             'visit_total_actions'       => in_array($actionType,
-                array(Piwik_Tracker_Action::TYPE_ACTION_URL,
-                      Piwik_Tracker_Action::TYPE_DOWNLOAD,
-                      Piwik_Tracker_Action::TYPE_OUTLINK,
-                      Piwik_Tracker_Action::TYPE_SITE_SEARCH))
+                array(Action::TYPE_ACTION_URL,
+                      Action::TYPE_DOWNLOAD,
+                      Action::TYPE_OUTLINK,
+                      Action::TYPE_SITE_SEARCH))
                 ? 1 : 0, // if visit starts with something else (e.g. ecommerce order), don't record as an action
-            'visit_total_searches'      => $actionType == Piwik_Tracker_Action::TYPE_SITE_SEARCH ? 1 : 0,
+            'visit_total_searches'      => $actionType == Action::TYPE_SITE_SEARCH ? 1 : 0,
             'visit_total_time'          => self::cleanupVisitTotalTime($defaultTimeOnePageVisit),
             'visit_goal_converted'      => $visitIsConverted ? 1 : 0,
             'visit_goal_buyer'          => $this->goalManager->getBuyerType(),
@@ -478,7 +490,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
     static private function cleanupVisitTotalTime($t)
     {
         $t = (int)$t;
-        if($t < 0) {
+        if ($t < 0) {
             $t = 0;
         }
         $smallintMysqlLimit = 65534;
@@ -654,37 +666,37 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
         // No custom var were found in the request, so let's copy the previous one in a potential conversion later
         if (!$this->visitorCustomVariables) {
             $selectCustomVariables = ',
-				custom_var_k1, custom_var_v1,
-				custom_var_k2, custom_var_v2,
-				custom_var_k3, custom_var_v3,
-				custom_var_k4, custom_var_v4,
-				custom_var_k5, custom_var_v5';
+            custom_var_k1, custom_var_v1,
+            custom_var_k2, custom_var_v2,
+            custom_var_k3, custom_var_v3,
+            custom_var_k4, custom_var_v4,
+            custom_var_k5, custom_var_v5';
         }
 
         $select = "SELECT  	idvisitor,
-							visit_last_action_time,
-							visit_first_action_time,
-							idvisit,
-							visit_exit_idaction_url,
-							visit_exit_idaction_name,
-							visitor_returning,
-							visitor_days_since_first,
-							visitor_days_since_order,
-							location_country,
-							location_region,
-							location_city,
-							location_latitude,
-							location_longitude,
-							referer_name,
-							referer_keyword,
-							referer_type,
-							visitor_count_visits,
-							visit_goal_buyer
-							$selectCustomVariables 
-		";
+                        visit_last_action_time,
+                        visit_first_action_time,
+                        idvisit,
+                        visit_exit_idaction_url,
+                        visit_exit_idaction_name,
+                        visitor_returning,
+                        visitor_days_since_first,
+                        visitor_days_since_order,
+                        location_country,
+                        location_region,
+                        location_city,
+                        location_latitude,
+                        location_longitude,
+                        referer_name,
+                        referer_keyword,
+                        referer_type,
+                        visitor_count_visits,
+                        visit_goal_buyer
+                        $selectCustomVariables
+    ";
         $from = "FROM " . Common::prefixTable('log_visit');
 
-        list($timeLookBack,$timeLookAhead) = $this->getWindowLookupThisVisit();
+        list($timeLookBack, $timeLookAhead) = $this->getWindowLookupThisVisit();
 
         $shouldMatchOneFieldOnly = $this->shouldLookupOneVisitorFieldOnly($isVisitorIdToLookup);
 
@@ -713,12 +725,11 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
             }
 
             $sql = "$select
-				$from
-				WHERE " . $whereCommon . "
-				ORDER BY visit_last_action_time DESC
-				LIMIT 1";
-        }
-        // We have a config_id AND a visitor_id. We match on either of these.
+            $from
+            WHERE " . $whereCommon . "
+            ORDER BY visit_last_action_time DESC
+            LIMIT 1";
+        } // We have a config_id AND a visitor_id. We match on either of these.
         // 		Why do we also match on config_id?
         //		we do not trust the visitor ID only. Indeed, some browsers, or browser addons,
         // 		cause the visitor id from the 1st party cookie to be different on each page view!
@@ -730,12 +741,12 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
             $where = ' AND config_id = ?';
             $bindSql[] = $configId;
             $sqlConfigId = "$select ,
-					0 as priority
-					$from
-					WHERE $whereCommon $where
-					ORDER BY visit_last_action_time DESC
-					LIMIT 1
-			";
+                0 as priority
+                $from
+                WHERE $whereCommon $where
+                ORDER BY visit_last_action_time DESC
+                LIMIT 1
+        ";
 
             // will use INDEX index_idsite_idvisitor (idsite, idvisitor)
             $bindSql[] = $timeLookBack;
@@ -744,29 +755,28 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
             $where = ' AND idvisitor = ?';
             $bindSql[] = $this->visitorInfo['idvisitor'];
             $sqlVisitorId = "$select ,
-					1 as priority
-					$from
-					WHERE $whereCommon $where
-					ORDER BY visit_last_action_time DESC
-					LIMIT 1
-			";
+                1 as priority
+                $from
+                WHERE $whereCommon $where
+                ORDER BY visit_last_action_time DESC
+                LIMIT 1
+        ";
 
             // We join both queries and favor the one matching the visitor_id if it did match
             $sql = " ( $sqlConfigId )
-					UNION 
-					( $sqlVisitorId ) 
-					ORDER BY priority DESC
-					LIMIT 1";
+                UNION
+                ( $sqlVisitorId )
+                ORDER BY priority DESC
+                LIMIT 1";
         }
 
-
         $visitRow = Tracker::getDatabase()->fetch($sql, $bindSql);
 
         $isNewVisitForced = $this->request->getParam('new_visit');
         $isNewVisitForced = !empty($isNewVisitForced);
         $newVisitEnforcedAPI = $isNewVisitForced
-                                && ($this->request->isAuthenticated()
-                                    || !Config::getInstance()->Tracker['new_visit_api_requires_admin']);
+            && ($this->request->isAuthenticated()
+                || !Config::getInstance()->Tracker['new_visit_api_requires_admin']);
         $enforceNewVisit = $newVisitEnforcedAPI || Config::getInstance()->Debug['tracker_always_new_visitor'];
 
         if (!$enforceNewVisit
@@ -793,7 +803,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
             $this->visitorInfo['location_latitude'] = $visitRow['location_latitude'];
             $this->visitorInfo['location_longitude'] = $visitRow['location_longitude'];
 
-            // Referer information will be potentially used for Goal Conversion attribution
+            // Referrer information will be potentially used for Goal Conversion attribution
             $this->visitorInfo['referer_name'] = $visitRow['referer_name'];
             $this->visitorInfo['referer_keyword'] = $visitRow['referer_keyword'];
             $this->visitorInfo['referer_type'] = $visitRow['referer_type'];
@@ -816,11 +826,11 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
 
             $this->visitorKnown = true;
             Common::printDebug("The visitor is known (idvisitor = " . bin2hex($this->visitorInfo['idvisitor']) . ",
-						config_id = " . bin2hex($configId) . ",
-						idvisit = {$this->visitorInfo['idvisit']},
-						last action = " . date("r", $this->visitorInfo['visit_last_action_time']) . ",
-						first action = " . date("r", $this->visitorInfo['visit_first_action_time']) . ",
-						visit_goal_buyer' = " . $this->visitorInfo['visit_goal_buyer'] . ")");
+                    config_id = " . bin2hex($configId) . ",
+                    idvisit = {$this->visitorInfo['idvisit']},
+                    last action = " . date("r", $this->visitorInfo['visit_last_action_time']) . ",
+                    first action = " . date("r", $this->visitorInfo['visit_first_action_time']) . ",
+                    visit_goal_buyer' = " . $this->visitorInfo['visit_goal_buyer'] . ")");
         } else {
             Common::printDebug("The visitor was not matched with an existing visitor...");
         }
@@ -855,7 +865,6 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
         return array($timeLookBack, $timeLookAhead);
     }
 
-
     protected function shouldLookupOneVisitorFieldOnly($isVisitorIdToLookup)
     {
         // This setting would be enabled for Intranet websites, to ensure that visitors using all the same computer config, same IP
@@ -963,7 +972,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
      * Plugins can return an override Action that for example, does not record the action in the DB
      *
      * @throws Exception
-     * @return Piwik_Tracker_Action child or fake but with same public interface
+     * @return Action child or fake but with same public interface
      */
     protected function newAction()
     {
@@ -971,9 +980,9 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
         Piwik_PostEvent('Tracker.newAction', array(&$action));
 
         if (is_null($action)) {
-            $action = new Piwik_Tracker_Action($this->request);
-        } elseif (!($action instanceof Piwik_Tracker_Action_Interface)) {
-            throw new Exception("The Action object set in the plugin must implement the interface Piwik_Tracker_Action_Interface");
+            $action = new Action($this->request);
+        } elseif (!($action instanceof ActionInterface)) {
+            throw new Exception("The Action object set in the plugin must implement the interface ActionInterface");
         }
         return $action;
     }
@@ -981,12 +990,12 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
     /**
      * Detect whether action is an outlink given host aliases
      *
-     * @param Piwik_Tracker_Action_Interface $action
+     * @param ActionInterface $action
      * @return bool true if the outlink the visitor clicked on points to one of the known hosts for this website
      */
-    protected function detectActionIsOutlinkOnAliasHost(Piwik_Tracker_Action_Interface $action)
+    protected function detectActionIsOutlinkOnAliasHost(ActionInterface $action)
     {
-        if ($action->getActionType() != Piwik_Tracker_Action_Interface::TYPE_OUTLINK) {
+        if ($action->getActionType() != ActionInterface::TYPE_OUTLINK) {
             return false;
         }
         $decodedActionUrl = $action->getActionUrl();
@@ -994,7 +1003,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
         if (!isset($actionUrlParsed['host'])) {
             return false;
         }
-        return Piwik_Tracker_Visit::isHostKnownAliasHost($actionUrlParsed['host'], $this->request->getIdSite());
+        return Tracker\Visit::isHostKnownAliasHost($actionUrlParsed['host'], $this->request->getIdSite());
     }
 
     /**
@@ -1040,7 +1049,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
     // is the referer host any of the registered URLs for this website?
     static public function isHostKnownAliasHost($urlHost, $idSite)
     {
-        $websiteData = Piwik_Tracker_Cache::getCacheWebsiteAttributes($idSite);
+        $websiteData = Cache::getCacheWebsiteAttributes($idSite);
         if (isset($websiteData['hosts'])) {
             $canonicalHosts = array();
             foreach ($websiteData['hosts'] as $host) {
@@ -1055,11 +1064,12 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
     }
 }
 
+
 /**
  * @package Piwik
  * @subpackage Tracker
  */
-class Piwik_Tracker_Visit_VisitorNotFoundInDatabase extends Exception
+class VisitorNotFoundInDatabase extends Exception
 {
 }
 
diff --git a/core/Tracker/VisitExcluded.php b/core/Tracker/VisitExcluded.php
index 70d8d23e0b07aa13eaf47666545d53aa87b04f77..c7a43ddda6f4f7bc0b2099850edf61ab5a3fc413 100644
--- a/core/Tracker/VisitExcluded.php
+++ b/core/Tracker/VisitExcluded.php
@@ -8,24 +8,29 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Tracker;
+
 use Piwik\Common;
 use Piwik\IP;
+use Piwik\Tracker\Cache;
+use Piwik\Tracker\IgnoreCookie;
+use Piwik\Tracker\Request;
 
 /**
  * This class contains the logic to exclude some visitors from being tracked as per user settings
  */
-class Piwik_Tracker_VisitExcluded
+class VisitExcluded
 {
-    public function __construct(Piwik_Tracker_Request $request, $ip = false, $userAgent = false)
+    public function __construct(Request $request, $ip = false, $userAgent = false)
     {
         if ($ip === false) {
             $ip = $request->getIp();
         }
-        
+
         if ($userAgent === false) {
             $userAgent = $request->getUserAgent();
         }
-        
+
         $this->request = $request;
         $this->idSite = $request->getIdSite();
         $this->userAgent = $userAgent;
@@ -167,7 +172,7 @@ class Piwik_Tracker_VisitExcluded
      */
     protected function isIgnoreCookieFound()
     {
-        if (Piwik_Tracker_IgnoreCookie::isIgnoreCookieFound()) {
+        if (IgnoreCookie::isIgnoreCookieFound()) {
             Common::printDebug('Piwik ignore cookie was found, visit not tracked.');
             return true;
         }
@@ -181,7 +186,7 @@ class Piwik_Tracker_VisitExcluded
      */
     protected function isVisitorIpExcluded()
     {
-        $websiteAttributes = Piwik_Tracker_Cache::getCacheWebsiteAttributes($this->idSite);
+        $websiteAttributes = Cache::getCacheWebsiteAttributes($this->idSite);
         if (!empty($websiteAttributes['excluded_ips'])) {
             if (IP::isIpInRange($this->ip, $websiteAttributes['excluded_ips'])) {
                 Common::printDebug('Visitor IP ' . IP::N2P($this->ip) . ' is excluded from being tracked');
@@ -202,7 +207,7 @@ class Piwik_Tracker_VisitExcluded
      */
     protected function isUserAgentExcluded()
     {
-        $websiteAttributes = Piwik_Tracker_Cache::getCacheWebsiteAttributes($this->idSite);
+        $websiteAttributes = Cache::getCacheWebsiteAttributes($this->idSite);
         if (!empty($websiteAttributes['excluded_user_agents'])) {
             foreach ($websiteAttributes['excluded_user_agents'] as $excludedUserAgent) {
                 // if the excluded user agent string part is in this visit's user agent, this visit should be excluded
diff --git a/core/Unzip.php b/core/Unzip.php
index 003b37a9e01e6c62fa581b8eda04f6a1d9096434..705eee93a10c98eb08cbf1ddf8a15045f1adf906 100644
--- a/core/Unzip.php
+++ b/core/Unzip.php
@@ -11,11 +11,11 @@
 
 namespace Piwik;
 
-use Piwik_Unzip_Gzip;
-use Piwik_Unzip_Interface;
-use Piwik_Unzip_PclZip;
-use Piwik_Unzip_Tar;
-use Piwik_Unzip_ZipArchive;
+use Piwik\Unzip\Gzip;
+use Piwik\Unzip\UncompressInterface;
+use Piwik\Unzip\PclZip;
+use Piwik\Unzip\Tar;
+use Piwik\Unzip\ZipArchive;
 
 /**
  * Unzip wrapper around ZipArchive and PclZip
@@ -29,28 +29,28 @@ class Unzip
      *
      * @param string $name      Name of unarchiver
      * @param string $filename  Name of .zip archive
-     * @return Piwik_Unzip_Interface
+     * @return \Piwik\Unzip\UncompressInterface
      */
     static public function factory($name, $filename)
     {
         switch ($name) {
             case 'ZipArchive':
                 if (class_exists('ZipArchive', false))
-                    return new Piwik_Unzip_ZipArchive($filename);
+                    return new ZipArchive($filename);
                 break;
             case 'tar.gz':
-                return new Piwik_Unzip_Tar($filename, 'gz');
+                return new Tar($filename, 'gz');
             case 'tar.bz2':
-                return new Piwik_Unzip_Tar($filename, 'bz2');
+                return new Tar($filename, 'bz2');
             case 'gz':
                 if (function_exists('gzopen'))
-                    return new Piwik_Unzip_Gzip($filename);
+                    return new Gzip($filename);
                 break;
             case 'PclZip':
             default:
-                return new Piwik_Unzip_PclZip($filename);
+                return new PclZip($filename);
         }
 
-        return new Piwik_Unzip_PclZip($filename);
+        return new PclZip($filename);
     }
 }
diff --git a/core/Unzip/Gzip.php b/core/Unzip/Gzip.php
index 86d7bace14b9032645c84fc2d229a1d73f44756c..0e0e80d01b0ce3a2a4e3306e1fb791b5cec09f8b 100755
--- a/core/Unzip/Gzip.php
+++ b/core/Unzip/Gzip.php
@@ -9,13 +9,17 @@
  * @package Piwik
  */
 
+namespace Piwik\Unzip;
+
+use Piwik\Unzip\UncompressInterface;
+
 /**
  * Unzip implementation for .gz files.
  *
  * @package Piwik
  * @subpackage Unzip
  */
-class Piwik_Unzip_Gzip implements Piwik_Unzip_Interface
+class Gzip implements UncompressInterface
 {
     /**
      * Name of .gz file.
diff --git a/core/Unzip/PclZip.php b/core/Unzip/PclZip.php
index 043f77925cb2ca161e2089d6da94116ec6abb4f7..ad92555ab2ebd341c0b3efa1e071a7f15c4a1d2f 100644
--- a/core/Unzip/PclZip.php
+++ b/core/Unzip/PclZip.php
@@ -8,6 +8,9 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Unzip;
+
+use Piwik\Unzip\UncompressInterface;
 
 /**
  * @see libs/PclZip
@@ -20,7 +23,7 @@ require_once PIWIK_INCLUDE_PATH . '/libs/PclZip/pclzip.lib.php';
  * @package Piwik
  * @subpackage Unzip
  */
-class Piwik_Unzip_PclZip implements Piwik_Unzip_Interface
+class PclZip implements UncompressInterface
 {
     /**
      * @var PclZip
@@ -38,7 +41,7 @@ class Piwik_Unzip_PclZip implements Piwik_Unzip_Interface
      */
     public function __construct($filename)
     {
-        $this->pclzip = new PclZip($filename);
+        $this->pclzip = new \PclZip($filename);
         $this->filename = $filename;
     }
 
diff --git a/core/Unzip/Tar.php b/core/Unzip/Tar.php
index e243cbeffb38b52a181668c4a3203a755d569684..3e1bac63648d18a8ecb8fd33bd4c98eae59a33b7 100755
--- a/core/Unzip/Tar.php
+++ b/core/Unzip/Tar.php
@@ -8,6 +8,10 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Unzip;
+
+use Archive_Tar;
+use Piwik\Unzip\UncompressInterface;
 
 /**
  * @see libs/Archive_Tar
@@ -20,7 +24,7 @@ require_once PIWIK_INCLUDE_PATH . '/libs/Archive_Tar/Tar.php';
  * @package Piwik
  * @subpackage Unzip
  */
-class Piwik_Unzip_Tar implements Piwik_Unzip_Interface
+class Tar implements UncompressInterface
 {
     /**
      * Archive_Tar instance.
diff --git a/core/Unzip/Interface.php b/core/Unzip/UncompressInterface.php
similarity index 93%
rename from core/Unzip/Interface.php
rename to core/Unzip/UncompressInterface.php
index bd20ddec0b4aeaae1d3e1c3999a07e53b7642dcb..36a95143d2968e93d4b14af0e77f306425c29c8b 100644
--- a/core/Unzip/Interface.php
+++ b/core/Unzip/UncompressInterface.php
@@ -9,13 +9,15 @@
  * @package Piwik
  */
 
+namespace Piwik\Unzip;
+
 /**
  * Unzip interface
  *
  * @package Piwik
  * @subpackage Unzip
  */
-interface Piwik_Unzip_Interface
+interface UncompressInterface
 {
     /**
      * Constructor
diff --git a/core/Unzip/ZipArchive.php b/core/Unzip/ZipArchive.php
index fdb1aa8cfdba4dbc7e43186c04f06e864d10ba8b..1e95872cb73180bf8642430f6877b3f56dd5cc3b 100644
--- a/core/Unzip/ZipArchive.php
+++ b/core/Unzip/ZipArchive.php
@@ -8,6 +8,10 @@
  * @category Piwik
  * @package Piwik
  */
+namespace Piwik\Unzip;
+
+use Exception;
+use Piwik\Unzip\UncompressInterface;
 
 /**
  * Unzip wrapper around ZipArchive
@@ -15,10 +19,10 @@
  * @package Piwik
  * @subpackage Unzip
  */
-class Piwik_Unzip_ZipArchive implements Piwik_Unzip_Interface
+class ZipArchive implements UncompressInterface
 {
     /**
-     * @var ZipArchive
+     * @var \ZipArchive
      */
     private $ziparchive;
     /**
@@ -35,7 +39,7 @@ class Piwik_Unzip_ZipArchive implements Piwik_Unzip_Interface
     public function __construct($filename)
     {
         $this->filename = $filename;
-        $this->ziparchive = new ZipArchive;
+        $this->ziparchive = new \ZipArchive;
         if ($this->ziparchive->open($filename) !== true) {
             throw new Exception('Error opening ' . $filename);
         }
@@ -97,30 +101,30 @@ class Piwik_Unzip_ZipArchive implements Piwik_Unzip_Interface
     public function errorInfo()
     {
         static $statusStrings = array(
-            ZIPARCHIVE::ER_OK          => 'No error',
-            ZIPARCHIVE::ER_MULTIDISK   => 'Multi-disk zip archives not supported',
-            ZIPARCHIVE::ER_RENAME      => 'Renaming temporary file failed',
-            ZIPARCHIVE::ER_CLOSE       => 'Closing zip archive failed',
-            ZIPARCHIVE::ER_SEEK        => 'Seek error',
-            ZIPARCHIVE::ER_READ        => 'Read error',
-            ZIPARCHIVE::ER_WRITE       => 'Write error',
-            ZIPARCHIVE::ER_CRC         => 'CRC error',
-            ZIPARCHIVE::ER_ZIPCLOSED   => 'Containing zip archive was closed',
-            ZIPARCHIVE::ER_NOENT       => 'No such file',
-            ZIPARCHIVE::ER_EXISTS      => 'File already exists',
-            ZIPARCHIVE::ER_OPEN        => 'Can\'t open file',
-            ZIPARCHIVE::ER_TMPOPEN     => 'Failure to create temporary file',
-            ZIPARCHIVE::ER_ZLIB        => 'Zlib error',
-            ZIPARCHIVE::ER_MEMORY      => 'Malloc failure',
-            ZIPARCHIVE::ER_CHANGED     => 'Entry has been changed',
-            ZIPARCHIVE::ER_COMPNOTSUPP => 'Compression method not supported',
-            ZIPARCHIVE::ER_EOF         => 'Premature EOF',
-            ZIPARCHIVE::ER_INVAL       => 'Invalid argument',
-            ZIPARCHIVE::ER_NOZIP       => 'Not a zip archive',
-            ZIPARCHIVE::ER_INTERNAL    => 'Internal error',
-            ZIPARCHIVE::ER_INCONS      => 'Zip archive inconsistent',
-            ZIPARCHIVE::ER_REMOVE      => 'Can\'t remove file',
-            ZIPARCHIVE::ER_DELETED     => 'Entry has been deleted',
+            \ZIPARCHIVE::ER_OK          => 'No error',
+            \ZIPARCHIVE::ER_MULTIDISK   => 'Multi-disk zip archives not supported',
+            \ZIPARCHIVE::ER_RENAME      => 'Renaming temporary file failed',
+            \ZIPARCHIVE::ER_CLOSE       => 'Closing zip archive failed',
+            \ZIPARCHIVE::ER_SEEK        => 'Seek error',
+            \ZIPARCHIVE::ER_READ        => 'Read error',
+            \ZIPARCHIVE::ER_WRITE       => 'Write error',
+            \ZIPARCHIVE::ER_CRC         => 'CRC error',
+            \ZIPARCHIVE::ER_ZIPCLOSED   => 'Containing zip archive was closed',
+            \ZIPARCHIVE::ER_NOENT       => 'No such file',
+            \ZIPARCHIVE::ER_EXISTS      => 'File already exists',
+            \ZIPARCHIVE::ER_OPEN        => 'Can\'t open file',
+            \ZIPARCHIVE::ER_TMPOPEN     => 'Failure to create temporary file',
+            \ZIPARCHIVE::ER_ZLIB        => 'Zlib error',
+            \ZIPARCHIVE::ER_MEMORY      => 'Malloc failure',
+            \ZIPARCHIVE::ER_CHANGED     => 'Entry has been changed',
+            \ZIPARCHIVE::ER_COMPNOTSUPP => 'Compression method not supported',
+            \ZIPARCHIVE::ER_EOF         => 'Premature EOF',
+            \ZIPARCHIVE::ER_INVAL       => 'Invalid argument',
+            \ZIPARCHIVE::ER_NOZIP       => 'Not a zip archive',
+            \ZIPARCHIVE::ER_INTERNAL    => 'Internal error',
+            \ZIPARCHIVE::ER_INCONS      => 'Zip archive inconsistent',
+            \ZIPARCHIVE::ER_REMOVE      => 'Can\'t remove file',
+            \ZIPARCHIVE::ER_DELETED     => 'Entry has been deleted',
         );
 
         if (isset($statusStrings[$this->ziparchive->status])) {
diff --git a/core/Updates/0.2.34.php b/core/Updates/0.2.34.php
index b49b8cd28c37cfb5a477ec9aaeb46bfdef34ca93..785627f8752fccfa869b8b6aa2fb829599bfdac6 100644
--- a/core/Updates/0.2.34.php
+++ b/core/Updates/0.2.34.php
@@ -9,6 +9,7 @@
  * @package Updates
  */
 use Piwik\Piwik;
+use Piwik\Tracker\Cache;
 use Piwik\Updates;
 
 /**
@@ -21,6 +22,6 @@ class Piwik_Updates_0_2_34 extends Updates
         // force regeneration of cache files following #648
         Piwik::setUserIsSuperUser();
         $allSiteIds = Piwik_SitesManager_API::getInstance()->getAllSitesId();
-        Piwik_Tracker_Cache::regenerateCacheWebsiteAttributes($allSiteIds);
+        Cache::regenerateCacheWebsiteAttributes($allSiteIds);
     }
 }
diff --git a/core/Updates/0.6.2.php b/core/Updates/0.6.2.php
index 38847b6b8bb9f555aea4d060b56a3eafeca959ec..74bbe6b6b620af28f167fb5b127fc56942ecc185 100644
--- a/core/Updates/0.6.2.php
+++ b/core/Updates/0.6.2.php
@@ -9,6 +9,7 @@
  * @package Updates
  */
 use Piwik\Piwik;
+use Piwik\Tracker\Cache;
 use Piwik\Updates;
 
 /**
@@ -39,6 +40,6 @@ class Piwik_Updates_0_6_2 extends Updates
         // force regeneration of cache files
         Piwik::setUserIsSuperUser();
         $allSiteIds = Piwik_SitesManager_API::getInstance()->getAllSitesId();
-        Piwik_Tracker_Cache::regenerateCacheWebsiteAttributes($allSiteIds);
+        Cache::regenerateCacheWebsiteAttributes($allSiteIds);
     }
 }
diff --git a/core/functions.php b/core/functions.php
index ba9caceee84173dcbab285a7f39b44cb2d413b9b..25dfaedf9b571b947b8dc6a9719ed64fec843829 100644
--- a/core/functions.php
+++ b/core/functions.php
@@ -257,7 +257,7 @@ namespace {
     }
 
     // Bridge between pre Piwik2 serialized format and namespaced classes
-    // Do not define these classes in tracker or archive
+    // Do not need to define these classes in tracker or archive
     if(empty($GLOBALS['PIWIK_TRACKER_MODE'])
         && !defined('PIWIK_MODE_ARCHIVE')) {
         class Piwik_DataTable_Row_DataTableSummary extends \Piwik\DataTable\Row\DataTableSummaryRow {
diff --git a/libs/PiwikTracker/PiwikTracker.php b/libs/PiwikTracker/PiwikTracker.php
index 4402d9138e00c728c73ed09a62b97ae3d192838b..78874d9996493c7f18259884403fec1ba20e7b28 100644
--- a/libs/PiwikTracker/PiwikTracker.php
+++ b/libs/PiwikTracker/PiwikTracker.php
@@ -780,7 +780,7 @@ class PiwikTracker
      * This function will only work if the user is initiating the current request, and his cookies
      * can be read by PHP from the $_COOKIE array.
      *
-     * @return string JSON Encoded string containing the Referer information for Goal conversion attribution.
+     * @return string JSON Encoded string containing the Referrer information for Goal conversion attribution.
      *                Will return false if the cookie could not be found
      * @see Piwik.js getAttributionInfo()
      */
diff --git a/misc/log-analytics/tests/logs/iis.log b/misc/log-analytics/tests/logs/iis.log
index ae2726fd7da20640058c6a16d18c30092d781b9b..0ec7bf504f103bfe395d3c38032b94d8eb1872c1 100644
--- a/misc/log-analytics/tests/logs/iis.log
+++ b/misc/log-analytics/tests/logs/iis.log
@@ -1,5 +1,5 @@
 #Software: Microsoft Internet Information Services 6.0
 #Version: 1.0
 #Date: 2012-04-01 00:00:13
-#Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken 
+#Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
 2012-04-01 00:00:13 W3SVC834221556 PXQD1 1.2.3.4 GET /foo/bar topCat1=divinity&submit=Search 80 - 5.6.7.8 HTTP/1.1 Mozilla/5.0+(X11;+U;+Linux+i686;+en-US;+rv:1.9.2.7)+Gecko/20100722+Firefox/3.6.7 - - example.com 200 0 0 27028 214 1687
diff --git a/piwik.php b/piwik.php
index f0f7389ad9a1fb5606f2ca05471eb9ff1d5b10e0..1301c3a05f4aa064a069cbda8e6fd9ebe49cc398 100644
--- a/piwik.php
+++ b/piwik.php
@@ -10,6 +10,7 @@
 use Piwik\Piwik;
 use Piwik\Timer;
 use Piwik\Tracker;
+use Piwik\Common;
 
 $GLOBALS['PIWIK_TRACKER_DEBUG'] = false;
 $GLOBALS['PIWIK_TRACKER_DEBUG_FORCE_SCHEDULED_TASKS'] = false;
@@ -45,13 +46,13 @@ require_once PIWIK_INCLUDE_PATH . '/core/Config.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Translate.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Cache.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db.php';
-require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db/Exception.php';
+require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db/DbException.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/IgnoreCookie.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Visit.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/GoalManager.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Action.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Request.php';
-require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Referer.php';
+require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Referrer.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/VisitExcluded.php';
 require_once PIWIK_INCLUDE_PATH . '/core/CacheFile.php';
 require_once PIWIK_INCLUDE_PATH . '/core/Cookie.php';
@@ -70,8 +71,8 @@ if ($GLOBALS['PIWIK_TRACKER_DEBUG'] === true) {
     set_error_handler('Piwik_ErrorHandler');
     set_exception_handler('Piwik_ExceptionHandler');
     Common::printDebug("Debug enabled - Input parameters: <br/>" . var_export($_GET, true));
-    Piwik_Tracker_Db::enableProfiling();
-    Piwik::createConfigObject();
+    \Piwik\Tracker\Db::enableProfiling();
+    \Piwik\FrontController::createConfigObject();
     \Piwik\Log::make();
 }
 
diff --git a/plugins/API/API.php b/plugins/API/API.php
index 0650e670994dd4b122c2f575fb1c9e56ad5ae01a..d1ea3c6eb84018d452fdad3488a8a828739104dc 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -18,6 +18,7 @@ use Piwik\Common;
 use Piwik\Config;
 use Piwik\Date;
 use Piwik\DataTable;
+use Piwik\Tracker\GoalManager;
 use Piwik\Version;
 use Piwik\Plugin;
 use Piwik\Translate;
@@ -255,10 +256,10 @@ class Piwik_API_API
     }
 
     static protected $visitEcommerceStatus = array(
-        Piwik_Tracker_GoalManager::TYPE_BUYER_NONE                  => 'none',
-        Piwik_Tracker_GoalManager::TYPE_BUYER_ORDERED               => 'ordered',
-        Piwik_Tracker_GoalManager::TYPE_BUYER_OPEN_CART             => 'abandonedCart',
-        Piwik_Tracker_GoalManager::TYPE_BUYER_ORDERED_AND_OPEN_CART => 'orderedThenAbandonedCart',
+        GoalManager::TYPE_BUYER_NONE                  => 'none',
+        GoalManager::TYPE_BUYER_ORDERED               => 'ordered',
+        GoalManager::TYPE_BUYER_OPEN_CART             => 'abandonedCart',
+        GoalManager::TYPE_BUYER_ORDERED_AND_OPEN_CART => 'orderedThenAbandonedCart',
     );
 
     /**
diff --git a/plugins/Actions/API.php b/plugins/Actions/API.php
index b40afb87e20e41f1983fc9db7bfafe5d8a438b2d..263e3e4a6b63219d7c5bf15076778ea0a16d326b 100644
--- a/plugins/Actions/API.php
+++ b/plugins/Actions/API.php
@@ -14,6 +14,7 @@ use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Date;
 use Piwik\DataTable;
+use Piwik\Tracker\Action;
 
 /**
  * The Actions API lets you request reports for all your Visitor Actions: Page URLs, Page titles (Piwik Events),
@@ -200,7 +201,7 @@ class Piwik_Actions_API
     public function getPageUrl($pageUrl, $idSite, $period, $date, $segment = false)
     {
         $callBackParameters = array('Actions_actions_url', $idSite, $period, $date, $segment, $expanded = false, $idSubtable = false);
-        $dataTable = $this->getFilterPageDatatableSearch($callBackParameters, $pageUrl, Piwik_Tracker_Action::TYPE_ACTION_URL);
+        $dataTable = $this->getFilterPageDatatableSearch($callBackParameters, $pageUrl, Action::TYPE_ACTION_URL);
         $this->filterPageDatatable($dataTable);
         $this->filterActionsDataTable($dataTable);
         return $dataTable;
@@ -241,7 +242,7 @@ class Piwik_Actions_API
     public function getPageTitle($pageName, $idSite, $period, $date, $segment = false)
     {
         $callBackParameters = array('Actions_actions', $idSite, $period, $date, $segment, $expanded = false, $idSubtable = false);
-        $dataTable = $this->getFilterPageDatatableSearch($callBackParameters, $pageName, Piwik_Tracker_Action::TYPE_ACTION_NAME);
+        $dataTable = $this->getFilterPageDatatableSearch($callBackParameters, $pageName, Action::TYPE_ACTION_NAME);
         $this->filterPageDatatable($dataTable);
         $this->filterActionsDataTable($dataTable);
         return $dataTable;
@@ -257,7 +258,7 @@ class Piwik_Actions_API
     public function getDownload($downloadUrl, $idSite, $period, $date, $segment = false)
     {
         $callBackParameters = array('Actions_downloads', $idSite, $period, $date, $segment, $expanded = false, $idSubtable = false);
-        $dataTable = $this->getFilterPageDatatableSearch($callBackParameters, $downloadUrl, Piwik_Tracker_Action::TYPE_DOWNLOAD);
+        $dataTable = $this->getFilterPageDatatableSearch($callBackParameters, $downloadUrl, Action::TYPE_DOWNLOAD);
         $this->filterActionsDataTable($dataTable);
         return $dataTable;
     }
@@ -272,7 +273,7 @@ class Piwik_Actions_API
     public function getOutlink($outlinkUrl, $idSite, $period, $date, $segment = false)
     {
         $callBackParameters = array('Actions_outlink', $idSite, $period, $date, $segment, $expanded = false, $idSubtable = false);
-        $dataTable = $this->getFilterPageDatatableSearch($callBackParameters, $outlinkUrl, Piwik_Tracker_Action::TYPE_OUTLINK);
+        $dataTable = $this->getFilterPageDatatableSearch($callBackParameters, $outlinkUrl, Action::TYPE_OUTLINK);
         $this->filterActionsDataTable($dataTable);
         return $dataTable;
     }
@@ -329,7 +330,7 @@ class Piwik_Actions_API
         Piwik_Actions::checkCustomVariablesPluginEnabled();
         $customVariables = Piwik_CustomVariables_API::getInstance()->getCustomVariables($idSite, $period, $date, $segment, $expanded = false, $_leavePiwikCoreVariables = true);
 
-        $customVarNameToLookFor = Piwik_Tracker_Action::CVAR_KEY_SEARCH_CATEGORY;
+        $customVarNameToLookFor = Action::CVAR_KEY_SEARCH_CATEGORY;
 
         $dataTable = new DataTable();
         // Handle case where date=last30&period=day
@@ -372,12 +373,12 @@ class Piwik_Actions_API
     {
         if ($searchTree === false) {
             // build the query parts that are searched inside the tree
-            if ($actionType == Piwik_Tracker_Action::TYPE_ACTION_NAME) {
+            if ($actionType == Action::TYPE_ACTION_NAME) {
                 $searchedString = Common::unsanitizeInputValue($search);
             } else {
                 $idSite = $callBackParameters[1];
                 try {
-                    $searchedString = Piwik_Tracker_Action::excludeQueryParametersFromUrl($search, $idSite);
+                    $searchedString = Action::excludeQueryParametersFromUrl($search, $idSite);
                 } catch (Exception $e) {
                     $searchedString = $search;
                 }
diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php
index f7bcef4b1f7919243c35f958133adb9eb8dee9e3..fdd116c671626acb1577568cdfdd7669200bd767 100644
--- a/plugins/Actions/Actions.php
+++ b/plugins/Actions/Actions.php
@@ -12,6 +12,7 @@ use Piwik\API\Request;
 use Piwik\ArchiveProcessor;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Tracker\Action;
 use Piwik\ViewDataTable;
 use Piwik\WidgetsList;
 use Piwik\Plugin;
@@ -147,7 +148,7 @@ class Piwik_Actions extends Plugin
     {
         $actionType = $this->guessActionTypeFromSegment($segmentName);
 
-        if ($actionType == Piwik_Tracker_Action::TYPE_ACTION_URL) {
+        if ($actionType == Action::TYPE_ACTION_URL) {
             // for urls trim protocol and www because it is not recorded in the db
             $valueToMatch = preg_replace('@^http[s]?://(www\.)?@i', '', $valueToMatch);
         }
@@ -158,7 +159,7 @@ class Piwik_Actions extends Plugin
         if ($matchType == SegmentExpression::MATCH_EQUAL
             || $matchType == SegmentExpression::MATCH_NOT_EQUAL
         ) {
-            $sql = Piwik_Tracker_Action::getSqlSelectActionId();
+            $sql = Action::getSqlSelectActionId();
             $bind = array($valueToMatch, $valueToMatch, $actionType);
             $idAction = Db::fetchOne($sql, $bind);
             // if the action is not found, we hack -100 to ensure it tries to match against an integer
@@ -614,13 +615,13 @@ class Piwik_Actions extends Plugin
     protected function guessActionTypeFromSegment($segmentName)
     {
         if (stripos($segmentName, 'pageurl') !== false) {
-            $actionType = Piwik_Tracker_Action::TYPE_ACTION_URL;
+            $actionType = Action::TYPE_ACTION_URL;
             return $actionType;
         } elseif (stripos($segmentName, 'pagetitle') !== false) {
-            $actionType = Piwik_Tracker_Action::TYPE_ACTION_NAME;
+            $actionType = Action::TYPE_ACTION_NAME;
             return $actionType;
         } elseif (stripos($segmentName, 'sitesearch') !== false) {
-            $actionType = Piwik_Tracker_Action::TYPE_SITE_SEARCH;
+            $actionType = Action::TYPE_SITE_SEARCH;
             return $actionType;
         } else {
             throw new Exception(" The segment $segmentName has an unexpected value.");
diff --git a/plugins/Actions/Archiver.php b/plugins/Actions/Archiver.php
index dc6242dd9555cc2c0a2444ba2357997a35469f0a..f3dfa31138b840fc0eca9d9090090676b793f556 100644
--- a/plugins/Actions/Archiver.php
+++ b/plugins/Actions/Archiver.php
@@ -15,6 +15,7 @@ use Piwik\Metrics;
 use Piwik\DataTable;
 use Piwik\RankingQuery;
 use Piwik\PluginsArchiver;
+use Piwik\Tracker\Action;
 
 /**
  * Class encapsulating logic to process Day/Period Archiving for the Actions reports
@@ -53,11 +54,11 @@ class Piwik_Actions_Archiver extends PluginsArchiver
     );
 
     public static $actionTypes = array(
-        Piwik_Tracker_Action::TYPE_ACTION_URL,
-        Piwik_Tracker_Action::TYPE_OUTLINK,
-        Piwik_Tracker_Action::TYPE_DOWNLOAD,
-        Piwik_Tracker_Action::TYPE_ACTION_NAME,
-        Piwik_Tracker_Action::TYPE_SITE_SEARCH,
+        Action::TYPE_ACTION_URL,
+        Action::TYPE_OUTLINK,
+        Action::TYPE_DOWNLOAD,
+        Action::TYPE_ACTION_NAME,
+        Action::TYPE_SITE_SEARCH,
     );
     static protected $invalidSummedColumnNameToRenamedNameFromPeriodArchive = array(
         Metrics::INDEX_NB_UNIQ_VISITORS            => Metrics::INDEX_SUM_DAILY_NB_UNIQ_VISITORS,
@@ -160,8 +161,8 @@ class Piwik_Actions_Archiver extends PluginsArchiver
             $dataTable = new DataTable();
             $dataTable->setMaximumAllowedRows(Piwik_Actions_ArchivingHelper::$maximumRowsInDataTableLevelZero);
 
-            if ($type == Piwik_Tracker_Action::TYPE_ACTION_URL
-                || $type == Piwik_Tracker_Action::TYPE_ACTION_NAME
+            if ($type == Action::TYPE_ACTION_URL
+                || $type == Action::TYPE_ACTION_NAME
             ) {
                 // for page urls and page titles, performance metrics exist and have to be aggregated correctly
                 $dataTable->setColumnAggregationOperations(self::$actionColumnAggregationOperations);
@@ -181,20 +182,20 @@ class Piwik_Actions_Archiver extends PluginsArchiver
 				count(distinct log_link_visit_action.idvisitor) as `" . Metrics::INDEX_NB_UNIQ_VISITORS . "`,
 				count(*) as `" . Metrics::INDEX_PAGE_NB_HITS . "`,
 				sum(
-					case when " . Piwik_Tracker_Action::DB_COLUMN_TIME_GENERATION . " is null
+					case when " . Action::DB_COLUMN_TIME_GENERATION . " is null
 						then 0
-						else " . Piwik_Tracker_Action::DB_COLUMN_TIME_GENERATION . "
+						else " . Action::DB_COLUMN_TIME_GENERATION . "
 					end
 				) / 1000 as `" . Metrics::INDEX_PAGE_SUM_TIME_GENERATION . "`,
 				sum(
-					case when " . Piwik_Tracker_Action::DB_COLUMN_TIME_GENERATION . " is null
+					case when " . Action::DB_COLUMN_TIME_GENERATION . " is null
 						then 0
 						else 1
 					end
 				) as `" . Metrics::INDEX_PAGE_NB_HITS_WITH_TIME_GENERATION . "`,
-				min(" . Piwik_Tracker_Action::DB_COLUMN_TIME_GENERATION . ") / 1000
+				min(" . Action::DB_COLUMN_TIME_GENERATION . ") / 1000
 				    as `" . Metrics::INDEX_PAGE_MIN_TIME_GENERATION . "`,
-				max(" . Piwik_Tracker_Action::DB_COLUMN_TIME_GENERATION . ") / 1000
+				max(" . Action::DB_COLUMN_TIME_GENERATION . ") / 1000
                     as `" . Metrics::INDEX_PAGE_MAX_TIME_GENERATION . "`
 				";
 
@@ -237,7 +238,7 @@ class Piwik_Actions_Archiver extends PluginsArchiver
         // 2) For each page view, count number of times the referrer page was a Site Search
         if ($this->isSiteSearchEnabled()) {
             $selectFlagNoResultKeywords = ",
-				CASE WHEN (MAX(log_link_visit_action.custom_var_v" . Piwik_Tracker_Action::CVAR_INDEX_SEARCH_COUNT . ") = 0 AND log_link_visit_action.custom_var_k" . Piwik_Tracker_Action::CVAR_INDEX_SEARCH_COUNT . " = '" . Piwik_Tracker_Action::CVAR_KEY_SEARCH_COUNT . "') THEN 1 ELSE 0 END AS `" . Metrics::INDEX_SITE_SEARCH_HAS_NO_RESULT . "`";
+				CASE WHEN (MAX(log_link_visit_action.custom_var_v" . Action::CVAR_INDEX_SEARCH_COUNT . ") = 0 AND log_link_visit_action.custom_var_k" . Action::CVAR_INDEX_SEARCH_COUNT . " = '" . Action::CVAR_KEY_SEARCH_COUNT . "') THEN 1 ELSE 0 END AS `" . Metrics::INDEX_SITE_SEARCH_HAS_NO_RESULT . "`";
 
             //we need an extra JOIN to know whether the referrer "idaction_name_ref" was a Site Search request
             $from[] = array(
@@ -247,7 +248,7 @@ class Piwik_Actions_Archiver extends PluginsArchiver
             );
 
             $selectSiteSearchFollowingPages = ",
-				SUM(CASE WHEN log_action_name_ref.type = " . Piwik_Tracker_Action::TYPE_SITE_SEARCH . " THEN 1 ELSE 0 END) AS `" . Metrics::INDEX_PAGE_IS_FOLLOWING_SITE_SEARCH_NB_HITS . "`";
+				SUM(CASE WHEN log_action_name_ref.type = " . Action::TYPE_SITE_SEARCH . " THEN 1 ELSE 0 END) AS `" . Metrics::INDEX_PAGE_IS_FOLLOWING_SITE_SEARCH_NB_HITS . "`";
 
             $select .= $selectFlagNoResultKeywords
                 . $selectSiteSearchFollowingPages;
@@ -445,7 +446,7 @@ class Piwik_Actions_Archiver extends PluginsArchiver
 
     protected function recordPageUrlsReports()
     {
-        $dataTable = $this->getDataTable(Piwik_Tracker_Action::TYPE_ACTION_URL);
+        $dataTable = $this->getDataTable(Action::TYPE_ACTION_URL);
         $this->recordDataTable($dataTable, self::PAGE_URLS_RECORD_NAME);
 
         $records = array(
@@ -516,7 +517,7 @@ class Piwik_Actions_Archiver extends PluginsArchiver
 
     protected function recordDownloadsReports()
     {
-        $dataTable = $this->getDataTable(Piwik_Tracker_Action::TYPE_DOWNLOAD);
+        $dataTable = $this->getDataTable(Action::TYPE_DOWNLOAD);
         $this->recordDataTable($dataTable, self::DOWNLOADS_RECORD_NAME);
 
         $this->getProcessor()->insertNumericRecord(self::METRIC_DOWNLOADS_RECORD_NAME, array_sum($dataTable->getColumn(Metrics::INDEX_PAGE_NB_HITS)));
@@ -525,7 +526,7 @@ class Piwik_Actions_Archiver extends PluginsArchiver
 
     protected function recordOutlinksReports()
     {
-        $dataTable = $this->getDataTable(Piwik_Tracker_Action::TYPE_OUTLINK);
+        $dataTable = $this->getDataTable(Action::TYPE_OUTLINK);
         $this->recordDataTable($dataTable, self::OUTLINKS_RECORD_NAME);
 
         $this->getProcessor()->insertNumericRecord(self::METRIC_OUTLINKS_RECORD_NAME, array_sum($dataTable->getColumn(Metrics::INDEX_PAGE_NB_HITS)));
@@ -534,13 +535,13 @@ class Piwik_Actions_Archiver extends PluginsArchiver
 
     protected function recordPageTitlesReports()
     {
-        $dataTable = $this->getDataTable(Piwik_Tracker_Action::TYPE_ACTION_NAME);
+        $dataTable = $this->getDataTable(Action::TYPE_ACTION_NAME);
         $this->recordDataTable($dataTable, self::PAGE_TITLES_RECORD_NAME);
     }
 
     protected function recordSiteSearchReports()
     {
-        $dataTable = $this->getDataTable(Piwik_Tracker_Action::TYPE_SITE_SEARCH);
+        $dataTable = $this->getDataTable(Action::TYPE_SITE_SEARCH);
         $this->deleteUnusedColumnsFromKeywordsDataTable($dataTable);
         $this->recordDataTable($dataTable, self::SITE_SEARCH_RECORD_NAME);
 
diff --git a/plugins/Actions/ArchivingHelper.php b/plugins/Actions/ArchivingHelper.php
index 2e885a435e74ed8771452c84a91a848030727c99..8c95ae629f57ac45f3706883eb3fc336665e2aee 100644
--- a/plugins/Actions/ArchivingHelper.php
+++ b/plugins/Actions/ArchivingHelper.php
@@ -12,6 +12,7 @@ use Piwik\Config;
 use Piwik\DataTable\Row;
 use Piwik\Metrics;
 use Piwik\DataTable;
+use Piwik\Tracker\Action;
 
 /**
  * This static class provides:
@@ -38,28 +39,28 @@ class Piwik_Actions_ArchivingHelper
         $rowsProcessed = 0;
         while ($row = $query->fetch()) {
             if (empty($row['idaction'])) {
-                $row['type'] = ($fieldQueried == 'idaction_url' ? Piwik_Tracker_Action::TYPE_ACTION_URL : Piwik_Tracker_Action::TYPE_ACTION_NAME);
+                $row['type'] = ($fieldQueried == 'idaction_url' ? Action::TYPE_ACTION_URL : Action::TYPE_ACTION_NAME);
                 // This will be replaced with 'X not defined' later
                 $row['name'] = '';
                 // Yes, this is kind of a hack, so we don't mix 'page url not defined' with 'page title not defined' etc.
                 $row['idaction'] = -$row['type'];
             }
 
-            if ($row['type'] != Piwik_Tracker_Action::TYPE_SITE_SEARCH) {
+            if ($row['type'] != Action::TYPE_SITE_SEARCH) {
                 unset($row[Metrics::INDEX_SITE_SEARCH_HAS_NO_RESULT]);
             }
 
             // This will appear as <url /> in the API, which is actually very important to keep
             // eg. When there's at least one row in a report that does not have a URL, not having this <url/> would break HTML/PDF reports.
             $url = '';
-            if ($row['type'] == Piwik_Tracker_Action::TYPE_SITE_SEARCH
-                || $row['type'] == Piwik_Tracker_Action::TYPE_ACTION_NAME
+            if ($row['type'] == Action::TYPE_SITE_SEARCH
+                || $row['type'] == Action::TYPE_ACTION_NAME
             ) {
                 $url = null;
             } elseif (!empty($row['name'])
                 && $row['name'] != DataTable::LABEL_SUMMARY_ROW
             ) {
-                $url = Piwik_Tracker_Action::reconstructNormalizedUrl((string)$row['name'], $row['url_prefix']);
+                $url = Action::reconstructNormalizedUrl((string)$row['name'], $row['url_prefix']);
             }
 
             if (isset($row['name'])
@@ -116,8 +117,8 @@ class Piwik_Actions_ArchivingHelper
                 }
             }
 
-            if ($row['type'] != Piwik_Tracker_Action::TYPE_ACTION_URL
-                && $row['type'] != Piwik_Tracker_Action::TYPE_ACTION_NAME
+            if ($row['type'] != Action::TYPE_ACTION_URL
+                && $row['type'] != Action::TYPE_ACTION_NAME
             ) {
                 // only keep performance metrics when they're used (i.e. for URLs and page titles)
                 if (array_key_exists(Metrics::INDEX_PAGE_SUM_TIME_GENERATION, $row)) {
@@ -308,7 +309,7 @@ class Piwik_Actions_ArchivingHelper
     static public function getActionExplodedNames($name, $type, $urlPrefix = null)
     {
         // Site Search does not split Search keywords
-        if ($type == Piwik_Tracker_Action::TYPE_SITE_SEARCH) {
+        if ($type == Action::TYPE_SITE_SEARCH) {
             return array($name);
         }
 
@@ -334,8 +335,8 @@ class Piwik_Actions_ArchivingHelper
             $urlFragment = $matches[3];
         }
 
-        if ($type == Piwik_Tracker_Action::TYPE_DOWNLOAD
-            || $type == Piwik_Tracker_Action::TYPE_OUTLINK
+        if ($type == Action::TYPE_DOWNLOAD
+            || $type == Action::TYPE_OUTLINK
         ) {
             if ($isUrl) {
                 return array(trim($urlHost), '/' . trim($urlPath));
@@ -350,7 +351,7 @@ class Piwik_Actions_ArchivingHelper
             }
         }
 
-        if ($type == Piwik_Tracker_Action::TYPE_ACTION_NAME) {
+        if ($type == Action::TYPE_ACTION_NAME) {
             $categoryDelimiter = self::$actionTitleCategoryDelimiter;
         } else {
             $categoryDelimiter = self::$actionUrlCategoryDelimiter;
@@ -358,7 +359,7 @@ class Piwik_Actions_ArchivingHelper
 
 
         if ($isUrl) {
-            $urlFragment = Piwik_Tracker_Action::processUrlFragment($urlFragment);
+            $urlFragment = Action::processUrlFragment($urlFragment);
             if (!empty($urlFragment)) {
                 $name .= '#' . $urlFragment;
             }
@@ -386,7 +387,7 @@ class Piwik_Actions_ArchivingHelper
         // we are careful to prefix the page URL / name with some value
         // so that if a page has the same name as a category
         // we don't merge both entries
-        if ($type != Piwik_Tracker_Action::TYPE_ACTION_NAME) {
+        if ($type != Action::TYPE_ACTION_NAME) {
             $lastPageName = '/' . $lastPageName;
         } else {
             $lastPageName = ' ' . $lastPageName;
@@ -431,7 +432,7 @@ class Piwik_Actions_ArchivingHelper
             self::$defaultActionNameWhenNotDefined = Piwik_Translate('General_NotDefined', Piwik_Translate('Actions_ColumnPageName'));
             self::$defaultActionUrlWhenNotDefined = Piwik_Translate('General_NotDefined', Piwik_Translate('Actions_ColumnPageURL'));
         }
-        if ($type == Piwik_Tracker_Action::TYPE_ACTION_NAME) {
+        if ($type == Action::TYPE_ACTION_NAME) {
             return self::$defaultActionNameWhenNotDefined;
         }
         return self::$defaultActionUrlWhenNotDefined;
diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php
index b4de7b1d1d84ce8de376687ac3dfa630843f54ee..9e040b552ccf7ad3fc19580614123294ddebe57b 100644
--- a/plugins/CoreAdminHome/Controller.php
+++ b/plugins/CoreAdminHome/Controller.php
@@ -15,6 +15,7 @@ use Piwik\Controller\Admin;
 use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Nonce;
+use Piwik\Tracker\IgnoreCookie;
 use Piwik\View;
 use Piwik\Url;
 use Piwik\Site;
@@ -171,13 +172,13 @@ class Piwik_CoreAdminHome_Controller extends Admin
      */
     public function optOut()
     {
-        $trackVisits = !Piwik_Tracker_IgnoreCookie::isIgnoreCookieFound();
+        $trackVisits = !IgnoreCookie::isIgnoreCookieFound();
 
         $nonce = Common::getRequestVar('nonce', false);
         $language = Common::getRequestVar('language', '');
         if ($nonce !== false && Nonce::verifyNonce('Piwik_OptOut', $nonce)) {
             Nonce::discardNonce('Piwik_OptOut');
-            Piwik_Tracker_IgnoreCookie::setIgnoreCookie();
+            IgnoreCookie::setIgnoreCookie();
             $trackVisits = !$trackVisits;
         }
 
diff --git a/plugins/CoreAdminHome/CoreAdminHome.php b/plugins/CoreAdminHome/CoreAdminHome.php
index 05244f24efbe05cc4d208f8c995919082691ae5b..c3517d887028a48e2ec48453683fa3a81208b6d5 100644
--- a/plugins/CoreAdminHome/CoreAdminHome.php
+++ b/plugins/CoreAdminHome/CoreAdminHome.php
@@ -15,6 +15,7 @@ use Piwik\Date;
 use Piwik\ScheduledTask;
 use Piwik\Plugin;
 use Piwik\Db;
+use Piwik\ScheduledTime\Daily;
 
 /**
  *
@@ -41,7 +42,7 @@ class Piwik_CoreAdminHome extends Plugin
         $purgeArchiveTablesTask = new ScheduledTask ($this,
             'purgeOutdatedArchives',
             null,
-            new Piwik_ScheduledTime_Daily(),
+            new Daily(),
             ScheduledTask::HIGH_PRIORITY);
         $tasks[] = $purgeArchiveTablesTask;
 
@@ -49,7 +50,7 @@ class Piwik_CoreAdminHome extends Plugin
         $optimizeArchiveTableTask = new ScheduledTask ($this,
             'optimizeArchiveTable',
             null,
-            new Piwik_ScheduledTime_Daily(),
+            new Daily(),
             ScheduledTask::LOWEST_PRIORITY);
         $tasks[] = $optimizeArchiveTableTask;
     }
diff --git a/plugins/CustomVariables/API.php b/plugins/CustomVariables/API.php
index bfe38b72405d12592178ccfc5f8d2ecfa65b3767..fb3e88456ee31cb504b99129c801e08d4d702aa0 100644
--- a/plugins/CustomVariables/API.php
+++ b/plugins/CustomVariables/API.php
@@ -12,6 +12,7 @@ use Piwik\Archive;
 use Piwik\Metrics;
 use Piwik\Date;
 use Piwik\DataTable;
+use Piwik\Tracker\Action;
 
 /**
  * The Custom Variables API lets you access reports for your <a href='http://piwik.org/docs/custom-variables/' target='_blank'>Custom Variables</a> names and values.
@@ -86,7 +87,7 @@ class Piwik_CustomVariables_API
      */
     public static function getReservedCustomVariableKeys()
     {
-        return array('_pks', '_pkn', '_pkc', '_pkp', Piwik_Tracker_Action::CVAR_KEY_SEARCH_COUNT, Piwik_Tracker_Action::CVAR_KEY_SEARCH_CATEGORY);
+        return array('_pks', '_pkn', '_pkc', '_pkp', Action::CVAR_KEY_SEARCH_COUNT, Action::CVAR_KEY_SEARCH_CATEGORY);
     }
 
     /**
diff --git a/plugins/CustomVariables/Archiver.php b/plugins/CustomVariables/Archiver.php
index 198f7a8889e8cf84be2221a03b5ea41dae391bbe..e26bb0a254b0c54066a9d54672fd5b50fcbc51bd 100644
--- a/plugins/CustomVariables/Archiver.php
+++ b/plugins/CustomVariables/Archiver.php
@@ -6,6 +6,7 @@ use Piwik\Metrics;
 use Piwik\DataArray;
 use Piwik\Tracker;
 use Piwik\PluginsArchiver;
+use Piwik\Tracker\GoalManager;
 
 /**
  * Piwik - Open source web analytics
@@ -141,7 +142,7 @@ class Piwik_CustomVariables_Archiver extends PluginsArchiver
                 $count = 0;
                 foreach ($decoded as $category) {
                     if (empty($category)
-                        || $count >= Piwik_Tracker_GoalManager::MAXIMUM_PRODUCT_CATEGORIES
+                        || $count >= GoalManager::MAXIMUM_PRODUCT_CATEGORIES
                     ) {
                         continue;
                     }
diff --git a/plugins/DBStats/DBStats.php b/plugins/DBStats/DBStats.php
index 7a5c6076f7c3075f330067c66f6974571f9b439c..def12d84a444bfdacbeb67ac9e00b339c9e1a727 100644
--- a/plugins/DBStats/DBStats.php
+++ b/plugins/DBStats/DBStats.php
@@ -13,6 +13,7 @@ use Piwik\Date;
 use Piwik\Common;
 use Piwik\ScheduledTask;
 use Piwik\Plugin;
+use Piwik\ScheduledTime\Weekly;
 
 /**
  *
@@ -52,7 +53,7 @@ class Piwik_DBStats extends Plugin
             $this,
             'cacheDataByArchiveNameReports',
             null,
-            new Piwik_ScheduledTime_Weekly(),
+            new Weekly(),
             ScheduledTask::LOWEST_PRIORITY
         );
         $tasks[] = $cacheDataByArchiveNameReportsTask;
diff --git a/plugins/Dashboard/Controller.php b/plugins/Dashboard/Controller.php
index aa9b58ea266e5f0bfbe93ff5916f7a0d68cfd574..7ffe0dc79e31b308ba4b41603d55ff6d364f3264 100644
--- a/plugins/Dashboard/Controller.php
+++ b/plugins/Dashboard/Controller.php
@@ -11,6 +11,7 @@ use Piwik\DataTable\Renderer\Json;
 use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Controller;
+use Piwik\Session\SessionNamespace;
 use Piwik\View;
 use Piwik\Db;
 use Piwik\WidgetsList;
@@ -95,7 +96,7 @@ class Piwik_Dashboard_Controller extends Controller
         $layout = $this->dashboard->getDefaultLayout();
         $idDashboard = Common::getRequestVar('idDashboard', 1, 'int');
         if (Piwik::isUserIsAnonymous()) {
-            $session = new Piwik_Session_Namespace("Piwik_Dashboard");
+            $session = new SessionNamespace("Piwik_Dashboard");
             $session->dashboardLayout = $layout;
             $session->setExpirationSeconds(1800);
         } else {
@@ -259,7 +260,7 @@ class Piwik_Dashboard_Controller extends Controller
         $idDashboard = Common::getRequestVar('idDashboard', 1, 'int');
         $name = Common::getRequestVar('name', '', 'string');
         if (Piwik::isUserIsAnonymous()) {
-            $session = new Piwik_Session_Namespace("Piwik_Dashboard");
+            $session = new SessionNamespace("Piwik_Dashboard");
             $session->dashboardLayout = $layout;
             $session->setExpirationSeconds(1800);
         } else {
@@ -297,7 +298,7 @@ class Piwik_Dashboard_Controller extends Controller
     {
         if (Piwik::isUserIsAnonymous()) {
 
-            $session = new Piwik_Session_Namespace("Piwik_Dashboard");
+            $session = new SessionNamespace("Piwik_Dashboard");
             if (!isset($session->dashboardLayout)) {
 
                 return $this->dashboard->getDefaultLayout();
diff --git a/plugins/DoNotTrack/DoNotTrack.php b/plugins/DoNotTrack/DoNotTrack.php
index 2ea56e3d0f93901f1abf17704d2b43fdd4325995..8d9a3cf700214359bb4dd25810bda87e844de84f 100644
--- a/plugins/DoNotTrack/DoNotTrack.php
+++ b/plugins/DoNotTrack/DoNotTrack.php
@@ -10,6 +10,8 @@
  */
 use Piwik\Plugin;
 use Piwik\Common;
+use Piwik\Tracker\IgnoreCookie;
+use Piwik\Tracker\Request;
 
 /**
  * Ignore visits where user agent's request contains either:
@@ -35,7 +37,7 @@ class Piwik_DoNotTrack extends Plugin
         if ((isset($_SERVER['HTTP_X_DO_NOT_TRACK']) && $_SERVER['HTTP_X_DO_NOT_TRACK'] === '1')
             || (isset($_SERVER['HTTP_DNT']) && substr($_SERVER['HTTP_DNT'], 0, 1) === '1')
         ) {
-            $request = new Piwik_Tracker_Request($_REQUEST);
+            $request = new Request($_REQUEST);
             $ua = $request->getUserAgent();
             if (strpos($ua, 'MSIE 10') !== false) {
                 Common::printDebug("INTERNET EXPLORER 10 Enables DNT by default, so Piwik ignores DNT for all IE10 browsers...");
@@ -45,7 +47,7 @@ class Piwik_DoNotTrack extends Plugin
             $exclude = true;
             Common::printDebug("DoNotTrack found.");
 
-            $trackingCookie = Piwik_Tracker_IgnoreCookie::getTrackingCookie();
+            $trackingCookie = IgnoreCookie::getTrackingCookie();
             $trackingCookie->delete();
 
             // this is an optional supplement to the site's tracking status resource at:
diff --git a/plugins/Goals/API.php b/plugins/Goals/API.php
index 46f8738771e0403e2abec20b9ee4f1b78d59a993..3eb1a62e2813f04debf167cc5bc05c4597d18c1f 100644
--- a/plugins/Goals/API.php
+++ b/plugins/Goals/API.php
@@ -15,6 +15,8 @@ use Piwik\Common;
 use Piwik\DataTable;
 use Piwik\Site;
 use Piwik\Db;
+use Piwik\Tracker\Cache;
+use Piwik\Tracker\GoalManager;
 
 /**
  * Goals API lets you Manage existing goals, via "updateGoal" and "deleteGoal", create new Goals via "addGoal",
@@ -124,7 +126,7 @@ class Piwik_Goals_API
                  'revenue'         => (float)$revenue,
                  'deleted'         => 0,
             ));
-        Piwik_Tracker_Cache::regenerateCacheWebsiteAttributes($idSite);
+        Cache::regenerateCacheWebsiteAttributes($idSite);
         return $idGoal;
     }
 
@@ -162,7 +164,7 @@ class Piwik_Goals_API
             ),
             "idsite = '$idSite' AND idgoal = '$idGoal'"
         );
-        Piwik_Tracker_Cache::regenerateCacheWebsiteAttributes($idSite);
+        Cache::regenerateCacheWebsiteAttributes($idSite);
     }
 
     private function checkPatternIsValid($patternType, $pattern)
@@ -201,7 +203,7 @@ class Piwik_Goals_API
 											AND idgoal = ?",
             array($idSite, $idGoal));
         Db::deleteAllRows(Common::prefixTable("log_conversion"), "WHERE idgoal = ?", 100000, array($idGoal));
-        Piwik_Tracker_Cache::regenerateCacheWebsiteAttributes($idSite);
+        Cache::regenerateCacheWebsiteAttributes($idSite);
     }
 
     /**
@@ -229,7 +231,7 @@ class Piwik_Goals_API
         }
 
         // Average price = sum product revenue / quantity
-        $dataTable->queueFilter('ColumnCallbackAddColumnQuotient', array('avg_price', 'price', $ordersColumn, Piwik_Tracker_GoalManager::REVENUE_PRECISION));
+        $dataTable->queueFilter('ColumnCallbackAddColumnQuotient', array('avg_price', 'price', $ordersColumn, GoalManager::REVENUE_PRECISION));
 
         // Average quantity = sum product quantity / abandoned carts
         $dataTable->queueFilter('ColumnCallbackAddColumnQuotient', array('avg_quantity', 'quantity', $ordersColumn, $precision = 1));
@@ -280,7 +282,7 @@ class Piwik_Goals_API
         }
 
         // Product conversion rate = orders / visits
-        $dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array('conversion_rate', $ordersColumn, 'nb_visits', Piwik_Tracker_GoalManager::REVENUE_PRECISION));
+        $dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array('conversion_rate', $ordersColumn, 'nb_visits', GoalManager::REVENUE_PRECISION));
 
         return $dataTable;
     }
@@ -354,9 +356,9 @@ class Piwik_Goals_API
     protected static function convertSpecialGoalIds($idGoal)
     {
         if ($idGoal == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) {
-            return Piwik_Tracker_GoalManager::IDGOAL_ORDER;
+            return GoalManager::IDGOAL_ORDER;
         } else if ($idGoal == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART) {
-            return Piwik_Tracker_GoalManager::IDGOAL_CART;
+            return GoalManager::IDGOAL_CART;
         } else {
             return $idGoal;
         }
diff --git a/plugins/Goals/Archiver.php b/plugins/Goals/Archiver.php
index 000de7d136985994388ff51b7742daa450e7cf2b..cad582453aa5db4671974230404090772a2e6154 100644
--- a/plugins/Goals/Archiver.php
+++ b/plugins/Goals/Archiver.php
@@ -14,6 +14,7 @@ use Piwik\Metrics;
 use Piwik\DataTable;
 use Piwik\DataArray;
 use Piwik\PluginsArchiver;
+use Piwik\Tracker\GoalManager;
 
 class Piwik_Goals_Archiver extends PluginsArchiver
 {
@@ -138,7 +139,7 @@ class Piwik_Goals_Archiver extends PluginsArchiver
 
             // We don't want to sum Abandoned cart metrics in the overall revenue/conversions/converted visits
             // since it is a "negative conversion"
-            if ($idGoal != Piwik_Tracker_GoalManager::IDGOAL_CART) {
+            if ($idGoal != GoalManager::IDGOAL_CART) {
                 $totalConversions += $row[Metrics::INDEX_GOAL_NB_CONVERSIONS];
                 $totalRevenue += $row[Metrics::INDEX_GOAL_REVENUE];
             }
@@ -198,7 +199,7 @@ class Piwik_Goals_Archiver extends PluginsArchiver
     protected function getConversionRate($count)
     {
         $visits = $this->getProcessor()->getNumberOfVisits();
-        return round(100 * $count / $visits, Piwik_Tracker_GoalManager::REVENUE_PRECISION);
+        return round(100 * $count / $visits, GoalManager::REVENUE_PRECISION);
     }
 
     protected function insertReports($recordName, $visitsToConversions)
@@ -258,7 +259,7 @@ class Piwik_Goals_Archiver extends PluginsArchiver
         foreach ($this->itemReports as $dimension => $itemAggregatesByType) {
             foreach ($itemAggregatesByType as $ecommerceType => $itemAggregate) {
                 $recordName = $this->dimensionRecord[$dimension];
-                if ($ecommerceType == Piwik_Tracker_GoalManager::IDGOAL_CART) {
+                if ($ecommerceType == GoalManager::IDGOAL_CART) {
                     $recordName = self::getItemRecordNameAbandonedCart($recordName);
                 }
                 $table = $this->getProcessor()->getDataTableFromDataArray($itemAggregate);
@@ -334,7 +335,7 @@ class Piwik_Goals_Archiver extends PluginsArchiver
             }
         }
 
-        if ($row['ecommerceType'] == Piwik_Tracker_GoalManager::IDGOAL_CART) {
+        if ($row['ecommerceType'] == GoalManager::IDGOAL_CART) {
             // abandoned carts are the numner of visits with an abandoned cart
             $row[Metrics::INDEX_ECOMMERCE_ORDERS] = $row[Metrics::INDEX_NB_VISITS];
         }
@@ -365,7 +366,7 @@ class Piwik_Goals_Archiver extends PluginsArchiver
 
     protected function getEcommerceIdGoals()
     {
-        return array(Piwik_Tracker_GoalManager::IDGOAL_CART, Piwik_Tracker_GoalManager::IDGOAL_ORDER);
+        return array(GoalManager::IDGOAL_CART, GoalManager::IDGOAL_ORDER);
     }
 
     static public function getItemRecordNameAbandonedCart($recordName)
@@ -392,11 +393,11 @@ class Piwik_Goals_Archiver extends PluginsArchiver
         /*
          *  Archive General Goal metrics
          */
-        $goalIdsToSum = Piwik_Tracker_GoalManager::getGoalIds($this->getProcessor()->getSite()->getId());
+        $goalIdsToSum = GoalManager::getGoalIds($this->getProcessor()->getSite()->getId());
 
         //Ecommerce
-        $goalIdsToSum[] = Piwik_Tracker_GoalManager::IDGOAL_ORDER;
-        $goalIdsToSum[] = Piwik_Tracker_GoalManager::IDGOAL_CART; //bug here if idgoal=1
+        $goalIdsToSum[] = GoalManager::IDGOAL_ORDER;
+        $goalIdsToSum[] = GoalManager::IDGOAL_CART; //bug here if idgoal=1
         // Overall goal metrics
         $goalIdsToSum[] = false;
 
diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php
index 1ae77ed879b0f92e184bad26b54b4ea34818a9ae..4dc4685c59aa0b12150e53425ea08db0acb7e585 100644
--- a/plugins/Goals/Goals.php
+++ b/plugins/Goals/Goals.php
@@ -11,6 +11,7 @@
 use Piwik\ArchiveProcessor;
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Tracker\GoalManager;
 use Piwik\TranslationWriter;
 use Piwik\Plugin;
 use Piwik\Site;
@@ -54,7 +55,7 @@ class Piwik_Goals extends Plugin
             return $columns;
         }
         // Orders
-        if ($idGoal === Piwik_Tracker_GoalManager::IDGOAL_ORDER) {
+        if ($idGoal === GoalManager::IDGOAL_ORDER) {
             $columns = array_merge($columns, array(
                                                   'revenue_subtotal',
                                                   'revenue_tax',
@@ -63,7 +64,7 @@ class Piwik_Goals extends Plugin
                                              ));
         }
         // Abandoned carts & orders
-        if ($idGoal <= Piwik_Tracker_GoalManager::IDGOAL_ORDER) {
+        if ($idGoal <= GoalManager::IDGOAL_ORDER) {
             $columns[] = 'items';
         }
         return $columns;
diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php
index aa3052e6b566d141dce7683998a73c3b5b582278..d0207e1ffa567a58c4720ea56a963ef9cdd59e96 100644
--- a/plugins/Installation/Controller.php
+++ b/plugins/Installation/Controller.php
@@ -17,6 +17,7 @@ use Piwik\Config;
 use Piwik\Common;
 use Piwik\Access;
 use Piwik\Http;
+use Piwik\Session\SessionNamespace;
 use Piwik\Updater;
 use Piwik\View;
 use Piwik\Version;
@@ -48,7 +49,7 @@ class Piwik_Installation_Controller extends Admin
 
     public function __construct()
     {
-        $this->session = new Piwik_Session_Namespace('Piwik_Installation');
+        $this->session = new SessionNamespace('Piwik_Installation');
         if (!isset($this->session->currentStepDone)) {
             $this->session->currentStepDone = '';
             $this->session->skipThisStep = array();
diff --git a/plugins/Live/API.php b/plugins/Live/API.php
index 8cd04cf585b79230c21a637a9d403f25a25826e1..3354c67335d85b5bb06b64d14207e76b3b6ac2d6 100644
--- a/plugins/Live/API.php
+++ b/plugins/Live/API.php
@@ -22,6 +22,8 @@ use Piwik\Tracker;
 use Piwik\Segment;
 use Piwik\Site;
 use Piwik\Db;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\GoalManager;
 
 /**
  * @see plugins/Referers/functions.php
@@ -212,8 +214,8 @@ class Piwik_Live_API
     private function getCustomVariablePrettyKey($key)
     {
         $rename = array(
-            Piwik_Tracker_Action::CVAR_KEY_SEARCH_CATEGORY => Piwik_Translate('Actions_ColumnSearchCategory'),
-            Piwik_Tracker_Action::CVAR_KEY_SEARCH_COUNT    => Piwik_Translate('Actions_ColumnSearchResultsCount'),
+            Action::CVAR_KEY_SEARCH_CATEGORY => Piwik_Translate('Actions_ColumnSearchCategory'),
+            Action::CVAR_KEY_SEARCH_COUNT    => Piwik_Translate('Actions_ColumnSearchResultsCount'),
         );
         if (isset($rename[$key])) {
             return $rename[$key];
@@ -508,7 +510,7 @@ class Piwik_Live_API
             }
 
             // Reconstruct url from prefix
-            $actionDetail['url'] = Piwik_Tracker_Action::reconstructNormalizedUrl($actionDetail['url'], $actionDetail['url_prefix']);
+            $actionDetail['url'] = Action::reconstructNormalizedUrl($actionDetail['url'], $actionDetail['url_prefix']);
             unset($actionDetail['url_prefix']);
 
             // Set the time spent for this action (which is the timeSpentRef of the next action)
@@ -526,7 +528,7 @@ class Piwik_Live_API
             unset($actionDetail['custom_float']);
 
             // Handle Site Search
-            if ($actionDetail['type'] == Piwik_Tracker_Action::TYPE_SITE_SEARCH) {
+            if ($actionDetail['type'] == Action::TYPE_SITE_SEARCH) {
                 $actionDetail['siteSearchKeyword'] = $actionDetail['pageTitle'];
                 unset($actionDetail['pageTitle']);
             }
@@ -556,7 +558,7 @@ class Piwik_Live_API
         $goalDetails = Db::fetchAll($sql, array($idVisit));
 
         $sql = "SELECT
-						case idgoal when " . Piwik_Tracker_GoalManager::IDGOAL_CART . " then '" . Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART . "' else '" . Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER . "' end as type,
+						case idgoal when " . GoalManager::IDGOAL_CART . " then '" . Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART . "' else '" . Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER . "' end as type,
 						idorder as orderId,
 						" . LogAggregator::getSqlRevenue('revenue') . " as revenue,
 						" . LogAggregator::getSqlRevenue('revenue_subtotal') . " as revenueSubTotal,
@@ -568,7 +570,7 @@ class Piwik_Live_API
 						log_conversion.server_time as serverTimePretty
 					FROM " . Common::prefixTable('log_conversion') . " AS log_conversion
 					WHERE idvisit = ?
-						AND idgoal <= " . Piwik_Tracker_GoalManager::IDGOAL_ORDER . "
+						AND idgoal <= " . GoalManager::IDGOAL_ORDER . "
 					ORDER BY server_time ASC
 					LIMIT 0, $actionsLimit";
         $ecommerceDetails = Db::fetchAll($sql, array($idVisit));
@@ -615,7 +617,7 @@ class Piwik_Live_API
 				";
             $bind = array($idVisit, isset($ecommerceConversion['orderId'])
                 ? $ecommerceConversion['orderId']
-                : Piwik_Tracker_GoalManager::ITEM_IDORDER_ABANDONED_CART
+                : GoalManager::ITEM_IDORDER_ABANDONED_CART
             );
 
             $itemsDetails = Db::fetchAll($sql, $bind);
@@ -641,15 +643,15 @@ class Piwik_Live_API
                 case Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART:
                     $details['icon'] = 'plugins/Zeitgeist/images/' . $details['type'] . '.gif';
                     break;
-                case Piwik_Tracker_Action_Interface::TYPE_DOWNLOAD:
+                case Tracker\ActionInterface::TYPE_DOWNLOAD:
                     $details['type'] = 'download';
                     $details['icon'] = 'plugins/Zeitgeist/images/download.png';
                     break;
-                case Piwik_Tracker_Action_Interface::TYPE_OUTLINK:
+                case Tracker\ActionInterface::TYPE_OUTLINK:
                     $details['type'] = 'outlink';
                     $details['icon'] = 'plugins/Zeitgeist/images/link.gif';
                     break;
-                case Piwik_Tracker_Action::TYPE_SITE_SEARCH:
+                case Action::TYPE_SITE_SEARCH:
                     $details['type'] = 'search';
                     $details['icon'] = 'plugins/Zeitgeist/images/search_ico.png';
                     break;
diff --git a/plugins/Live/Visitor.php b/plugins/Live/Visitor.php
index db31fe886f12a8d85061515b96e6ead910f734e2..5d7441fc38e38d5e48ad15d78ea1eb08fa1ea1cc 100644
--- a/plugins/Live/Visitor.php
+++ b/plugins/Live/Visitor.php
@@ -12,6 +12,7 @@ use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\IP;
 use Piwik\Tracker;
+use Piwik\Tracker\Visit;
 
 /**
  * @see plugins/Referers/functions.php
@@ -272,7 +273,7 @@ class Piwik_Live_Visitor
     public function getRegionName()
     {
         $region = $this->getRegionCode();
-        if ($region != '' && $region != Piwik_Tracker_Visit::UNKNOWN_CODE) {
+        if ($region != '' && $region != Visit::UNKNOWN_CODE) {
             return Piwik_UserCountry_LocationProvider_GeoIp::getRegionNameFromCodes(
                 $this->details['location_country'], $region);
         }
diff --git a/plugins/Overlay/API.php b/plugins/Overlay/API.php
index d6d019aa23c9b337b7f7727ceab082d8bde61181..35e7c681e448fe7df7146657b40e471381c98b28 100644
--- a/plugins/Overlay/API.php
+++ b/plugins/Overlay/API.php
@@ -3,6 +3,7 @@ use Piwik\Config;
 use Piwik\Piwik;
 use Piwik\Access;
 use Piwik\DataTable;
+use Piwik\Tracker\Action;
 
 /**
  * Piwik - Open source web analytics
@@ -79,7 +80,7 @@ class Piwik_Overlay_API
     {
         $this->authenticate($idSite);
 
-        $url = Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idSite);
+        $url = Action::excludeQueryParametersFromUrl($url, $idSite);
         // we don't unsanitize $url here. it will be done in the Transitions plugin.
 
         $resultDataTable = new DataTable;
diff --git a/plugins/Overlay/Controller.php b/plugins/Overlay/Controller.php
index b034173e4394aec6058c1455d29aedb6dd4030d5..2efcfd70577483734fcdfa1c88473662aeb08080 100644
--- a/plugins/Overlay/Controller.php
+++ b/plugins/Overlay/Controller.php
@@ -5,6 +5,7 @@ use Piwik\Piwik;
 use Piwik\Config;
 use Piwik\Common;
 use Piwik\Controller;
+use Piwik\Tracker\Action;
 use Piwik\View;
 
 /**
@@ -52,12 +53,12 @@ class Piwik_Overlay_Controller extends Controller
         $currentUrl = Common::getRequestVar('currentUrl');
         $currentUrl = Common::unsanitizeInputValue($currentUrl);
 
-        $normalizedCurrentUrl = Piwik_Tracker_Action::excludeQueryParametersFromUrl($currentUrl, $idSite);
+        $normalizedCurrentUrl = Action::excludeQueryParametersFromUrl($currentUrl, $idSite);
         $normalizedCurrentUrl = Common::unsanitizeInputValue($normalizedCurrentUrl);
 
         // load the appropriate row of the page urls report using the label filter
         Piwik_Actions_ArchivingHelper::reloadConfig();
-        $path = Piwik_Actions_ArchivingHelper::getActionExplodedNames($normalizedCurrentUrl, Piwik_Tracker_Action::TYPE_ACTION_URL);
+        $path = Piwik_Actions_ArchivingHelper::getActionExplodedNames($normalizedCurrentUrl, Action::TYPE_ACTION_URL);
         $path = array_map('urlencode', $path);
         $label = implode('>', $path);
         $request = new Request(
diff --git a/plugins/PrivacyManager/PrivacyManager.php b/plugins/PrivacyManager/PrivacyManager.php
index 3681776a717efd8faa51782b4ca42df896867940..517b410bfebe8ec0876b133ef24a622314f0f6b5 100644
--- a/plugins/PrivacyManager/PrivacyManager.php
+++ b/plugins/PrivacyManager/PrivacyManager.php
@@ -16,6 +16,8 @@ use Piwik\Date;
 use Piwik\ScheduledTask;
 use Piwik\Plugin;
 use Piwik\Db;
+use Piwik\ScheduledTime\Daily;
+use Piwik\Tracker\GoalManager;
 
 /**
  * @see plugins/PrivacyManager/LogDataPurger.php
@@ -73,12 +75,12 @@ class Piwik_PrivacyManager extends Plugin
         // they will execute before the optimize tables task
 
         $purgeReportDataTask = new ScheduledTask(
-            $this, 'deleteReportData', null, new Piwik_ScheduledTime_Daily(), ScheduledTask::LOW_PRIORITY
+            $this, 'deleteReportData', null, new Daily(), ScheduledTask::LOW_PRIORITY
         );
         $tasks[] = $purgeReportDataTask;
 
         $purgeLogDataTask = new ScheduledTask(
-            $this, 'deleteLogData', null, new Piwik_ScheduledTime_Daily(), ScheduledTask::LOW_PRIORITY
+            $this, 'deleteLogData', null, new Daily(), ScheduledTask::LOW_PRIORITY
         );
         $tasks[] = $purgeLogDataTask;
     }
@@ -349,8 +351,8 @@ class Piwik_PrivacyManager extends Plugin
                 }
 
                 $metricsToKeep[] = Piwik_Goals_Archiver::getRecordName($metric);
-                $metricsToKeep[] = Piwik_Goals_Archiver::getRecordName($metric, Piwik_Tracker_GoalManager::IDGOAL_ORDER);
-                $metricsToKeep[] = Piwik_Goals_Archiver::getRecordName($metric, Piwik_Tracker_GoalManager::IDGOAL_CART);
+                $metricsToKeep[] = Piwik_Goals_Archiver::getRecordName($metric, GoalManager::IDGOAL_ORDER);
+                $metricsToKeep[] = Piwik_Goals_Archiver::getRecordName($metric, GoalManager::IDGOAL_CART);
             }
         }
 
diff --git a/plugins/Proxy/Controller.php b/plugins/Proxy/Controller.php
index 6633a70f5d90f582d187ac6587312b9fbcd4881e..cf1b362c7bb9bba1fe5876c0188c9f57d4314d67 100644
--- a/plugins/Proxy/Controller.php
+++ b/plugins/Proxy/Controller.php
@@ -60,7 +60,7 @@ class Piwik_Proxy_Controller extends Controller
         // validate referrer
         $referrer = Url::getReferer();
         if (empty($referrer) || !Url::isLocalUrl($referrer)) {
-            die('Invalid Referer detected - This means that your web browser is not sending the "Referer URL" which is
+            die('Invalid Referrer detected - This means that your web browser is not sending the "Referrer URL" which is
 				required to proceed with the redirect. Verify your browser settings and add-ons, to check why your browser
 				 is not sending this referer.
 
diff --git a/plugins/Referers/API.php b/plugins/Referers/API.php
index 495a73f53fb6bf1cdf16b5b747e66e85e8b916da..b7a16365bd38b171685eb6d280d8e8eebab78f9a 100644
--- a/plugins/Referers/API.php
+++ b/plugins/Referers/API.php
@@ -302,7 +302,7 @@ class Piwik_Referers_API
     {
         $dataTable = $this->getDataTable(Piwik_Referers_Archiver::WEBSITES_RECORD_NAME, $idSite, $period, $date, $segment, $expanded = false, $idSubtable);
         // the htmlspecialchars_decode call is for BC for before 1.1
-        // as the Referer URL was previously encoded in the log tables, but is now recorded raw
+        // as the Referrer URL was previously encoded in the log tables, but is now recorded raw
         $dataTable->queueFilter('ColumnCallbackAddMetadata', array('label', 'url', create_function('$label', 'return htmlspecialchars_decode($label);')));
         $dataTable->queueFilter('ColumnCallbackReplace', array('label', 'Piwik_getPathFromUrl'));
         return $dataTable;
diff --git a/plugins/Referers/Referers.php b/plugins/Referers/Referers.php
index 7a6307769f9499a04a9e15e6ad4d1abd03029c17..738fda97ba2ef666302b4303b589f750768c53f3 100644
--- a/plugins/Referers/Referers.php
+++ b/plugins/Referers/Referers.php
@@ -207,7 +207,7 @@ class Piwik_Referers extends Plugin
     }
 
     /**
-     * Adds Referer widgets
+     * Adds Referrer widgets
      */
     function addWidgets()
     {
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index 3a891fe41463fee2b0ce9f78c577ac56d0f8ff27..18f22d82787c9f90b55a0d92cafe4d679be0558e 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -14,6 +14,7 @@ use Piwik\Access;
 use Piwik\Date;
 use Piwik\IP;
 use Piwik\Db;
+use Piwik\Tracker\Cache;
 use Piwik\Url;
 use Piwik\TaskScheduler;
 use Piwik\Site;
@@ -550,7 +551,7 @@ class Piwik_SitesManager_API
     private function postUpdateWebsite($idSite)
     {
         Site::clearCache();
-        Piwik_Tracker_Cache::regenerateCacheWebsiteAttributes($idSite);
+        Cache::regenerateCacheWebsiteAttributes($idSite);
     }
 
     /**
@@ -586,7 +587,7 @@ class Piwik_SitesManager_API
 					WHERE idsite = ?", $idSite);
 
         // we do not delete logs here on purpose (you can run these queries on the log_ tables to delete all data)
-        Piwik_Tracker_Cache::deleteCacheWebsiteAttributes($idSite);
+        Cache::deleteCacheWebsiteAttributes($idSite);
 
         Piwik_PostEvent('SitesManager.deleteSite', array($idSite));
     }
@@ -705,7 +706,7 @@ class Piwik_SitesManager_API
         Piwik::checkUserIsSuperUser();
         $excludedIps = $this->checkAndReturnExcludedIps($excludedIps);
         Piwik_SetOption(self::OPTION_EXCLUDED_IPS_GLOBAL, $excludedIps);
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
         return true;
     }
 
@@ -722,7 +723,7 @@ class Piwik_SitesManager_API
         Piwik::checkUserIsSuperUser();
         Piwik_SetOption(self::OPTION_SEARCH_KEYWORD_QUERY_PARAMETERS_GLOBAL, $searchKeywordParameters);
         Piwik_SetOption(self::OPTION_SEARCH_CATEGORY_QUERY_PARAMETERS_GLOBAL, $searchCategoryParameters);
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
         return true;
     }
 
@@ -791,7 +792,7 @@ class Piwik_SitesManager_API
         Piwik_SetOption(self::OPTION_EXCLUDED_USER_AGENTS_GLOBAL, $excludedUserAgents);
 
         // make sure tracker cache will reflect change
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
     }
 
     /**
@@ -820,7 +821,7 @@ class Piwik_SitesManager_API
         Piwik_SetOption(self::OPTION_SITE_SPECIFIC_USER_AGENT_EXCLUDE_ENABLE, $enabled);
 
         // make sure tracker cache will reflect change
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
     }
 
     /**
@@ -851,7 +852,7 @@ class Piwik_SitesManager_API
         Piwik_SetOption(self::OPTION_KEEP_URL_FRAGMENTS_GLOBAL, $enabled);
 
         // make sure tracker cache will reflect change
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
     }
 
     /**
@@ -866,7 +867,7 @@ class Piwik_SitesManager_API
         Piwik::checkUserIsSuperUser();
         $excludedQueryParameters = $this->checkAndReturnCommaSeparatedStringList($excludedQueryParameters);
         Piwik_SetOption(self::OPTION_EXCLUDED_QUERY_PARAMETERS_GLOBAL, $excludedQueryParameters);
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
         return true;
     }
 
diff --git a/plugins/Transitions/API.php b/plugins/Transitions/API.php
index e084c8173792001606480d2cb6d8bd9a84da21bd..947e946a22e85ac516a9a81a58cbd5a7aec7cdab 100644
--- a/plugins/Transitions/API.php
+++ b/plugins/Transitions/API.php
@@ -24,6 +24,7 @@ use Piwik\RankingQuery;
 use Piwik\Segment;
 use Piwik\SegmentExpression;
 use Piwik\Site;
+use Piwik\Tracker\Action;
 
 /**
  * @package Piwik_Transitions
@@ -158,7 +159,7 @@ class Piwik_Transitions_API
 
                 if ($id < 0) {
                     $unknown = Piwik_Actions_ArchivingHelper::getUnknownActionName(
-                        Piwik_Tracker_Action::TYPE_ACTION_NAME);
+                        Action::TYPE_ACTION_NAME);
 
                     if (trim($actionName) == trim($unknown)) {
                         $id = $actionsPlugin->getIdActionFromSegment('', 'idaction_name', SegmentExpression::MATCH_EQUAL, 'pageTitle');
@@ -240,7 +241,7 @@ class Piwik_Transitions_API
         $isTitle = ($actionType == 'title');
         if (!$isTitle) {
             // specific setup for page urls
-            $types[Piwik_Tracker_Action::TYPE_ACTION_URL] = 'followingPages';
+            $types[Action::TYPE_ACTION_URL] = 'followingPages';
             $dimension = 'IF( idaction_url IS NULL, idaction_name, idaction_url )';
             // site search referrers are logged with url=NULL
             // when we find one, we have to join on name
@@ -248,7 +249,7 @@ class Piwik_Transitions_API
             $selects = array('log_action.name', 'log_action.url_prefix', 'log_action.type');
         } else {
             // specific setup for page titles:
-            $types[Piwik_Tracker_Action::TYPE_ACTION_NAME] = 'followingPages';
+            $types[Action::TYPE_ACTION_NAME] = 'followingPages';
             // join log_action on name and url and pick depending on url type
             // the table joined on url is log_action1
             $joinLogActionColumn = array('idaction_url', 'idaction_name');
@@ -257,7 +258,7 @@ class Piwik_Transitions_API
 					' /* following site search */ . '
 					WHEN log_link_visit_action.idaction_url IS NULL THEN log_action2.idaction
 					' /* following page view: use page title */ . '
-					WHEN log_action1.type = ' . Piwik_Tracker_Action::TYPE_ACTION_URL . ' THEN log_action2.idaction
+					WHEN log_action1.type = ' . Action::TYPE_ACTION_URL . ' THEN log_action2.idaction
 					' /* following download or outlink: use url */ . '
 					ELSE log_action1.idaction
 				END
@@ -267,7 +268,7 @@ class Piwik_Transitions_API
 					' /* following site search */ . '
 					WHEN log_link_visit_action.idaction_url IS NULL THEN log_action2.name
 					' /* following page view: use page title */ . '
-					WHEN log_action1.type = ' . Piwik_Tracker_Action::TYPE_ACTION_URL . ' THEN log_action2.name
+					WHEN log_action1.type = ' . Action::TYPE_ACTION_URL . ' THEN log_action2.name
 					' /* following download or outlink: use url */ . '
 					ELSE log_action1.name
 				END AS `name`',
@@ -275,7 +276,7 @@ class Piwik_Transitions_API
                     ' /* following site search */ . '
 					WHEN log_link_visit_action.idaction_url IS NULL THEN log_action2.type
 					' /* following page view: use page title */ . '
-					WHEN log_action1.type = ' . Piwik_Tracker_Action::TYPE_ACTION_URL . ' THEN log_action2.type
+					WHEN log_action1.type = ' . Action::TYPE_ACTION_URL . ' THEN log_action2.type
 					' /* following download or outlink: use url */ . '
 					ELSE log_action1.type
 				END AS `type`',
@@ -284,9 +285,9 @@ class Piwik_Transitions_API
         }
 
         // these types are available for both titles and urls
-        $types[Piwik_Tracker_Action::TYPE_SITE_SEARCH] = 'followingSiteSearches';
-        $types[Piwik_Tracker_Action::TYPE_OUTLINK] = 'outlinks';
-        $types[Piwik_Tracker_Action::TYPE_DOWNLOAD] = 'downloads';
+        $types[Action::TYPE_SITE_SEARCH] = 'followingSiteSearches';
+        $types[Action::TYPE_OUTLINK] = 'outlinks';
+        $types[Action::TYPE_DOWNLOAD] = 'downloads';
 
         $rankingQuery = new RankingQuery($limitBeforeGrouping ? $limitBeforeGrouping : $this->limitBeforeGrouping);
         $rankingQuery->addLabelColumn(array('name', 'url_prefix'));
@@ -424,12 +425,12 @@ class Piwik_Transitions_API
         $rankingQuery->partitionResultIntoMultipleGroups('action_partition', array(0, 1, 2));
 
         $type = $this->getColumnTypeSuffix($actionType);
-        $mainActionType = Piwik_Tracker_Action::TYPE_ACTION_URL;
+        $mainActionType = Action::TYPE_ACTION_URL;
         $dimension = 'idaction_url_ref';
         $isTitle = $actionType == 'title';
 
         if ($isTitle) {
-            $mainActionType = Piwik_Tracker_Action::TYPE_ACTION_NAME;
+            $mainActionType = Action::TYPE_ACTION_NAME;
             $dimension = 'idaction_name_ref';
         }
 
@@ -439,7 +440,7 @@ class Piwik_Transitions_API
             'CASE WHEN log_link_visit_action.idaction_' . $type . '_ref = ' . intval($idaction) . ' THEN 1 ELSE 0 END AS `is_self`',
             'CASE
                 WHEN log_action.type = ' . $mainActionType . ' THEN 1
-                        WHEN log_action.type = ' . Piwik_Tracker_Action::TYPE_SITE_SEARCH . ' THEN 2
+                        WHEN log_action.type = ' . Action::TYPE_SITE_SEARCH . ' THEN 2
                         ELSE 0
                     END AS `action_partition`'
         );
@@ -513,13 +514,13 @@ class Piwik_Transitions_API
             $label = $pageRecord['name'];
             if (empty($label)) {
                 $label = Piwik_Actions_ArchivingHelper::getUnknownActionName(
-                    Piwik_Tracker_Action::TYPE_ACTION_NAME);
+                    Action::TYPE_ACTION_NAME);
             }
             return $label;
         } else if ($this->returnNormalizedUrls) {
             return $pageRecord['name'];
         } else {
-            return Piwik_Tracker_Action::reconstructNormalizedUrl(
+            return Action::reconstructNormalizedUrl(
                 $pageRecord['name'], $pageRecord['url_prefix']);
         }
     }
diff --git a/plugins/UserCountry/API.php b/plugins/UserCountry/API.php
index 113a1dc6c549c95a708a183ace7784f2eaa45ad2..62b472bbaa59cce4613a9c642f4153965da8cbad 100644
--- a/plugins/UserCountry/API.php
+++ b/plugins/UserCountry/API.php
@@ -12,6 +12,7 @@ use Piwik\Archive;
 use Piwik\Metrics;
 use Piwik\Piwik;
 use Piwik\DataTable;
+use Piwik\Tracker\Visit;
 
 /**
  * @see plugins/UserCountry/functions.php
@@ -75,7 +76,7 @@ class Piwik_UserCountry_API
         $dataTable = $this->getDataTable(Piwik_UserCountry_Archiver::REGION_RECORD_NAME, $idSite, $period, $date, $segment);
 
         $separator = Piwik_UserCountry_Archiver::LOCATION_SEPARATOR;
-        $unk = Piwik_Tracker_Visit::UNKNOWN_CODE;
+        $unk = Visit::UNKNOWN_CODE;
 
         // split the label and put the elements into the 'region' and 'country' metadata fields
         $dataTable->filter('ColumnCallbackAddMetadata',
@@ -117,7 +118,7 @@ class Piwik_UserCountry_API
         $dataTable = $this->getDataTable(Piwik_UserCountry_Archiver::CITY_RECORD_NAME, $idSite, $period, $date, $segment);
 
          $separator = Piwik_UserCountry_Archiver::LOCATION_SEPARATOR;
-        $unk = Piwik_Tracker_Visit::UNKNOWN_CODE;
+        $unk = Visit::UNKNOWN_CODE;
 
         // split the label and put the elements into the 'city_name', 'region', 'country',
         // 'lat' & 'long' metadata fields
diff --git a/plugins/UserCountry/GeoIPAutoUpdater.php b/plugins/UserCountry/GeoIPAutoUpdater.php
index d981e47b6d8188f3714401a0c70a8d94041ac73e..784a28ed7f6f6e275b58f0121e9bab2cdf6d659f 100755
--- a/plugins/UserCountry/GeoIPAutoUpdater.php
+++ b/plugins/UserCountry/GeoIPAutoUpdater.php
@@ -12,6 +12,8 @@ use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Date;
 use Piwik\Http;
+use Piwik\ScheduledTime\Monthly;
+use Piwik\ScheduledTime\Weekly;
 use Piwik\Unzip;
 use Piwik\ScheduledTask;
 
@@ -257,12 +259,12 @@ class Piwik_UserCountry_GeoIPAutoUpdater
         // get new DBs on Wednesday
         switch ($schedulePeriodStr) {
             case self::SCHEDULE_PERIOD_WEEKLY:
-                $schedulePeriod = new Piwik_ScheduledTime_Weekly();
+                $schedulePeriod = new Weekly();
                 $schedulePeriod->setDay(3);
                 break;
             case self::SCHEDULE_PERIOD_MONTHLY:
             default:
-                $schedulePeriod = new Piwik_ScheduledTime_Monthly();
+                $schedulePeriod = new Monthly();
                 $schedulePeriod->setDayOfWeek(3, 0);
                 break;
         }
diff --git a/plugins/UserCountry/LocationProvider.php b/plugins/UserCountry/LocationProvider.php
index 5fb24a4dd252a4244dc902eb854fdbf892b80ea5..40751b72475e08b8abcd0bd89192bbe2b8c48fd2 100755
--- a/plugins/UserCountry/LocationProvider.php
+++ b/plugins/UserCountry/LocationProvider.php
@@ -10,6 +10,7 @@
  */
 use Piwik\Common;
 use Piwik\IP;
+use Piwik\Tracker\Cache;
 
 /**
  * @see plugins/UserCountry/LocationProvider/Default.php
@@ -288,7 +289,7 @@ abstract class Piwik_UserCountry_LocationProvider
                 "Invalid provider ID '$providerId'. The provider either does not exist or is not available");
         }
         Piwik_SetOption(self::CURRENT_PROVIDER_OPTION_NAME, $providerId);
-        Piwik_Tracker_Cache::clearCacheGeneral();
+        Cache::clearCacheGeneral();
         return $provider;
     }
 
diff --git a/plugins/UserCountry/functions.php b/plugins/UserCountry/functions.php
index 04b8e443e7481f787ab67cd7f38238ec95fb3685..cdc408a273ddf1ce7b5dc55878e86b61b743a0a6 100644
--- a/plugins/UserCountry/functions.php
+++ b/plugins/UserCountry/functions.php
@@ -9,6 +9,7 @@
  * @package Piwik_UserCountry
  */
 use Piwik\DataTable;
+use Piwik\Tracker\Visit;
 
 /**
  * Return the flag image path for a given country
@@ -24,7 +25,7 @@ function Piwik_getFlagFromCode($code)
     if (file_exists($absolutePath)) {
         return $pathWithCode;
     }
-    return sprintf($pathInPiwik, Piwik_Tracker_Visit::UNKNOWN_CODE);
+    return sprintf($pathInPiwik, Visit::UNKNOWN_CODE);
 }
 
 /**
@@ -49,7 +50,7 @@ function Piwik_ContinentTranslate($label)
  */
 function Piwik_CountryTranslate($label)
 {
-    if ($label == Piwik_Tracker_Visit::UNKNOWN_CODE || $label == '') {
+    if ($label == Visit::UNKNOWN_CODE || $label == '') {
         return Piwik_Translate('General_Unknown');
     }
     return Piwik_Translate('UserCountry_country_' . $label);
@@ -118,7 +119,7 @@ function Piwik_UserCountry_getPrettyRegionName($label)
     list($regionCode, $countryCode) = explode(Piwik_UserCountry_Archiver::LOCATION_SEPARATOR, $label);
 
     $result = Piwik_UserCountry_LocationProvider_GeoIp::getRegionNameFromCodes($countryCode, $regionCode);
-    if ($countryCode != Piwik_Tracker_Visit::UNKNOWN_CODE && $countryCode != '') {
+    if ($countryCode != Visit::UNKNOWN_CODE && $countryCode != '') {
         $result .= ', ' . Piwik_CountryTranslate($countryCode);
     }
     return $result;
@@ -149,13 +150,13 @@ function Piwik_UserCountry_getPrettyCityName($label)
     $regionCode = $parts[1];
     $countryCode = @$parts[2];
 
-    if ($cityName == Piwik_Tracker_Visit::UNKNOWN_CODE || $cityName == '') {
+    if ($cityName == Visit::UNKNOWN_CODE || $cityName == '') {
         $cityName = Piwik_Translate('General_Unknown');
     }
 
     $result = $cityName;
-    if ($countryCode != Piwik_Tracker_Visit::UNKNOWN_CODE && $countryCode != '') {
-        if ($regionCode != '' && $regionCode != Piwik_Tracker_Visit::UNKNOWN_CODE) {
+    if ($countryCode != Visit::UNKNOWN_CODE && $countryCode != '') {
+        if ($regionCode != '' && $regionCode != Visit::UNKNOWN_CODE) {
             $regionName = Piwik_UserCountry_LocationProvider_GeoIp::getRegionNameFromCodes($countryCode, $regionCode);
             $result .= ', ' . $regionName;
         }
diff --git a/plugins/UserSettings/functions.php b/plugins/UserSettings/functions.php
index 86164eb5a1fc8eec6d5881df101354fbb5d0e371..41269b773bf12658d794717c6613a37801ee02f9 100644
--- a/plugins/UserSettings/functions.php
+++ b/plugins/UserSettings/functions.php
@@ -9,6 +9,7 @@
  * @package Piwik_UserSettings
  */
 use Piwik\Piwik;
+use Piwik\Tracker\Request;
 
 /**
  * @see libs/UserAgentParser/UserAgentParser.php
@@ -208,7 +209,7 @@ function Piwik_UserSettings_keepStrlenGreater($value)
 
 function Piwik_getScreenTypeFromResolution($resolution)
 {
-    if ($resolution === Piwik_Tracker_Request::UNKNOWN_RESOLUTION) {
+    if ($resolution === Request::UNKNOWN_RESOLUTION) {
         return $resolution;
     }
 
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php
index da629b1f95634809ba6497a146b003363944e5ea..9c9c1a776eb656c314183cdc4d7fde8ea9af6ca9 100644
--- a/plugins/UsersManager/API.php
+++ b/plugins/UsersManager/API.php
@@ -15,6 +15,7 @@ use Piwik\Access;
 use Piwik\Date;
 use Piwik\Site;
 use Piwik\Db;
+use Piwik\Tracker\Cache;
 
 /**
  * The UsersManager API lets you Manage Users and their permissions to access specific websites.
@@ -393,7 +394,7 @@ class Piwik_UsersManager_API
 
         // we reload the access list which doesn't yet take in consideration this new user
         Access::getInstance()->reloadAccess();
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
 
         Piwik_PostEvent('UsersManager.addUser', array($userLogin));
     }
@@ -450,7 +451,7 @@ class Piwik_UsersManager_API
             ),
             "login = '$userLogin'"
         );
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
 
         Piwik_PostEvent('UsersManager.updateUser', array($userLogin));
     }
@@ -475,7 +476,7 @@ class Piwik_UsersManager_API
 
         $this->deleteUserOnly($userLogin);
         $this->deleteUserAccess($userLogin);
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
     }
 
     /**
@@ -572,7 +573,7 @@ class Piwik_UsersManager_API
 
         // we reload the access list which doesn't yet take in consideration this new user access
         Access::getInstance()->reloadAccess();
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
     }
 
     /**
diff --git a/plugins/UsersManager/Controller.php b/plugins/UsersManager/Controller.php
index 9bc778c6ff2fc68b1cefd250d2c7380d893e64c8..bedf2bb5fb00f4580247820b38b819b55ccba037 100644
--- a/plugins/UsersManager/Controller.php
+++ b/plugins/UsersManager/Controller.php
@@ -13,6 +13,7 @@ use Piwik\Controller\Admin;
 use Piwik\Piwik;
 use Piwik\Common;
 use Piwik\Config;
+use Piwik\Tracker\IgnoreCookie;
 use Piwik\View;
 use Piwik\Url;
 use Piwik\Site;
@@ -166,7 +167,7 @@ class Piwik_UsersManager_Controller extends Admin
             'year'       => Piwik_Translate('General_CurrentYear'),
         );
 
-        $view->ignoreCookieSet = Piwik_Tracker_IgnoreCookie::isIgnoreCookieFound();
+        $view->ignoreCookieSet = IgnoreCookie::isIgnoreCookieFound();
         $this->initViewAnonymousUserSettings($view);
         $view->piwikHost = Url::getCurrentHost();
         $this->setBasicVariablesView($view);
@@ -179,7 +180,7 @@ class Piwik_UsersManager_Controller extends Admin
         Piwik::checkUserIsNotAnonymous();
         $this->checkTokenInUrl();
 
-        Piwik_Tracker_IgnoreCookie::setIgnoreCookie();
+        IgnoreCookie::setIgnoreCookie();
         Piwik::redirectToModule('UsersManager', 'userSettings', array('token_auth' => false));
     }
 
diff --git a/tests/LocalTracker.php b/tests/LocalTracker.php
index 321f0171c4792722e5525619891dd63b23d9c4a3..3a7463ece291e883e3a2347cafa777a85eacabed 100755
--- a/tests/LocalTracker.php
+++ b/tests/LocalTracker.php
@@ -2,6 +2,7 @@
 
 use Piwik\Config;
 use Piwik\Tracker;
+use Piwik\Tracker\Cache;
 
 $GLOBALS['PIWIK_TRACKER_DEBUG'] = false;
 $GLOBALS['PIWIK_TRACKER_DEBUG_FORCE_SCHEDULED_TASKS'] = false;
@@ -43,7 +44,7 @@ class Piwik_LocalTracker extends PiwikTracker
         }
 
         // unset cached values
-        Piwik_Tracker_Cache::$trackerCache = null;
+        Cache::$trackerCache = null;
         Tracker::setForceIp(null);
         Tracker::setForceDateTime(null);
         Tracker::setForceVisitorId(null);
diff --git a/tests/PHPUnit/Core/DataTableTest.php b/tests/PHPUnit/Core/DataTableTest.php
index 5568c259e2b87b966552a03347d8ae146e0ac013..d8e825ef88648200398f3166d53d3d485f7c5395 100644
--- a/tests/PHPUnit/Core/DataTableTest.php
+++ b/tests/PHPUnit/Core/DataTableTest.php
@@ -304,12 +304,14 @@ class DataTableTest extends PHPUnit_Framework_TestCase
 
     public function test_unserializeWorks_WhenDataTableFormatPriorPiwik2()
     {
+        $serializedDatatable = '';
         // Prior Piwik 2.0, we didn't use namespaces. Some
-        $oldSerialized = 'O:19:"Piwik_DataTable_Row":1:{s:1:"c";a:3:{i:0;a:8:{s:8:"test_int";i:150;s:10:"test_float";d:150;s:11:"test_float2";d:14.5;
-        s:14:"test_stringint";i:150;i:0;s:4:"toto";s:17:"integerArrayToSum";a:3:{i:1;i:6;i:2;d:15.5;i:3;a:2:{i:2;i:7;i:1;i:2;}}s:11:"test_float3";d:1.5;s:4:"test";s:11:"string fake";}i:1;a:2:{s:4:"logo";s:9:"piwik.png";s:5:"super";a:1:{i:0;s:39:"this column has an array value, amazing";}}i:3;N;}}';
-
+        require PIWIK_INCLUDE_PATH . "/tests/resources/pre-Piwik2-DataTable-archived.php";
 
+        $this->assertTrue(strlen($serializedDatatable) > 1000);
 
+        $table = unserialize($serializedDatatable);
+        $this->assertTrue($table[0] instanceof \Piwik\DataTable\Row);
     }
 
     /**
diff --git a/tests/PHPUnit/Core/ReleaseCheckListTest.php b/tests/PHPUnit/Core/ReleaseCheckListTest.php
index 116ddae02cdcbc08e025fc197509925a64f0b80c..1d12346cca10132850a2433a0ac7faf43a6cd1c1 100644
--- a/tests/PHPUnit/Core/ReleaseCheckListTest.php
+++ b/tests/PHPUnit/Core/ReleaseCheckListTest.php
@@ -1,6 +1,7 @@
 <?php
 use Piwik\Piwik;
 use Piwik\Common;
+use Piwik\Tracker\Db;
 
 /**
  * Piwik - Open source web analytics
@@ -91,7 +92,7 @@ class ReleaseCheckListTest extends PHPUnit_Framework_TestCase
     public function testProfilingDisabledInProduction()
     {
         require_once 'Tracker/Db.php';
-        $this->assertTrue(Piwik_Tracker_Db::isProfilingEnabled() === false, 'SQL profiler should be disabled in production! See Piwik_Tracker_Db::$profiling');
+        $this->assertTrue(Db::isProfilingEnabled() === false, 'SQL profiler should be disabled in production! See Db::$profiling');
     }
 
     /**
diff --git a/tests/PHPUnit/Core/ScheduledTime/DailyTest.php b/tests/PHPUnit/Core/ScheduledTime/DailyTest.php
index 982e19cd122548648849b007bc14054413dd5ccf..501e1adb34c608a58761e85f84a4e124c4a72fcd 100644
--- a/tests/PHPUnit/Core/ScheduledTime/DailyTest.php
+++ b/tests/PHPUnit/Core/ScheduledTime/DailyTest.php
@@ -5,6 +5,8 @@
  * @link http://piwik.org
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
+use Piwik\ScheduledTime\Daily;
+
 class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
 {
     private static $_JANUARY_01_1971_09_00_00;
@@ -24,7 +26,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests invalid call to setHour on Piwik_ScheduledTime_Daily
+     * Tests invalid call to setHour on Daily
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Daily
@@ -32,7 +34,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
     public function testSetHourScheduledTimeDailyNegative()
     {
         try {
-            $dailySchedule = new Piwik_ScheduledTime_Daily();
+            $dailySchedule = new Daily();
             $dailySchedule->setHour(-1);
 
         } catch (Exception $e) {
@@ -42,7 +44,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests invalid call to setHour on Piwik_ScheduledTime_Daily
+     * Tests invalid call to setHour on Daily
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Daily
@@ -50,7 +52,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
     public function testSetHourScheduledTimeDailyOver24()
     {
         try {
-            $dailySchedule = new Piwik_ScheduledTime_Daily();
+            $dailySchedule = new Daily();
             $dailySchedule->setHour(25);
         } catch (Exception $e) {
             return;
@@ -59,7 +61,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests forbidden call to setDay on Piwik_ScheduledTime_Daily
+     * Tests forbidden call to setDay on Daily
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Daily
@@ -67,7 +69,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
     public function testSetDayScheduledTimeDaily()
     {
         try {
-            $dailySchedule = new Piwik_ScheduledTime_Daily();
+            $dailySchedule = new Daily();
             $dailySchedule->setDay(1);
         } catch (Exception $e) {
             return;
@@ -76,7 +78,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests getRescheduledTime on Piwik_ScheduledTime_Daily with unspecified hour
+     * Tests getRescheduledTime on Daily with unspecified hour
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Daily
@@ -93,7 +95,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Saturday January 2 1971 00:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Daily', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Daily', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_01_1971_09_10_00));
@@ -101,7 +103,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests getRescheduledTime on Piwik_ScheduledTime_Daily with specified hour
+     * Tests getRescheduledTime on Daily with specified hour
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Daily
@@ -118,7 +120,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Saturday January 2 1971 09:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Daily', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Daily', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_01_1971_09_00_00));
@@ -135,7 +137,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Saturday January 2 1971 09:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Daily', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Daily', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_01_1971_12_10_00));
@@ -152,7 +154,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Saturday January 2 1971 00:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Daily', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Daily', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_01_1971_12_10_00));
diff --git a/tests/PHPUnit/Core/ScheduledTime/HourlyTest.php b/tests/PHPUnit/Core/ScheduledTime/HourlyTest.php
index b0c808fe5e494632c9553fc04d452944198b2990..43b422739fabef42c52c9e5f4d77dece49ba0106 100644
--- a/tests/PHPUnit/Core/ScheduledTime/HourlyTest.php
+++ b/tests/PHPUnit/Core/ScheduledTime/HourlyTest.php
@@ -5,6 +5,8 @@
  * @link http://piwik.org
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
+use Piwik\ScheduledTime\Hourly;
+
 class ScheduledTime_HourlyTest extends PHPUnit_Framework_TestCase
 {
     private static $_JANUARY_01_1971_09_00_00;
@@ -20,7 +22,7 @@ class ScheduledTime_HourlyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests forbidden call to setHour on Piwik_ScheduledTime_Hourly
+     * Tests forbidden call to setHour on Hourly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Hourly
@@ -28,7 +30,7 @@ class ScheduledTime_HourlyTest extends PHPUnit_Framework_TestCase
     public function testSetHourScheduledTimeHourly()
     {
         try {
-            $hourlySchedule = new Piwik_ScheduledTime_Hourly();
+            $hourlySchedule = new Hourly();
             $hourlySchedule->setHour(0);
         } catch (Exception $e) {
             return;
@@ -37,7 +39,7 @@ class ScheduledTime_HourlyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests forbidden call to setDay on Piwik_ScheduledTime_Hourly
+     * Tests forbidden call to setDay on Hourly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Hourly
@@ -45,7 +47,7 @@ class ScheduledTime_HourlyTest extends PHPUnit_Framework_TestCase
     public function testSetDayScheduledTimeHourly()
     {
         try {
-            $hourlySchedule = new Piwik_ScheduledTime_Hourly();
+            $hourlySchedule = new Hourly();
             $hourlySchedule->setDay(1);
         } catch (Exception $e) {
             return;
@@ -54,7 +56,7 @@ class ScheduledTime_HourlyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests getRescheduledTime on Piwik_ScheduledTime_Hourly
+     * Tests getRescheduledTime on Hourly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Hourly
@@ -70,7 +72,7 @@ class ScheduledTime_HourlyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Friday January 1 1971 10:00:00 GMT
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Hourly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Hourly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_01_1971_09_00_00));
@@ -85,7 +87,7 @@ class ScheduledTime_HourlyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Friday January 1 1971 10:00:00 GMT
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Hourly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Hourly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_01_1971_09_10_00));
diff --git a/tests/PHPUnit/Core/ScheduledTime/MonthlyTest.php b/tests/PHPUnit/Core/ScheduledTime/MonthlyTest.php
index 8bab11da43d87fe18bcf02e7bb2e509250c201ab..00f61917dfe42a1a747e7f8d37e62a01aa7bd853 100644
--- a/tests/PHPUnit/Core/ScheduledTime/MonthlyTest.php
+++ b/tests/PHPUnit/Core/ScheduledTime/MonthlyTest.php
@@ -5,6 +5,8 @@
  * @link http://piwik.org
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
+use Piwik\ScheduledTime\Monthly;
+
 class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
 {
     private static $_JANUARY_01_1971_09_00_00;
@@ -32,7 +34,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests invalid call to setHour on Piwik_ScheduledTime_Monthly
+     * Tests invalid call to setHour on Monthly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Monthly
@@ -40,7 +42,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
     public function testSetHourScheduledTimeMonthlyNegative()
     {
         try {
-            $monthlySchedule = new Piwik_ScheduledTime_Monthly();
+            $monthlySchedule = new Monthly();
             $monthlySchedule->setHour(-1);
         } catch (Exception $e) {
             return;
@@ -49,7 +51,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests invalid call to setHour on Piwik_ScheduledTime_Monthly
+     * Tests invalid call to setHour on Monthly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Monthly
@@ -57,7 +59,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
     public function testSetHourScheduledTimMonthlyOver24()
     {
         try {
-            $monthlySchedule = new Piwik_ScheduledTime_Monthly();
+            $monthlySchedule = new Monthly();
             $monthlySchedule->setHour(25);
         } catch (Exception $e) {
             return;
@@ -66,7 +68,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests invalid call to setDay on Piwik_ScheduledTime_Monthly
+     * Tests invalid call to setDay on Monthly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Monthly
@@ -74,7 +76,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
     public function testSetDayScheduledTimeMonthlyDay0()
     {
         try {
-            $monthlySchedule = new Piwik_ScheduledTime_Monthly();
+            $monthlySchedule = new Monthly();
             $monthlySchedule->setDay(0);
         } catch (Exception $e) {
             return;
@@ -83,7 +85,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests invalid call to setDay on Piwik_ScheduledTime_Monthly
+     * Tests invalid call to setDay on Monthly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Monthly
@@ -91,7 +93,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
     public function testSetDayScheduledTimeMonthlyOver31()
     {
         try {
-            $monthlySchedule = new Piwik_ScheduledTime_Monthly();
+            $monthlySchedule = new Monthly();
             $monthlySchedule->setDay(32);
         } catch (Exception $e) {
             return;
@@ -100,7 +102,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests getRescheduledTime on Piwik_ScheduledTime_Monthly with unspecified hour and unspecified day
+     * Tests getRescheduledTime on Monthly with unspecified hour and unspecified day
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Monthly
@@ -118,7 +120,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Monday February 1 1971 00:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Monthly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Monthly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_01_1971_09_00_00));
@@ -135,7 +137,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Monday February 1 1971 00:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Monthly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Monthly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_05_1971_09_00_00));
@@ -144,7 +146,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
 
 
     /**
-     * Tests getRescheduledTime on Piwik_ScheduledTime_Monthly with unspecified hour and specified day
+     * Tests getRescheduledTime on Monthly with unspecified hour and specified day
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Monthly
@@ -153,7 +155,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
      */
     public function testGetRescheduledTimeMonthlyUnspecifiedHourSpecifiedDay($currentTime, $day, $expected)
     {
-        $mock = $this->getMock('Piwik_ScheduledTime_Monthly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Monthly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$$currentTime));
@@ -226,7 +228,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
      */
     public function testMonthlyDayOfWeek()
     {
-        $mock = $this->getMock('Piwik_ScheduledTime_Monthly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Monthly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_15_1971_09_00_00));
@@ -246,7 +248,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase
      */
     public function testMonthlyDayOfWeekInvalid($day, $week)
     {
-        $mock = $this->getMock('Piwik_ScheduledTime_Monthly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Monthly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_15_1971_09_00_00));
diff --git a/tests/PHPUnit/Core/ScheduledTime/WeeklyTest.php b/tests/PHPUnit/Core/ScheduledTime/WeeklyTest.php
index 6812bc90c0fe3bd16dbe291d4244d0c064f4bfbe..a5a6913db1aeaa4ee703bc4ba15bdaffd43a7104 100644
--- a/tests/PHPUnit/Core/ScheduledTime/WeeklyTest.php
+++ b/tests/PHPUnit/Core/ScheduledTime/WeeklyTest.php
@@ -5,6 +5,8 @@
  * @link http://piwik.org
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
+use Piwik\ScheduledTime\Weekly;
+
 class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
 {
     private static $_JANUARY_01_1971_09_10_00;
@@ -26,7 +28,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests invalid call to setHour on Piwik_ScheduledTime_Weekly
+     * Tests invalid call to setHour on Weekly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Weekly
@@ -34,7 +36,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     public function testSetHourScheduledTimeWeeklyNegative()
     {
         try {
-            $weeklySchedule = new Piwik_ScheduledTime_Weekly();
+            $weeklySchedule = new Weekly();
             $weeklySchedule->setHour(-1);
         } catch (Exception $e) {
             return;
@@ -43,7 +45,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests invalid call to setHour on Piwik_ScheduledTime_Weekly
+     * Tests invalid call to setHour on Weekly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Weekly
@@ -51,7 +53,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     public function testSetHourScheduledTimeWeeklyOver24()
     {
         try {
-            $weeklySchedule = new Piwik_ScheduledTime_Weekly();
+            $weeklySchedule = new Weekly();
             $weeklySchedule->setHour(25);
         } catch (Exception $e) {
             return;
@@ -60,7 +62,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests invalid call to setDay on Piwik_ScheduledTime_Weekly
+     * Tests invalid call to setDay on Weekly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Weekly
@@ -68,7 +70,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     public function testSetDayScheduledTimeWeeklyDay0()
     {
         try {
-            $weeklySchedule = new Piwik_ScheduledTime_Weekly();
+            $weeklySchedule = new Weekly();
             $weeklySchedule->setDay(0);
         } catch (Exception $e) {
             return;
@@ -77,7 +79,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests invalid call to setDay on Piwik_ScheduledTime_Weekly
+     * Tests invalid call to setDay on Weekly
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Weekly
@@ -85,7 +87,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     public function testSetDayScheduledTimeWeeklyOver7()
     {
         try {
-            $weeklySchedule = new Piwik_ScheduledTime_Weekly();
+            $weeklySchedule = new Weekly();
             $weeklySchedule->setDay(8);
         } catch (Exception $e) {
             return;
@@ -94,7 +96,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests getRescheduledTime on Piwik_ScheduledTime_Weekly with unspecified hour and unspecified day
+     * Tests getRescheduledTime on Weekly with unspecified hour and unspecified day
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Weekly
@@ -112,7 +114,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Monday January 4 1971 00:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Weekly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Weekly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_01_1971_09_10_00));
@@ -120,7 +122,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests getRescheduledTime on Piwik_ScheduledTime_Weekly with specified hour and unspecified day
+     * Tests getRescheduledTime on Weekly with specified hour and unspecified day
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Weekly
@@ -138,7 +140,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Monday January 4 1971 09:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Weekly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Weekly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_01_1971_09_10_00));
@@ -147,7 +149,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
     }
 
     /**
-     * Tests getRescheduledTime on Piwik_ScheduledTime_Weekly with unspecified hour and specified day
+     * Tests getRescheduledTime on Weekly with unspecified hour and specified day
      * @group Core
      * @group ScheduledTime
      * @group ScheduledTime_Weekly
@@ -165,7 +167,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Monday January 11 1971 00:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Weekly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Weekly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_04_1971_09_00_00));
@@ -183,7 +185,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Monday January 11 1971 00:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Weekly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Weekly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_05_1971_09_00_00));
@@ -201,7 +203,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase
          * Expected :
          *  getRescheduledTime returns Friday January 15 1971 00:00:00 UTC
          */
-        $mock = $this->getMock('Piwik_ScheduledTime_Weekly', array('getTime'));
+        $mock = $this->getMock('\Piwik\ScheduledTime\Weekly', array('getTime'));
         $mock->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue(self::$_JANUARY_04_1971_09_00_00));
diff --git a/tests/PHPUnit/Core/TaskSchedulerTest.php b/tests/PHPUnit/Core/TaskSchedulerTest.php
index 88db5b2db43a5282816e44d3a87fa74a61781c85..ae6a80ba4bbc6ce7cf20607dd8e5866d0572f9aa 100644
--- a/tests/PHPUnit/Core/TaskSchedulerTest.php
+++ b/tests/PHPUnit/Core/TaskSchedulerTest.php
@@ -6,6 +6,7 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
 use Piwik\EventDispatcher;
+use Piwik\ScheduledTime\Daily;
 use Piwik\TaskScheduler;
 use Piwik\ScheduledTask;
 
@@ -179,7 +180,7 @@ class TaskSchedulerTest extends PHPUnit_Framework_TestCase
 
         $this->assertNotEmpty($executeTask->invoke(
             new TaskScheduler(),
-            new ScheduledTask ($mock, $methodName, $parameterValue, new Piwik_ScheduledTime_Daily())
+            new ScheduledTask ($mock, $methodName, $parameterValue, new Daily())
         ));
     }
 
@@ -190,7 +191,7 @@ class TaskSchedulerTest extends PHPUnit_Framework_TestCase
     {
         $systemTime = time();
 
-        $dailySchedule = $this->getMock('Piwik_ScheduledTime_Daily', array('getTime'));
+        $dailySchedule = $this->getMock('\Piwik\ScheduledTime\Daily', array('getTime'));
         $dailySchedule->expects($this->any())
             ->method('getTime')
             ->will($this->returnValue($systemTime));
diff --git a/tests/PHPUnit/Core/Tracker/ActionTest.php b/tests/PHPUnit/Core/Tracker/ActionTest.php
index 95a8fee7b46fed572ab2dfbc7550bd8bf620aefd..f04bfafea558f9edb01e2b5758179f618bb99626 100644
--- a/tests/PHPUnit/Core/Tracker/ActionTest.php
+++ b/tests/PHPUnit/Core/Tracker/ActionTest.php
@@ -1,6 +1,8 @@
 <?php
 use Piwik\Config;
 use Piwik\Access;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
 use Piwik\Translate;
 
 /**
@@ -115,7 +117,7 @@ class Tracker_ActionTest extends DatabaseTestCase
             $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
             $excludedIps = '', $excludedQueryParameters = '', $timezone = null, $currency = null,
             $group = null, $startDate = null, $excludedUserAgents = null, $keepURLFragments = 1);
-        $this->assertEquals($filteredUrl[0], Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idSite));
+        $this->assertEquals($filteredUrl[0], Action::excludeQueryParametersFromUrl($url, $idSite));
     }
 
     public function getTestUrlsHashtag()
@@ -140,7 +142,7 @@ class Tracker_ActionTest extends DatabaseTestCase
      */
     public function testRemoveTrailingHashtag($url, $expectedUrl)
     {
-        $this->assertEquals(Piwik_Tracker_Action::reconstructNormalizedUrl($url, Piwik_Tracker_Action::$urlPrefixMap['http://']), $expectedUrl);
+        $this->assertEquals(Action::reconstructNormalizedUrl($url, Action::$urlPrefixMap['http://']), $expectedUrl);
     }
 
 
@@ -159,7 +161,7 @@ class Tracker_ActionTest extends DatabaseTestCase
             $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
             $excludedIps = '', $excludedQueryParameters, $timezone = null, $currency = null,
             $group = null, $startDate = null, $excludedUserAgents = null, $keepURLFragments = 1);
-        $this->assertEquals($filteredUrl[1], Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idSite));
+        $this->assertEquals($filteredUrl[1], Action::excludeQueryParametersFromUrl($url, $idSite));
     }
 
     /**
@@ -180,7 +182,7 @@ class Tracker_ActionTest extends DatabaseTestCase
             $excludedIps = '', $excludedQueryParameters, $timezone = null, $currency = null,
             $group = null, $startDate = null, $excludedUserAgents = null, $keepURLFragments = 1);
         Piwik_SitesManager_API::getInstance()->setGlobalExcludedQueryParameters($excludedGlobalParameters);
-        $this->assertEquals($filteredUrl[1], Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idSite));
+        $this->assertEquals($filteredUrl[1], Action::excludeQueryParametersFromUrl($url, $idSite));
     }
 
 
@@ -192,21 +194,21 @@ class Tracker_ActionTest extends DatabaseTestCase
                 'request'  => array('link' => 'http://example.org'),
                 'expected' => array('name' => null,
                                     'url'  => 'http://example.org',
-                                    'type' => Piwik_Tracker_Action::TYPE_OUTLINK),
+                                    'type' => Action::TYPE_OUTLINK),
             ),
             // outlinks with custom name
             array(
                 'request'  => array('link' => 'http://example.org', 'action_name' => 'Example.org'),
                 'expected' => array('name' => 'Example.org',
                                     'url'  => 'http://example.org',
-                                    'type' => Piwik_Tracker_Action::TYPE_OUTLINK),
+                                    'type' => Action::TYPE_OUTLINK),
             ),
             // keep the case in urls, but trim
             array(
                 'request'  => array('link' => '    http://example.org/Category/Test/      '),
                 'expected' => array('name' => null,
                                     'url'  => 'http://example.org/Category/Test/',
-                                    'type' => Piwik_Tracker_Action::TYPE_OUTLINK),
+                                    'type' => Action::TYPE_OUTLINK),
             ),
 
             // trim the custom name
@@ -214,7 +216,7 @@ class Tracker_ActionTest extends DatabaseTestCase
                 'request'  => array('link' => '    http://example.org/Category/Test/      ', 'action_name' => '  Example dot org '),
                 'expected' => array('name' => 'Example dot org',
                                     'url'  => 'http://example.org/Category/Test/',
-                                    'type' => Piwik_Tracker_Action::TYPE_OUTLINK),
+                                    'type' => Action::TYPE_OUTLINK),
             ),
 
             // downloads
@@ -222,7 +224,7 @@ class Tracker_ActionTest extends DatabaseTestCase
                 'request'  => array('download' => 'http://example.org/*$test.zip'),
                 'expected' => array('name' => null,
                                     'url'  => 'http://example.org/*$test.zip',
-                                    'type' => Piwik_Tracker_Action::TYPE_DOWNLOAD),
+                                    'type' => Action::TYPE_DOWNLOAD),
             ),
 
             // downloads with custom name
@@ -230,7 +232,7 @@ class Tracker_ActionTest extends DatabaseTestCase
                 'request'  => array('download' => 'http://example.org/*$test.zip', 'action_name' => 'Download test.zip'),
                 'expected' => array('name' => 'Download test.zip',
                                     'url'  => 'http://example.org/*$test.zip',
-                                    'type' => Piwik_Tracker_Action::TYPE_DOWNLOAD),
+                                    'type' => Action::TYPE_DOWNLOAD),
             ),
 
             // keep the case and multiple / in urls
@@ -238,7 +240,7 @@ class Tracker_ActionTest extends DatabaseTestCase
                 'request'  => array('download' => 'http://example.org/CATEGORY/test///test.pdf'),
                 'expected' => array('name' => null,
                                     'url'  => 'http://example.org/CATEGORY/test///test.pdf',
-                                    'type' => Piwik_Tracker_Action::TYPE_DOWNLOAD),
+                                    'type' => Action::TYPE_DOWNLOAD),
             ),
 
             // page view
@@ -246,71 +248,71 @@ class Tracker_ActionTest extends DatabaseTestCase
                 'request'  => array('url' => 'http://example.org/'),
                 'expected' => array('name' => null,
                                     'url'  => 'http://example.org/',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             array(
                 'request'  => array('url' => 'http://example.org/', 'action_name' => 'Example.org Website'),
                 'expected' => array('name' => 'Example.org Website',
                                     'url'  => 'http://example.org/',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             array(
                 'request'  => array('url' => 'http://example.org/CATEGORY/'),
                 'expected' => array('name' => null,
                                     'url'  => 'http://example.org/CATEGORY/',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             array(
                 'request'  => array('url' => 'http://example.org/CATEGORY/TEST', 'action_name' => 'Example.org / Category / test /'),
                 'expected' => array('name' => 'Example.org/Category/test',
                                     'url'  => 'http://example.org/CATEGORY/TEST',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             array(
                 'request'  => array('url' => 'http://example.org/?2,123'),
                 'expected' => array('name' => null,
                                     'url'  => 'http://example.org/?2,123',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
 
             // empty request
             array(
                 'request'  => array(),
                 'expected' => array('name' => null, 'url' => '',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             array(
                 'request'  => array('name' => null, 'url' => "\n"),
                 'expected' => array('name' => null, 'url' => '',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             array(
                 'request'  => array('url'         => 'http://example.org/category/',
                                     'action_name' => 'custom name with/one delimiter/two delimiters/'),
                 'expected' => array('name' => 'custom name with/one delimiter/two delimiters',
                                     'url'  => 'http://example.org/category/',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             array(
                 'request'  => array('url'         => 'http://example.org/category/',
                                     'action_name' => 'http://custom action name look like url/'),
                 'expected' => array('name' => 'http:/custom action name look like url',
                                     'url'  => 'http://example.org/category/',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             // testing: delete tab, trimmed, not strtolowered
             array(
                 'request'  => array('url' => "http://example.org/category/test///test  wOw      "),
                 'expected' => array('name' => null,
                                     'url'  => 'http://example.org/category/test///test  wOw',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             // testing: inclusion of zero values in action name
             array(
                 'request'  => array('url' => "http://example.org/category/1/0/t/test"),
                 'expected' => array('name' => null,
                                     'url'  => 'http://example.org/category/1/0/t/test',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             // testing: action name ("Test &hellip;") - expect decoding of some html entities
             array(
@@ -318,7 +320,7 @@ class Tracker_ActionTest extends DatabaseTestCase
                                     'action_name' => "Test &hellip;"),
                 'expected' => array('name' => 'Test …',
                                     'url'  => 'http://example.org/ACTION/URL',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             // testing: action name ("Special &amp; chars") - expect no conversion of html special chars
             array(
@@ -326,7 +328,7 @@ class Tracker_ActionTest extends DatabaseTestCase
                                     'action_name' => "Special &amp; chars"),
                 'expected' => array('name' => 'Special &amp; chars',
                                     'url'  => 'http://example.org/ACTION/URL',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             // testing: action name ("Tést") - handle wide character
             array(
@@ -334,7 +336,7 @@ class Tracker_ActionTest extends DatabaseTestCase
                                     'action_name' => "Tést"),
                 'expected' => array('name' => 'Tést',
                                     'url'  => 'http://example.org/ACTION/URL',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             // testing: action name ("Tést") - handle UTF-8 byte sequence
             array(
@@ -342,7 +344,7 @@ class Tracker_ActionTest extends DatabaseTestCase
                                     'action_name' => "T\xc3\xa9st"),
                 'expected' => array('name' => 'Tést',
                                     'url'  => 'http://example.org/ACTION/URL',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
             // testing: action name ("Tést") - invalid UTF-8 (e.g., ISO-8859-1) is not handled
             array(
@@ -350,7 +352,7 @@ class Tracker_ActionTest extends DatabaseTestCase
                                     'action_name' => "T\xe9st"),
                 'expected' => array('name' => version_compare(PHP_VERSION, '5.2.5') === -1 ? 'T\xe9st' : 'Tést',
                                     'url'  => 'http://example.org/ACTION/URL',
-                                    'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                                    'type' => Action::TYPE_ACTION_URL),
             ),
         );
     }
@@ -366,14 +368,14 @@ class Tracker_ActionTest extends DatabaseTestCase
         $this->setUpRootAccess();
         $idSite = Piwik_SitesManager_API::getInstance()->addSite("site1", array('http://example.org'));
         $request['idsite'] = $idSite;
-        $request = new Piwik_Tracker_Request($request);
+        $request = new Request($request);
         $action = new Test_Piwik_TrackerAction_extractUrlAndActionNameFromRequest($request);
 
         $this->assertEquals($action->public_extractUrlAndActionNameFromRequest(), $expected);
     }
 }
 
-class Test_Piwik_TrackerAction_extractUrlAndActionNameFromRequest extends Piwik_Tracker_Action
+class Test_Piwik_TrackerAction_extractUrlAndActionNameFromRequest extends Action
 {
     public function public_extractUrlAndActionNameFromRequest()
     {
diff --git a/tests/PHPUnit/Core/Tracker/VisitTest.php b/tests/PHPUnit/Core/Tracker/VisitTest.php
index 23eed1d310c62a4a12d3ed6fccb2db5569191614..dd5490f2ff4bfcdbd5552efd2f5f72226bf15fa5 100644
--- a/tests/PHPUnit/Core/Tracker/VisitTest.php
+++ b/tests/PHPUnit/Core/Tracker/VisitTest.php
@@ -7,6 +7,8 @@
  */
 use Piwik\Access;
 use Piwik\IP;
+use Piwik\Tracker\VisitExcluded;
+use Piwik\Tracker\Request;
 
 class Tracker_VisitTest extends DatabaseTestCase
 {
@@ -75,13 +77,13 @@ class Tracker_VisitTest extends DatabaseTestCase
         $idsite = Piwik_SitesManager_API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 0,
             $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $excludedIp);
 
-        $request = new Piwik_Tracker_Request(array('idsite' => $idsite));
+        $request = new Request(array('idsite' => $idsite));
 
         // test that IPs within the range, or the given IP, are excluded
         foreach ($tests as $ip => $expected) {
             $testIpIsExcluded = IP::P2N($ip);
 
-            $excluded = new Test_Piwik_Tracker_VisitExcluded_public($request, $testIpIsExcluded);
+            $excluded = new VisitExcluded_public($request, $testIpIsExcluded);
             $this->assertSame($expected, $excluded->public_isVisitorIpExcluded($testIpIsExcluded));
         }
     }
@@ -126,18 +128,18 @@ class Tracker_VisitTest extends DatabaseTestCase
             $excludedQueryParameters = null, $timezone = null, $currency = null, $group = null, $startDate = null,
             $excludedUserAgent);
 
-        $request = new Piwik_Tracker_Request(array('idsite' => $idsite));
+        $request = new Request(array('idsite' => $idsite));
         
         // test that user agents that contain excluded user agent strings are excluded
         foreach ($tests as $ua => $expected) {
-            $excluded = new Test_Piwik_Tracker_VisitExcluded_public($request, $ip = false, $ua);
+            $excluded = new VisitExcluded_public($request, $ip = false, $ua);
             
             $this->assertSame($expected, $excluded->public_isUserAgentExcluded($ua), "Result if isUserAgentExcluded('$ua') was not " . ($expected ? 'true' : 'false') . ".");
         }
     }
 }
 
-class Test_Piwik_Tracker_VisitExcluded_public extends Piwik_Tracker_VisitExcluded
+class VisitExcluded_public extends VisitExcluded
 {
     public function public_isVisitorIpExcluded($ip)
     {
diff --git a/tests/PHPUnit/Core/UnzipTest.php b/tests/PHPUnit/Core/UnzipTest.php
index 221c42099176989d0ca6427777f64f28546c9772..a0865e6e4662fe454f369f9f217055d7ed1a1448 100644
--- a/tests/PHPUnit/Core/UnzipTest.php
+++ b/tests/PHPUnit/Core/UnzipTest.php
@@ -6,6 +6,10 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
 use Piwik\Unzip;
+use Piwik\Unzip\Gzip;
+use Piwik\Unzip\PclZip;
+use Piwik\Unzip\ZipArchive;
+use Piwik\Unzip\Tar;
 
 class UnzipTest extends PHPUnit_Framework_TestCase
 {
@@ -29,7 +33,7 @@ class UnzipTest extends PHPUnit_Framework_TestCase
             $this->assertFileNotExists(dirname(__FILE__) . '/../../tests/' . $test . '.txt');
             unlink($extractDir . $test . '.txt');
 
-            $unzip = new Piwik_Unzip_ZipArchive($filename);
+            $unzip = new ZipArchive($filename);
             $res = $unzip->extract($extractDir);
             $this->assertEquals(1, count($res));
             $this->assertFileExists($extractDir . $test . '.txt');
@@ -46,7 +50,7 @@ class UnzipTest extends PHPUnit_Framework_TestCase
         $this->assertFileNotExists(dirname(__FILE__) . '/../../tests/' . $test . '.txt');
         unlink($extractDir . $test . '.txt');
 
-        $unzip = new Piwik_Unzip_PclZip($filename);
+        $unzip = new PclZip($filename);
         $res = $unzip->extract($extractDir);
         $this->assertEquals(1, count($res));
         $this->assertFileExists($extractDir . $test . '.txt');
@@ -67,7 +71,7 @@ class UnzipTest extends PHPUnit_Framework_TestCase
         $filename = dirname(__FILE__) . '/Unzip/' . $test . '.zip';
 
         if (class_exists('ZipArchive', false)) {
-            $unzip = new Piwik_Unzip_ZipArchive($filename);
+            $unzip = new ZipArchive($filename);
             $res = $unzip->extract($extractDir);
             $this->assertEquals(0, $res);
             $this->assertFileNotExists($extractDir . $test . '.txt');
@@ -77,7 +81,7 @@ class UnzipTest extends PHPUnit_Framework_TestCase
             $this->assertFileNotExists(dirname(__FILE__) . '/../../' . $test . '.txt');
         }
 
-        $unzip = new Piwik_Unzip_PclZip($filename);
+        $unzip = new PclZip($filename);
         $res = $unzip->extract($extractDir);
         $this->assertEquals(0, $res);
         $this->assertFileNotExists($extractDir . $test . '.txt');
@@ -99,14 +103,14 @@ class UnzipTest extends PHPUnit_Framework_TestCase
         $filename = dirname(__FILE__) . '/Unzip/' . $test . '.zip';
 
         if (class_exists('ZipArchive', false)) {
-            $unzip = new Piwik_Unzip_ZipArchive($filename);
+            $unzip = new ZipArchive($filename);
             $res = $unzip->extract($extractDir);
             $this->assertEquals(0, $res);
             $this->assertFileNotExists($extractDir . $test . '.txt');
             $this->assertFileNotExists(dirname(__FILE__) . '/' . $test . '.txt');
         }
 
-        $unzip = new Piwik_Unzip_PclZip($filename);
+        $unzip = new PclZip($filename);
         $res = $unzip->extract($extractDir);
         $this->assertEquals(0, $res);
         $this->assertFileNotExists($extractDir . $test . '.txt');
@@ -123,7 +127,7 @@ class UnzipTest extends PHPUnit_Framework_TestCase
         $filename = dirname(__FILE__) . '/Unzip/zaabs.zip';
         $extractDir = PIWIK_USER_PATH . '/tmp/latest/';
 
-        $unzip = new Piwik_Unzip_ZipArchive($filename);
+        $unzip = new ZipArchive($filename);
         $this->assertContains('No error', $unzip->errorInfo());
     }
 
@@ -137,7 +141,7 @@ class UnzipTest extends PHPUnit_Framework_TestCase
         $filename = dirname(__FILE__) . '/Unzip/empty.zip';
         $extractDir = PIWIK_USER_PATH . '/tmp/latest/';
 
-        $unzip = new Piwik_Unzip_ZipArchive($filename);
+        $unzip = new ZipArchive($filename);
         $res = $unzip->extract($extractDir);
         $this->assertEquals(0, $res);
     }
@@ -152,7 +156,7 @@ class UnzipTest extends PHPUnit_Framework_TestCase
         $filename = dirname(__FILE__) . '/Unzip/NotExisting.zip';
 
         try {
-            $unzip = new Piwik_Unzip_ZipArchive($filename);
+            $unzip = new ZipArchive($filename);
         } catch (Exception $e) {
             return;
         }
@@ -169,7 +173,7 @@ class UnzipTest extends PHPUnit_Framework_TestCase
         $extractDir = PIWIK_USER_PATH . '/tmp/latest/';
         $filename = dirname(__FILE__) . '/Unzip/NotExisting.zip';
 
-        $unzip = new Piwik_Unzip_PclZip($filename);
+        $unzip = new PclZip($filename);
         $res = $unzip->extract($extractDir);
         $this->assertEquals(0, $res);
 
@@ -186,7 +190,7 @@ class UnzipTest extends PHPUnit_Framework_TestCase
         $extractFile = $extractDir . 'testgz.txt';
         $filename = dirname(__FILE__) . '/Unzip/test.gz';
 
-        $unzip = new Piwik_Unzip_Gzip($filename);
+        $unzip = new Gzip($filename);
         $res = $unzip->extract($extractFile);
         $this->assertTrue($res);
 
@@ -202,7 +206,7 @@ class UnzipTest extends PHPUnit_Framework_TestCase
         $extractDir = PIWIK_USER_PATH . '/tmp/latest/';
         $filename = dirname(__FILE__) . '/Unzip/test.tar.gz';
 
-        $unzip = new Piwik_Unzip_Tar($filename, 'gz');
+        $unzip = new Tar($filename, 'gz');
         $res = $unzip->extract($extractDir);
         $this->assertTrue($res);
 
diff --git a/tests/PHPUnit/Core/UrlTest.php b/tests/PHPUnit/Core/UrlTest.php
index 12fb22033c35f75e5bf255b0657143cf6fe2ef6c..334edef1ca48c5148f3bbdcfaeefe61ed4a8861c 100644
--- a/tests/PHPUnit/Core/UrlTest.php
+++ b/tests/PHPUnit/Core/UrlTest.php
@@ -116,7 +116,7 @@ class UrlTest extends PHPUnit_Framework_TestCase
             // mangled HTTP_HOST
             array('www.example.com', 'http://example.com/path/#anchor', '/path/index.php', 'http://example.com/path/referrer', true),
 
-            // suppressed Referer
+            // suppressed Referrer
             array('www.example.com', 'http://www.example.com/path/#anchor', '/path/index.php', null, true),
             array('www.example.com', 'http://www.example.com/path/#anchor', '/path/index.php', '', true),
 
diff --git a/tests/PHPUnit/DatabaseTestCase.php b/tests/PHPUnit/DatabaseTestCase.php
index b2144d5c15c86ca9cb4ece43c5676b86f5f82719..47a34f8bbe5c5c8d3a2a2052848d833b6d1e777a 100644
--- a/tests/PHPUnit/DatabaseTestCase.php
+++ b/tests/PHPUnit/DatabaseTestCase.php
@@ -11,6 +11,7 @@ use Piwik\DataTable\Manager;
 use Piwik\Piwik;
 use Piwik\Option;
 use Piwik\Site;
+use Piwik\Tracker\Cache;
 
 /**
  * Tests extending DatabaseTestCase are much slower to run: the setUp will
@@ -72,7 +73,7 @@ class DatabaseTestCase extends PHPUnit_Framework_TestCase
         Option::getInstance()->clearCache();
         Piwik_PDFReports_API::$cache = array();
         Site::clearCache();
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
         Config::getInstance()->clear();
         ArchiveTableCreator::clear();
         \Zend_Registry::_unsetInstance();
diff --git a/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorId.php b/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorId.php
index b1f7828610f265f090036fbba343deeedab49a60..2284a14aa98d4e9f48a457931b89b6fb2effa567 100644
--- a/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorId.php
+++ b/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorId.php
@@ -6,6 +6,7 @@
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
 use Piwik\Date;
+use Piwik\Tracker\Visit;
 
 /**
  * Adds one site and tracks a couple visits using a custom visitor ID.
@@ -44,14 +45,14 @@ class Test_Piwik_Fixture_FewVisitsWithSetVisitorId extends Test_Piwik_BaseFixtur
 
         // We create VISITOR A
         $t->setUrl('http://example.org/index.htm');
-        $t->setVisitorId(Piwik_Tracker_Visit::generateUniqueVisitorId());
+        $t->setVisitorId(Visit::generateUniqueVisitorId());
         self::checkResponse($t->doTrackPageView('incredible title!'));
 
         // VISITOR B: few minutes later, we trigger the same tracker but with a custom visitor ID,
         // => this will create a new visit B
         $t->setForceVisitDateTime(Date::factory($dateTime)->addHour(0.05)->getDatetime());
         $t->setUrl('http://example.org/index2.htm');
-        $t->setVisitorId(Piwik_Tracker_Visit::generateUniqueVisitorId());
+        $t->setVisitorId(Visit::generateUniqueVisitorId());
         self::checkResponse($t->doTrackPageView('incredible title!'));
 
         // This new visit B will have 2 page views
diff --git a/tests/PHPUnit/Integration/TwoVisitsWithCustomVariables_SegmentMatchVisitorTypeTest.php b/tests/PHPUnit/Integration/TwoVisitsWithCustomVariables_SegmentMatchVisitorTypeTest.php
index 1fc9dfe5aa0d15e2928e4c4f9e60736d5eb992aa..4e6b18cbfc06972f3c0f4c26629746600cf77292 100755
--- a/tests/PHPUnit/Integration/TwoVisitsWithCustomVariables_SegmentMatchVisitorTypeTest.php
+++ b/tests/PHPUnit/Integration/TwoVisitsWithCustomVariables_SegmentMatchVisitorTypeTest.php
@@ -80,7 +80,7 @@ class Test_Piwik_Integration_TwoVisitsWithCustomVariables_SegmentMatchVisitorTyp
             // We expect 2 segments * (1 custom variable name + 2 ref metrics + 6 subtable for the values of the name + 5 referers blob)
             'archive_blob_2009_12'    => 30,
             // 6 metrics,
-            // 2 Referer metrics (Referers_distinctSearchEngines/Referers_distinctKeywords),
+            // 2 Referrer metrics (Referers_distinctSearchEngines/Referers_distinctKeywords),
             // 3 done flag (referers, CustomVar, VisitsSummary),
             // X * 2 segments
             'archive_numeric_2009_12' => (6 + 2 + 3) * 2,
diff --git a/tests/PHPUnit/Integration/UrlNormalizationTest.php b/tests/PHPUnit/Integration/UrlNormalizationTest.php
index db1931a31e214b6729f641f9b4f9779db4d5e714..7e8d4fa7a169734ae188cb52a4b647546b0f3792 100644
--- a/tests/PHPUnit/Integration/UrlNormalizationTest.php
+++ b/tests/PHPUnit/Integration/UrlNormalizationTest.php
@@ -1,5 +1,6 @@
 <?php
 use Piwik\Common;
+use Piwik\Tracker\Action;
 
 /**
  * Tests the URL normalization.
@@ -91,7 +92,7 @@ class Test_Piwik_Integration_UrlNormalization extends IntegrationTestCase
         $this->assertEquals($expected, $count, "only $expected actions expected");
 
         $sql = "SELECT name, url_prefix FROM " . Common::prefixTable('log_action')
-            . " WHERE type = " . Piwik_Tracker_Action::TYPE_ACTION_URL
+            . " WHERE type = " . Action::TYPE_ACTION_URL
             . " ORDER BY idaction ASC";
         $urls = \Zend_Registry::get('db')->fetchAll($sql);
         $expected = array(
diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php
index 12cbf5574d7d6d692a62a0bd9d6b9b2be2445b4d..0fdb16c32d692100f8f959375f761b7520516487 100755
--- a/tests/PHPUnit/IntegrationTestCase.php
+++ b/tests/PHPUnit/IntegrationTestCase.php
@@ -19,6 +19,7 @@ use Piwik\Access;
 use Piwik\Option;
 use Piwik\ReportRenderer;
 use Piwik\Site;
+use Piwik\Tracker\Cache;
 use Piwik\Translate;
 use Piwik\Db;
 use Piwik\Visualization\Cloud;
@@ -185,7 +186,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
         // We need to be SU to create websites for tests
         Piwik::setUserIsSuperUser();
 
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
         if ($installPlugins === null) $installPlugins = $createEmptyDatabase;
         self::installAndLoadPlugins( $installPlugins);
 
@@ -234,7 +235,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
         Manager::getInstance()->deleteAll();
         Option::getInstance()->clearCache();
         Site::clearCache();
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
         Config::getInstance()->clear();
         ArchiveTableCreator::clear();
         Piwik_PDFReports_API::$cache = array();
diff --git a/tests/PHPUnit/Plugins/ActionsTest.php b/tests/PHPUnit/Plugins/ActionsTest.php
index cf89fe53173021c447ea91d0443410bd7eadd634..c6c3465fa9e37647ae125e67c0cd3695b8a4e496 100644
--- a/tests/PHPUnit/Plugins/ActionsTest.php
+++ b/tests/PHPUnit/Plugins/ActionsTest.php
@@ -5,6 +5,7 @@
  * @link    http://piwik.org
  * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  */
+use Piwik\Tracker\Action;
 use Piwik\Translate;
 
 require_once 'Actions/Actions.php';
@@ -25,83 +26,83 @@ class ActionsTests extends PHPUnit_Framework_TestCase
     {
         return array(
             array(
-                'params'   => array('name' => 'http://example.org/', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL, 'urlPrefix' => null),
+                'params'   => array('name' => 'http://example.org/', 'type' => Action::TYPE_ACTION_URL, 'urlPrefix' => null),
                 'expected' => array('/index'),
             ),
             array(
-                'params'   => array('name' => 'example.org/', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL, 'urlPrefix' => 1),
+                'params'   => array('name' => 'example.org/', 'type' => Action::TYPE_ACTION_URL, 'urlPrefix' => 1),
                 'expected' => array('/index'),
             ),
             array(
-                'params'   => array('name' => 'example.org/', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL, 'urlPrefix' => 2),
+                'params'   => array('name' => 'example.org/', 'type' => Action::TYPE_ACTION_URL, 'urlPrefix' => 2),
                 'expected' => array('/index'),
             ),
             array(
-                'params'   => array('name' => 'example.org/', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL, 'urlPrefix' => 3),
+                'params'   => array('name' => 'example.org/', 'type' => Action::TYPE_ACTION_URL, 'urlPrefix' => 3),
                 'expected' => array('/index'),
             ),
             array(
-                'params'   => array('name' => 'example.org/', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL, 'urlPrefix' => 4),
+                'params'   => array('name' => 'example.org/', 'type' => Action::TYPE_ACTION_URL, 'urlPrefix' => 4),
                 'expected' => array('/index'),
             ),
             array(
-                'params'   => array('name' => 'example.org/path/', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL, 'urlPrefix' => 4),
+                'params'   => array('name' => 'example.org/path/', 'type' => Action::TYPE_ACTION_URL, 'urlPrefix' => 4),
                 'expected' => array('path', '/index'),
             ),
             array(
-                'params'   => array('name' => 'example.org/test/path', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL, 'urlPrefix' => 1),
+                'params'   => array('name' => 'example.org/test/path', 'type' => Action::TYPE_ACTION_URL, 'urlPrefix' => 1),
                 'expected' => array('test', '/path'),
             ),
             array(
-                'params'   => array('name' => 'http://example.org/path/', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                'params'   => array('name' => 'http://example.org/path/', 'type' => Action::TYPE_ACTION_URL),
                 'expected' => array('path', '/index'),
             ),
             array(
-                'params'   => array('name' => 'example.org/test/path', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL, 'urlPrefix' => 1),
+                'params'   => array('name' => 'example.org/test/path', 'type' => Action::TYPE_ACTION_URL, 'urlPrefix' => 1),
                 'expected' => array('test', '/path'),
             ),
             array(
-                'params'   => array('name' => 'Test / Path', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                'params'   => array('name' => 'Test / Path', 'type' => Action::TYPE_ACTION_URL),
                 'expected' => array('Test', '/Path'),
             ),
             array(
-                'params'   => array('name' => '    Test trim   ', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                'params'   => array('name' => '    Test trim   ', 'type' => Action::TYPE_ACTION_URL),
                 'expected' => array('/Test trim'),
             ),
             array(
-                'params'   => array('name' => 'Category / Subcategory', 'type' => Piwik_Tracker_Action::TYPE_ACTION_NAME),
+                'params'   => array('name' => 'Category / Subcategory', 'type' => Action::TYPE_ACTION_NAME),
                 'expected' => array('Category', ' Subcategory'),
             ),
             array(
-                'params'   => array('name' => '/path/index.php?var=test', 'type' => Piwik_Tracker_Action::TYPE_ACTION_NAME),
+                'params'   => array('name' => '/path/index.php?var=test', 'type' => Action::TYPE_ACTION_NAME),
                 'expected' => array('path', ' index.php?var=test'),
             ),
             array(
-                'params'   => array('name' => 'http://example.org/path/Default.aspx#anchor', 'type' => Piwik_Tracker_Action::TYPE_ACTION_NAME),
+                'params'   => array('name' => 'http://example.org/path/Default.aspx#anchor', 'type' => Action::TYPE_ACTION_NAME),
                 'expected' => array('path', ' Default.aspx#anchor'),
             ),
             array(
-                'params'   => array('name' => '', 'type' => Piwik_Tracker_Action::TYPE_ACTION_NAME),
+                'params'   => array('name' => '', 'type' => Action::TYPE_ACTION_NAME),
                 'expected' => array('Page Name not defined'),
             ),
             array(
-                'params'   => array('name' => '', 'type' => Piwik_Tracker_Action::TYPE_ACTION_URL),
+                'params'   => array('name' => '', 'type' => Action::TYPE_ACTION_URL),
                 'expected' => array('Page URL not defined'),
             ),
             array(
-                'params'   => array('name' => 'http://example.org/download.zip', 'type' => Piwik_Tracker_Action::TYPE_DOWNLOAD),
+                'params'   => array('name' => 'http://example.org/download.zip', 'type' => Action::TYPE_DOWNLOAD),
                 'expected' => array('example.org', '/download.zip'),
             ),
             array(
-                'params'   => array('name' => 'http://example.org/download/1/', 'type' => Piwik_Tracker_Action::TYPE_DOWNLOAD),
+                'params'   => array('name' => 'http://example.org/download/1/', 'type' => Action::TYPE_DOWNLOAD),
                 'expected' => array('example.org', '/download/1/'),
             ),
             array(
-                'params'   => array('name' => 'http://example.org/link', 'type' => Piwik_Tracker_Action::TYPE_OUTLINK),
+                'params'   => array('name' => 'http://example.org/link', 'type' => Action::TYPE_OUTLINK),
                 'expected' => array('example.org', '/link'),
             ),
             array(
-                'params'   => array('name' => 'http://example.org/some/path/', 'type' => Piwik_Tracker_Action::TYPE_OUTLINK),
+                'params'   => array('name' => 'http://example.org/some/path/', 'type' => Action::TYPE_OUTLINK),
                 'expected' => array('example.org', '/some/path/'),
             ),
         );
diff --git a/tests/PHPUnit/Plugins/PDFReportsTest.php b/tests/PHPUnit/Plugins/PDFReportsTest.php
index cc61ddf1611b76e2d8bcbe200e616652161fff14..85b32a89c95e26ff00d95cd0f6394db69f5f7389 100644
--- a/tests/PHPUnit/Plugins/PDFReportsTest.php
+++ b/tests/PHPUnit/Plugins/PDFReportsTest.php
@@ -8,6 +8,8 @@
 use Piwik\Access;
 use Piwik\ScheduledTime;
 use Piwik\ScheduledTask;
+use Piwik\ScheduledTime\Daily;
+use Piwik\ScheduledTime\Monthly;
 use Piwik\Site;
 
 require_once 'PDFReports/PDFReports.php';
@@ -365,16 +367,16 @@ class PDFReportsTest extends DatabaseTestCase
         );
 
         // expected tasks
-        $scheduleTask1 = new Piwik_ScheduledTime_Daily();
+        $scheduleTask1 = new Daily();
         $scheduleTask1->setHour(23); // paris is UTC-1, period ends at 23h UTC
 
-        $scheduleTask2 = new Piwik_ScheduledTime_Monthly();
+        $scheduleTask2 = new Monthly();
         $scheduleTask2->setHour(7); // site is UTC-6.5, period ends at 6h30 UTC, smallest resolution is hour
 
-        $scheduleTask3 = new Piwik_ScheduledTime_Monthly();
+        $scheduleTask3 = new Monthly();
         $scheduleTask3->setHour(7); // paris is UTC-1, configured to be sent at 8h
 
-        $scheduleTask4 = new Piwik_ScheduledTime_Monthly();
+        $scheduleTask4 = new Monthly();
         $scheduleTask4->setHour(15); // site is UTC-6.5, configured to be sent at 8h
 
         $expectedTasks = array(
diff --git a/tests/PHPUnit/Plugins/PrivacyManagerTest.php b/tests/PHPUnit/Plugins/PrivacyManagerTest.php
index 4d44c6464fccdf702b74b229b62fbcf4b45c0d5c..17ca9d2c8c527f9a262ad516b4c02600fe05bd1d 100755
--- a/tests/PHPUnit/Plugins/PrivacyManagerTest.php
+++ b/tests/PHPUnit/Plugins/PrivacyManagerTest.php
@@ -16,6 +16,8 @@ use Piwik\Date;
 use Piwik\Option;
 use Piwik\Site;
 use Piwik\Db;
+use Piwik\Tracker\Cache;
+use Piwik\Tracker\GoalManager;
 
 require_once 'PrivacyManager/PrivacyManager.php';
 
@@ -115,7 +117,7 @@ class PrivacyManagerTest extends IntegrationTestCase
         Manager::getInstance()->deleteAll();
         Option::getInstance()->clearCache();
         Site::clearCache();
-        Piwik_Tracker_Cache::deleteTrackerCache();
+        Cache::deleteTrackerCache();
         ArchiveTableCreator::clear();
 
         $tempTableName = Common::prefixTable(Piwik_PrivacyManager_LogDataPurger::TEMP_TABLE_NAME);
@@ -718,7 +720,7 @@ class PrivacyManagerTest extends IntegrationTestCase
             'nb_actions',
             Piwik_Goals_Archiver::getRecordName('revenue'),
             Piwik_Goals_Archiver::getRecordName('nb_conversions', 1),
-            Piwik_Goals_Archiver::getRecordName('revenue', Piwik_Tracker_GoalManager::IDGOAL_ORDER)
+            Piwik_Goals_Archiver::getRecordName('revenue', GoalManager::IDGOAL_ORDER)
         );
 
         $archiveTables = self::_getArchiveTableNames();
diff --git a/tests/PHPUnit/proxy/index.php b/tests/PHPUnit/proxy/index.php
index ce0822112829058eda219793d07145422ef1c76f..12f5e0b2a9824350eff08e34afb811890fcd6c65 100644
--- a/tests/PHPUnit/proxy/index.php
+++ b/tests/PHPUnit/proxy/index.php
@@ -5,6 +5,7 @@
  */
 
 // make sure the test environment is loaded
+use Piwik\Tracker\Cache;
 use Piwik\Visualization\Cloud;
 
 // Wrapping the request inside ob_start() calls to ensure that the Test
@@ -25,7 +26,7 @@ Piwik_TestingEnvironment::addHooks();
 Cloud::$debugDisableShuffle = true;
 
 \Piwik\Tracker::setTestEnvironment();
-Piwik_Tracker_Cache::deleteTrackerCache();
+Cache::deleteTrackerCache();
 
 // Disable index.php dispatch since we do it manually below
 define('PIWIK_ENABLE_DISPATCH', false);
diff --git a/tests/PHPUnit/proxy/piwik.php b/tests/PHPUnit/proxy/piwik.php
index 8610ef8b4d3dae4b30d6c5df78321d9b78882769..2a72cfbd8842d9c2bb8128a8d6ac80fafcef5b54 100755
--- a/tests/PHPUnit/proxy/piwik.php
+++ b/tests/PHPUnit/proxy/piwik.php
@@ -16,6 +16,7 @@ use Piwik\DataTable\Manager;
 use Piwik\Option;
 use Piwik\Tracker;
 use Piwik\Site;
+use Piwik\Tracker\Cache;
 
 ob_start();
 
@@ -44,7 +45,7 @@ Tracker::setTestEnvironment();
 Manager::getInstance()->deleteAll();
 Option::getInstance()->clearCache();
 Site::clearCache();
-Piwik_Tracker_Cache::deleteTrackerCache();
+Cache::deleteTrackerCache();
 
 include PIWIK_INCLUDE_PATH . '/piwik.php';
 ob_end_flush();