diff --git a/concurrent_queue.drush.inc b/concurrent_queue.drush.inc
index b4df65a..991aa47 100644
--- a/concurrent_queue.drush.inc
+++ b/concurrent_queue.drush.inc
@@ -15,8 +15,9 @@ function concurrent_queue_drush_command() {
       'queue_name' => 'The name of the queue to run, as defined in either hook_queue_info or hook_cron_queue_info.',
     ),
     'options' => array(
-      'concurrency' => 'The number of parallel processes to run.',
+      'concurrency' => 'The number of parallel processes to run. The default concurrency is 2.',
       'override-time-limit' => 'Override the time limit set in hook_cron_queue_info() when processing. Time in seconds.',
+      'no-reclaim' => 'Will not attempt to reclaim items from the queue before processing.',
     ),
     'aliases' => array('qrc'),
     'required-arguments' => TRUE,
@@ -36,18 +37,11 @@ function drush_concurrent_queue_queue_run_concurrent_validate($queue_name) {
   if (!$info) {
     return drush_set_error('DRUSH_QUEUE_ERROR', dt('Could not find the !name queue.', array('!name' => $queue_name)));
   }
-  if ($info['subqueue'] && drush_get_option('concurrency')) {
-    return drush_set_error('DRUSH_SUBQUEUE_CONCURRENCY', dt('Cannot use --concurrency argument to run subqueues.'));
-  }
 }
 
 /**
  * Fetch a queue's information from drush_queue_get_queues().
  *
- * If the queue name is an auto-generated process queue, this ensures the
- * 'parent' queue is returned, since there is no information defined about
- * the individual process queue.
- *
  * @param $queue_name
  * @return bool
  */
