diff --git a/modules/tracker/tracker.pages.inc b/modules/tracker/tracker.pages.inc
index baa9986..e505515 100644
--- a/modules/tracker/tracker.pages.inc
+++ b/modules/tracker/tracker.pages.inc
@@ -9,12 +9,20 @@
 /**
  * Page callback: prints a listing of active nodes on the site.
  *
+ * Build complex query joining 'tracker_node' table to use its changed
+ * column as value for ordering.
+ *
  * Queries the database for info, adds RDFa info if applicable, and generates
  * the render array that will be used to render the page.
  */
 function tracker_page($account = NULL, $set_title = FALSE) {
+  $query = db_select('node', 'n');
+
+  $query->innerJoin('node_comment_statistics', 'l', 'n.nid = l.nid');
+  $query->innerJoin('users', 'u', 'n.uid = u.uid');
+
   if ($account) {
-    $query = db_select('tracker_user', 't')->extend('PagerDefault');
+    $query->innerJoin('tracker_user', 't', 'n.nid = t.nid');
     $query->condition('t.uid', $account->uid);
 
     if ($set_title) {
@@ -25,17 +33,18 @@ function tracker_page($account = NULL, $set_title = FALSE) {
     }
   }
   else {
-    $query = db_select('tracker_node', 't', array('target' => 'slave'))->extend('PagerDefault');
+    $query->innerJoin('tracker_node', 't', 'n.nid = t.nid');
   }
 
-  // This array acts as a placeholder for the data selected later
-  // while keeping the correct order.
-  $nodes = $query
-    ->addTag('node_access')
+  $query->addField('t', 'changed', 'last_activity');
+  $nodes = $query->addTag('node_access')
+    ->fields('n', array('nid', 'title', 'type', 'changed'))
     ->fields('t', array('nid', 'changed'))
+    ->fields('l', array('comment_count'))
     ->condition('t.published', 1)
     ->orderBy('t.changed', 'DESC')
-    ->limit(25)
+    ->extend('PagerDefault')
+    ->limit(variable_get('tracker_page_rows_count', 25))
     ->execute()
     ->fetchAllAssoc('nid');
 
