diff --git a/includes/callback_add_aggregation.inc b/includes/callback_add_aggregation.inc
index 1524686..5699762 100644
--- a/includes/callback_add_aggregation.inc
+++ b/includes/callback_add_aggregation.inc
@@ -157,7 +157,11 @@ class SearchApiAlterAddAggregation extends SearchApiAbstractAlterCallback {
             $values = $this->flattenArray($values);
 
             $this->reductionType = $field['type'];
-            $item->$name = array_reduce($values, array($this, 'reduce'), NULL);
+            if ($field['type'] != 'list') {
+              $item->$name = array_reduce($values, array($this, 'reduce'), NULL);
+            } else {
+              $item->$name = $values;
+            }
             if ($field['type'] == 'count' && !$item->$name) {
               $item->$name = 0;
             }
@@ -252,6 +256,7 @@ class SearchApiAlterAddAggregation extends SearchApiAbstractAlterCallback {
           'max' => t('Maximum'),
           'min' => t('Minimum'),
           'first' => t('First'),
+          'list' => t('List'),
         );
       case 'type':
         return array(
@@ -261,6 +266,7 @@ class SearchApiAlterAddAggregation extends SearchApiAbstractAlterCallback {
           'max' => 'integer',
           'min' => 'integer',
           'first' => 'string',
+          'list' => 'list',
         );
       case 'description':
         return array(
@@ -270,6 +276,7 @@ class SearchApiAlterAddAggregation extends SearchApiAbstractAlterCallback {
           'max' => t('The Maximum aggregation computes the numerically largest contained field value.'),
           'min' => t('The Minimum aggregation computes the numerically smallest contained field value.'),
           'first' => t('The First aggregation will simply keep the first encountered field value. This is helpful foremost when you know that a list field will only have a single value.'),
+          'list' => t('The List aggregation will simply merge the lists of aggregated fields.'),
         );
     }
   }
