diff --git a/taxonomy_views_switcher.info b/taxonomy_views_switcher.info
index a31a2b4..e8b3020 100644
--- a/taxonomy_views_switcher.info
+++ b/taxonomy_views_switcher.info
@@ -1,7 +1,8 @@
-
 name = Taxonomy Views Switcher
 description = Allows different views to be set for different taxonomy terms.
 core = 7.x
 dependencies[] = views
 dependencies[] = taxonomy
 
+files[] = taxonomy_views_switcher.module
+
diff --git a/taxonomy_views_switcher.module b/taxonomy_views_switcher.module
index 75d4d7c..24f6334 100644
--- a/taxonomy_views_switcher.module
+++ b/taxonomy_views_switcher.module
@@ -1,5 +1,6 @@
 <?php
 
+
 function taxonomy_views_switcher_menu_alter(&$items) {
   $items['taxonomy/term/%']['page callback']    = 'taxonomy_views_switcher_render_view';
   $items['taxonomy/term/%']['page arguments']   = array(2);
@@ -8,9 +9,7 @@ function taxonomy_views_switcher_menu_alter(&$items) {
 }
 
 function taxonomy_views_switcher_render_view($tid = '', $depth = 0, $op = 'page'){
-
   $target = taxonomy_views_switcher_get_view();
- 
   if (isset($target['view'])) {
   	$view = views_get_view($target['view']);
     $view->set_display($target['display']);
@@ -19,7 +18,10 @@ function taxonomy_views_switcher_render_view($tid = '', $depth = 0, $op = 'page'
     drupal_set_title(str_replace('&amp;','&',$view->get_title()));
     return $view->preview();
   }
-  return t('No suitable view found');
+
+  // if no suitable view is found, use core drupal taxonomy/term/% page
+  module_load_include('inc', 'taxonomy', 'taxonomy.pages');
+  return taxonomy_term_page(taxonomy_term_load($tid));
 }
 
 function taxonomy_views_switcher_view_access($term){
@@ -32,16 +34,16 @@ function taxonomy_views_switcher_get_view(){
 
   if ($cached = cache_get("taxonomy_views_switcher:$view_path")) {
     return $cached->data;
-  }  
+  }
 
-  $target_view = array(3); // default target view;
-  $default_view = array(3); // default view if no suitable target found
+  $target_view = array(); // default target view;
+  $default_view = array(); // default view if no suitable target found
 
   $views = views_get_all_views();
   foreach ($views as $view) {
     if (isset($view->disabled) && $view->disabled) continue;
 
-    foreach ($view->display as $name => $display) 
+    foreach ($view->display as $name => $display)
     {
       // Each view can have multiple displays. These may have a path specified.
       $plugin = $display->display_plugin;
@@ -55,7 +57,16 @@ function taxonomy_views_switcher_get_view(){
         $path = preg_replace('/^(switch)?\//','',$path);
         $path = preg_replace('/(\/\%)?$/','',$path);
 
-        // Match the view to the current request_path
+        // Set default view - check if default taxonomy/term view is found
+        if ($path == 'taxonomy/term') {
+          $default_view = array(
+            'view'    => $view->name,
+            'display' => $name,
+            'path' => $path
+          );
+        }
+
+        // Set target view - match the view to the current request_path
         if (preg_match('/'.str_replace('/','\/',$path).'/', $view_path)) {
           // this path matches, now we want to see if it's a more specific (ie deeper) path than any existing ones)
           if (!isset($target_view['view']) || substr_count($path,'/') > substr_count($target_view['path'],'/')) {
@@ -65,29 +76,27 @@ function taxonomy_views_switcher_get_view(){
               'path' => $path
             );
           }
-        } elseif ($path == 'taxonomy/term') {
-            $default_view = array(
+        }
+
+        // see if there is a patch matching taxonomy vid/machine_name
+        elseif (substr($path,0,4) == 'vid/') {
+        {
+          $term = taxonomy_term_load(arg(2));
+          // match vid or vocabulary machine name
+          if ($path == 'vid/'.$term->vid || $path == 'vid/'.$term->vocabulary_machine_name) {
+            $target_view = array(
               'view'    => $view->name,
               'display' => $name,
               'path' => $path
             );
-        } else {
-          // see if there is a taxonomy vid or tid match
-          if (substr($path,0,4) == 'vid/') {
-            $term = taxonomy_term_load(arg(2));
-            if ($path == 'vid/'.$term->vid) {
-              $target_view = array(
-                'view'    => $view->name,
-                'display' => $name,
-                'path' => $path
-              );
-              break; // for now, a vid match is totally specific, so end matching process (TODO: consider making this more flexible and allowing tid matches)
-            }
-          }        
+            break; // for now, a vid match is totally specific, so end matching process (TODO: consider making this more flexible and allowing tid matches)
+          }
+        }
         }
       }
     }
   }
+
   if (isset($target_view['view']))
   {
     cache_set("taxonomy_views_switcher:$view_path",$target_view);
