diff --git a/handlers/associated/views.inc b/handlers/associated/views.inc
index 5f85c79..17b359b 100644
--- a/handlers/associated/views.inc
+++ b/handlers/associated/views.inc
@@ -21,11 +21,14 @@ class TaxonomyDisplayAssociatedDisplayHandlerViews extends TaxonomyDisplayAssoci
    *
    * @see TaxonomyDisplayAssociatedDisplayHandler::displayAssociated()
    */
-  public function displayAssociated($term, $options = NULL) {
+  public function displayAssociated($terms, $options = NULL) {
     module_load_include('module', 'views');
 
     $build = array();
 
+    // Also load first term in array for backwards compatibility
+    $term = taxonomy_term_load($terms[0]);
+
     // The code below essentially mimics views_embed_view() but outputs a
     // watchdog error if the view/view display isn't valid.
 
@@ -46,7 +49,7 @@ class TaxonomyDisplayAssociatedDisplayHandlerViews extends TaxonomyDisplayAssoci
     // Else if the user has access to the view.
     elseif ($view->access($options['display'])) {
       // Generate the view's output.
-      $output = $view->preview($options['display'], array($term->tid));
+      $output = $view->preview($options['display'], $terms);
       if ($output) {
         $build['view'] = array(
           '#markup' => $output,
diff --git a/taxonomy_display.module b/taxonomy_display.module
index b45fc3a..f850ab1 100644
--- a/taxonomy_display.module
+++ b/taxonomy_display.module
@@ -146,11 +146,20 @@ function taxonomy_display_menu_alter(&$items) {
   if (!variable_get('page_manager_term_view_disabled', TRUE)) {
     return;
   }
-
-  $items['taxonomy/term/%taxonomy_term']['page callback'] = 'taxonomy_display_taxonomy_term_page';
-  $items['taxonomy/term/%taxonomy_term']['title callback'] = 'taxonomy_display_taxonomy_term_title';
-  $items['taxonomy/term/%taxonomy_term']['file'] = 'taxonomy_display.module';
-  $items['taxonomy/term/%taxonomy_term']['module'] = 'taxonomy_display';
+  // Normally menu items should only be modified in hook_menu_alter. However in
+  // this case we are completely replacing taxonomy's menu item with our own so
+  // that we can handle multiple terms. This requires more invasive
+  // modification.
+  unset($items['taxonomy/term/%taxonomy_term']);
+  $items['taxonomy/term/%'] = array(
+    'page callback' => 'taxonomy_display_taxonomy_term_page',
+    'page arguments' => array(2),
+    'title callback' => 'taxonomy_display_taxonomy_term_title',
+    'title arguments' => array(2),
+    'file' => 'taxonomy_display.module',
+    'module' => 'taxonomy_display',
+    'access arguments' => array('access content'),
+  );
 }
 
 /**
@@ -340,15 +349,24 @@ function taxonomy_display_save_taxonomy_display($machine_name, $save_data = arra
 }
 
 /**
- * Page callback; displays all nodes associated with a term.
+ * Page callback; displays all nodes associated with one or more terms.
  *
- * @param $term
- *   A term object.
+ * @param $tids
+ *   A string of term ids to be loaded, each separated by a space.
  *
  * @return
  *   The page content.
  */
-function taxonomy_display_taxonomy_term_page($term) {
+function taxonomy_display_taxonomy_term_page($tids) {
+  // Transform terms from a string or an array.
+  // @todo Also check to be sure that the resulting terms are numeric.
+  $terms = explode(" ", $tids);
+
+  // Process the first term in the array, primarily for backwards compatibility
+  // with previous releases of Taxonomy Display (all plugins except views
+  // assume that only a single term will be used).
+  $term = taxonomy_term_load($terms[0]);
+
   // Expose our $term object to altering.
   drupal_alter('taxonomy_display_term_page_term_object', $term);
 
@@ -373,7 +391,16 @@ function taxonomy_display_taxonomy_term_page($term) {
 
   // Associated content display
   $associated_display = new $display_settings['associated_display_plugin'];
-  $build = array_merge($build, $associated_display->displayAssociated($term, $display_settings['associated_display_options']));
+
+  // Views allows for multiple term ids, Drupal core does not. Check the class
+  // of the display handler to pass Views an array of terms. All other display
+  // plugins need to be passed a term object instead.
+  if (get_class($associated_display) == 'TaxonomyDisplayAssociatedDisplayHandlerViews') {
+    $build = array_merge($build, $associated_display->displayAssociated($terms, $display_settings['associated_display_options']));
+  }
+  else {
+    $build = array_merge($build, $associated_display->displayAssociated($term, $display_settings['associated_display_options']));
+  }
 
   return $build;
 }
@@ -385,15 +412,40 @@ function taxonomy_display_taxonomy_term_page($term) {
  * would be helpful or requested we can add it. This is simply to make all of
  * the hook_menu_alter functions we changed point to the same module.
  *
- * @param $term
- *   A term object.
+ * @param $tids
+ *   A string of term ids to be loaded, each separated by a space.
  *
  * @return
  *   The term name to be used as the page title.
  */
-function taxonomy_display_taxonomy_term_title($term) {
-  return function_exists('i18n_taxonomy_term_name') ?
-      i18n_taxonomy_term_name($term) : taxonomy_term_title($term);
+function taxonomy_display_taxonomy_term_title($tids) {
+  // Transform terms from a string or an array.
+  // @todo Also check to be sure that the resulting terms are numeric.
+  $terms = explode(" ", $tids);
+
+  // Process the first term in the array, primarily for backwards compatibility
+  // with previous releases of Taxonomy Display (all plugins except views
+  // assume that only a single term will be used).
+  $term = taxonomy_term_load($terms[0]);
+
+  // Check if the term is multiple. If yes, handle that case specially. If no,
+  // pass off as before.
+  if (count($terms) > 1) {
+    $loaded_terms = taxonomy_term_load_multiple($terms);
+    $names = array();
+    foreach ($loaded_terms as $term) {
+      $names[] = $term->name;
+    }
+    $title = implode(', ', $names);
+  }
+  else if (function_exists('i18n_taxonomy_term_name')) {
+    $title = i18n_taxonomy_term_name($term);
+  }
+  else {
+    $title = taxonomy_term_title($term);
+  }
+
+  return $title;
 }
 
 /**
