diff --git a/core/Db/Schema/Mysql.php b/core/Db/Schema/Mysql.php
index ef7d87b4dd62539534d537e5b0b4e69b5e726c79..7d1645ca2fa1e3d9057bc173f1d97ce0df83b5dc 100644
--- a/core/Db/Schema/Mysql.php
+++ b/core/Db/Schema/Mysql.php
@@ -148,22 +148,12 @@ class Mysql implements SchemaInterface
 							  idvisit INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 							  idsite INTEGER(10) UNSIGNED NOT NULL,
 							  idvisitor BINARY(8) NOT NULL,
-							  visitor_localtime TIME NOT NULL,
 							  visitor_returning TINYINT(1) NOT NULL,
-							  visitor_count_visits SMALLINT(5) UNSIGNED NOT NULL,
-							  visitor_days_since_last SMALLINT(5) UNSIGNED NOT NULL,
-							  visitor_days_since_order SMALLINT(5) UNSIGNED NOT NULL,
-							  visitor_days_since_first SMALLINT(5) UNSIGNED NOT NULL,
-							  visit_first_action_time DATETIME NOT NULL,
-							  visit_last_action_time DATETIME NOT NULL,
-							  visit_total_actions SMALLINT(5) UNSIGNED NOT NULL,
-							  visit_total_searches SMALLINT(5) UNSIGNED NOT NULL,
-							  visit_total_events SMALLINT(5) UNSIGNED NOT NULL,
 							  visit_total_time SMALLINT(5) UNSIGNED NOT NULL,
 							  visit_goal_converted TINYINT(1) NOT NULL,
 							  visit_goal_buyer TINYINT(1) NOT NULL,
+							  visit_last_action_time DATETIME NOT NULL,
 							  config_id BINARY(8) NOT NULL,
-							  config_resolution VARCHAR(9) NOT NULL,
 							  config_pdf TINYINT(1) NOT NULL,
 							  config_flash TINYINT(1) NOT NULL,
 							  config_java TINYINT(1) NOT NULL,
@@ -175,7 +165,6 @@ class Mysql implements SchemaInterface
 							  config_silverlight TINYINT(1) NOT NULL,
 							  config_cookie TINYINT(1) NOT NULL,
 							  location_ip VARBINARY(16) NOT NULL,
-							  location_browser_lang VARCHAR(20) NOT NULL,
 							  location_country CHAR(3) NOT NULL,
 							  location_region char(2) DEFAULT NULL,
 							  location_city varchar(255) DEFAULT NULL,
diff --git a/core/Plugin/Segment.php b/core/Plugin/Segment.php
index 52c2b04b8f74e78c2990d3bb53b557e73364c0f1..ea507f33afaea7a98463ad22dd3e7ed14f850331 100644
--- a/core/Plugin/Segment.php
+++ b/core/Plugin/Segment.php
@@ -108,6 +108,14 @@ class Segment
         $this->type = $type;
     }
 
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return $this->type;
+    }
+
     /**
      * @param bool $permission
      */
diff --git a/core/Plugin/VisitDimension.php b/core/Plugin/VisitDimension.php
index b7b3778a9e1f6cbe87aa8f17e8edbbe4d4704a92..def111f489ceab1d5fb2133a2099f98d0dd08b89 100644
--- a/core/Plugin/VisitDimension.php
+++ b/core/Plugin/VisitDimension.php
@@ -59,7 +59,11 @@ abstract class VisitDimension
             $segment->setSqlSegment('log_visit.' . $this->fieldName);
         }
 
-        $segment->setType(Segment::TYPE_DIMENSION);
+        $type = $segment->getType();
+
+        if (empty($type)) {
+            $segment->setType(Segment::TYPE_DIMENSION);
+        }
 
         $this->segments[] = $segment;
     }
diff --git a/core/Tracker/Settings.php b/core/Tracker/Settings.php
index c40df487b384ed38eca3f063df05d4bc4eb94ca9..341eb6d69b9b6b5dcaacf137fc8f3145a38f6f2a 100644
--- a/core/Tracker/Settings.php
+++ b/core/Tracker/Settings.php
@@ -33,7 +33,6 @@ class Settings
         list($plugin_Flash, $plugin_Java, $plugin_Director, $plugin_Quicktime, $plugin_RealPlayer, $plugin_PDF,
             $plugin_WindowsMedia, $plugin_Gears, $plugin_Silverlight, $plugin_Cookie) = $this->request->getPlugins();
 