@@ -55,18 +49,7 @@ function _drush_concurrent_queue_get_queue_info($queue_name) {
   drush_include_engine('drupal', 'environment');
 
   $queues = drush_queue_get_queues();
-  $data = array('queue_name' => $queue_name, 'subqueue' => FALSE);
-
-  if (!empty($queues[$queue_name])) {
-    return $queues[$queue_name] + $data;
-  }
-  elseif (preg_match('/^([\w-]+):([\w]+)$/', $queue_name, $matches) && !empty($queues[$matches[1]])) {
-    $data['subqueue_name'] = $queue_name;
-    $data['queue_name'] = $matches[1];
-    $data['subqueue'] = TRUE;
-    return $queues[$matches[1]] + $data;
-  }
-  return FALSE;
+  return !empty($queues[$queue_name]) ? $queues[$queue_name] + array('queue_name' => $queue_name) : FALSE;
 }
 
 /**
@@ -78,10 +61,8 @@ function drush_concurrent_queue_queue_run_concurrent($queue_name) {
   $queue = new DrushConcurrentQueue($queue_name);
 
   // Reset expired items in process queues.
-  if (!$queue->isSubqueue()) {
-    if ($reclaim_count = $queue->reclaimItems()) {
-      drush_log("Reset $reclaim_count items that had expired in the $queue_name queue or its subqueues.", 'ok');
-    }
+  if (!drush_get_option('no-reclaim') && $reclaim_count = $queue->reclaimItems()) {
+    drush_log("Reset $reclaim_count items that had expired in the $queue_name queue.", 'ok');
   }
 
   $count_before = $queue->numberOfItems();
@@ -90,7 +71,7 @@ function drush_concurrent_queue_queue_run_concurrent($queue_name) {
     return TRUE;
   }
 
-  $concurrency = (int) drush_get_option('concurrency');
+  $concurrency = (int) drush_get_option('concurrency', '2');
   if ($concurrency > 1) {
     $result = $queue->invokeWorkers($concurrency);
   }
@@ -113,23 +94,12 @@ class DrushConcurrentQueue {
     return call_user_func_array(array($this->queue, $name), $arguments);
   }
 
-  public function isSubqueue() {
-    return !empty($this->info['subqueue']);
-  }
-
   public function reclaimItems() {
-    // If a parent queue is being run, reclaim all unrun and expired items
-    // assigned to subqueues or the parent queue.
+    // Reclaim all un-run and expired items.
     $query = db_update('queue');
-    $query->fields(array('expire' => 0, 'name' => $this->name));
-    $expire_condition = db_or();
-    $expire_condition->condition('expire', 0);
-    $expire_condition->condition('expire', time(), '<');
-    $query->condition($expire_condition);
-    $name_condition = db_or();
-    $name_condition->condition('name', $this->name);
-    $name_condition->condition('name', db_like($this->name . ':') . '%', 'LIKE');
-    $query->condition($name_condition);
+    $query->fields(array('expire' => 0));
+    $query->condition('expire', 0, '<>');
+    $query->condition('expire', time(), '<');
     return $query->execute();
   }
 
@@ -163,44 +133,6 @@ class DrushConcurrentQueue {
     return (microtime(TRUE) - $this->startTime);
   }
 
-  public function generateSubqueueName() {
-    if (strlen($this->name) > 240) {
-      throw new Exception("Unable to generate subqueue name since $this->name is longer the 240 characters.");
-    }
-
-    // @todo Should this validate that it doesn't exist?
-    return uniqid($this->name . ':');
-  }
-
-  public function generateSubqueues($concurrency) {
-    $item_ids = db_query("SELECT item_id FROM {queue} WHERE name = :name AND expire = 0", array(':name' => $this->name))->fetchCol();
-    $item_count = count($item_ids);
-
-    if (!$item_count) {
-      throw new Exception("No items to process in subqueues.");
-    }
-    elseif ($item_count < $concurrency) {
-      $concurrency = $item_count;
-    }
-
-    $chunk_size = ceil(count($item_ids) / $concurrency);
-    $item_chunks = array_chunk($item_ids, $chunk_size);
-
-    $subqueue_names = array();
-    foreach ($item_chunks as $id => $item_chunk) {
-      $subqueue_name = $subqueue_names[] = $this->generateSubqueueName();
-      if ($subqueue_name != $this->name) {
-        db_update('queue')
-          ->fields(array('name' => $subqueue_name))
-          ->condition('item_id', $item_chunk, 'IN')
-          ->condition('expire', 0)
-          ->execute();
-      }
-    }
-
-    return $subqueue_names;
-  }
-
   /**
    * Spin off a specific number of concurrent workers to run queues.
    *
@@ -210,17 +142,18 @@ class DrushConcurrentQueue {
   public function invokeWorkers($concurrency) {
     $count_before = $this->queue->numberOfItems();
 
-    $subqueue_names = $this->generateSubqueues($concurrency);
-    $invocations = array();
-    foreach ($subqueue_names as $subqueue_name) {
+    for ($i = 0; $i < $concurrency; $i++) {
       $invocations[] = array(
         'site' => '@self',
         'command' => 'queue-run-concurrent',
-        'args' => array($subqueue_name),
+        'args' => array($this->name),
       );
     }
 
-    $commandline_options = array();
+    $commandline_options = array(
+      'concurrency' => 1,
+      'no-reclaim' => TRUE,
+    );
     foreach (array('override-time-limit') as $option) {
       $value = drush_get_option($option);
       if (isset($value)) {
@@ -235,16 +168,8 @@ class DrushConcurrentQueue {
     $result = drush_backend_invoke_concurrent($invocations, $commandline_options, $backend_options);
     $elapsed = $this->readTimer();
 
-    // Reset the subqueue items back to the parent queue name.
-    if ($diff = array_diff($subqueue_names, array($this->name))) {
-      db_update('queue')
-        ->fields(array('name' => $this->name))
-        ->condition('name', $subqueue_names, 'IN')
-        ->execute();
-    }
-
     $count_after = $this->queue->numberOfItems();
-    drush_log(dt("Processed @count items from @queue in @elapsed seconds. There are @remaining items remaining in the queue.", array(
+    drush_log(dt("Concurrently processed @count items from @queue in @elapsed seconds. There are @remaining items remaining in the queue.", array(
       '@count' => ($count_before - $count_after),
       '@queue' => $this->name,
       '@elapsed' => round($elapsed, 2),
@@ -300,7 +225,7 @@ class DrushConcurrentQueue {
       '@queue' => $this->name,
       '@elapsed' => round($elapsed, 2),
       '@remaining' => $this->queue->numberOfItems(),
-    )), 'ok');
+    )), 'info');
 
     return $count;
   }
