diff --git a/views_content/plugins/content_types/views_row.inc b/views_content/plugins/content_types/views_row.inc
index 254f7b5..aa01a45 100644
--- a/views_content/plugins/content_types/views_row.inc
+++ b/views_content/plugins/content_types/views_row.inc
@@ -44,13 +44,19 @@ function views_content_views_row_content_type_render($subtype, $conf, $panel_arg
   // This guarantees the view is rendered normally which must happen.
   $view = views_content_context_get_view($context);
   $output = views_content_context_get_output($context);
+
   // Rows are keyed by result id value and need to be reset.
   $output['rows'] = array_values($output['rows']);
-  if (empty($conf['use_fields']) || empty($view->style_plugin->row_plugin)) {
+
+  $sets = array();
+  $plugin = $view->style_plugin;
+
+  if (empty($conf['use_fields']) || empty($plugin->row_plugin)) {
     foreach ($conf['rows'] as $row) {
+      $row_index = $row - 1;
       // We store the row number 1-indexed but they are 0-indexed internally.
-      if (isset($output['rows'][$row - 1])) {
-        $block->content .= $output['rows'][$row - 1];
+      if (isset($output['rows'][$row_index])) {
+        $sets[$plugin->groups[$row_index][$row_index] = $output['rows'][$row_index];
       }
     }
   }
@@ -63,12 +69,24 @@ function views_content_views_row_content_type_render($subtype, $conf, $panel_arg
     // Rerender just the rows we need.
     foreach ($conf['rows'] as $row) {
       $view->row_index = $row - 1;
-      if (!empty($view->result[$row - 1])) {
-        $block->content .= $view->style_plugin->row_plugin->render($view->result[$row - 1]);
+      if (!empty($view->result[$view->row_index])) {
+        $sets[$plugin->groups[$row_index][$view->row_index] = $plugin->row_plugin->render($view->result[$view->row_index]);
       }
+      unset($view->row_index);
     }
   }
 
+  foreach ($sets as $title => $rows) {
+    $block->content .= theme($plugin->theme_functions(),
+      array(
+        'view' => $view,
+        'options' => $plugin->options,
+        'rows' => $rows,
+        'title' => $title
+      )
+    );
+  }
+
   return $block;
 }
 
diff --git a/views_content/plugins/views/views_content_plugin_style_ctools_context.inc b/views_content/plugins/views/views_content_plugin_style_ctools_context.inc
index 513de3c..204cd2b 100644
--- a/views_content/plugins/views/views_content_plugin_style_ctools_context.inc
+++ b/views_content/plugins/views/views_content_plugin_style_ctools_context.inc
@@ -22,6 +22,7 @@ class views_content_plugin_style_ctools_context extends views_plugin_style {
     }
 
     $this->rows = array();
+    $this->groups = array();
     if ($this->uses_row_plugin() && empty($this->row_plugin)) {
       vpr('views_plugin_style_default: Missing row plugin');
       return;
@@ -37,6 +38,7 @@ class views_content_plugin_style_ctools_context extends views_plugin_style {
       foreach ($records as $row_index => $row) {
         $this->view->row_index = $row_index;
         $this->rows[$row_index] = $this->row_plugin->render($row);
+        $this->groups[$row_index] = $title;
       }
     }
     unset($this->view->row_index);