-        $resolution = $this->request->getParam('res');
         $userAgent = $this->request->getUserAgent();
 
         $deviceDetector = new \DeviceDetector($userAgent);
@@ -67,7 +66,6 @@ class Settings
 
         $this->params = array(
             'config_id'              => $configurationHash,
-            'config_resolution'      => $resolution,
             'config_pdf'             => $plugin_PDF,
             'config_flash'           => $plugin_Flash,
             'config_java'            => $plugin_Java,
@@ -77,8 +75,7 @@ class Settings
             'config_windowsmedia'    => $plugin_WindowsMedia,
             'config_gears'           => $plugin_Gears,
             'config_silverlight'     => $plugin_Silverlight,
-            'config_cookie'          => $plugin_Cookie,
-            'location_browser_lang'  => $browserLang,
+            'config_cookie'          => $plugin_Cookie
         );
     }
 
diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php
index aaba4b4fa4f81a89760c142f99b7a3cb4e500abd..da374d4dabab697effcd17d857d8639618ce57ee 100644
--- a/core/Tracker/Visit.php
+++ b/core/Tracker/Visit.php
@@ -300,7 +300,6 @@ class Visit implements VisitInterface
         $this->visitorInfo = array_merge($this->visitorInfo, $this->visitorCustomVariables);
 
         $this->visitorInfo['visit_goal_converted'] = $visitIsConverted ? 1 : 0;
