diff --git a/export_queue.admin.inc b/export_queue.admin.inc
index 66de0fd..93198cd 100644
--- a/export_queue.admin.inc
+++ b/export_queue.admin.inc
@@ -66,10 +66,10 @@ function export_queue_settings_form() {
     $description = t('Specify how many queued items should be exported at a time with a whole number greater than 0.') .'<br />';
 
     // Add batch information to the description.
-    if ($queue['batch_limit'] > 0) {
-      $description .= t('This queue can batch up to @limit items in one request.', array('@limit' => $queue['batch_limit']));
+    if ($queue['cron_limit'] > 0) {
+      $description .= t('This queue can batch up to @limit items in one request.', array('@limit' => $queue['cron_limit']));
     }
-    elseif ($queue['batch_limit'] == -1) {
+    elseif ($queue['cron_limit'] == -1) {
       $description .= t('This queue can batch an unlimited number of items in one request.');
     }
     else {
@@ -84,6 +84,21 @@ function export_queue_settings_form() {
       '#required' => TRUE,
       '#size' => 16,
     );
+    
+    $form['queues'][$queue_id]['cron_wait'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Cron wait time'),
+      '#description' => 'How long (in seconds) before this queue will process again',
+      '#default_value' => ((isset($queue['cron_wait'])) ? $queue['cron_wait'] : 86400),
+      '#required' => TRUE,
+      '#size' => 6,
+    );
+    
+    $form['queues'][$queue_id]['cron_last_run'] = array(
+      '#type' => 'hidden',
+      '#default_value' => ((isset($queue['cron_last_run'])) ? $queue['cron_last_run'] : variable_get('cron_last', time())),
+    );
+    
   }
 
   $form['buttons']['submit'] = array(
@@ -140,11 +155,12 @@ function export_queue_report($queue_id = NULL) {
   $header = array(
     array('data' => t('Qid'), 'field' => 'qid', 'sort' => 'desc'),
     array('data' => t('Queue'), 'field' => 'queue_id'),
-    array('data' => t('Object ID'), 'field' => 'object_id'),
+    array('data' => t('Node ID'), 'field' => 'object_id'),
     array('data' => t('Priority'), 'field' => 'priority'),
     array('data' => t('Status'), 'field' => 'status'),
-    array('data' => t('External ID'), 'field' => 'external_id'),
-    array('data' => t('Enqueued'), 'field' => 'enqueued'),
+    array('data' => t('Sample ID'), 'field' => 'external_id'),
+    array('data' => t('First Enqueued'), 'field' => 'enqueued'),
+    array('data' => t('Last Updated'), 'field' => 'updated'),
     array('data' => t('Exported'), 'field' => 'exported'),
   );
 
@@ -162,7 +178,7 @@ function export_queue_report($queue_id = NULL) {
   }
 
   // Select the appropriate rows from the database for the report.
-  $result = pager_query("SELECT qid, queue_id, object_id, priority, status, external_id, enqueued, exported FROM {export_queue}". $where . tablesort_sql($header), 30, 0, NULL, $args);
+  $result = pager_query("SELECT qid, queue_id, object_id, priority, status, external_id, enqueued, exported, updated FROM {export_queue}". $where . tablesort_sql($header), 30, 0, NULL, $args);
 
   while ($item = db_fetch_array($result)) {
     if ($item['status'] < 10) {
@@ -178,12 +194,13 @@ function export_queue_report($queue_id = NULL) {
     $row = array(
       $item['qid'],
       check_plain($queues[$item['queue_id']]['name']),
-      $item['object_id'],
+      l($item['object_id'], "node/" . $item['object_id'] . "/edit"),
       $item['priority'],
       array('data' => $status, 'class' => 'export-status'),
       !empty($item['external_id']) ? check_plain($item['external_id']) : '-',
-      format_date($item['enqueued'], 'custom', 'd/m/Y<b\r/>H:i:s'),
-      !empty($item['exported']) ? format_date($item['exported'], 'custom', 'd/m/Y<b\r/>H:i:s') : '-',
+      format_date($item['enqueued'], 'custom', 'm/d/Y<b\r/>H:i:s'),
+      !empty($item['updated']) ? format_date($item['updated'], 'custom', 'm/d/Y<b\r/>H:i:s') : '-',
+      !empty($item['exported']) ? format_date($item['exported'], 'custom', 'm/d/Y<b\r/>H:i:s') : '-',
     );
 
     $rows[] = $row;
diff --git a/export_queue.module b/export_queue.module
index 17e47c3..df11c66 100644
--- a/export_queue.module
+++ b/export_queue.module
@@ -157,8 +157,8 @@ function export_queue_list($filter = array()) {
       }
 
       // If no batch limit is specified, set it to 0.
-      if (empty($queue['batch_limit'])) {
-        $queue['batch_limit'] = 0;
+      if (empty($queue['cron_limit'])) {
+        $queue['cron_limit'] = 0;
       }
 
       // Update the queue with saved data.
@@ -225,7 +225,7 @@ function export_queue_save($queue) {
   $queue_id = $queue['queue_id'];
 
   // Filter out data that will always come from hook_export_queue().
-  $queue = array_diff_key($queue, drupal_map_assoc(array('queue_id', 'name', 'description', 'callback', 'batch_limit')));
+  $queue = array_diff_key($queue, drupal_map_assoc(array('queue_id', 'name', 'description', 'callback')));
 
   // Load and update the export queues array.
   $queues = variable_get('export_queues', array());
@@ -326,6 +326,7 @@ function export_queue_load_item($match) {
 function export_queue_update_item($qid, $data) {
   // Ensure the qid of the item is in the data array.
   $data += array('qid' => $qid);
+  $data['updated'] = time();
 
   // Update the item in the export queue table.
   $result = drupal_write_record('export_queue', $data, array('qid'));
@@ -353,19 +354,30 @@ function export_queue_remove_item($qid) {
  *   No return value.
  */
 function export_queue_process($queue) {
-  // If there are pending items in the queue...
-  if (db_result(db_query("SELECT COUNT(qid) FROM {export_queue} WHERE queue_id = '%s' AND status >= %d AND status < %d", $queue['queue_id'], EXPORT_QUEUE_PENDING, EXPORT_QUEUE_PROCESSING))) {
-    $items = array();
-
-    // Load up the appropriate number of items based on the queue's settings.
-    $result = db_query_range("SELECT * FROM {export_queue} WHERE queue_id = '%s' AND status >= %d AND status < %d ORDER BY priority DESC, enqueued ASC", $queue['queue_id'], EXPORT_QUEUE_PENDING, EXPORT_QUEUE_PROCESSING, 0, $queue['cron_limit']);
-
-    // Build an array of items for export and send it to the export callback.
-    while ($row = db_fetch_array($result)) {
-      $items[$row['qid']] = $row;
+  
+  $time = time();
+  
+  if ($queue['cron_last_run'] <= ($time - $queue['cron_wait'])) {
+    
+    $queue['cron_last_run'] = $time;
+    export_queue_save($queue);
+  
+    // If there are pending items in the queue...
+    if (db_result(db_query("SELECT COUNT(qid) FROM {export_queue} WHERE queue_id = '%s' AND status >= %d AND status < %d", $queue['queue_id'], EXPORT_QUEUE_PENDING, EXPORT_QUEUE_PROCESSING))) {
+      $items = array();
+  
+      // Load up the appropriate number of items based on the queue's settings.
+      $result = db_query_range("SELECT * FROM {export_queue} WHERE queue_id = '%s' AND status >= %d AND status < %d ORDER BY priority DESC, enqueued ASC", $queue['queue_id'], EXPORT_QUEUE_PENDING, EXPORT_QUEUE_PROCESSING, 0, $queue['cron_limit']);
+  
+      // Build an array of items for export and send it to the export callback.
+      while ($row = db_fetch_array($result)) {
+        $items[$row['qid']] = $row;
+      }
+  
+      $queue['callback']($items);
     }
-
-    $queue['callback']($items);
+  
   }
+  
 }
 