-        $this->visitorInfo['config_resolution'] = substr($this->visitorInfo['config_resolution'], 0, 9);
 
         $dimensions = VisitDimension::getAllDimensions();
         foreach ($dimensions as $dimension) {
@@ -505,22 +504,12 @@ class Visit implements VisitInterface
 
     protected function getNewVisitorInformation($action)
     {
-        $actionType = false;
-        if($action) {
-            $actionType = $action->getActionType();
-        }
-
-        $daysSinceFirstVisit = $this->request->getDaysSinceFirstVisit();
         $visitCount = $this->request->getVisitCount();
         $daysSinceLastVisit = $this->request->getDaysSinceLastVisit();
 
         $daysSinceLastOrder = $this->request->getDaysSinceLastOrder();
         $isReturningCustomer = ($daysSinceLastOrder !== false);
 
-        if ($daysSinceLastOrder === false) {
-            $daysSinceLastOrder = 0;
-        }
-
         // User settings
         $userInfo = $this->getSettingsObject();
         $userInfo = $userInfo->getInfo();
@@ -534,28 +523,11 @@ class Visit implements VisitInterface
 
         return array(
             'idsite'                    => $this->request->getIdSite(),
-            'visitor_localtime'         => $this->request->getLocalTime(),
             'idvisitor'                 => $this->getVisitorIdcookie(),
             'visitor_returning'         => $visitorReturning,
-            'visitor_count_visits'      => $visitCount,
-            'visitor_days_since_last'   => $daysSinceLastVisit,
-            'visitor_days_since_order'  => $daysSinceLastOrder,
-            'visitor_days_since_first'  => $daysSinceFirstVisit,
-            'visit_first_action_time'   => Tracker::getDatetimeFromTimestamp($this->request->getCurrentTimestamp()),
-            'visit_last_action_time'    => Tracker::getDatetimeFromTimestamp($this->request->getCurrentTimestamp()),
-            'visit_total_actions'       => in_array($actionType,
-                    array(Action::TYPE_PAGE_URL,
-                          Action::TYPE_DOWNLOAD,
-                          Action::TYPE_OUTLINK,
-                          Action::TYPE_SITE_SEARCH,
-                          Action::TYPE_EVENT))
-                    ? 1 : 0, // if visit starts with something else (e.g. ecommerce order), don't record as an action
-            'visit_total_searches'      => $actionType == Action::TYPE_SITE_SEARCH ? 1 : 0,
-            'visit_total_events'        => $actionType == Action::TYPE_EVENT ? 1 : 0,
             'visit_total_time'          => self::cleanupVisitTotalTime($defaultTimeOnePageVisit),
             'visit_goal_buyer'          => $this->goalManager->getBuyerType(),
             'config_id'                 => $userInfo['config_id'],
-            'config_resolution'         => $userInfo['config_resolution'],
             'config_pdf'                => $userInfo['config_pdf'],
             'config_flash'              => $userInfo['config_flash'],
             'config_java'               => $userInfo['config_java'],
@@ -567,7 +539,6 @@ class Visit implements VisitInterface
             'config_silverlight'        => $userInfo['config_silverlight'],
             'config_cookie'             => $userInfo['config_cookie'],
             'location_ip'               => $this->getVisitorIp(),
-            'location_browser_lang'     => $userInfo['location_browser_lang'],
         );
     }
 
@@ -582,32 +553,6 @@ class Visit implements VisitInterface
     {
         $valuesToUpdate = array();
 
-        if ($action) {
-            $actionType  = $action->getActionType();
-            $idActionUrl = $action->getIdActionUrlForEntryAndExitIds();
-
-            $incrementActions = false;
-
-            if ($idActionUrl !== false) {
-                $incrementActions = true;
-            }
-
-            if ($actionType == Action::TYPE_SITE_SEARCH) {
-                $valuesToUpdate['visit_total_searches'] = 'visit_total_searches + 1';
-                $incrementActions = true;
-            } else if ($actionType == Action::TYPE_EVENT) {
-                $valuesToUpdate['visit_total_events'] = 'visit_total_events + 1';
-                $incrementActions = true;
-            }
-
-            if ($incrementActions) {
-                $valuesToUpdate['visit_total_actions'] = 'visit_total_actions + 1';
-            }
-        }
-
-        $datetimeServer = Tracker::getDatetimeFromTimestamp($this->request->getCurrentTimestamp());
-        $valuesToUpdate['visit_last_action_time'] = $datetimeServer;
-
         // Add 1 so it's always > 0
         $visitTotalTime = 1 + $this->request->getCurrentTimestamp() - $this->visitorInfo['visit_first_action_time'];
         $valuesToUpdate['visit_total_time'] = self::cleanupVisitTotalTime($visitTotalTime);
diff --git a/plugins/API/API.php b/plugins/API/API.php
index 61818abf69799a389070f27ddb0415be8e459a74..8af6471353dbbc3261be5719608cdcae0804b879 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -180,21 +180,6 @@ class API extends \Piwik\Plugin\API
             'sqlFilterValue' => array('Piwik\IP', 'P2N'),
             'permission'     => $isAuthenticatedWithViewAccess,
         );
-        $segments[] = array(
-            'type'       => 'metric',
-            'category'   => Piwik::translate('General_Visit'),
-            'name'       => 'General_NbActions',
-            'segment'    => 'actions',
-            'sqlSegment' => 'log_visit.visit_total_actions',
-        );
-        $segments[] = array(
-            'type'           => 'metric',
-            'category'       => Piwik::translate('General_Visit'),
-            'name'           => 'General_NbSearches',
-            'segment'        => 'searches',
-            'sqlSegment'     => 'log_visit.visit_total_searches',
-            'acceptedValues' => 'To select all visits who used internal Site Search, use: &segment=searches>0',
-        );
         $segments[] = array(
             'type'       => 'metric',
             'category'   => Piwik::translate('General_Visit'),
@@ -220,21 +205,6 @@ class API extends \Piwik\Plugin\API
             'segment'    => 'daysSinceLastVisit',
             'sqlSegment' => 'log_visit.visitor_days_since_last',
         );
-        $segments[] = array(
-            'type'       => 'metric',
-            'category'   => Piwik::translate('General_Visit'),
-            'name'       => 'General_DaysSinceFirstVisit',
-            'segment'    => 'daysSinceFirstVisit',
-            'sqlSegment' => 'log_visit.visitor_days_since_first',
-        );
-        $segments[] = array(
-            'type'       => 'metric',
-            'category'   => Piwik::translate('General_Visit'),
-            'name'       => 'General_NumberOfVisits',
-            'segment'    => 'visitCount',
-            'sqlSegment' => 'log_visit.visitor_count_visits',
-        );
-
         $segments[] = array(
             'type'           => 'dimension',
             'category'       => Piwik::translate('General_Visit'),
diff --git a/plugins/Actions/Columns/EntryPageTitle.php b/plugins/Actions/Columns/EntryPageTitle.php
index 5df614f9e13be14529714f882e4d2a0db6154167..5664ea7c2170458e34dad1c53f606235c1aceed2 100644
--- a/plugins/Actions/Columns/EntryPageTitle.php
+++ b/plugins/Actions/Columns/EntryPageTitle.php
@@ -29,9 +29,9 @@ class EntryPageTitle extends VisitDimension
 
     /**
      * @param Request $request
-     * @param $visit
+     * @param array   $visit
      * @param Action|null $action
-     * @return bool
+     * @return int
      */
     public function onNewVisit(Request $request, $visit, $action)
     {
diff --git a/plugins/Actions/Columns/EntryPageUrl.php b/plugins/Actions/Columns/EntryPageUrl.php
index b2b9ea0c5cec33bb296458c53a7909c7f0937c67..760f4b635a9db1823f3c3112037493656504d996 100644
--- a/plugins/Actions/Columns/EntryPageUrl.php
+++ b/plugins/Actions/Columns/EntryPageUrl.php
@@ -29,9 +29,9 @@ class EntryPageUrl extends VisitDimension
 
     /**
      * @param Request $request
-     * @param $visit
+     * @param array   $visit
      * @param Action|null $action
-     * @return bool
+     * @return int
      */
     public function onNewVisit(Request $request, $visit, $action)
     {
diff --git a/plugins/Actions/Columns/ExitPageTitle.php b/plugins/Actions/Columns/ExitPageTitle.php
index ed2d7821dd08738c19388d6e64332a9bbb994b9b..2f2054ac6084a386d848551f08f31fa13064d7c2 100644
--- a/plugins/Actions/Columns/ExitPageTitle.php
+++ b/plugins/Actions/Columns/ExitPageTitle.php
@@ -29,9 +29,9 @@ class ExitPageTitle extends VisitDimension
 
     /**
      * @param Request $request
-     * @param $visit
+     * @param array   $visit
      * @param Action|null $action
-     * @return bool
+     * @return int|bool
      */
     public function onNewVisit(Request $request, $visit, $action)
     {
@@ -44,19 +44,19 @@ class ExitPageTitle extends VisitDimension
         return (int) $idActionName;
     }
 
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int|bool
+     */
     public function onExistingVisit(Request $request, $visit, $action)
     {
         if (empty($action)) {
             return false;
         }
 
-        $id = $action->getIdActionNameForEntryAndExitIds();
-
-        if (!empty($id)) {
-            $id = (int) $id;
-        }
-
-        return $id;
+        return $action->getIdActionNameForEntryAndExitIds();
     }
 
     public function getName()
diff --git a/plugins/Actions/Columns/ExitPageUrl.php b/plugins/Actions/Columns/ExitPageUrl.php
index ad3c21ec429cb53fe0f24e0a951818c394bc2394..82ad5c598aef7b27d845cc61ff5a1f13ef129978 100644
--- a/plugins/Actions/Columns/ExitPageUrl.php
+++ b/plugins/Actions/Columns/ExitPageUrl.php
@@ -29,9 +29,9 @@ class ExitPageUrl extends VisitDimension
 
     /**
      * @param Request $request
-     * @param $visit
+     * @param array   $visit
      * @param Action|null $action
-     * @return bool
+     * @return int|bool
      */
     public function onNewVisit(Request $request, $visit, $action)
     {
diff --git a/plugins/Actions/Columns/VisitTotalActions.php b/plugins/Actions/Columns/VisitTotalActions.php
new file mode 100644
index 0000000000000000000000000000000000000000..49177a3143bc21aab81a35487a2da9ea9bdaacd0
--- /dev/null
+++ b/plugins/Actions/Columns/VisitTotalActions.php
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Actions\Columns;
+
+use Piwik\Plugin\VisitDimension;
+use Piwik\Plugins\CoreHome\Segment;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
+use Piwik\Tracker;
+
+class VisitTotalActions extends VisitDimension
+{
+    protected $fieldName = 'visit_total_actions';
+    protected $fieldType = 'SMALLINT(5) UNSIGNED NOT NULL';
+
+    protected function init()
+    {
+        $segment = new Segment();
+        $segment->setType(Segment::TYPE_METRIC);
+        $segment->setSegment('actions');
+        $segment->setName('General_NbActions');
+        $this->addSegment($segment);
+    }
+
+    public function getName()
+    {
+        return '';
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        $actionType = false;
+        if ($action) {
+            $actionType = $action->getActionType();
+        }
+
+        $actions = array(
+            Action::TYPE_PAGE_URL,
+            Action::TYPE_DOWNLOAD,
+            Action::TYPE_OUTLINK,
+            Action::TYPE_SITE_SEARCH,
+            Action::TYPE_EVENT
+        );
+
+        // if visit starts with something else (e.g. ecommerce order), don't record as an action
+        if (in_array($actionType, $actions)) {
+            return 1;
+        }
+
+        return 0;
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onExistingVisit(Request $request, $visit, $action)
+    {
+        if (!$action) {
+            return false;
+        }
+
+        $increment = 'visit_total_actions + 1';
+
+        $idActionUrl = $action->getIdActionUrlForEntryAndExitIds();
+
+        if ($idActionUrl !== false) {
+            return $increment;
+        }
+
+        $actionType = $action->getActionType();
+
+        if (in_array($actionType, array(Action::TYPE_SITE_SEARCH, Action::TYPE_EVENT))) {
+            return $increment;
+        }
+
+        return false;
+    }
+
+}
\ No newline at end of file
diff --git a/plugins/Actions/Columns/VisitTotalSearches.php b/plugins/Actions/Columns/VisitTotalSearches.php
new file mode 100644
index 0000000000000000000000000000000000000000..42a9ac8b14f4e209fbb44eb3dee1654203143afa
--- /dev/null
+++ b/plugins/Actions/Columns/VisitTotalSearches.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Actions\Columns;
+
+use Piwik\Plugin\VisitDimension;
+use Piwik\Plugins\CoreHome\Segment;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
+use Piwik\Tracker;
+
+class VisitTotalSearches extends VisitDimension
+{
+    protected $fieldName = 'visit_total_searches';
+    protected $fieldType = 'SMALLINT(5) UNSIGNED NOT NULL';
+
+    protected function init()
+    {
+        $segment = new Segment();
+        $segment->setType(Segment::TYPE_METRIC);
+        $segment->setSegment('searches');
+        $segment->setName('General_NbSearches');
+        $segment->setAcceptValues('To select all visits who used internal Site Search, use: &segment=searches>0');
+        $this->addSegment($segment);
+    }
+
+    public function getName()
+    {
+        return '';
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        if ($this->isSiteSearchAction($action)) {
+            return 1;
+        }
+
+        return 0;
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onExistingVisit(Request $request, $visit, $action)
+    {
+        if ($this->isSiteSearchAction($action)) {
+            return 'visit_total_searches + 1';
+        }
+
+        return false;
+    }
+
+    /**
+     * @param Action|null $action
+     * @return bool
+     */
+    private function isSiteSearchAction($action)
+    {
+        return ($action && $action->getActionType() == Action::TYPE_SITE_SEARCH);
+    }
+
+}
\ No newline at end of file
diff --git a/plugins/CoreHome/Columns/VisitFirstActionTime.php b/plugins/CoreHome/Columns/VisitFirstActionTime.php
new file mode 100644
index 0000000000000000000000000000000000000000..e0b7078fb8faa94bf43687d591e811004a238933
--- /dev/null
+++ b/plugins/CoreHome/Columns/VisitFirstActionTime.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\CoreHome\Columns;
+
+use Piwik\Plugin\VisitDimension;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
+use Piwik\Tracker;
+
+class VisitFirstActionTime extends VisitDimension
+{
+    protected $fieldName = 'visit_first_action_time';
+    protected $fieldType = 'DATETIME NOT NULL';
+
+    public function getName()
+    {
+        return '';
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        return Tracker::getDatetimeFromTimestamp($request->getCurrentTimestamp());
+    }
+}
\ No newline at end of file
diff --git a/plugins/CoreHome/Columns/VisitLastActionTime.php b/plugins/CoreHome/Columns/VisitLastActionTime.php
new file mode 100644
index 0000000000000000000000000000000000000000..5c45cb31a556f0077601030bbd34066b57529b67
--- /dev/null
+++ b/plugins/CoreHome/Columns/VisitLastActionTime.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\CoreHome\Columns;
+
+use Piwik\Plugin\VisitDimension;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
+use Piwik\Tracker;
+
+class VisitLastActionTime extends VisitDimension
+{
+    protected $fieldName = 'visit_last_action_time';
+    // we do not install or define column definition here as we need to create this column when installing as there is
+    // an index on it. Currently we do not define the index here... although we could overwrite the install() method
+    // and add column 'visit_last_action_time' and add index. Problem is there is also an index
+    // INDEX(idsite, config_id, visit_last_action_time) and we maybe not be sure whether config_id already exists at
+    // installing point (in case config_id is installed via dimension as well we do not know which column will be added
+    // first).
+
+    public function getName()
+    {
+        return '';
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        return Tracker::getDatetimeFromTimestamp($request->getCurrentTimestamp());
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onExistingVisit(Request $request, $visit, $action)
+    {
+        return $this->onNewVisit($request, $visit, $action);
+    }
+
+}
\ No newline at end of file
diff --git a/plugins/CoreHome/Columns/VisitorDaysSinceFirst.php b/plugins/CoreHome/Columns/VisitorDaysSinceFirst.php
new file mode 100644
index 0000000000000000000000000000000000000000..c418e6e76490a39e7d3115059764dd235c0525ae
--- /dev/null
+++ b/plugins/CoreHome/Columns/VisitorDaysSinceFirst.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\CoreHome\Columns;
+
+use Piwik\Plugin\VisitDimension;
+use Piwik\Plugins\CoreHome\Segment;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
+
+class VisitorDaysSinceFirst extends VisitDimension
+{
+    protected $fieldName = 'visitor_days_since_first';
+    protected $fieldType = 'SMALLINT(5) UNSIGNED NOT NULL';
+
+    protected function init()
+    {
+        $segment = new Segment();
+        $segment->setType(Segment::TYPE_METRIC);
+        $segment->setSegment('daysSinceFirstVisit');
+        $segment->setName('General_DaysSinceFirstVisit');
+        $this->addSegment($segment);
+    }
+
+    public function getName()
+    {
+        return '';
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        return $request->getDaysSinceFirstVisit();
+    }
+}
\ No newline at end of file
diff --git a/plugins/CoreHome/Columns/VisitorDaysSinceOrder.php b/plugins/CoreHome/Columns/VisitorDaysSinceOrder.php
new file mode 100644
index 0000000000000000000000000000000000000000..5597a426f777539f79a242a1b82bda74d957b949
--- /dev/null
+++ b/plugins/CoreHome/Columns/VisitorDaysSinceOrder.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\CoreHome\Columns;
+
+use Piwik\Plugin\VisitDimension;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
+
+class VisitorDaysSinceOrder extends VisitDimension
+{
+    protected $fieldName = 'visitor_days_since_order';
+    protected $fieldType = 'SMALLINT(5) UNSIGNED NOT NULL';
+
+    public function getName()
+    {
+        return '';
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        $daysSinceLastOrder = $request->getDaysSinceLastOrder();
+
+        if ($daysSinceLastOrder === false) {
+            $daysSinceLastOrder = 0;
+        }
+
+        return $daysSinceLastOrder;
+    }
+}
\ No newline at end of file
diff --git a/plugins/CoreHome/Columns/VisitsCount.php b/plugins/CoreHome/Columns/VisitsCount.php
new file mode 100644
index 0000000000000000000000000000000000000000..6b900eefef7730dc95701c47b4faf6afd5689230
--- /dev/null
+++ b/plugins/CoreHome/Columns/VisitsCount.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\CoreHome\Columns;
+
+use Piwik\Plugin\VisitDimension;
+use Piwik\Plugins\CoreHome\Segment;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
+
+class VisitsCount extends VisitDimension
+{
+    protected $fieldName = 'visitor_count_visits';
+    protected $fieldType = 'SMALLINT(5) UNSIGNED NOT NULL';
+
+    public function getName()
+    {
+        return '';
+    }
+
+    protected function init()
+    {
+        $segment = new Segment();
+        $segment->setType(Segment::TYPE_METRIC);
+        $segment->setSegment('visitCount');
+        $segment->setName('General_NumberOfVisits');
+        $this->addSegment($segment);
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        return $request->getVisitCount();
+    }
+}
\ No newline at end of file
diff --git a/plugins/CoreHome/Segment.php b/plugins/CoreHome/Segment.php
new file mode 100644
index 0000000000000000000000000000000000000000..7b6f2fbf57dd1eebadc616875a16f567c6c34d9a
--- /dev/null
+++ b/plugins/CoreHome/Segment.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\CoreHome;
+
+/**
+ * CoreHome segment base class
+ */
+class Segment extends \Piwik\Plugin\Segment
+{
+    protected  function init()
+    {
+        $this->setCategory('General_Visit');
+    }
+}
+
diff --git a/plugins/Events/Columns/TotalEvents.php b/plugins/Events/Columns/TotalEvents.php
index 67ed9d7ae66380e129ce345590fdad42d21ce294..3d6ac9f33b630f8e59b803ee4c47d567813ad364 100644
--- a/plugins/Events/Columns/TotalEvents.php
+++ b/plugins/Events/Columns/TotalEvents.php
@@ -11,10 +11,13 @@ namespace Piwik\Plugins\Events\Columns;
 use Piwik\Piwik;
 use Piwik\Plugin\VisitDimension;
 use Piwik\Plugin\Segment;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
 
 class TotalEvents extends VisitDimension
-{    
+{
     protected $fieldName = 'visit_total_events';
+    protected $fieldType = 'SMALLINT(5) UNSIGNED NOT NULL';
 
     protected function init()
     {
@@ -31,4 +34,43 @@ class TotalEvents extends VisitDimension
     {
         return Piwik::translate('Events_EventName');
     }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        if ($this->isEventAction($action)) {
+            return 1;
+        }
+
+        return 0;
+    }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onExistingVisit(Request $request, $visit, $action)
+    {
+        if ($this->isEventAction($action)) {
+            return 'visit_total_events + 1';
+        }
+
+        return false;
+    }
+
+    /**
+     * @param Action|null $action
+     * @return bool
+     */
+    private function isEventAction($action)
+    {
+        return ($action && $action->getActionType() == Action::TYPE_EVENT);
+    }
 }
\ No newline at end of file
diff --git a/plugins/UserSettings/Columns/Language.php b/plugins/UserSettings/Columns/Language.php
index 120178ffb53de1231e3a531928c060ae4253dc05..0345975639884aed30d26c59f4cf5b258c4329f0 100644
--- a/plugins/UserSettings/Columns/Language.php
+++ b/plugins/UserSettings/Columns/Language.php
@@ -10,11 +10,27 @@ namespace Piwik\Plugins\UserSettings\Columns;
 
 use Piwik\Piwik;
 use Piwik\Plugin\VisitDimension;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
 
 class Language extends VisitDimension
-{    
+{
+    protected $fieldName = 'location_browser_lang';
+    protected $fieldType = 'VARCHAR(20) NOT NULL';
+
     public function getName()
     {
         return Piwik::translate('General_Language');
     }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        return substr($request->getBrowserLanguage(), 0, 20);
+    }
 }
\ No newline at end of file
diff --git a/plugins/UserSettings/Columns/Resolution.php b/plugins/UserSettings/Columns/Resolution.php
index f9a5e1ee628e6b3011894b47315d231a9b28187d..407daf7db42c59cfcbdf49bd3f22eb4e698fd04a 100644
--- a/plugins/UserSettings/Columns/Resolution.php
+++ b/plugins/UserSettings/Columns/Resolution.php
@@ -11,10 +11,13 @@ namespace Piwik\Plugins\UserSettings\Columns;
 use Piwik\Piwik;
 use Piwik\Plugin\VisitDimension;
 use Piwik\Plugins\UserSettings\Segment;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
 
 class Resolution extends VisitDimension
 {    
     protected $fieldName = 'config_resolution';
+    protected $fieldType = 'VARCHAR(9) NOT NULL';
 
     protected function init()
     {
@@ -25,6 +28,23 @@ class Resolution extends VisitDimension
         $this->addSegment($segment);
     }
 
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        $resolution = $request->getParam('res');
+
+        if (!empty($resolution)) {
+            return substr($resolution, 0, 9);
+        }
+
+        return $resolution;
+    }
+
     public function getName()
     {
         return Piwik::translate('UserSettings_ColumnResolution');
diff --git a/plugins/VisitTime/Columns/Localtime.php b/plugins/VisitTime/Columns/Localtime.php
index f20dde3fedc3f0b540f93f8c2325e2545252f061..6f0cc5f7272dba48e4303366ca6532cae46c87bb 100644
--- a/plugins/VisitTime/Columns/Localtime.php
+++ b/plugins/VisitTime/Columns/Localtime.php
@@ -11,10 +11,13 @@ namespace Piwik\Plugins\VisitTime\Columns;
 use Piwik\Piwik;
 use Piwik\Plugin\VisitDimension;
 use Piwik\Plugins\VisitTime\Segment;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
 
 class Localtime extends VisitDimension
 {    
     protected $fieldName = 'visitor_localtime';
+    protected $fieldType = 'TIME NOT NULL';
 
     protected function init()
     {
@@ -30,4 +33,15 @@ class Localtime extends VisitDimension
     {
         return Piwik::translate('VisitTime_ColumnLocalTime');
     }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        return $request->getLocalTime();
+    }
 }
\ No newline at end of file
diff --git a/plugins/VisitorInterest/Columns/Visitsbydayssincelastvisit.php b/plugins/VisitorInterest/Columns/Visitsbydayssincelastvisit.php
index a114bf54769a3a1e3871b2984d3b50f2d689a2fc..075c6e7aaeae560e248dd81b2883f075a4ce3136 100644
--- a/plugins/VisitorInterest/Columns/Visitsbydayssincelastvisit.php
+++ b/plugins/VisitorInterest/Columns/Visitsbydayssincelastvisit.php
@@ -10,11 +10,28 @@ namespace Piwik\Plugins\VisitorInterest\Columns;
 
 use Piwik\Piwik;
 use Piwik\Plugin\VisitDimension;
+use Piwik\Tracker\Action;
+use Piwik\Tracker\Request;
 
 class Visitsbydayssincelastvisit extends VisitDimension
-{    
+{
+    protected $fieldName = 'visitor_days_since_last';
+    protected $fieldType = 'SMALLINT(5) UNSIGNED NOT NULL';
+
     public function getName()
     {
         return Piwik::translate('VisitorInterest_VisitsByDaysSinceLast');
     }
+
+    /**
+     * @param Request $request
+     * @param array   $visit
+     * @param Action|null $action
+     * @return int
+     */
+    public function onNewVisit(Request $request, $visit, $action)
+    {
+        return $request->getDaysSinceLastVisit();
+    }
+
 }
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
index 6d10c939426009862d00a87dc2c5712ac0f40487..19aefaace8f0f09044510d4f299fa93f7eb36429 100644
--- a/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
+++ b/tests/PHPUnit/Integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
@@ -37,6 +37,13 @@
 		<name>Number of visits</name>
 		<segment>visitCount</segment>
 	</row>
+	<row>
+		<type>metric</type>
+		<category>Visit</category>
+		<name>Total events</name>
+		<segment>events</segment>
+		<acceptedValues>To select all visits who triggered an Event, use: &amp;segment=events&gt;0</acceptedValues>
+	</row>
 	<row>
 		<type>metric</type>
 		<category>Visit</category>
@@ -149,13 +156,6 @@
 		<segment>visitServerHour</segment>
 		<acceptedValues>0, 1, 2, 3, ..., 20, 21, 22, 23</acceptedValues>
 	</row>
-	<row>
-		<type>dimension</type>
-		<category>Visit</category>
-		<name>Total events</name>
-		<segment>events</segment>
-		<acceptedValues>To select all visits who triggered an Event, use: &amp;segment=events&gt;0</acceptedValues>
-	</row>
 	<row>
 		<type>dimension</type>
 		<category>Visit</category>
diff --git a/tests/PHPUnit/UI b/tests/PHPUnit/UI
index b4ab7e0e73efc617156824cdeac0b9930a7f3e4e..06b7215cfeda6fabd3acee2db22dd7805e14ad52 160000
--- a/tests/PHPUnit/UI
+++ b/tests/PHPUnit/UI
@@ -1 +1 @@
-Subproject commit b4ab7e0e73efc617156824cdeac0b9930a7f3e4e
+Subproject commit 06b7215cfeda6fabd3acee2db22dd7805e14ad52