diff --git a/module/VuFind/config/module.config.php b/module/VuFind/config/module.config.php
index 8f954f6a3fe1c4cea91d7c7af454a80eb1ab17f3..b3363509ff7b7b46625a8d20625235974d08a76c 100644
--- a/module/VuFind/config/module.config.php
+++ b/module/VuFind/config/module.config.php
@@ -1,5 +1,7 @@
 <?php
-return array(
+namespace VuFind\Module\Configuration;
+
+$config = array(
     'router' => array(
         'routes' => array(
             'default' => array(
@@ -16,100 +18,6 @@ return array(
                     ),
                 ),
             ),
-            'record' => array(
-                'type'    => 'Zend\Mvc\Router\Http\Segment',
-                'options' => array(
-                    'route'    => '/Record/[:id[/:action]]',
-                    'constraints' => array(
-                        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
-                        'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
-                    ),
-                    'defaults' => array(
-                        'controller' => 'Record',
-                        'action'     => 'Home',
-                    ),
-                ),
-            ),
-            'missingrecord' => array(
-                'type'    => 'Zend\Mvc\Router\Http\Segment',
-                'options' => array(
-                    'route'    => '/MissingRecord/[:id[/:action]]',
-                    'constraints' => array(
-                        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
-                        'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
-                    ),
-                    'defaults' => array(
-                        'controller' => 'MissingRecord',
-                        'action'     => 'Home',
-                    ),
-                ),
-            ),
-            'summonrecord' => array(
-                'type'    => 'Zend\Mvc\Router\Http\Segment',
-                'options' => array(
-                    'route'    => '/SummonRecord/[:id[/:action]]',
-                    'constraints' => array(
-                        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
-                        'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
-                    ),
-                    'defaults' => array(
-                        'controller' => 'MissingRecord',
-                        'action'     => 'Home',
-                    ),
-                ),
-            ),
-            'worldcatrecord' => array(
-                'type'    => 'Zend\Mvc\Router\Http\Segment',
-                'options' => array(
-                    'route'    => '/WorldCatRecord/[:id[/:action]]',
-                    'constraints' => array(
-                        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
-                        'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
-                    ),
-                    'defaults' => array(
-                        'controller' => 'WorldCatRecord',
-                        'action'     => 'Home',
-                    ),
-                ),
-            ),
-            'userList' => array(
-                'type'    => 'Zend\Mvc\Router\Http\Segment',
-                'options' => array(
-                    'route'    => '/MyResearch/MyList/[:id]',
-                    'constraints' => array(
-                        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
-                        'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
-                    ),
-                    'defaults' => array(
-                        'controller' => 'MyResearch',
-                        'action'     => 'MyList',
-                    ),
-                ),
-            ),
-            'editList' => array(
-                'type'    => 'Zend\Mvc\Router\Http\Segment',
-                'options' => array(
-                    'route'    => '/MyResearch/EditList/[:id]',
-                    'constraints' => array(
-                        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
-                        'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
-                    ),
-                    'defaults' => array(
-                        'controller' => 'MyResearch',
-                        'action'     => 'EditList',
-                    ),
-                ),
-            ),
-            'home' => array(
-                'type' => 'Zend\Mvc\Router\Http\Literal',
-                'options' => array(
-                    'route'    => '/',
-                    'defaults' => array(
-                        'controller' => 'index',
-                        'action'     => 'Home',
-                    ),
-                ),
-            ),
         ),
     ),
     'controller' => array(
@@ -127,3 +35,110 @@ return array(
         'template_path_stack'      => array(),
     ),
 );
+
+// Define record view routes -- route name => controller
+$recordRoutes = array(
+    'record' => 'Record',
+    'missingrecord' => 'MissingRecord',
+    'summonrecord' => 'SummonRecord',
+    'worldcatrecord' => 'WorldCatRecord'
+);
+
+// Define list-related routes -- route name => MyResearch action
+$listRoutes = array('userList' => 'MyList', 'editList' => 'EditList');
+
+// Define static routes -- Controller/Action strings
+$staticRoutes = array(
+    'Admin/Config', 'Admin/DeleteExpiredSearches', 'Admin/EnableAutoConfig',
+    'Admin/Maintenance', 'Admin/Statistics', 'AlphaBrowse/Home',
+    'AlphaBrowse/Results',
+    'Author/Home', 'Author/Search',
+    'Authority/Home', 'Authority/Record', 'Authority/Search',
+    'Browse/Author', 'Browse/Dewey', 'Browse/Era', 'Browse/Genre', 'Browse/Home',
+    'Browse/LCC', 'Browse/Region', 'Browse/Tag', 'Browse/Topic',
+    'Cart/Email', 'Cart/Export', 'Cart/Home', 'Cart/MyResearchBulk', 'Cart/Save',
+    'Cover/Unavailable', 'Help/Home',
+    'Install/Done', 'Install/FixBasicConfig', 'Install/FixCache',
+    'Install/FixDatabase', 'Install/FixDependencies', 'Install/FixILS',
+    'Install/FixSolr', 'Install/Home',
+    'MyResearch/Account', 'MyResearch/CheckedOut', 'MyResearch/Delete',
+    'MyResearch/DeleteList', 'MyResearch/Edit', 'MyResearch/Email',
+    'MyResearch/Export', 'MyResearch/Favorites', 'MyResearch/Holds',
+    'MyResearch/Home', 'MyResearch/Logout', 'MyResearch/Profile',
+    'MyResearch/SaveSearch',
+    'OAI/Server', 'Records/Home',
+    'Search/Advanced', 'Search/Email', 'Search/History', 'Search/Home',
+    'Search/NewItem', 'Search/OpenSearch', 'Search/Reserves', 'Search/Results',
+    'Search/Suggest',
+    'Summon/Advanced', 'Summon/Home', 'Summon/Search',
+    'Tag/Home',
+    'Upgrade/Home', 'Upgrade/FixAnonymousTags', 'Upgrade/FixMetadata',
+    'Upgrade/GetDBCredentials', 'Upgrade/GetSourceDir', 'Upgrade/Reset',
+    'WorldCat/Advanced', 'WorldCat/Home', 'WorldCat/Search'
+);
+
+// Build record routes
+foreach ($recordRoutes as $routeName => $controller) {
+    $config['router']['routes'][$routeName] = array(
+        'type'    => 'Zend\Mvc\Router\Http\Segment',
+        'options' => array(
+            'route'    => '/' . $controller . '/[:id[/:action]]',
+            'constraints' => array(
+                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
+                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
+            ),
+            'defaults' => array(
+                'controller' => $controller,
+                'action'     => 'Home',
+            )
+        )
+    );
+}
+
+// Build list routes
+foreach ($listRoutes as $routeName => $action) {
+    $config['router']['routes'][$routeName] = array(
+        'type'    => 'Zend\Mvc\Router\Http\Segment',
+        'options' => array(
+            'route'    => '/MyResearch/' . $action . '/[:id]',
+            'constraints' => array(
+                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
+                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
+            ),
+            'defaults' => array(
+                'controller' => 'MyResearch',
+                'action'     => $action,
+            )
+        )
+    );
+}
+
+// Build static routes
+foreach ($staticRoutes as $route) {
+    list($controller, $action) = explode('/', $route);
+    $routeName = str_replace('/', '-', strtolower($route));
+    $config['router']['routes'][$routeName] = array(
+        'type' => 'Zend\Mvc\Router\Http\Literal',
+        'options' => array(
+            'route'    => '/' . $route,
+            'defaults' => array(
+                'controller' => $controller,
+                'action'     => $action,
+            )
+        )
+    );
+}
+
+// Add the home route last
+$config['router']['routes']['home'] = array(
+    'type' => 'Zend\Mvc\Router\Http\Literal',
+    'options' => array(
+        'route'    => '/',
+        'defaults' => array(
+            'controller' => 'index',
+            'action'     => 'Home',
+        )
+    )
+);
+
+return $config;
\ No newline at end of file
diff --git a/module/VuFind/src/VuFind/Search/Base/Options.php b/module/VuFind/src/VuFind/Search/Base/Options.php
index a8456aa243ea438026691f2ea934dfb6958e10f8..dee373eb4e9755d53a539c62f906edb42d759b3f 100644
--- a/module/VuFind/src/VuFind/Search/Base/Options.php
+++ b/module/VuFind/src/VuFind/Search/Base/Options.php
@@ -337,19 +337,30 @@ abstract class Options
     }
 
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
     abstract public function getSearchAction();
 
     /**
-     * Return an array describing the action used for performing advanced searches
-     * (same format as expected by the URL view helper).  Return false if the feature
-     * is not supported.
+     * Return the route name for the search home action.
+     *
+     * @return string
+     */
+    public function getSearchHomeAction()
+    {
+        // Assume the home action is the same as the search action, only with
+        // a "-home" suffix in place of the search action.
+        $basicSearch = $this->getSearchAction();
+        return substr($basicSearch, 0, strpos($basicSearch, '-')) . '-home';
+    }
+
+    /**
+     * Return the route name of the action used for performing advanced searches.
+     * Returns false if the feature is not supported.
      *
-     * @return array|bool
+     * @return string|bool
      */
     public function getAdvancedSearchAction()
     {
diff --git a/module/VuFind/src/VuFind/Search/Favorites/Options.php b/module/VuFind/src/VuFind/Search/Favorites/Options.php
index 6dd725d48acf25c8606055ce1a04cb13681fe446..cd166fa7261a4e482deb6840864738115875765a 100644
--- a/module/VuFind/src/VuFind/Search/Favorites/Options.php
+++ b/module/VuFind/src/VuFind/Search/Favorites/Options.php
@@ -54,13 +54,12 @@ class VF_Search_Favorites_Options extends VF_Search_Base_Options
     }
 
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
     public function getSearchAction()
     {
-        return array('controller' => 'MyResearch', 'action' => 'Favorites');
+        return 'myresearch-favorites';
     }
 }
\ No newline at end of file
diff --git a/module/VuFind/src/VuFind/Search/MixedList/Options.php b/module/VuFind/src/VuFind/Search/MixedList/Options.php
index fe9291a56e612608201e8d54970a1f2595ee7ab2..22e88d5c023f17bddecdd5ab938b5bfa3e8ac4bb 100644
--- a/module/VuFind/src/VuFind/Search/MixedList/Options.php
+++ b/module/VuFind/src/VuFind/Search/MixedList/Options.php
@@ -38,13 +38,12 @@
 class VF_Search_MixedList_Options extends VF_Search_Base_Options
 {
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
     public function getSearchAction()
     {
-        return array('controller' => 'Records', 'action' => 'Home');
+        return 'records-home';
     }
 }
\ No newline at end of file
diff --git a/module/VuFind/src/VuFind/Search/Solr/Options.php b/module/VuFind/src/VuFind/Search/Solr/Options.php
index 7538ec50ec6c8b5a5f9ba78f4411f7ca30fb43db..9bedbe4c2ca5ba92569ede15e98a6547c344a212 100644
--- a/module/VuFind/src/VuFind/Search/Solr/Options.php
+++ b/module/VuFind/src/VuFind/Search/Solr/Options.php
@@ -293,26 +293,25 @@ class Options extends BaseOptions
     }
 
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
+
     public function getSearchAction()
     {
-        return array('controller' => 'Search', 'action' => 'Results');
+        return 'search-results';
     }
 
     /**
-     * Return an array describing the action used for performing advanced searches
-     * (same format as expected by the URL view helper).  Return false if the feature
-     * is not supported.
+     * Return the route name of the action used for performing advanced searches.
+     * Returns false if the feature is not supported.
      *
-     * @return array|bool
+     * @return string|bool
      */
     public function getAdvancedSearchAction()
     {
-        return array('controller' => 'Search', 'action' => 'Advanced');
+        return 'search-advanced';
     }
 
     /**
diff --git a/module/VuFind/src/VuFind/Search/SolrAuth/Options.php b/module/VuFind/src/VuFind/Search/SolrAuth/Options.php
index 12656659a1ab528940e4ed190aab01b9a4b54340..0d334b58c05ab0c857423ec01e61e46e34489a96 100644
--- a/module/VuFind/src/VuFind/Search/SolrAuth/Options.php
+++ b/module/VuFind/src/VuFind/Search/SolrAuth/Options.php
@@ -50,22 +50,20 @@ class VF_Search_SolrAuth_Options extends VF_Search_Solr_Options
     }
 
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
     public function getSearchAction()
     {
-        return array('controller' => 'Authority', 'action' => 'Search');
+        return 'authority-search';
     }
 
     /**
-     * Return an array describing the action used for performing advanced searches
-     * (same format as expected by the URL view helper).  Return false if the feature
-     * is not supported.
+     * Return the route name of the action used for performing advanced searches.
+     * Returns false if the feature is not supported.
      *
-     * @return array|bool
+     * @return string|bool
      */
     public function getAdvancedSearchAction()
     {
diff --git a/module/VuFind/src/VuFind/Search/SolrAuthor/Options.php b/module/VuFind/src/VuFind/Search/SolrAuthor/Options.php
index 3813a822f8778f05164807fe2c5e05c7cf6ad060..1fd539b915939ba70b3c154cff0cd9d3658ae03e 100644
--- a/module/VuFind/src/VuFind/Search/SolrAuthor/Options.php
+++ b/module/VuFind/src/VuFind/Search/SolrAuthor/Options.php
@@ -49,13 +49,12 @@ class VF_Search_SolrAuthor_Options extends VF_Search_Solr_Options
     }
 
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
     public function getSearchAction()
     {
-        return array('controller' => 'Author', 'action' => 'Home');
+        return 'author-home';
     }
 }
\ No newline at end of file
diff --git a/module/VuFind/src/VuFind/Search/SolrAuthorFacets/Options.php b/module/VuFind/src/VuFind/Search/SolrAuthorFacets/Options.php
index b1eb87883e593662f1f0e682152085e3883f4a65..4279dd3aa141890cef652be53d407a200f915f59 100644
--- a/module/VuFind/src/VuFind/Search/SolrAuthorFacets/Options.php
+++ b/module/VuFind/src/VuFind/Search/SolrAuthorFacets/Options.php
@@ -58,13 +58,12 @@ class VF_Search_SolrAuthorFacets_Options extends VF_Search_Solr_Options
     }
 
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
     public function getSearchAction()
     {
-        return array('controller' => 'Author', 'action' => 'Search');
+        return 'author-search';
     }
 }
\ No newline at end of file
diff --git a/module/VuFind/src/VuFind/Search/SolrReserves/Options.php b/module/VuFind/src/VuFind/Search/SolrReserves/Options.php
index b13bc66edd28143381a400a4957df4982333a1b1..70aa4421cddace4dc77b77b768b443a004722cf2 100644
--- a/module/VuFind/src/VuFind/Search/SolrReserves/Options.php
+++ b/module/VuFind/src/VuFind/Search/SolrReserves/Options.php
@@ -52,22 +52,20 @@ class VF_Search_SolrReserves_Options extends VF_Search_Solr_Options
     }
 
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
     public function getSearchAction()
     {
-        return array('controller' => 'Search', 'action' => 'Reserves');
+        return 'search-reserves';
     }
 
     /**
-     * Return an array describing the action used for performing advanced searches
-     * (same format as expected by the URL view helper).  Return false if the feature
-     * is not supported.
+     * Return the route name of the action used for performing advanced searches.
+     * Returns false if the feature is not supported.
      *
-     * @return array|bool
+     * @return string|bool
      */
     public function getAdvancedSearchAction()
     {
diff --git a/module/VuFind/src/VuFind/Search/Summon/Options.php b/module/VuFind/src/VuFind/Search/Summon/Options.php
index b2bc186c46ef62915f00f20f916c623d40358400..2e1358c972f360ed1c5399d24ab3a26b437a28af 100644
--- a/module/VuFind/src/VuFind/Search/Summon/Options.php
+++ b/module/VuFind/src/VuFind/Search/Summon/Options.php
@@ -117,26 +117,24 @@ class VF_Search_Summon_Options extends VF_Search_Base_Options
     }
 
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
     public function getSearchAction()
     {
-        return array('controller' => 'Summon', 'action' => 'Search');
+        return 'summon-search';
     }
 
     /**
-     * Return an array describing the action used for performing advanced searches
-     * (same format as expected by the URL view helper).  Return false if the feature
-     * is not supported.
+     * Return the route name of the action used for performing advanced searches.
+     * Returns false if the feature is not supported.
      *
-     * @return array|bool
+     * @return string|bool
      */
     public function getAdvancedSearchAction()
     {
-        return array('controller' => 'Summon', 'action' => 'Advanced');
+        return 'summon-advanced';
     }
 
     /**
diff --git a/module/VuFind/src/VuFind/Search/Tags/Options.php b/module/VuFind/src/VuFind/Search/Tags/Options.php
index 3c61609075671b38559ac043f3811c5795371a20..cd4b2ad9423cb36702312699f1e89133d9693d24 100644
--- a/module/VuFind/src/VuFind/Search/Tags/Options.php
+++ b/module/VuFind/src/VuFind/Search/Tags/Options.php
@@ -54,13 +54,12 @@ class VF_Search_Tags_Options extends VF_Search_Base_Options
     }
 
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
     public function getSearchAction()
     {
-        return array('controller' => 'Tag', 'action' => 'Home');
+        return 'tag-home';
     }
 }
\ No newline at end of file
diff --git a/module/VuFind/src/VuFind/Search/WorldCat/Options.php b/module/VuFind/src/VuFind/Search/WorldCat/Options.php
index 508b8bdb4009a3cea972ef9cbd82bcc04ede25ab..2c9fb7f4fdf3597d260abac18be6764b30ee169e 100644
--- a/module/VuFind/src/VuFind/Search/WorldCat/Options.php
+++ b/module/VuFind/src/VuFind/Search/WorldCat/Options.php
@@ -82,25 +82,23 @@ class VF_Search_WorldCat_Options extends VF_Search_Base_Options
     }
 
     /**
-     * Return an array describing the action used for rendering search results
-     * (same format as expected by the URL view helper).
+     * Return the route name for the search results action.
      *
-     * @return array
+     * @return string
      */
     public function getSearchAction()
     {
-        return array('controller' => 'WorldCat', 'action' => 'Search');
+        return 'worldcat-search';
     }
 
     /**
-     * Return an array describing the action used for performing advanced searches
-     * (same format as expected by the URL view helper).  Return false if the feature
-     * is not supported.
+     * Return the route name of the action used for performing advanced searches.
+     * Returns false if the feature is not supported.
      *
-     * @return array|bool
+     * @return string|bool
      */
     public function getAdvancedSearchAction()
     {
-        return array('controller' => 'WorldCat', 'action' => 'Advanced');
+        return 'worldcat-advanced';
     }
 }
\ No newline at end of file
diff --git a/module/VuFind/src/VuFind/Theme/Root/Helper/RecordLink.php b/module/VuFind/src/VuFind/Theme/Root/Helper/RecordLink.php
index 6fd25612daebc21ab0adc536924683d074c8f050..a4d2ba43cb43c3df853af7991ac8f3e1512cd596 100644
--- a/module/VuFind/src/VuFind/Theme/Root/Helper/RecordLink.php
+++ b/module/VuFind/src/VuFind/Theme/Root/Helper/RecordLink.php
@@ -60,14 +60,12 @@ class VuFind_Theme_Root_Helper_RecordLink extends Zend_View_Helper_Abstract
     {
         switch ($link['type']) {
         case 'bib':
-            $url = $this->view->url(array('id' => $link['value']), 'record');
+            $url = $this->view->url('record', array('id' => $link['value']));
             break;
         case 'oclc':
-            $url = $this->view->url(
-                array('controller' => 'Search', 'action' => 'Results'), 'default'
-            );
-            $url .= '?lookfor=' . urlencode($link['value']) .
-                '&type=oclc_num&jumpto=1';
+            $url = $this->view->url('search-results');
+                . '?lookfor=' . urlencode($link['value'])
+                . '&type=oclc_num&jumpto=1';
             break;
         default:
             throw new Exception('Unexpected link type: ' . $link['type']);
@@ -90,7 +88,7 @@ class VuFind_Theme_Root_Helper_RecordLink extends Zend_View_Helper_Abstract
         if (!empty($action)) {
             $params['action'] = $action;
         }
-        return $this->view->url($params, $driver->getRecordRoute(), true);
+        return $this->view->url($driver->getRecordRoute(), $params);
     }
 
     /**
diff --git a/themes/vufind/blueprint/templates/Recommend/AuthorFacets.phtml b/themes/vufind/blueprint/templates/Recommend/AuthorFacets.phtml
index 08e3e22d15389f704d928f4d996bfce790ccd980..30a49b408a237111da5f7e4bd877b920001490ee 100644
--- a/themes/vufind/blueprint/templates/Recommend/AuthorFacets.phtml
+++ b/themes/vufind/blueprint/templates/Recommend/AuthorFacets.phtml
@@ -6,11 +6,11 @@
       <div class="span-5">
       <? foreach($similarAuthors['list'] as $i => $author): ?>
         <? if ($i == 5): ?>
-        <a href="<?=$this->url(array('action' => 'Search', 'controller' => 'Author'), 'default', true) . '?lookfor=' . urlencode($this->recommend->getSearchTerm()) ?>"><strong><?=$this->transEsc("see all") ?> <?=(isset($similarAuthors['count']) && $similarAuthors['count']) ? $similarAuthors['count'] : ''?> &raquo;</strong></a>
+        <a href="<?=$this->url('author-search') . '?lookfor=' . urlencode($this->recommend->getSearchTerm()) ?>"><strong><?=$this->transEsc("see all") ?> <?=(isset($similarAuthors['count']) && $similarAuthors['count']) ? $similarAuthors['count'] : ''?> &raquo;</strong></a>
       </div>
       <div class="span-5 last">
         <? endif; ?>
-        <a style="display:inline-block;text-indent:-10px;padding-left:10px;" href="<?=$this->url(array('controller' => 'Author'), 'default', true) . '?author=' . urlencode($author['value'])?>"><?=$author['value'] ?><? /* count disabled -- uncomment to add: echo ' - ' . $author['count']; */ ?></a>
+        <a style="display:inline-block;text-indent:-10px;padding-left:10px;" href="<?=$this->url('author-home') . '?author=' . urlencode($author['value'])?>"><?=$author['value'] ?><? /* count disabled -- uncomment to add: echo ' - ' . $author['count']; */ ?></a>
         <? if ($i+1<count($similarAuthors['list'])): ?>
           <br/>
         <? endif; ?>
diff --git a/themes/vufind/blueprint/templates/Recommend/AuthorInfo.phtml b/themes/vufind/blueprint/templates/Recommend/AuthorInfo.phtml
index 5ffddbf2d6d345b8a26fe92030a77ad955d9cd33..dfdfc512a9aff69619e35f4344f16a8c44e26a3e 100644
--- a/themes/vufind/blueprint/templates/Recommend/AuthorInfo.phtml
+++ b/themes/vufind/blueprint/templates/Recommend/AuthorInfo.phtml
@@ -7,7 +7,7 @@
     <img src="<?=$this->info['image'] ?>" alt="<?=$this->escape($this->info['altimage']) ?>" width="150px" class="alignleft recordcover"/>
   <? endif; ?>
 
-  <?=$this->truncate(preg_replace('/___baseurl___/', $this->url(array('controller' => 'Search', 'action' => 'Results'), 'default', true), $this->info['description']), 4500, "...") ?>
+  <?=$this->truncate(preg_replace('/___baseurl___/', $this->url('search-results'), $this->info['description']), 4500, "...") ?>
 
   <div class="providerLink"><a class="wikipedia" href="http://<?=$this->info['wiki_lang'] ?>.wikipedia.org/wiki/<?=$this->escape($this->info['name']/*url*/) ?>" target="new"><?=$this->translate('wiki_link') ?></a></div>
 
diff --git a/themes/vufind/blueprint/templates/Recommend/AuthorityRecommend.phtml b/themes/vufind/blueprint/templates/Recommend/AuthorityRecommend.phtml
index 0dc9c507984760550592c3848e717f3660b48059..1892fa6c7780c68125f40f1c5a1bc37b3e32ee85 100644
--- a/themes/vufind/blueprint/templates/Recommend/AuthorityRecommend.phtml
+++ b/themes/vufind/blueprint/templates/Recommend/AuthorityRecommend.phtml
@@ -5,7 +5,7 @@
       <? for ($i = 0; $i < count($data); $i++): ?>
         <?
             // Generate a new search URL that replaces the user's current term with the authority term:
-            $url = $this->url($this->results->getSearchAction(), 'default', true)
+            $url = $this->url($this->results->getSearchAction())
                 . $this->results->getUrl()->replaceTerm($this->results->getDisplayQuery(), $data[$i]['heading']);
         ?>
         <a href="<?=$url?>"><?=$this->escape($data[$i]['heading'])?></a><? if ($i != count($data) - 1): ?>, <? endif; ?>
diff --git a/themes/vufind/blueprint/templates/Recommend/CatalogResults.phtml b/themes/vufind/blueprint/templates/Recommend/CatalogResults.phtml
index c39883696e3fe83bbccbb9680d290f3aef389105..97f14163d70693679d8f9bf3e9371bff6e10bc7d 100644
--- a/themes/vufind/blueprint/templates/Recommend/CatalogResults.phtml
+++ b/themes/vufind/blueprint/templates/Recommend/CatalogResults.phtml
@@ -35,6 +35,6 @@
     </li>
     <? endforeach; ?>
   </ul>
-  <p><a href="<?=$this->url($searchObject->getSearchAction(), 'default', true) . $searchObject->getUrl()->setLimit($searchObject->getDefaultLimit())?>"><?=$this->transEsc('More catalog results')?>...</a></p>
+  <p><a href="<?=$this->url($searchObject->getSearchAction()) . $searchObject->getUrl()->setLimit($searchObject->getDefaultLimit())?>"><?=$this->transEsc('More catalog results')?>...</a></p>
 </div>
 <? endif ?>
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/Recommend/ExpandFacets.phtml b/themes/vufind/blueprint/templates/Recommend/ExpandFacets.phtml
index a52320cd96082cf2c9159b39329724ffbd49a69d..4bd05a3834e129e363a1c8b2c28073fb6dfd5fe4 100644
--- a/themes/vufind/blueprint/templates/Recommend/ExpandFacets.phtml
+++ b/themes/vufind/blueprint/templates/Recommend/ExpandFacets.phtml
@@ -9,7 +9,7 @@
     <h4><?=$this->translate($cluster['label']) ?></h4>
     <ul class="bulleted">
   <? foreach ($cluster['list'] as $thisFacet): ?>
-    <li><a href="<?=$this->url(array('controller'=>'Search','action'=>'Results'),'default',true) . $blankResults->getUrl()->addFacet($title, $thisFacet['value'])?>"><?=$this->escape($thisFacet['displayText'])?></a></li>
+    <li><a href="<?=$this->url('search-results') . $blankResults->getUrl()->addFacet($title, $thisFacet['value'])?>"><?=$this->escape($thisFacet['displayText'])?></a></li>
   <? endforeach; ?>
     </ul>
  <? endforeach; ?>
diff --git a/themes/vufind/blueprint/templates/Recommend/FavoriteFacets.phtml b/themes/vufind/blueprint/templates/Recommend/FavoriteFacets.phtml
index 6e11925b6f0b22f1f0fe3f15ccd6a4681a0206ae..c14debfbc31c2fb869ee3aa1c154a5eba078936f 100644
--- a/themes/vufind/blueprint/templates/Recommend/FavoriteFacets.phtml
+++ b/themes/vufind/blueprint/templates/Recommend/FavoriteFacets.phtml
@@ -10,7 +10,7 @@
             <? if ($current['isApplied']): ?>
               <strong><?=$this->escape($current['displayText'])?></strong>
             <? else: ?>
-              <a href="<?=$this->url(array('id' => $current['value']), 'userList')?>"><?=$this->escape($current['displayText'])?></a>
+              <a href="<?=$this->url('userList', array('id' => $current['value']))?>"><?=$this->escape($current['displayText'])?></a>
             <? endif; ?>
             (<?=$this->escape($current['count'])?>)
           </li>
diff --git a/themes/vufind/blueprint/templates/Recommend/SideFacets.phtml b/themes/vufind/blueprint/templates/Recommend/SideFacets.phtml
index 9030e9f1903550cf4252d11e038ad9c98f0d3311..f1db4020ef470bc168602e8ea4b4feeb72af2ffa 100644
--- a/themes/vufind/blueprint/templates/Recommend/SideFacets.phtml
+++ b/themes/vufind/blueprint/templates/Recommend/SideFacets.phtml
@@ -32,7 +32,7 @@
     <? foreach ($sideFacetSet as $title => $cluster): ?>
       <? if (isset($dateFacets[$title])): ?>
         <? /* Load the publication date slider UI widget */ $this->headScript()->appendFile('pubdate_slider.js'); ?>
-        <form action="<?=$this->url()?>" name="<?=$this->escape($title)?>Filter" id="<?=$this->escape($title)?>Filter">
+        <form action="" name="<?=$this->escape($title)?>Filter" id="<?=$this->escape($title)?>Filter">
           <?=$this->results->getUrl()->asHiddenFields(array('filter' => "/^{$title}:.*/"))?>
           <input type="hidden" name="daterange[]" value="<?=$this->escape($title)?>"/>
           <fieldset class="publishDateLimit" id="<?=$this->escape($title)?>">
diff --git a/themes/vufind/blueprint/templates/Recommend/SummonResults.phtml b/themes/vufind/blueprint/templates/Recommend/SummonResults.phtml
index 51cb76b6d51b87ffc5ce852f6c5d715863b6c65a..11d4cdd9cf5c3911e5137febf8cc260ce587cc2b 100644
--- a/themes/vufind/blueprint/templates/Recommend/SummonResults.phtml
+++ b/themes/vufind/blueprint/templates/Recommend/SummonResults.phtml
@@ -34,6 +34,6 @@
     </li>
     <? endforeach; ?>
   </ul>
-  <p><a href="<?=$this->url($searchObject->getSearchAction(), 'default', true) . $searchObject->getUrl()->setLimit($searchObject->getDefaultLimit())?>"><?=$this->transEsc('More Summon results')?>...</a></p>
+  <p><a href="<?=$this->url($searchObject->getSearchAction()) . $searchObject->getUrl()->setLimit($searchObject->getDefaultLimit())?>"><?=$this->transEsc('More Summon results')?>...</a></p>
 </div>
 <? endif ?>
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/Recommend/WorldCatIdentities.phtml b/themes/vufind/blueprint/templates/Recommend/WorldCatIdentities.phtml
index 35124b5db7dd815f12326f523786f13ccbcb635d..cff4a76c99d664ff45f8167fdc18aacf874c1d8d 100644
--- a/themes/vufind/blueprint/templates/Recommend/WorldCatIdentities.phtml
+++ b/themes/vufind/blueprint/templates/Recommend/WorldCatIdentities.phtml
@@ -8,7 +8,7 @@
           </dl>
           <dl class="offscreen" id="narrowGroupHidden_WCIdents">
         <? endif; ?>
-        <dd>&bull; <a href="<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default', true)?>?lookfor=%22<?=urlencode($author)?>%22&amp;type=Author"><?=$this->escape($author)?></a>
+        <dd>&bull; <a href="<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($author)?>%22&amp;type=Author"><?=$this->escape($author)?></a>
         <? if (count($subjects) > 0): ?>
           <dl>
           <dd><?=$this->transEsc('Related Subjects')?>:</dd>
@@ -18,7 +18,7 @@
               </dl>
               <dl class="offscreen" id="narrowGroupHidden_WCIdents<?=$i?>">
             <? endif; ?>
-            <dd>&bull; <a href="<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default', true)?>?lookfor=%22<?=urlencode($subj)?>%22&amp;type=Subject"><?=$this->escape($subj)?></a></dd>
+            <dd>&bull; <a href="<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($subj)?>%22&amp;type=Subject"><?=$this->escape($subj)?></a></dd>
           <? endforeach; ?>
           <? if ($j > 2): ?><dd><a href="#" onclick="lessFacets('WCIdents<?=$i?>'); return false;"><?=$this->transEsc('less')?> ...</a></dd><? endif; ?>
           </dl>
diff --git a/themes/vufind/blueprint/templates/Recommend/WorldCatTerms.phtml b/themes/vufind/blueprint/templates/Recommend/WorldCatTerms.phtml
index 392a5dddba674a0508f67e1125e2e6cc07ae548a..061219c507f369a2aba2db9c28b28d0dc501e5dc 100644
--- a/themes/vufind/blueprint/templates/Recommend/WorldCatTerms.phtml
+++ b/themes/vufind/blueprint/templates/Recommend/WorldCatTerms.phtml
@@ -11,7 +11,7 @@
               </dl>
               <dl class="offscreen" id="narrowGroupHidden_WCTerms<?=$this->escape($type)?>">
             <? endif; ?>
-            <dd>&bull; <a href="<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default', true)?>?lookfor=%22<?=urlencode($subj)?>%22&amp;type=Subject"><?=$this->escape($subj)?></a></dd>
+            <dd>&bull; <a href="<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($subj)?>%22&amp;type=Subject"><?=$this->escape($subj)?></a></dd>
           <? endforeach; ?>
           <? if ($j > 3): ?><dd><a href="#" onclick="lessFacets('WCTerms<?=$this->escape($type)?>'); return false;"><?=$this->transEsc('less')?> ...</a></dd><? endif; ?>
         </dl>
diff --git a/themes/vufind/blueprint/templates/RecordDriver/SolrAuth/result-list.phtml b/themes/vufind/blueprint/templates/RecordDriver/SolrAuth/result-list.phtml
index 51efdc5ab5cddcbbc1078f2ad22a89cd173431c8..604890fabdb2fd2a0b85a7e0519a6ca496a5c726 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/SolrAuth/result-list.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/SolrAuth/result-list.phtml
@@ -8,14 +8,14 @@
 ?>
 <div class="listentry span-15">
   <div class="resultItemLine1">
-    <a href="<?=$this->url(array('controller' => 'Authority', 'action' => 'Record'), 'default', true)?>?id=<?=urlencode($this->driver->getUniqueId())?>" class="title"><?=$this->escape($heading)?></a>
+    <a href="<?=$this->url('authority-record')?>?id=<?=urlencode($this->driver->getUniqueId())?>" class="title"><?=$this->escape($heading)?></a>
   </div>
 
   <div class="resultItemLine2">
     <? if (!empty($seeAlso)): ?>
       <?=$this->transEsc("See also")?>:<br/>
       <? foreach ($seeAlso as $current): ?>
-        <a href="<?=$this->url(array('controller' => 'Authority', 'action' => 'Search'), 'default', true)?>?lookfor=%22<?=urlencode($current)?>%22&amp;type=MainHeading"><?=$this->escape($current)?></a><br/>
+        <a href="<?=$this->url('authority-search')?>?lookfor=%22<?=urlencode($current)?>%22&amp;type=MainHeading"><?=$this->escape($current)?></a><br/>
       <? endforeach; ?>
     <? endif; ?>
   </div>
diff --git a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/core.phtml b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/core.phtml
index a150b0f48363fed3722e0c2a23997a5d24157e07..e9d7608e7d7847b136344e604298a163f84ef654 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/core.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/core.phtml
@@ -196,7 +196,7 @@
         </span>
         <div id="tagList">
           <? if (count($tagList) > 0): ?>
-            <? $i = 0; foreach ($tagList as $tag): ?><?=($i++ == 0)?'':', '?><a href="<?=$this->url(array('controller' => 'Tag', 'action' => 'Home'), 'default', true)?>?lookfor=<?=urlencode($tag->tag)?>"><?=$this->escape($tag->tag)?></a> (<?=$this->escape($tag->cnt)?>)<? endforeach; ?>
+            <? $i = 0; foreach ($tagList as $tag): ?><?=($i++ == 0)?'':', '?><a href="<?=$this->url('tag-home')?>?lookfor=<?=urlencode($tag->tag)?>"><?=$this->escape($tag->tag)?></a> (<?=$this->escape($tag->cnt)?>)<? endforeach; ?>
           <? else: ?>
             <?=$this->transEsc('No Tags')?>, <?=$this->transEsc('Be the first to tag this record')?>!
           <? endif; ?>
@@ -215,7 +215,7 @@
       <img alt="<?=$this->transEsc('Cover Image')?>" class="recordcover" src="<?=$this->escape($mediumThumb);?>"/>
     <? if ($largeThumb): ?></a><? endif; ?>
   <? else: ?>
-    <img src="<?=$this->url(array('controller' => 'Cover', 'action' => 'Unavailable'), 'default')?>" class="recordcover" alt="<?=$this->transEsc('No Cover Image')?>"/>
+    <img src="<?=$this->url('cover-unavailable')?>" class="recordcover" alt="<?=$this->transEsc('No Cover Image')?>"/>
   <? endif; ?>
 
   <? /* Display the lists that this record is saved to */ ?>
diff --git a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-author.phtml b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-author.phtml
index edd9a48f6b4ba3ac94b20f1633b1c0a13228a237..1ef515fe458f58dbc0a53af91c01a7cbb097086e 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-author.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-author.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Author'), 'default', true)?>?author=<?=urlencode($this->lookfor)?>
\ No newline at end of file
+<?=$this->url('author-home')?>?author=<?=urlencode($this->lookfor)?>
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-journaltitle.phtml b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-journaltitle.phtml
index 8c4c1db72819ccb9946d4def73fd25b1c3ba1d0e..5987653afd9f7c4fff7a830588128fde1077c8a4 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-journaltitle.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-journaltitle.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=JournalTitle
\ No newline at end of file
+<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=JournalTitle
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-series.phtml b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-series.phtml
index 038f3bb12a46e3b38c18727fbbacf5fa3cf0b72a..bf7507d0a50c08a2edefcb6054506c4ca4c4dee1 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-series.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-series.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Series
\ No newline at end of file
+<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Series
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-subject.phtml b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-subject.phtml
index 260f6a167a6e7e84bc266f14a015b58bc339b1a9..07a34f729d9e6eda12dbc8cbd2bb8b8b3ded9791 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-subject.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-subject.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Subject
\ No newline at end of file
+<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Subject
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-title.phtml b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-title.phtml
index 1876b775c90e7165d415dbb09eb57b0dd9e4f55d..eca8c06502d139dd4ea37d34bb01aa516b9bd08e 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-title.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/link-title.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Title
\ No newline at end of file
+<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Title
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/list-entry.phtml b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/list-entry.phtml
index be4c7d14dc3e3a8d905d827ac82c1bfea1dda7ff..e8deeda18be8b527f593bc38768bed7a741ce995 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/list-entry.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/list-entry.phtml
@@ -15,7 +15,7 @@
     <? if ($listThumb = $this->driver->getThumbnail()): ?>
       <img src="<?=$this->escape($listThumb)?>" class="summcover" alt="<?=$this->transEsc('Cover Image')?>"/>
     <? else: ?>
-      <img src="<?=$this->url(array('controller' => 'Cover', 'action' => 'Unavailable'), 'default', true)?>" class="summcover" alt="<?=$this->transEsc('No Cover Image')?>"/>
+      <img src="<?=$this->url('cover-unavailable')?>" class="summcover" alt="<?=$this->transEsc('No Cover Image')?>"/>
     <? endif; ?>
   </div>
   <div class="span-10">
@@ -38,7 +38,7 @@
     ?>
     <? if (count($listTags) > 0): ?>
       <strong><?=$this->transEsc('Your Tags')?>:</strong>
-      <? $i = 0; foreach ($listTags as $tag): ?><?=($i++ == 0)?'':', '?><a href="<?=$this->url(array('controller' => 'Tag', 'action' => 'Home'), 'default', true)?>?lookfor=<?=urlencode($tag->tag)?>"><?=$this->escape($tag->tag)?></a><? endforeach; ?>
+      <? $i = 0; foreach ($listTags as $tag): ?><?=($i++ == 0)?'':', '?><a href="<?=$this->url('tag-home')?>?lookfor=<?=urlencode($tag->tag)?>"><?=$this->escape($tag->tag)?></a><? endforeach; ?>
       <br/>
     <? endif; ?>
     <? $listNotes = $this->driver->getListNotes($list_id, $user_id); ?>
@@ -53,7 +53,7 @@
     <? if (count($this->lists) > 0): ?>
         <strong><?=$this->transEsc('Saved in')?>:</strong>
         <? $i=0;foreach($this->lists as $current): ?>
-            <a href="<?=$this->url(array('id' => $current->id), 'userList', true)?>"><?=$current->title?></a><? if($i++ < count($this->lists)-1): ?>,<? endif; ?>
+            <a href="<?=$this->url('userList', array('id' => $current->id))?>"><?=$current->title?></a><? if($i++ < count($this->lists)-1): ?>,<? endif; ?>
         <? endforeach; ?>
         <br/>
     <? endif; ?>
@@ -65,11 +65,11 @@
      // and a user is logged in (which means we are viewing all of the user's favorites)
      if ((isset($list) && $list->editAllowed()) || (!isset($list) && $this->user)): ?>
     <div class="floatright">
-      <a href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Edit'), 'default', true)?>?id=<?=urlencode($id)?>&amp;source=<?=urlencode($source)?><? if (!is_null($list_id)):?>&amp;list_id=<?=urlencode($list_id)?><? endif; ?>" class="edit tool"><?=$this->transEsc('Edit')?></a>
+      <a href="<?=$this->url('myresearch-edit')?>?id=<?=urlencode($id)?>&amp;source=<?=urlencode($source)?><? if (!is_null($list_id)):?>&amp;list_id=<?=urlencode($list_id)?><? endif; ?>" class="edit tool"><?=$this->transEsc('Edit')?></a>
       <? /* Use a different delete URL if we're removing from a specific list or the overall favorites: */ 
         $deleteUrl = is_null($list_id)
-            ? $this->url(array('controller' => 'MyResearch', 'action' => 'Favorites'), 'default', true)
-            : $this->url(array('id' => $list_id), 'userList');
+            ? $this->url('myresearch-favorites')
+            : $this->url('userList', array('id' => $list_id));
         $deleteUrl .= '?delete=' . urlencode($id) . '&amp;source=' . urlencode($source);
       ?>
       <a href="<?=$deleteUrl?>" title="<?=$this->transEsc('confirm_delete_brief')?>" class="delete tool source<?=$this->escape($source)?>"><?=$this->transEsc('Delete')?></a>
diff --git a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/result-grid.phtml b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/result-grid.phtml
index eea58de85ab44c828cca6597a4287c0372300215..fb48ca62a391f6c85287fa5212ea0b4eeea48fe1 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/result-grid.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/result-grid.phtml
@@ -7,7 +7,7 @@
         <? elseif ($summThumb = $this->driver->getThumbnail()): ?>
           <img src="<?=$this->escape($summThumb)?>" class="gridImage" alt="<?=$this->transEsc('Cover Image')?>"/>
         <? else: ?>
-          <img src="<?=$this->url(array('controller' => 'Cover', 'action' => 'Unavailable'), 'default', true)?>" class="gridImage" alt="<?=$this->transEsc('No Cover Image')?>"/>
+          <img src="<?=$this->url('cover-unavailable')?>" class="gridImage" alt="<?=$this->transEsc('No Cover Image')?>"/>
         <? endif; ?>
       </a>
     </span>
diff --git a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/result-list.phtml b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/result-list.phtml
index 6f50993ac0eacc66c68eee7a3f1bef90ede4de2b..d00ea27eaec194d0a0253b38e131e4f0179c585b 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/result-list.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/SolrDefault/result-list.phtml
@@ -4,7 +4,7 @@
   <? if ($summThumb = $this->driver->getThumbnail()): ?>
     <img src="<?=$this->escape($summThumb)?>" class="summcover" alt="<?=$this->transEsc('Cover Image')?>"/>
   <? else: ?>
-    <img src="<?=$this->url(array('controller' => 'Cover', 'action' => 'Unavailable'), 'default', true)?>" class="summcover" alt="<?=$this->transEsc('No Cover Image')?>"/>
+    <img src="<?=$this->url('cover-unavailable')?>" class="summcover" alt="<?=$this->transEsc('No Cover Image')?>"/>
   <? endif; ?>
   </div>
   <div class="span-9">
diff --git a/themes/vufind/blueprint/templates/RecordDriver/Summon/link-author.phtml b/themes/vufind/blueprint/templates/RecordDriver/Summon/link-author.phtml
index 7b76c5e3c8b1deaadb7bdd1583c8a833ad05e28a..5aebd76f472dedf0a45e8d96de75376ed44caa8e 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/Summon/link-author.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/Summon/link-author.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Summon', 'action' => 'Search'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Author
\ No newline at end of file
+<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Author
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/Summon/link-journaltitle.phtml b/themes/vufind/blueprint/templates/RecordDriver/Summon/link-journaltitle.phtml
index 53571ba82229394c264b15cc0ef0a288c438ea37..5536935b4f4be76c407a7dd867e1d3f1365c31aa 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/Summon/link-journaltitle.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/Summon/link-journaltitle.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Summon', 'action' => 'Search'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=PublicationTitle
\ No newline at end of file
+<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=PublicationTitle
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/Summon/link-series.phtml b/themes/vufind/blueprint/templates/RecordDriver/Summon/link-series.phtml
index 5b794f66b24666fc6945ef5ab48b49df3a04d8fb..26a9524f15a53509bf7ac0cb7d8416536fbdbbda 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/Summon/link-series.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/Summon/link-series.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Summon', 'action' => 'Search'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=PublicationSeriesTitle
\ No newline at end of file
+<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=PublicationSeriesTitle
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/Summon/link-subject.phtml b/themes/vufind/blueprint/templates/RecordDriver/Summon/link-subject.phtml
index a3afda46edd9d1b370b8380d96e03f5518a3be5d..cf66f99c10196f7e8380bf6955a933fc2730e6e9 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/Summon/link-subject.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/Summon/link-subject.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Summon', 'action' => 'Search'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Subject
\ No newline at end of file
+<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Subject
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/Summon/link-title.phtml b/themes/vufind/blueprint/templates/RecordDriver/Summon/link-title.phtml
index 96b9e4aa0bd86fb02aae3c032b150a9c7c72bbc8..57cdc24f2d6d29a12d49a08447a5d08928a47b85 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/Summon/link-title.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/Summon/link-title.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Summon', 'action' => 'Search'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Title
\ No newline at end of file
+<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Title
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-author.phtml b/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-author.phtml
index 0e7b4193fadabfffd2ef3daa4abd7fe12d87a7df..b4790f29557f1da380d642dc25977ab745908be0 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-author.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-author.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'WorldCat', 'action' => 'Search'), 'default', true)?>?lookfor=<?=urlencode($this->lookfor)?>&amp;type=srw.au%3Asrw.pn%3Asrw.cn
\ No newline at end of file
+<?=$this->url('worldcat-search')?>?lookfor=<?=urlencode($this->lookfor)?>&amp;type=srw.au%3Asrw.pn%3Asrw.cn
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-series.phtml b/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-series.phtml
index 8095d4954d2da5d5a1b6f9abf8e3b5da164cfb60..d95ad084838175f0a631beffe32ea08268c1dd06 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-series.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-series.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'WorldCat', 'action' => 'Search'), 'default', true)?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.se
\ No newline at end of file
+<?=$this->url('worldcat-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.se
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-subject.phtml b/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-subject.phtml
index c3212621d10ab66d25bdd7cf2819e884c3433e60..6b6bb5c92351d841d4bb25b8cf4b28bdd27e4013 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-subject.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-subject.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'WorldCat', 'action' => 'Search'), 'default', true)?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.su
\ No newline at end of file
+<?=$this->url('worldcat-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.su
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-title.phtml b/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-title.phtml
index 705c080396f4ed225fffab944f7d348428e1b610..03f8d524558d20d3a643d5ea3b36e76553d3a8e2 100644
--- a/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-title.phtml
+++ b/themes/vufind/blueprint/templates/RecordDriver/WorldCat/link-title.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'WorldCat', 'action' => 'Search'), 'default', true)?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.ti%3Asrw.se
\ No newline at end of file
+<?=$this->url('worldcat-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.ti%3Asrw.se
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/admin/config.phtml b/themes/vufind/blueprint/templates/admin/config.phtml
index 0bdb3778435680198f06217bd58407557bbff6d2..42711fb705caefd5788740f41c18a99b24e12f6e 100644
--- a/themes/vufind/blueprint/templates/admin/config.phtml
+++ b/themes/vufind/blueprint/templates/admin/config.phtml
@@ -13,9 +13,9 @@
   <p>Some basic settings can also be adjusted through the auto-configuration tool.</p>
   <? if (!$this->showInstallLink): ?>
     <p><?=$this->transEsc('Auto configuration is currently disabled') ?>.</p>
-    <p><a href="<?=$this->url(array('controller' => 'Admin', 'action' => 'EnableAutoConfig'), 'default', true)?>"><?=$this->transEsc('Enable Auto Config')?></a></p>
+    <p><a href="<?=$this->url('admin-enableautoconfig')?>"><?=$this->transEsc('Enable Auto Config')?></a></p>
   <? else: ?>
-    <p><a href="<?=$this->url(array('controller' => 'Install'), 'default', true)?>"><?=$this->transEsc('auto_configure_title')?></a></p>
+    <p><a href="<?=$this->url('install-home')?>"><?=$this->transEsc('auto_configure_title')?></a></p>
   <? endif; ?>
 </div>
 
diff --git a/themes/vufind/blueprint/templates/admin/maintenance.phtml b/themes/vufind/blueprint/templates/admin/maintenance.phtml
index e0ad1d8a1584ab1c609659fe905029c83c9eabcc..2f37fcd5219d4921dcae9e75fb20f485d9e11fc5 100644
--- a/themes/vufind/blueprint/templates/admin/maintenance.phtml
+++ b/themes/vufind/blueprint/templates/admin/maintenance.phtml
@@ -11,7 +11,7 @@
 
   <h2>Utilities</h2>
   <?=$this->flashmessages()?>
-  <form method="get" action="<?=$this->url(array('controller' => 'Admin', 'action' => 'DeleteExpiredSearches'), 'default', true)?>">
+  <form method="get" action="<?=$this->url('admin-deleteexpiredsearches')?>">
     <label for="del_daysOld" style="font-weight: normal;">Delete unsaved user search histories older than</label>
     <input id="del_daysOld" type="text" name="daysOld" size="5" value="2"/> days.
     <input type="submit" name="submit" value="<?=$this->transEsc('Submit')?>"/>
diff --git a/themes/vufind/blueprint/templates/admin/menu.phtml b/themes/vufind/blueprint/templates/admin/menu.phtml
index 4e6a496aa586aa7e60a18ac1fa6d9adb33d9554e..36dbc816f0fb9bff57c123de739ca9565525b37e 100644
--- a/themes/vufind/blueprint/templates/admin/menu.phtml
+++ b/themes/vufind/blueprint/templates/admin/menu.phtml
@@ -1,6 +1,6 @@
 <ul id="list1">
-  <li<?=ucwords($this->action) == "Home" ? ' class="active"' : ''?>><a href="<?=$this->url(array('controller' => 'Admin', 'action' => 'Home'), 'default', true)?>"><?=$this->transEsc('Home')?></a></li>
-  <li<?=ucwords($this->action) == "Statistics" ? ' class="active"' : ''?>><a href="<?=$this->url(array('controller' => 'Admin', 'action' => 'Statistics'), 'default', true)?>"><?=$this->transEsc('Statistics')?></a></li>
-  <li<?=ucwords($this->action) == "Config" ? ' class="active"' : ''?>><a href="<?=$this->url(array('controller' => 'Admin', 'action' => 'Config'), 'default', true)?>"><?=$this->transEsc('Configuration')?></a>
-  <li<?=ucwords($this->action) == "Maintenance" ? ' class="active"' : ''?>><a href="<?=$this->url(array('controller' => 'Admin', 'action' => 'Maintenance'), 'default', true)?>"><?=$this->transEsc('System Maintenance')?></a></li>
+  <li<?=ucwords($this->action) == "Home" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-home')?>"><?=$this->transEsc('Home')?></a></li>
+  <li<?=ucwords($this->action) == "Statistics" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-statistics')?>"><?=$this->transEsc('Statistics')?></a></li>
+  <li<?=ucwords($this->action) == "Config" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-config')?>"><?=$this->transEsc('Configuration')?></a>
+  <li<?=ucwords($this->action) == "Maintenance" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-maintenance')?>"><?=$this->transEsc('System Maintenance')?></a></li>
 </ul>
diff --git a/themes/vufind/blueprint/templates/ajax/result-google-map-info.phtml b/themes/vufind/blueprint/templates/ajax/result-google-map-info.phtml
index cda7213f476e911f488ba2f4d4223a3f09ea8b85..bd210a341f12f5b39444227785297563760f1c83 100644
--- a/themes/vufind/blueprint/templates/ajax/result-google-map-info.phtml
+++ b/themes/vufind/blueprint/templates/ajax/result-google-map-info.phtml
@@ -11,7 +11,7 @@
 
         <div class="mapInfoResultText">
         <a href="<?=$this->recordLink()->getUrl($record)?>"><?=$record->getTitle() ?></a><br/>
-        <?=$this->translate('by') ?> <a href="<?=$this->url(array('controller' => 'Author', 'action' => 'Home'), 'default', true)?>?author=<?=urlencode($record->getPrimaryAuthor())?>"><?=$this->escape($record->getPrimaryAuthor())?></a>
+        <?=$this->translate('by') ?> <a href="<?=$this->url('author-home')?>?author=<?=urlencode($record->getPrimaryAuthor())?>"><?=$this->escape($record->getPrimaryAuthor())?></a>
         </div>
 
       </div>
@@ -21,7 +21,7 @@
   </div>
   <? if ($this->recordCount > 5): ?>
     <div class="mapSeeAllDiv">
-      <a href="<?=$this->url(array('controller'=>'Search', 'action'=>'Results'), 'default', true) ?><?=$this->results->getUrl()->getParams() ?>"><?=$this->translate('see all') ?> <?=$this->escape($this->recordCount) ?>...</a>
+      <a href="<?=$this->url('search-results') ?><?=$this->results->getUrl()->getParams() ?>"><?=$this->translate('see all') ?> <?=$this->escape($this->recordCount) ?>...</a>
     </div>
   <? endif; ?>
 </div>
diff --git a/themes/vufind/blueprint/templates/ajax/status-full.phtml b/themes/vufind/blueprint/templates/ajax/status-full.phtml
index 8b7dadbdc339659eb7f90443a8c74d7cce01a568..53da56da61d1e36dfb51d5546a8b3dbd91f064a8 100644
--- a/themes/vufind/blueprint/templates/ajax/status-full.phtml
+++ b/themes/vufind/blueprint/templates/ajax/status-full.phtml
@@ -24,5 +24,5 @@
 </tbody>
 </table>
 <? if (count($this->statusItems) > 5): ?>
-  <a class="summHoldings" href="<?=$this->url(array('id' => $this->statusItems[0]['id']), 'record', true)?>"><?=count($this->statusItems) - 5?> <?=$this->transEsc('more')?> ...</a>
+  <a class="summHoldings" href="<?=$this->url('record', array('id' => $this->statusItems[0]['id']))?>"><?=count($this->statusItems) - 5?> <?=$this->transEsc('more')?> ...</a>
 <? endif; ?>
diff --git a/themes/vufind/blueprint/templates/alphabrowse/home.phtml b/themes/vufind/blueprint/templates/alphabrowse/home.phtml
index 55f770eedd56ed83e05e028874f2f1b61219a8d6..fde8933e199cef4cf2212ac7299df5493fb5314e 100644
--- a/themes/vufind/blueprint/templates/alphabrowse/home.phtml
+++ b/themes/vufind/blueprint/templates/alphabrowse/home.phtml
@@ -1,19 +1,17 @@
 <?
   $this->headTitle($this->translate('Browse the Collection Alphabetically'));
-  $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'AlphaBrowse', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Browse Alphabetically') . '</a>';
+  $this->layout()->breadcrumbs = '<a href="' . $this->url('alphabrowse-home') . '">' . $this->transEsc('Browse Alphabetically') . '</a>';
 ?>
 
 <? /* LOAD THE LINK INFORMATION INTO $pageLinks, similar to smarty's {capture} */ ?>
 <? ob_start(); ?>
   <div class="alphaBrowsePageLinks">
     <? if (isset($this->prevpage)): ?>
-      <div class="alphaBrowsePrevLink"><a href="<?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($this->from)?>&amp;page=<?=urlencode($this->prevpage)?>">&laquo; <?=$this->transEsc('Prev')?></a></div>
+      <div class="alphaBrowsePrevLink"><a href="<?=$this->url('alphabrowse-home')?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($this->from)?>&amp;page=<?=urlencode($this->prevpage)?>">&laquo; <?=$this->transEsc('Prev')?></a></div>
     <? endif; ?>
 
     <? if (isset($this->nextpage)): ?>
-      <div class="alphaBrowseNextLink"><a href="<?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($this->from)?>&amp;page=<?=urlencode($this->nextpage)?>"><?=$this->transEsc('Next')?> &raquo;</a></div>
+      <div class="alphaBrowseNextLink"><a href="<?=$this->url('alphabrowse-home')?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($this->from)?>&amp;page=<?=urlencode($this->nextpage)?>"><?=$this->transEsc('Next')?> &raquo;</a></div>
     <? endif; ?>
     <div class="clear"></div>
   </div>
@@ -22,7 +20,7 @@
 
 <div class="<?=$this->layoutClass('mainbody')?>">
   <div class="resulthead">
-    <form method="get" action="<?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>" name="alphaBrowseForm" id="alphaBrowseForm">
+    <form method="get" action="<?=$this->url('alphabrowse-home')?>" name="alphaBrowseForm" id="alphaBrowseForm">
       <label for="alphaBrowseForm_source"><?=$this->transEsc('Browse Alphabetically') ?></label>
       <select id="alphaBrowseForm_source" name="source">
         <? foreach ($this->alphaBrowseTypes as $key => $item): ?>
@@ -49,9 +47,9 @@
               doing searches for headings, but headings give shorter
               queries and don't look as strange. */?>
             <? if ($item['count'] < 5): ?>
-              <?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default', true)?>?type=ids&amp;lookfor=<? foreach ($item['ids'] as $id): ?><?=$id ?>+<? endforeach; ?>
+              <?=$this->url('search-results')?>?type=ids&amp;lookfor=<? foreach ($item['ids'] as $id): ?><?=$id ?>+<? endforeach; ?>
             <? else: ?>
-              <?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default', true)?>?type=<?=urlencode(ucwords($this->source)) ?>Browse&amp;lookfor=<?=urlencode($item['heading'])?>
+              <?=$this->url('search-results')?>?type=<?=urlencode(ucwords($this->source)) ?>Browse&amp;lookfor=<?=urlencode($item['heading'])?>
             <? endif; ?>
           <? $searchLink = ob_get_contents(); ?>
           <? ob_end_clean(); ?>
@@ -68,7 +66,7 @@
           <div class="title"><?=$this->transEsc('Use instead') ?>:</div>
           <ul>
             <? foreach ($item['useInstead'] as $heading): ?>
-            <li><a href="<?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>/Results?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($heading)?>"><?=$this->escape($heading)?></a></li>
+            <li><a href="<?=$this->url('alphabrowse-results')?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($heading)?>"><?=$this->escape($heading)?></a></li>
             <? endforeach; ?>
           </ul>
           </div>
@@ -79,7 +77,7 @@
           <div class="title"><?=$this->transEsc('See also') ?>:</div>
           <ul>
             <? foreach ($item['seeAlso'] as $heading): ?>
-            <li><a href="<?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>/Results?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($heading)?>"><?=$this->escape($heading)?></a></li>
+            <li><a href="<?=$this->url('alphabrowse-results')?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($heading)?>"><?=$this->escape($heading)?></a></li>
             <? endforeach; ?>
           </ul>
           </div>
diff --git a/themes/vufind/blueprint/templates/author/home.phtml b/themes/vufind/blueprint/templates/author/home.phtml
index 2402e4425d0b22464f2931e7f7919610f39d0f40..dbb7091b327bc5db07060721c59e0f89a6e5e13e 100644
--- a/themes/vufind/blueprint/templates/author/home.phtml
+++ b/themes/vufind/blueprint/templates/author/home.phtml
@@ -5,7 +5,7 @@
     // Set up breadcrumbs:
     $this->layout()->breadcrumbs = '<em>' . $this->transEsc('Author') . '</em>';
 ?>
-<form method="get" action="<?=$this->url(array('controller' => 'Author', 'action' => 'Search'), 'default', true)?>">
+<form method="get" action="<?=$this->url('author-search')?>">
   <label for="author_lookfor"><?=$this->transEsc('Author Results for')?>:</label>
   <input type="text" id="author_lookfor" name="lookfor" />
   <input type="submit" value="<?=$this->transEsc('Find')?>" />
diff --git a/themes/vufind/blueprint/templates/browse/home.phtml b/themes/vufind/blueprint/templates/browse/home.phtml
index 22d58be528b731133a818cf9713898ca4da6b546..137e1e83ce5cd6065d17273c77051346994dd52b 100644
--- a/themes/vufind/blueprint/templates/browse/home.phtml
+++ b/themes/vufind/blueprint/templates/browse/home.phtml
@@ -1,13 +1,9 @@
 <?
     $this->headTitle($this->translate('Browse the Catalog'));
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'Browse', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Browse') . '</a>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('browse-home') . '">' . $this->transEsc('Browse') . '</a>';
 
-    $BROWSE_BASE = $this->url(array('controller' => 'Browse', 'action' => $this->currentAction), 'default', true);
-    $SEARCH_BASE = ($this->currentAction == 'Tag')
-        ? $this->url(array('controller' => 'Tag', 'action' => 'Home'), 'default', true)
-        : $this->url(array('controller' => 'Search', 'action' => 'Results'), 'default', true);
+    $BROWSE_BASE = $this->url('browse-' . strtolower($this->currentAction));
+    $SEARCH_BASE = $this->url($this->currentAction == 'Tag' ? 'tag-home' : 'search-results');
 ?>
 
 <? if (!isset($this->currentAction)): ?>
diff --git a/themes/vufind/blueprint/templates/browse/top_list.phtml b/themes/vufind/blueprint/templates/browse/top_list.phtml
index 6ba8e1471e05f8818a286bb7446309a2cfea0aae..fb93d38283420982d00ccf1818291ac7a089b3e2 100644
--- a/themes/vufind/blueprint/templates/browse/top_list.phtml
+++ b/themes/vufind/blueprint/templates/browse/top_list.phtml
@@ -1,7 +1,7 @@
 <ul class="browse" id="list1">
 <? foreach ($this->browseOptions as $item=>$currentOption): ?>
   <li<? if($currentOption['action'] == $this->currentAction): ?> class="active"<? endif; ?>>
-    <a href="<?=$this->url(array('controller' => 'Browse', 'action' => $currentOption['action']), 'default', true); ?>"><?=$this->transEsc($currentOption['description']) ?></a>
+    <a href="<?=$this->url('browse-' . strtolower($currentOption['action'])); ?>"><?=$this->transEsc($currentOption['description']) ?></a>
   </li>
 <? endforeach; ?>
 </ul>
diff --git a/themes/vufind/blueprint/templates/cart/cart.phtml b/themes/vufind/blueprint/templates/cart/cart.phtml
index 0947ea12740a9d82d06e614922498ede25e9e569..d0740a2ca37c1f783e06a363dbf41478dfcde4a7 100644
--- a/themes/vufind/blueprint/templates/cart/cart.phtml
+++ b/themes/vufind/blueprint/templates/cart/cart.phtml
@@ -10,7 +10,7 @@
     $this->cart = VF_Cart::getInstance();
 ?>
 <?=$this->flashmessages()?>
-<form action="<?=$this->url(array('controller' => 'Cart', 'action' => 'Home'), 'default', true)?>" method="post"  name="cartForm">
+<form action="<?=$this->url('cart-home')?>" method="post"  name="cartForm">
   <? if (!$this->cart->isEmpty()): ?>
     <div class="bulkActionButtons">
       <input type="checkbox" class="selectAllCheckboxes floatleft" name="selectAll" id="cartCheckboxSelectAll"/> <label for="cartCheckboxSelectAll" class="floatleft"><?=$this->transEsc('select_page')?></label>
diff --git a/themes/vufind/blueprint/templates/cart/email.phtml b/themes/vufind/blueprint/templates/cart/email.phtml
index 18b7c887d99e7c969aa2300224597b1010b29b8c..556155fc419c2d8762c49029960fa218cacc84ba 100644
--- a/themes/vufind/blueprint/templates/cart/email.phtml
+++ b/themes/vufind/blueprint/templates/cart/email.phtml
@@ -7,7 +7,7 @@
         '<em>' . $this->transEsc('email_selected_favorites') . '</em>';
 ?>
 <?=$this->flashmessages()?>
-<form action="<?=$this->url(array('controller' => 'Cart', 'action' => 'Email'), 'default', true)?>" method="post"  name="bulkEmail">
+<form action="<?=$this->url('cart-email')?>" method="post"  name="bulkEmail">
     <? foreach ($this->records as $current): ?>
       <strong><?=$this->transEsc('Title')?>:</strong> <?=$this->escape($current->getBreadcrumb())?><br />
       <input type="hidden" name="ids[]" value="<?=$this->escape($current->getResourceSource() . '|' . $current->getUniqueId())?>" />
diff --git a/themes/vufind/blueprint/templates/cart/export.phtml b/themes/vufind/blueprint/templates/cart/export.phtml
index 85eb4820e24eea9ba5d2531ce781638fea8906b0..969816609d3087cee923c57410cd960a5910aeee 100644
--- a/themes/vufind/blueprint/templates/cart/export.phtml
+++ b/themes/vufind/blueprint/templates/cart/export.phtml
@@ -11,7 +11,7 @@
 <?=$this->flashmessages()?>
 
 <? if (!empty($this->exportOptions)): ?>
-  <form method="post" action="<?=$this->url(array('controller' => 'Cart', 'action' => 'Export'), 'default', true)?>" name="exportForm" title="<?=$this->transEsc('Export Items')?>">
+  <form method="post" action="<?=$this->url('cart-export')?>" name="exportForm" title="<?=$this->transEsc('Export Items')?>">
     <? foreach ($this->records as $current): ?>
       <strong><?=$this->transEsc('Title')?>:</strong> <?=$this->escape($current->getBreadcrumb())?><br />
       <input type="hidden" name="ids[]" value="<?=$this->escape($current->getResourceSource() . '|' . $current->getUniqueId())?>" />
diff --git a/themes/vufind/blueprint/templates/cart/save.phtml b/themes/vufind/blueprint/templates/cart/save.phtml
index e9a48448847b72d3e738daea1dbcf3f9ef8136fd..1287060a9dec858a4c3d7b403d19b3b13191ce8f 100644
--- a/themes/vufind/blueprint/templates/cart/save.phtml
+++ b/themes/vufind/blueprint/templates/cart/save.phtml
@@ -10,7 +10,7 @@
 
 <?=$this->flashmessages()?>
 
-<form method="post" action="<?=$this->url(array('controller' => 'Cart', 'action' => 'Save'), 'default', true)?>" name="bulkSave">
+<form method="post" action="<?=$this->url('cart-save')?>" name="bulkSave">
   <? $idParams = array(); ?>
   <? foreach ($this->records as $current): ?>
     <? $idParams[] = urlencode('ids[]') . '=' . urlencode($current->getResourceSource() . '|' . $current->getUniqueId()) ?>
@@ -29,7 +29,7 @@
     <? endif; ?>
   </select>
 
-  <a href="<?=$this->url(array('id' => 'NEW'), 'editList', true) . '?' . implode('&', $idParams) ?>" class="listEdit" id="listEdit" title="<?=$this->transEsc('Create a List') ?>"><?=$this->transEsc('or create a new list');?></a>
+  <a href="<?=$this->url('editList', array('id' => 'NEW')) . '?' . implode('&', $idParams) ?>" class="listEdit" id="listEdit" title="<?=$this->transEsc('Create a List') ?>"><?=$this->transEsc('or create a new list');?></a>
 
   <label class="displayBlock" for="add_mytags"><?=$this->transEsc('Add Tags') ?></label>
   <input class="mainFocus" id="add_mytags" type="text" name="mytags" value="" size="50"/>
diff --git a/themes/vufind/blueprint/templates/error/index.phtml b/themes/vufind/blueprint/templates/error/index.phtml
index df89e483dd5e98e821d80152f449abd3d88c2704..8efce0886a4e2cae2e0b3b6d20a1cdb34b00aa51 100644
--- a/themes/vufind/blueprint/templates/error/index.phtml
+++ b/themes/vufind/blueprint/templates/error/index.phtml
@@ -14,9 +14,9 @@
 </div>
 
 <? if ($this->showInstallLink): ?>
-  <h3><a href="<?=$this->url(array('controller' => 'Install'), 'default', true)?>"><?=$this->transEsc('auto_configure_title', array(), 'Auto Configure')?></a></h3>
+  <h3><a href="<?=$this->url('install-home')?>"><?=$this->transEsc('auto_configure_title', array(), 'Auto Configure')?></a></h3>
   <?=$this->transEsc('auto_configure_description', array(), 'If this is a new installation, you may be able to fix the error using VuFind\'s Auto Configure tool.')?>
-  <h3><a href="<?=$this->url(array('controller' => 'Upgrade'), 'default', true)?>"><?=$this->transEsc('Upgrade VuFind')?></a></h3>
+  <h3><a href="<?=$this->url('upgrade-home')?>"><?=$this->transEsc('Upgrade VuFind')?></a></h3>
   <?=$this->transEsc('upgrade_description', array(), 'If you are upgrading a previous VuFind version, you can load your old settings with this tool.')?>
 <? endif; ?>
 
diff --git a/themes/vufind/blueprint/templates/footer.phtml b/themes/vufind/blueprint/templates/footer.phtml
index 8216416bdc9e48e51cd3166c4e7750e80f4acd5c..cac6c1aa40c1e71818f82b1cbce3a5fce462ef2c 100644
--- a/themes/vufind/blueprint/templates/footer.phtml
+++ b/themes/vufind/blueprint/templates/footer.phtml
@@ -1,20 +1,20 @@
 <div class="span-5"><p><strong><?=$this->transEsc('Search Options')?></strong></p>
   <ul>
-    <li><a href="<?=$this->url(array('controller' => 'Search', 'action' => 'History'), 'default', true)?>"><?=$this->transEsc('Search History')?></a></li>
-    <li><a href="<?=$this->url(array('controller' => 'Search', 'action' => 'Advanced'), 'default', true)?>"><?=$this->transEsc('Advanced Search')?></a></li>
+    <li><a href="<?=$this->url('search-history')?>"><?=$this->transEsc('Search History')?></a></li>
+    <li><a href="<?=$this->url('search-advanced')?>"><?=$this->transEsc('Advanced Search')?></a></li>
   </ul>
 </div>
 <div class="span-5"><p><strong><?=$this->transEsc('Find More')?></strong></p>
   <ul>
-    <li><a href="<?=$this->url(array('controller' => 'Browse'), 'default', true)?>"><?=$this->transEsc('Browse the Catalog')?></a></li>
-    <li><a href="<?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>"><?=$this->transEsc('Browse Alphabetically')?></a></li>
-    <li><a href="<?=$this->url(array('controller' => 'Search', 'action' => 'Reserves'), 'default', true)?>"><?=$this->transEsc('Course Reserves')?></a></li>
-    <li><a href="<?=$this->url(array('controller' => 'Search', 'action' => 'NewItem'), 'default', true)?>"><?=$this->transEsc('New Items')?></a></li>
+    <li><a href="<?=$this->url('browse-home')?>"><?=$this->transEsc('Browse the Catalog')?></a></li>
+    <li><a href="<?=$this->url('alphabrowse-home')?>"><?=$this->transEsc('Browse Alphabetically')?></a></li>
+    <li><a href="<?=$this->url('search-reserves')?>"><?=$this->transEsc('Course Reserves')?></a></li>
+    <li><a href="<?=$this->url('search-newitem')?>"><?=$this->transEsc('New Items')?></a></li>
   </ul>
 </div>
 <div class="span-5 last"><p><strong><?=$this->transEsc('Need Help?')?></strong></p>
   <ul>
-    <li><a href="<?=$this->url(array('controller' => 'Help'), 'default', true)?>?topic=search" class="searchHelp"><?=$this->transEsc('Search Tips')?></a></li>
+    <li><a href="<?=$this->url('help-home')?>?topic=search" class="searchHelp"><?=$this->transEsc('Search Tips')?></a></li>
     <li><a href="#"><?=$this->transEsc('Ask a Librarian')?></a></li>
     <li><a href="#"><?=$this->transEsc('FAQs')?></a></li>
   </ul>
diff --git a/themes/vufind/blueprint/templates/header.phtml b/themes/vufind/blueprint/templates/header.phtml
index d3f2023f60af6b837353e7975cf7c85970a19e94..5290efe75a1962c85b9025f1bf7be839b6d9b631 100644
--- a/themes/vufind/blueprint/templates/header.phtml
+++ b/themes/vufind/blueprint/templates/header.phtml
@@ -2,20 +2,20 @@
 <div id="headerRight">
   <? $cart = \VuFind\Cart::getInstance(); if ($cart->isActive()): ?>
     <div id="cartSummary" class="cartSummary">
-      <a id="cartItems" title="<?=$this->transEsc('View Book Bag')?>" class="bookbag" href="<?=$this->url(array('controller' => 'Cart', 'action' => 'Home'), 'default', true)?>"><strong><span><?=count($cart->getItems())?></span></strong> <?=$this->transEsc('items')?> <?=$cart->isFull() ? '(' .  $this->transEsc('bookbag_full') . ')' : ''?></a>
-      <a id="viewCart" title="<?=$this->transEsc('View Book Bag')?>" class="viewCart bookbag offscreen" href="<?=$this->url(array('controller' => 'Cart', 'action' => 'Home'), 'default', true)?>"><strong><span id="cartSize"><?=count($cart->getItems())?></span></strong> <?=$this->transEsc('items')?><span id="cartStatus"><?=$cart->isFull() ? $this->transEsc('bookbag_full') : '&nbsp;'?></span></a>
+      <a id="cartItems" title="<?=$this->transEsc('View Book Bag')?>" class="bookbag" href="<?=$this->url('cart-home')?>"><strong><span><?=count($cart->getItems())?></span></strong> <?=$this->transEsc('items')?> <?=$cart->isFull() ? '(' .  $this->transEsc('bookbag_full') . ')' : ''?></a>
+      <a id="viewCart" title="<?=$this->transEsc('View Book Bag')?>" class="viewCart bookbag offscreen" href="<?=$this->url('cart-home')?>"><strong><span id="cartSize"><?=count($cart->getItems())?></span></strong> <?=$this->transEsc('items')?><span id="cartStatus"><?=$cart->isFull() ? $this->transEsc('bookbag_full') : '&nbsp;'?></span></a>
     </div>
   <? endif; ?>
   <? if (is_object($this->account) && $this->account->loginEnabled()): // hide login/logout if unavailable ?>
     <div id="logoutOptions"<?=!$this->account->isLoggedIn() ? ' class="hide"' : ''?>>
-      <a class="account" href="<?=$this->url(array('controller' => 'MyResearch'), 'default', true)?>"><?=$this->transEsc("Your Account")?></a> |
-      <a class="logout" href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Logout'), 'default', true)?>"><?=$this->transEsc("Log Out")?></a>
+      <a class="account" href="<?=$this->url('myresearch-home')?>"><?=$this->transEsc("Your Account")?></a> |
+      <a class="logout" href="<?=$this->url('myresearch-logout')?>"><?=$this->transEsc("Log Out")?></a>
     </div>
     <div id="loginOptions"<?=$this->account->isLoggedIn() ? ' class="hide"' : ''?>>
     <? if ($sessionInitiator = $this->account->getSessionInitiator()): ?>
       <a class="login" href="<?=$this->escape($sessionInitiator)?>"><?=$this->transEsc("Institutional Login")?></a>
     <? else: ?>
-      <a class="login" href="<?=$this->url(array('controller' => 'MyResearch'), 'default', true)?>"><?=$this->transEsc("Login")?></a>
+      <a class="login" href="<?=$this->url('myresearch-home')?>"><?=$this->transEsc("Login")?></a>
     <? endif; ?>
     </div>
   <? endif; ?>
diff --git a/themes/vufind/blueprint/templates/install/disabled.phtml b/themes/vufind/blueprint/templates/install/disabled.phtml
index 1e1e781cb97df4d015255e71e81ca86614fbca64..fdca791370987083a4a704803f4ac756ab2c4981 100644
--- a/themes/vufind/blueprint/templates/install/disabled.phtml
+++ b/themes/vufind/blueprint/templates/install/disabled.phtml
@@ -3,7 +3,7 @@
     $this->headTitle($this->translate('auto_configure_title'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' . $this->url(array('action' => 'Home')) .'">' . $this->transEsc('auto_configure_title') . '</a>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a>';
 ?>
 <h1><?=$this->transEsc('auto_configure_title')?></h1>
 
diff --git a/themes/vufind/blueprint/templates/install/done.phtml b/themes/vufind/blueprint/templates/install/done.phtml
index ab9944f2f4b2e28b3da4429acfb9e7e3287e8926..dd220c1310b4786506a7b56df7c24549d323a9ad 100644
--- a/themes/vufind/blueprint/templates/install/done.phtml
+++ b/themes/vufind/blueprint/templates/install/done.phtml
@@ -3,7 +3,7 @@
     $this->headTitle($this->translate('auto_configure_title'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' . $this->url(array('action' => 'Home')) .'">' . $this->transEsc('auto_configure_title') . '</a>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a>';
 ?>
 <h1><?=$this->transEsc('auto_configure_title')?></h1>
 
diff --git a/themes/vufind/blueprint/templates/install/fixbasicconfig.phtml b/themes/vufind/blueprint/templates/install/fixbasicconfig.phtml
index 6024ba03deaa0d2af5b2f2c12b417f19b13f17e8..0b3a2419493bf9b65ccc06bb4544b85f27eec6a2 100644
--- a/themes/vufind/blueprint/templates/install/fixbasicconfig.phtml
+++ b/themes/vufind/blueprint/templates/install/fixbasicconfig.phtml
@@ -3,7 +3,7 @@
     $this->headTitle($this->translate('auto_configure_title'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' . $this->url(array('action' => 'Home')) .'">' . $this->transEsc('auto_configure_title') . '</a>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a>';
 ?>
 <h1><?=$this->transEsc('auto_configure_title')?></h1>
 
diff --git a/themes/vufind/blueprint/templates/install/fixcache.phtml b/themes/vufind/blueprint/templates/install/fixcache.phtml
index 72ae7c15b7953e304f9f0625d8dfbb280685b371..7c03f447e2bbea021a081a06f2168666354752bc 100644
--- a/themes/vufind/blueprint/templates/install/fixcache.phtml
+++ b/themes/vufind/blueprint/templates/install/fixcache.phtml
@@ -3,7 +3,7 @@
     $this->headTitle($this->translate('auto_configure_title'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' . $this->url(array('action' => 'Home')) .'">' . $this->transEsc('auto_configure_title') . '</a>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a>';
 ?>
 <h1><?=$this->transEsc('auto_configure_title')?></h1>
 
diff --git a/themes/vufind/blueprint/templates/install/fixdatabase.phtml b/themes/vufind/blueprint/templates/install/fixdatabase.phtml
index 5bec1777b32cea995d085b0a15e566938ae9eabb..c5a684e4f64897ee0e1c8d3b8dcc17e997173476 100644
--- a/themes/vufind/blueprint/templates/install/fixdatabase.phtml
+++ b/themes/vufind/blueprint/templates/install/fixdatabase.phtml
@@ -3,7 +3,7 @@
     $this->headTitle($this->translate('auto_configure_title'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' . $this->url(array('action' => 'Home')) .'">' . $this->transEsc('auto_configure_title') . '</a>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a>';
 ?>
 <h1><?=$this->transEsc('auto_configure_title')?></h1>
 
diff --git a/themes/vufind/blueprint/templates/install/fixdependencies.phtml b/themes/vufind/blueprint/templates/install/fixdependencies.phtml
index 36b8d68bdb3d9b1383547612b033555c3f8b8be7..1fc58c93f818d50c5ec2636f4fddf76025ff7b3d 100644
--- a/themes/vufind/blueprint/templates/install/fixdependencies.phtml
+++ b/themes/vufind/blueprint/templates/install/fixdependencies.phtml
@@ -3,7 +3,7 @@
     $this->headTitle($this->translate('auto_configure_title'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' . $this->url(array('action' => 'Home')) .'">' . $this->transEsc('auto_configure_title') . '</a>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a>';
 ?>
 <h1><?=$this->transEsc('auto_configure_title')?></h1>
 
diff --git a/themes/vufind/blueprint/templates/install/fixils.phtml b/themes/vufind/blueprint/templates/install/fixils.phtml
index f83f4f666386f1f1e25b829f2a4e4aee497ab6db..d0d8a0cf77f41283c5dce5b02c3dbdc0da87764f 100644
--- a/themes/vufind/blueprint/templates/install/fixils.phtml
+++ b/themes/vufind/blueprint/templates/install/fixils.phtml
@@ -3,7 +3,7 @@
     $this->headTitle($this->translate('auto_configure_title'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' . $this->url(array('action' => 'Home')) .'">' . $this->transEsc('auto_configure_title') . '</a>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a>';
 ?>
 <h1><?=$this->transEsc('auto_configure_title')?></h1>
 
diff --git a/themes/vufind/blueprint/templates/install/fixsolr.phtml b/themes/vufind/blueprint/templates/install/fixsolr.phtml
index cac6cef700b3fcac090ac9f92b751c6ac8893fa7..600c464223adaf2734c6517a8f0a225567b8600f 100644
--- a/themes/vufind/blueprint/templates/install/fixsolr.phtml
+++ b/themes/vufind/blueprint/templates/install/fixsolr.phtml
@@ -3,7 +3,7 @@
     $this->headTitle($this->translate('auto_configure_title'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' . $this->url(array('action' => 'Home')) .'">' . $this->transEsc('auto_configure_title') . '</a>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a>';
 ?>
 <h1><?=$this->transEsc('auto_configure_title')?></h1>
 
diff --git a/themes/vufind/blueprint/templates/install/home.phtml b/themes/vufind/blueprint/templates/install/home.phtml
index 90f01cc208f79f18ad11c96fe862b11d84265d8f..6d4829f060707a7d79612aff7300c8c7f8cb8a06 100644
--- a/themes/vufind/blueprint/templates/install/home.phtml
+++ b/themes/vufind/blueprint/templates/install/home.phtml
@@ -9,10 +9,10 @@
 <ul>
   <? $errors = 0; foreach ($this->checks as $check): ?>
     <? if (!$check['status']) $errors++; ?>
-    <li><?=$this->escape($check['title'])?>... <?=$check['status'] ? '<span style="color:green">' . $this->transEsc('test_ok') . '</span>' : '<span style="color:red">' . $this->transesc('test_fail') . '</span> <a href="' . $this->url(array('action' => $check['fix'])) . '">' . $this->transEsc('test_fix') . '</a>' ?></li>
+    <li><?=$this->escape($check['title'])?>... <?=$check['status'] ? '<span style="color:green">' . $this->transEsc('test_ok') . '</span>' : '<span style="color:red">' . $this->transesc('test_fail') . '</span> <a href="' . $this->url('install-' . strtolower($check['fix'])) . '">' . $this->transEsc('test_fix') . '</a>' ?></li>
   <? endforeach; ?>
 </ul>
 
 <? if ($errors == 0): ?>
-  <p>No problems were found.  You may wish to <a href="<?=$this->url(array('action' => 'Done'))?>">Disable Auto Configuration</a> at this time.</p>
+  <p>No problems were found.  You may wish to <a href="<?=$this->url('install-done')?>">Disable Auto Configuration</a> at this time.</p>
 <? endif; ?>
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/layout/layout.phtml b/themes/vufind/blueprint/templates/layout/layout.phtml
index c9c28664620298a11f310a1bccfa3d20136d19aa..102734aa9135faf7fb2c1fc6a068cd297d23dc2c 100644
--- a/themes/vufind/blueprint/templates/layout/layout.phtml
+++ b/themes/vufind/blueprint/templates/layout/layout.phtml
@@ -9,9 +9,7 @@
         // Set up OpenSearch link:
         $this->headLink(
             array(
-                'href' => $this->url(
-                    'default', array('controller' => 'Search', 'action' => 'OpenSearch')
-                ) . '?method=describe',
+                'href' => $this->url('search-opensearch') . '?method=describe',
                 'type' => 'application/opensearchdescription+xml',
                 'title' => $this->transEsc('Library Catalog Search'),
                 'rel' => 'search'
diff --git a/themes/vufind/blueprint/templates/myresearch/account.phtml b/themes/vufind/blueprint/templates/myresearch/account.phtml
index 2c7086a841f2e4ccec952ca1cb597ec8db80927a..f817d1cee1eba87ad042cd4a2039c6a7a021de96 100644
--- a/themes/vufind/blueprint/templates/myresearch/account.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/account.phtml
@@ -3,10 +3,9 @@
     $this->headTitle($this->translate('User Account'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc('Account') . '</em>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('myresearch-home') . '">'
+        . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>'
+        . $this->transEsc('Account') . '</em>';
 ?>
 <h2><?=$this->transEsc('User Account')?></h2>
 <?=$this->flashmessages()?>
diff --git a/themes/vufind/blueprint/templates/myresearch/cataloglogin.phtml b/themes/vufind/blueprint/templates/myresearch/cataloglogin.phtml
index d31c3f84b025dda1bbc9b796842157127cdbc1af..72574b04a12e06b68c333b689f909c35e37025cd 100644
--- a/themes/vufind/blueprint/templates/myresearch/cataloglogin.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/cataloglogin.phtml
@@ -3,10 +3,9 @@
     $this->headTitle($this->translate('Login'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc('Login') . '</em>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('myresearch-home') . '">'
+        . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>'
+        . $this->transEsc('Login') . '</em>';
 
     // Convenience variable:
     $offlineMode = VF_Connection_Manager::connectToCatalog()->getOfflineMode();
diff --git a/themes/vufind/blueprint/templates/myresearch/checkedout.phtml b/themes/vufind/blueprint/templates/myresearch/checkedout.phtml
index 9eec86c8ad84f8023c933132643107875d2fbc70..1797933a04faf6729ca3de890c0d38997415c934 100644
--- a/themes/vufind/blueprint/templates/myresearch/checkedout.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/checkedout.phtml
@@ -3,10 +3,9 @@
     $this->headTitle($this->translate('Checked Out Items'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc('Checked Out') . '</em>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('myresearch-home') . '">'
+        . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>'
+        . $this->transEsc('Checked Out') . '</em>';
 ?>
 <div class="<?=$this->layoutClass('mainbody')?>">
   <h3><?=$this->transEsc('Your Checked Out Items')?></h3>
@@ -41,7 +40,7 @@
             <? if ($summThumb = $resource->getThumbnail()): ?>
               <img src="<?=$this->escape($summThumb)?>" class="summcover" alt="<?=$this->transEsc('Cover Image')?>"/>
             <? else: ?>
-              <img src="<?=$this->url(array('controller' => 'Cover', 'action' => 'Unavailable'), 'default', true)?>" class="summcover" alt="<?=$this->transEsc('No Cover Image')?>"/>
+              <img src="<?=$this->url('cover-unavailable')?>" class="summcover" alt="<?=$this->transEsc('No Cover Image')?>"/>
             <? endif; ?>
           </div>
           <div class="span-10">
diff --git a/themes/vufind/blueprint/templates/myresearch/delete.phtml b/themes/vufind/blueprint/templates/myresearch/delete.phtml
index d9cb2a3804d5d67d3994abedc1bdea25794e6324..ab7c506f3cd0133cf28129decfeccd81a3d2deff 100644
--- a/themes/vufind/blueprint/templates/myresearch/delete.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/delete.phtml
@@ -1,4 +1,4 @@
-<form action="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Delete'), 'default', true)?>" method="post" name="bulkDelete">
+<form action="<?=$this->url('myresearch-delete')?>" method="post" name="bulkDelete">
   <div id="popupMessages"><?=$this->flashmessages()?></div>
   <div id="popupDetails">
     <? if (!$this->list): ?>
diff --git a/themes/vufind/blueprint/templates/myresearch/edit.phtml b/themes/vufind/blueprint/templates/myresearch/edit.phtml
index 0a010db371d3118f07b8a4628e4c7e2954c82880..c8479da415b4b74f1c84564e01e90aacc23a2267 100644
--- a/themes/vufind/blueprint/templates/myresearch/edit.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/edit.phtml
@@ -3,10 +3,9 @@
     $this->headTitle($this->translate('Edit') . ' : ' . $this->driver->getBreadcrumb());
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc('Edit') . '</em>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('myresearch-home') . '">'
+        . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>'
+        . $this->transEsc('Edit') . '</em>';
 
     // Load Javascript dependencies into header:
     $this->headScript()->appendFile("bulk_actions.js");
@@ -26,7 +25,7 @@
   <? else: ?>
     <? foreach ($this->savedData as $i=>$current): ?>
       <strong><?=$this->transEsc('List') ?>: <?=$this->escape($current['listTitle'])?></strong>
-      <a href="<?=$this->url(array('id' => $current['listId']), 'userList') ?>?delete=<?=urlencode($this->driver->getUniqueId())?>&amp;source=<?=urlencode($this->driver->getResourceSource())?>" id="<?=$this->escape($this->driver->getUniqueId())?>delete<?=$current['listId'] ?>" title="<?=$this->transEsc('confirm_delete')?>" class="holdCancel delete tool"></a>
+      <a href="<?=$this->url('userList', array('id' => $current['listId'])) ?>?delete=<?=urlencode($this->driver->getUniqueId())?>&amp;source=<?=urlencode($this->driver->getResourceSource())?>" id="<?=$this->escape($this->driver->getUniqueId())?>delete<?=$current['listId'] ?>" title="<?=$this->transEsc('confirm_delete')?>" class="holdCancel delete tool"></a>
       <input type="hidden" name="lists[]" value="<?=$current['listId'] ?>"/>
       <label class="displayBlock" for="edit_tags<?=$current['listId'] ?>"><?=$this->transEsc('Tags') ?>:</label>
       <input id="edit_tags<?=$current['listId'] ?>" type="text" name="tags<?=$current['listId'] ?>" value="<?=$this->escape($current['tags'])?>" size="50"/>
diff --git a/themes/vufind/blueprint/templates/myresearch/editlist.phtml b/themes/vufind/blueprint/templates/myresearch/editlist.phtml
index 58e8d064be5ef109e1b5694c14da065d4d261ea5..8fc9290f6ae1e38922718cb98bf2b8eb6883af68 100644
--- a/themes/vufind/blueprint/templates/myresearch/editlist.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/editlist.phtml
@@ -4,10 +4,9 @@
     $this->headTitle($this->translate($pageTitle));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc($pageTitle) . '</em>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('myresearch-home') . '">'
+        . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>'
+        . $this->transEsc($pageTitle) . '</em>';
 ?>
 <h1><?=$this->transEsc($pageTitle); ?></h1>
 
diff --git a/themes/vufind/blueprint/templates/myresearch/email.phtml b/themes/vufind/blueprint/templates/myresearch/email.phtml
index d0d7fc0890ce2553d54c61d8d36dc50abfd5eeca..ff376e14d3593694671e6f54657aeffb5a00f147 100644
--- a/themes/vufind/blueprint/templates/myresearch/email.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/email.phtml
@@ -1,4 +1,4 @@
-<form action="<?=$this->url() ?>/MyResearch/Email" method="post" name="bulkEmail">
+<form action="<?=$this->url('myresearch-email')?>" method="post" name="bulkEmail">
   <? if ($errorMsg): ?><div class="error"><?=$this->translate($errorMsg) ?></div><? endif; ?>
   <? if ($infoMsg): ?><div class="info"><?=$this->translate($infoMsg) ?></div><? endif; ?>
 
diff --git a/themes/vufind/blueprint/templates/myresearch/export.phtml b/themes/vufind/blueprint/templates/myresearch/export.phtml
index 572da4ea9456a63a15b832144c0e130b3ca13933..6dbbd082a4df82ab674a733ee5efb027bd3d04bd 100644
--- a/themes/vufind/blueprint/templates/myresearch/export.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/export.phtml
@@ -1,4 +1,4 @@
-<form action="<?=$this->url() ?>/MyResearch/Export" method="post" name="bulkExport">
+<form action="<?=$this->url('myresearch-export')?>" method="post" name="bulkExport">
   <? if ($errorMsg): ?><div class="error"><?=$this->translate($errorMsg) ?></div><? endif; ?>
   <? if ($infoMsg): ?><div class="info"><?=$this->translate($infoMsg) ?></div><? endif; ?>
 
diff --git a/themes/vufind/blueprint/templates/myresearch/fines.phtml b/themes/vufind/blueprint/templates/myresearch/fines.phtml
index 88e616d13c982afad814f0e0510fcd899d299f5b..16cc819765a381a2de1211559153a0e91ada1466 100644
--- a/themes/vufind/blueprint/templates/myresearch/fines.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/fines.phtml
@@ -3,10 +3,9 @@
     $this->headTitle($this->translate('My Fines'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc('Fines') . '</em>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('myresearch-home') . '">'
+        . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>'
+        . $this->transEsc('Fines') . '</em>';
 ?>
 <div class="<?=$this->layoutClass('mainbody')?>">
   <? if (empty($this->fines)): ?>
@@ -30,7 +29,7 @@
           <? elseif (!isset($record['id'])): ?>
             <?=$this->escape(trim($record['title'], '/:'))?>
           <? else: ?>
-            <a href="<?=$this->url(array('id' => $record['id']), 'record', true)?>"><?=$this->escape(trim($record['title'], '/:'))?></a>
+            <a href="<?=$this->url('record', array('id' => $record['id']))?>"><?=$this->escape(trim($record['title'], '/:'))?></a>
           <? endif; ?>
         </td>
         <td><?=isset($record['checkout']) ? $this->escape($record['checkout']) : ''?></td>
diff --git a/themes/vufind/blueprint/templates/myresearch/holds.phtml b/themes/vufind/blueprint/templates/myresearch/holds.phtml
index e84c768849c0fc844508afda710922fd4340866f..86e234177c12a4e754c2836912d1554d03c20d46 100644
--- a/themes/vufind/blueprint/templates/myresearch/holds.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/holds.phtml
@@ -3,10 +3,9 @@
     $this->headTitle($this->translate('My Holds'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc('My Holds') . '</em>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('myresearch-home') . '">'
+        . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>'
+        . $this->transEsc('My Holds') . '</em>';
 ?>
 <div class="<?=$this->layoutClass('mainbody')?>">
   <h3><?=$this->translate('Your Holds and Recalls') ?></h3>
@@ -42,7 +41,7 @@
             <? if ($summThumb = $resource->getThumbnail()): ?>
               <img src="<?=$this->escape($summThumb)?>" class="summcover" alt="<?=$this->transEsc('Cover Image')?>"/>
             <? else: ?>
-              <img src="<?=$this->url(array('controller' => 'Cover', 'action' => 'Unavailable'), 'default', true)?>" class="summcover" alt="<?=$this->transEsc('No Cover Image')?>"/>
+              <img src="<?=$this->url('cover-unavailable')?>" class="summcover" alt="<?=$this->transEsc('No Cover Image')?>"/>
             <? endif; ?>
           </div>
           <div class="span-10">
diff --git a/themes/vufind/blueprint/templates/myresearch/login.phtml b/themes/vufind/blueprint/templates/myresearch/login.phtml
index 86ef6740e2055220f9426431185256b25efaa2ea..c841ece95d3b4bffb4e62e15a12e127fafe0d858 100644
--- a/themes/vufind/blueprint/templates/myresearch/login.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/login.phtml
@@ -3,10 +3,9 @@
     $this->headTitle($this->translate('Login'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc('Login') . '</em>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('myresearch-home') . '">'
+        . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>'
+        . $this->transEsc('Login') . '</em>';
 
     // If we're in AJAX mode, load some extra Javascript inline:
     if ($this->layout()->getLayout() == 'lightbox') {
@@ -35,7 +34,7 @@
   <div class="error"><?=$this->transEsc('login_disabled')?></div>
 <? else: ?>
   <? if (!$this->account->getSessionInitiator()): // display default login form if no login URL provided ?>
-    <form method="post" action="<?=$this->url(array('controller' => 'MyResearch'), 'default', true)?>" name="loginForm" id="loginForm">
+    <form method="post" action="<?=$this->url('myresearch-home')?>" name="loginForm" id="loginForm">
       <?=$this->auth()->getLoginFields()?>
       <input class="push-2 button" type="submit" name="processLogin" value="<?=$this->transEsc('Login')?>"/>
       <div class="clear"></div>
@@ -46,7 +45,7 @@
       echo $this->inlineScript(Zend_View_Helper_HeadScript::SCRIPT, $initJs);
     ?>
     <? if ($this->account->supportsCreation()): ?>
-      <a class="new_account" href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Account'), 'default')?>"><?=$this->transEsc('Create New Account')?></a>
+      <a class="new_account" href="<?=$this->url('myresearch-account')?>"><?=$this->transEsc('Create New Account')?></a>
     <? endif; ?>
   <? else: ?>
     <a href="<?=$this->escape($this->account->getSessionInitiator())?>"><?=$this->transEsc("Institutional Login")?></a>
diff --git a/themes/vufind/blueprint/templates/myresearch/menu.phtml b/themes/vufind/blueprint/templates/myresearch/menu.phtml
index e2f63936e973da879d87f6ac86d764d4a350b08a..eed786ccdf8ce561421d453f8df006b5c6eca2cc 100644
--- a/themes/vufind/blueprint/templates/myresearch/menu.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/menu.phtml
@@ -1,11 +1,11 @@
 <div class="sidegroup">
   <h4 class="account"><?=$this->transEsc('Your Account')?></h4>
   <ul class="bulleted">
-    <li<?=$this->active == 'favorites' ? ' class="active"' : ''?>><a href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Favorites'), 'default', true)?>"><?=$this->transEsc('Favorites')?></a></li>
-    <li<?=$this->active == 'checkedout' ? ' class="active"' : ''?>><a href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'CheckedOut'), 'default', true)?>"><?=$this->transEsc('Checked Out Items')?></a></li>
-    <li<?=$this->active == 'holds' ? ' class="active"' : ''?>><a href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Holds'), 'default', true)?>"><?=$this->transEsc('Holds and Recalls')?></a></li>
-    <li<?=$this->active == 'fines' ? ' class="active"' : ''?>><a href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Fines'), 'default', true)?>"><?=$this->transEsc('Fines')?></a></li>
-    <li<?=$this->active == 'profile' ? ' class="active"' : ''?>><a href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Profile'), 'default', true)?>"><?=$this->transEsc('Profile')?></a></li>
-    <li<?=$this->active == 'history' ? ' class="active"' : ''?>><a href="<?=$this->url(array('controller' => 'Search', 'action' => 'History'), 'default', true)?>?require_login"><?=$this->transEsc('history_saved_searches')?></a></li>
+    <li<?=$this->active == 'favorites' ? ' class="active"' : ''?>><a href="<?=$this->url('myresearch-favorites')?>"><?=$this->transEsc('Favorites')?></a></li>
+    <li<?=$this->active == 'checkedout' ? ' class="active"' : ''?>><a href="<?=$this->url('myresearch-checkedout')?>"><?=$this->transEsc('Checked Out Items')?></a></li>
+    <li<?=$this->active == 'holds' ? ' class="active"' : ''?>><a href="<?=$this->url('myresearch-holds')?>"><?=$this->transEsc('Holds and Recalls')?></a></li>
+    <li<?=$this->active == 'fines' ? ' class="active"' : ''?>><a href="<?=$this->url('myresearch-fines')?>"><?=$this->transEsc('Fines')?></a></li>
+    <li<?=$this->active == 'profile' ? ' class="active"' : ''?>><a href="<?=$this->url('myresearch-profile')?>"><?=$this->transEsc('Profile')?></a></li>
+    <li<?=$this->active == 'history' ? ' class="active"' : ''?>><a href="<?=$this->url('search-history')?>?require_login"><?=$this->transEsc('history_saved_searches')?></a></li>
   </ul>
 </div>
diff --git a/themes/vufind/blueprint/templates/myresearch/mylist.phtml b/themes/vufind/blueprint/templates/myresearch/mylist.phtml
index 03160f24309ef049ee6212e6e2968ae31fd16ced..0bbe06004ffc5f78e6162b1c978ad0f23b0cd879 100644
--- a/themes/vufind/blueprint/templates/myresearch/mylist.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/mylist.phtml
@@ -7,10 +7,9 @@
 
     // Set up breadcrumbs:
     $currPage = isset($list) ? 'List' : 'Favorites';
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc($currPage) . '</em>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('myresearch-home') . '">'
+        . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>'
+        . $this->transEsc($currPage) . '</em>';
 
     // Load Javascript dependencies into header:
     $this->headScript()->appendFile("bulk_actions.js");
@@ -22,8 +21,8 @@
   <? if (isset($list)): ?>
     <div class="floatright">
       <? if ($list->editAllowed()): ?>
-        <a href="<?=$this->url(array('id' => $list->id), 'editList', true) ?>" class="edit smallButton listEdit" title="<?=$this->transEsc("edit_list")?>"><?=$this->transEsc("edit_list")?></a>
-        <a href="<?=$this->url(array('action'=>'DeleteList', 'controller'=>'MyResearch'), 'default', true) ?>?listID=<?=urlencode($list->id)?>" class="delete deleteList smallButton" id="deleteList<?=$list->id ?>" title="<?=$this->transEsc("delete_list")?>"><?=$this->transEsc("delete_list")?></a>
+        <a href="<?=$this->url('editList', array('id' => $list->id)) ?>" class="edit smallButton listEdit" title="<?=$this->transEsc("edit_list")?>"><?=$this->transEsc("edit_list")?></a>
+        <a href="<?=$this->url('myresearch-deletelist') ?>?listID=<?=urlencode($list->id)?>" class="delete deleteList smallButton" id="deleteList<?=$list->id ?>" title="<?=$this->transEsc("delete_list")?>"><?=$this->transEsc("delete_list")?></a>
       <? endif; ?>
     </div>
     <h3 class="list"><?=$this->escape($list->title)?></h3>
@@ -44,7 +43,7 @@
       </div>
       <div class="clear"></div>
     </div>
-    <form method="post" name="bulkActionForm" action="<?=$this->url(array('controller' => 'Cart', 'action' => 'MyResearchBulk'), 'default', true)?>">
+    <form method="post" name="bulkActionForm" action="<?=$this->url('cart-myresearchbulk')?>">
       <? if (isset($list)): ?>
         <input type="hidden" name="listID" value="<?=$this->escape($list->id)?>" />
         <input type="hidden" name="listName" value="<?=$this->escape($list->title)?>" />
diff --git a/themes/vufind/blueprint/templates/myresearch/profile.phtml b/themes/vufind/blueprint/templates/myresearch/profile.phtml
index ce4e642270dc34c1dae957f1d007d2fe8e08875a..bf65ca0e95d0cfa96130e727aeb57fd6f00072bd 100644
--- a/themes/vufind/blueprint/templates/myresearch/profile.phtml
+++ b/themes/vufind/blueprint/templates/myresearch/profile.phtml
@@ -3,10 +3,9 @@
     $this->headTitle($this->translate('My Profile'));
 
     // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc('Profile') . '</em>';
+    $this->layout()->breadcrumbs = '<a href="' . $this->url('myresearch-home') . '">'
+        . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>'
+        . $this->transEsc('Profile') . '</em>';
 
     // Only display home library form if we have multiple pickup locations:
     $showHomeLibForm = (isset($this->pickup) && count($this->pickup) > 1);
diff --git a/themes/vufind/blueprint/templates/oai/home.phtml b/themes/vufind/blueprint/templates/oai/home.phtml
index 327b3b82c80ea47f045c2f68f4d4b38e01c21fe2..a6ff4a50910b52ce642e5f31860ba48fc54b9880 100644
--- a/themes/vufind/blueprint/templates/oai/home.phtml
+++ b/themes/vufind/blueprint/templates/oai/home.phtml
@@ -1,7 +1,7 @@
 <?
     $this->headTitle($this->translate('OAI Server'));
     $this->layout()->breadcrumbs = $this->transEsc('OAI Server');
-    $baseUrl = $this->url(array('controller' => 'OAI', 'action' => 'Server'), 'default', true);
+    $baseUrl = $this->url('oai-server');
 ?>
 <div class="span-18">
   <h1><?=$this->transEsc('OAI Server')?></h1>
diff --git a/themes/vufind/blueprint/templates/record/save.phtml b/themes/vufind/blueprint/templates/record/save.phtml
index 18f98688e8d403a06c492486355344b2bff367fc..56f69a05d8cdfa95c2ed9ce6fc3fbd7c6ea6f727 100644
--- a/themes/vufind/blueprint/templates/record/save.phtml
+++ b/themes/vufind/blueprint/templates/record/save.phtml
@@ -15,7 +15,7 @@
     <p><?=$this->transEsc('This item is already part of the following list/lists') ?>:</p>
     <ul>
     <? foreach ($this->containingLists as $list): ?>
-      <li><a href="<?=$this->url(array('id' => $list['id']), 'userList') ?>"><?=$this->escape($list['title'])?></a></li>
+      <li><a href="<?=$this->url('userList', array('id' => $list['id'])) ?>"><?=$this->escape($list['title'])?></a></li>
     <? endforeach; ?>
     </ul>
   <? endif; ?>
@@ -36,7 +36,7 @@
       <? endif; ?>
     </select>
   <? endif; ?>
-  <a href="<?=$this->url(array('id' => 'NEW'), 'editList', true) ?>?recordId=<?=urlencode($this->driver->getUniqueId())?>&amp;recordController=<?=urlencode($this->record($this->driver)->getController())?>" class="listEdit controller<?=$this->record($this->driver)->getController()?>" title="<?=$this->transEsc('Create a List') ?>"><? if ($showLists) echo $this->transEsc('or create a new list'); else echo $this->transEsc('Create a List'); ?></a>
+  <a href="<?=$this->url('editList', array('id' => 'NEW'))?>?recordId=<?=urlencode($this->driver->getUniqueId())?>&amp;recordController=<?=urlencode($this->record($this->driver)->getController())?>" class="listEdit controller<?=$this->record($this->driver)->getController()?>" title="<?=$this->transEsc('Create a List') ?>"><? if ($showLists) echo $this->transEsc('or create a new list'); else echo $this->transEsc('Create a List'); ?></a>
 
   <? if ($showLists): ?>
     <label class="displayBlock" for="add_mytags"><?=$this->transEsc('Add Tags') ?></label>
diff --git a/themes/vufind/blueprint/templates/record/view.phtml b/themes/vufind/blueprint/templates/record/view.phtml
index 8b36355790bebafd0620922af48854aa5d35cc91..32797b0a7f4244771e9f196b26efe0819e20007e 100644
--- a/themes/vufind/blueprint/templates/record/view.phtml
+++ b/themes/vufind/blueprint/templates/record/view.phtml
@@ -52,7 +52,7 @@
     </ul>
     <? if ($cart->isActive()): ?>
       <div class="cartSummary">
-        <form method="post" name="addForm" action="<?=$this->url(array('controller' => 'Cart', 'action' => 'Home'), 'default', true)?>">
+        <form method="post" name="addForm" action="<?=$this->url('cart-home')?>">
           <input id="cartId" type="hidden" name="ids[]" value="<?=$this->escape($cartId)?>" />
           <noscript>
             <? if ($cart->contains($cartId)): ?>
@@ -73,9 +73,9 @@
     <?=$this->flashmessages()?>
     <? if (isset($this->scrollData) && ($this->scrollData['previousRecord'] || $this->scrollData['nextRecord'])): ?>
       <div class="resultscroller">
-        <? if ($this->scrollData['previousRecord']): ?><a href="<?=$this->url(array('id' => $this->scrollData['previousRecord'], 'action' => 'Home'), $this->driver->getRecordRoute(), true)?>">&laquo; <?=$this->transEsc('Prev')?></a><? endif; ?>
+        <? if ($this->scrollData['previousRecord']): ?><a href="<?=$this->url($this->driver->getRecordRoute(), array('id' => $this->scrollData['previousRecord']))?>">&laquo; <?=$this->transEsc('Prev')?></a><? endif; ?>
         #<?=$this->escape($this->scrollData['currentPosition']) . ' ' . $this->transEsc('of') . ' ' . $this->escape($this->scrollData['resultTotal'])?>
-        <? if ($this->scrollData['nextRecord']): ?><a href="<?=$this->url(array('id' => $this->scrollData['nextRecord'], 'action' => 'Home'), $this->driver->getRecordRoute(), true)?>"><?=$this->transEsc('Next')?> &raquo;</a><? endif; ?>
+        <? if ($this->scrollData['nextRecord']): ?><a href="<?=$this->url($this->driver->getRecordRoute(), array('id' => $this->scrollData['nextRecord']))?>"><?=$this->transEsc('Next')?> &raquo;</a><? endif; ?>
       </div>
     <? endif; ?>
     <?=$this->record($this->driver)->getCoreMetadata()?>
diff --git a/themes/vufind/blueprint/templates/search/advanced/layout.phtml b/themes/vufind/blueprint/templates/search/advanced/layout.phtml
index c332fc6ba7341d714627f8e685cb10940196be95..e636cd58f4ce0999dcba19858a2d0e5f90bccc73 100644
--- a/themes/vufind/blueprint/templates/search/advanced/layout.phtml
+++ b/themes/vufind/blueprint/templates/search/advanced/layout.phtml
@@ -24,7 +24,7 @@
     // Step 3: Build the page
     $this->headScript()->appendScript($this->partial('search/advanced/build_page.phtml', array('searchDetails' => $searchDetails)));
 ?>
-<form method="get" action="<?=$this->url($this->options->getSearchAction(), 'default', true)?>" id="advSearchForm" name="searchForm" class="search">
+<form method="get" action="<?=$this->url($this->options->getSearchAction())?>" id="advSearchForm" name="searchForm" class="search">
   <div class="<?=$this->layoutClass('mainbody')?>">
     <h3><?=$this->transEsc('Advanced Search')?></h3>
     <div class="advSearchContent">
@@ -140,8 +140,8 @@
     <? endif; ?>
     <div class="sidegroup">
       <h4><?=$this->transEsc("Search Tips")?></h4>
-      <a href="<?=$this->url(array('controller' => 'Help'), 'default')?>?topic=searchadv" class="advsearchHelp"><?=$this->transEsc("Help with Advanced Search")?></a><br />
-      <a href="<?=$this->url(array('controller' => 'Help'), 'default')?>?topic=search" class="searchHelp"><?=$this->transEsc("Help with Search Operators")?></a>
+      <a href="<?=$this->url('help-home')?>?topic=searchadv" class="advsearchHelp"><?=$this->transEsc("Help with Advanced Search")?></a><br />
+      <a href="<?=$this->url('help-home')?>?topic=search" class="searchHelp"><?=$this->transEsc("Help with Search Operators")?></a>
     </div>
   </div>
 
diff --git a/themes/vufind/blueprint/templates/search/history-table.phtml b/themes/vufind/blueprint/templates/search/history-table.phtml
index 6586c3128e394cf9e0aacd6caef678c998f9661f..ed92713d14f6eefc5ff4cbf7a72b020b70176f2b 100644
--- a/themes/vufind/blueprint/templates/search/history-table.phtml
+++ b/themes/vufind/blueprint/templates/search/history-table.phtml
@@ -10,7 +10,7 @@
     <tr class="<?=$iteration % 2 == 1 ? 'even' : 'odd'?>row">
       <td><?=$this->escape(date("g:ia, jS M y", $info->getStartTime()))?></td>
       <td>
-        <a href="<?=$this->url($info->getSearchAction(), 'default', true) . $info->getUrl()->getParams()?>"><?
+        <a href="<?=$this->url($info->getSearchAction()) . $info->getUrl()->getParams()?>"><?
           $desc = $info->getDisplayQuery();
           echo empty($desc) ? $this->transEsc("history_empty_search") : $this->escape($desc);
         ?></a>
@@ -25,9 +25,9 @@
       <td><?=$this->escape(number_format($info->getResultTotal()))?></td>
       <td>
         <? if ($this->showSaved): ?>
-          <a href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'SaveSearch'), 'default')?>?delete=<?=urlencode($info->getSearchId())?>&amp;mode=history" class="delete"><?=$this->transEsc("history_delete_link")?></a>
+          <a href="<?=$this->url('myresearch-savesearch')?>?delete=<?=urlencode($info->getSearchId())?>&amp;mode=history" class="delete"><?=$this->transEsc("history_delete_link")?></a>
         <? else: ?>
-          <a href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'SaveSearch'), 'default')?>?save=<?=urlencode($info->getSearchId())?>&amp;mode=history" class="add"><?=$this->transEsc("history_save_link")?></a>
+          <a href="<?=$this->url('myresearch-savesearch')?>?save=<?=urlencode($info->getSearchId())?>&amp;mode=history" class="add"><?=$this->transEsc("history_save_link")?></a>
         <? endif; ?>
       </td>
     </tr>
diff --git a/themes/vufind/blueprint/templates/search/home.phtml b/themes/vufind/blueprint/templates/search/home.phtml
index 8afe6dc6659789985480fb18f829db04fcf198a7..37345646355f240f14c93f0557669c651afc4c9d 100644
--- a/themes/vufind/blueprint/templates/search/home.phtml
+++ b/themes/vufind/blueprint/templates/search/home.phtml
@@ -52,7 +52,7 @@
       <? else: ?>
         <? $i = 0; foreach ($sortedList as $url => $value): ?>
           <? if (++$i > 12): ?>
-            <li><a href="<?=$this->url($advSearch, 'default')?>"><strong><?=$this->transEsc("More options")?>...</strong></a></li>
+            <li><a href="<?=$this->url($advSearch)?>"><strong><?=$this->transEsc("More options")?>...</strong></a></li>
             <? break; ?>
           <? else: ?>
             <li><a href="<?=$url?>"><?=$this->escape($value)?></a></li>
diff --git a/themes/vufind/blueprint/templates/search/list-authorfacets.phtml b/themes/vufind/blueprint/templates/search/list-authorfacets.phtml
index e358ab938d62339b7ef529afdee76110130fa2ae..d8d85e0f91c67d4c8e57f55efa5061716525f61f 100644
--- a/themes/vufind/blueprint/templates/search/list-authorfacets.phtml
+++ b/themes/vufind/blueprint/templates/search/list-authorfacets.phtml
@@ -5,7 +5,7 @@
     </tr>
     <? $i = 0; foreach ($this->results->getResults() as $record): ?>
     <tr<?=(++$i % 2 == 0) ? ' class="alt"' : ''?>>
-      <td><a href="<?=$this->url(array('controller' => 'Author', 'action' => 'Home'), 'default', true)?>?author=<?=urlencode($record['value'])?>"><?=$this->escape($record['value'])?></a></td>
+      <td><a href="<?=$this->url('author-home')?>?author=<?=urlencode($record['value'])?>"><?=$this->escape($record['value'])?></a></td>
       <td><?=$this->escape($record['count'])?></td>
     </tr>
     <? endforeach; ?>
diff --git a/themes/vufind/blueprint/templates/search/results.phtml b/themes/vufind/blueprint/templates/search/results.phtml
index edf80d339248e3650daa1212f4a57182c649559c..353c0132209ff1a6dda8014c8109741c86e144e7 100644
--- a/themes/vufind/blueprint/templates/search/results.phtml
+++ b/themes/vufind/blueprint/templates/search/results.phtml
@@ -93,7 +93,7 @@
       <?=$this->recommend($current)?>
     <? endforeach; ?>
   <? else: ?>
-    <form method="post" name="bulkActionForm" action="<?=$this->url(array('controller' => 'Cart', 'action' => 'Home'), 'default', true)?>">
+    <form method="post" name="bulkActionForm" action="<?=$this->url('cart-home')?>">
       <?=$this->context($this)->renderInContext('search/bulk-action-buttons.phtml', array('idPrefix' => ''))?>
       <?=$this->render('search/list-' . $this->results->getView() . '.phtml')?>
       <?=$this->context($this)->renderInContext('search/bulk-action-buttons.phtml', array('idPrefix' => 'bottom_'))?>
@@ -103,12 +103,12 @@
     <div class="searchtools">
       <strong><?=$this->transEsc('Search Tools')?>:</strong>
       <a href="<?=$this->results->getUrl()->setViewParam('rss')?>" class="feed"><?=$this->transEsc('Get RSS Feed')?></a>
-      <a href="<?=$this->url(array('controller' => 'Search', 'action' => 'Email'), 'default')?>" class="mailSearch mail" id="mailSearch<?=$this->escape($this->results->getSearchId())?>" title="<?=$this->transEsc('Email this Search')?>"><?=$this->transEsc('Email this Search')?></a>
+      <a href="<?=$this->url('search-email')?>" class="mailSearch mail" id="mailSearch<?=$this->escape($this->results->getSearchId())?>" title="<?=$this->transEsc('Email this Search')?>"><?=$this->transEsc('Email this Search')?></a>
       <? if (is_numeric($this->results->getSearchId())): ?>
         <? if ($this->results->isSavedSearch()): ?>
-          <a href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'SaveSearch'), 'default')?>?delete=<?=urlencode($this->results->getSearchId())?>" class="delete"><?=$this->transEsc('save_search_remove')?></a>
+          <a href="<?=$this->url('myresearch-savesearch')?>?delete=<?=urlencode($this->results->getSearchId())?>" class="delete"><?=$this->transEsc('save_search_remove')?></a>
         <? else: ?>
-          <a href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'SaveSearch'), 'default')?>?save=<?=urlencode($this->results->getSearchId())?>" class="add"><?=$this->transEsc('save_search')?></a>
+          <a href="<?=$this->url('myresearch-savesearch')?>?save=<?=urlencode($this->results->getSearchId())?>" class="add"><?=$this->transEsc('save_search')?></a>
         <? endif; ?>
       <? endif; ?>
     </div>
diff --git a/themes/vufind/blueprint/templates/search/searchbox.phtml b/themes/vufind/blueprint/templates/search/searchbox.phtml
index 53dcc360e0cc052310f0bb9cccdaa8960822a162..52ba4b604b40248e7b49e2e83351f06467bd808f 100644
--- a/themes/vufind/blueprint/templates/search/searchbox.phtml
+++ b/themes/vufind/blueprint/templates/search/searchbox.phtml
@@ -7,20 +7,19 @@
     // Load search actions and settings (if any):
     $options = $this->searchOptions($this->searchClassId);
     $basicSearch = $options->getSearchAction();
-    $searchHome = $basicSearch;
-    $searchHome['action'] = 'Home';
+    $searchHome = $options->getSearchHomeAction();
     $advSearch = $options->getAdvancedSearchAction();
     $lastSort = $options->getLastSort();
     $lastLimit = $options->getLastLimit();
 ?>
 <div class="searchform">
   <? if ($this->searchType == 'advanced'): ?>
-    <a href="<?=$this->url($advSearch, 'default', true)?>?edit=<?=$this->escape($this->searchId)?>" class="small"><?=$this->transEsc("Edit this Advanced Search")?></a> |
-    <a href="<?=$this->url($advSearch, 'default', true)?>" class="small"><?=$this->transEsc("Start a new Advanced Search")?></a> |
-    <a href="<?=$this->url($searchHome, 'default', true)?>" class="small"><?=$this->transEsc("Start a new Basic Search")?></a>
+    <a href="<?=$this->url($advSearch)?>?edit=<?=$this->escape($this->searchId)?>" class="small"><?=$this->transEsc("Edit this Advanced Search")?></a> |
+    <a href="<?=$this->url($advSearch)?>" class="small"><?=$this->transEsc("Start a new Advanced Search")?></a> |
+    <a href="<?=$this->url($searchHome)?>" class="small"><?=$this->transEsc("Start a new Basic Search")?></a>
     <br/><?=$this->transEsc("Your search terms")?> : "<strong><?=$this->escape($this->lookfor)?></strong>"
   <? else: ?>
-    <form method="get" action="<?=$this->url($basicSearch, 'default', true)?>" name="searchForm" id="searchForm" class="search">
+    <form method="get" action="<?=$this->url($basicSearch)?>" name="searchForm" id="searchForm" class="search">
       <label for="searchForm_lookfor" class="offscreen"><?=$this->transEsc("Your search terms")?></label>
       <input id="searchForm_lookfor" type="text" name="lookfor" size="40" value="<?=$this->escape($this->lookfor)?>"<?=$options->autocompleteEnabled() ? ' class="autocomplete searcher:' . $this->escape($this->searchClassId) . ' typeSelector:searchForm_type"' : ''?>/>
       <label for="searchForm_type" class="offscreen"><?=$this->transEsc("Search Type")?></label>
@@ -31,7 +30,7 @@
       </select>
       <input type="submit" name="submit" value="<?=$this->transEsc("Find")?>"/>
       <? if ($advSearch): ?>
-        <a href="<?=$this->url($advSearch, 'default', true)?>" class="small"><?=$this->transEsc("Advanced")?></a>
+        <a href="<?=$this->url($advSearch)?>" class="small"><?=$this->transEsc("Advanced")?></a>
       <? endif; ?>
 
       <?
diff --git a/themes/vufind/blueprint/templates/upgrade/error.phtml b/themes/vufind/blueprint/templates/upgrade/error.phtml
index 4d07c587283e4facaae13418cdaa4073f9774119..1cca7ed5e6e8cc80d69bf981e2308987b0f3042e 100644
--- a/themes/vufind/blueprint/templates/upgrade/error.phtml
+++ b/themes/vufind/blueprint/templates/upgrade/error.phtml
@@ -7,4 +7,4 @@
 ?>
 <h1><?=$this->transEsc('Upgrade VuFind')?></h1>
 <?=$this->flashmessages()?>
-<p><?=$this->transEsc('vufind_upgrade_fail') ?>.  You can try <a href="<?=$this->url(array('controller' => 'Upgrade', 'action' => 'Reset'), 'default', true)?>">starting over</a>.</p>
\ No newline at end of file
+<p><?=$this->transEsc('vufind_upgrade_fail') ?>.  You can try <a href="<?=$this->url('upgrade-reset')?>">starting over</a>.</p>
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/upgrade/fixanonymoustags.phtml b/themes/vufind/blueprint/templates/upgrade/fixanonymoustags.phtml
index 87683e9bb4da093007f0966d87663910d154f849..759c5b930da5c5ad37e84a3bbbeb6408344dc132 100644
--- a/themes/vufind/blueprint/templates/upgrade/fixanonymoustags.phtml
+++ b/themes/vufind/blueprint/templates/upgrade/fixanonymoustags.phtml
@@ -20,7 +20,7 @@ an administrator) to associate with old anonymous tags.</p>
 
 <br />
 
-<form method="POST" action="<?=$this->url(array('controller' => 'Upgrade', 'action' => 'FixAnonymousTags'), 'default', true)?>">
+<form method="POST" action="<?=$this->url('upgrade-fixanonymoustags')?>">
   <?=$this->transEsc('Username') ?>: <input type="text" name="username" /> <input type="submit" name="submit" value="<?=$this->transEsc('Submit') ?>" /><br /><br />
   <input type="submit" name="skip" value="<?=$this->transEsc('skip_step') ?>." onclick="return confirm('<?=$this->transEsc('skip_confirm') ?>');"/>
 </form>
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/upgrade/fixmetadata.phtml b/themes/vufind/blueprint/templates/upgrade/fixmetadata.phtml
index 03bc19b756c506b18993974b0d2fb40822674d78..40ebeb0ac678232d92c4c312d96f3290096645f4 100644
--- a/themes/vufind/blueprint/templates/upgrade/fixmetadata.phtml
+++ b/themes/vufind/blueprint/templates/upgrade/fixmetadata.phtml
@@ -13,7 +13,7 @@ but it will improve the user experience by allowing proper sorting of favorites
 
 <br />
 
-<form method="POST" action="<?=$this->url(array('controller' => 'Upgrade', 'action' => 'FixMetadata'), 'default', true)?>">
+<form method="POST" action="<?=$this->url('upgrade-fixmetadata')?>">
   <input type="submit" name="submit" value="<?=$this->transEsc('fix_metadata') ?>." /><br /><br />
   <input type="submit" name="skip" value="<?=$this->transEsc('skip_fix_metadata') ?>." onclick="return confirm('<?=$this->transEsc('skip_confirm') ?>');"/>
 </form>
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/upgrade/getdbcredentials.phtml b/themes/vufind/blueprint/templates/upgrade/getdbcredentials.phtml
index 9a4b124e24316bdf0505701aac66332a8e6e8de1..f49f355ef3f3a214d9f89138931b09c77668035e 100644
--- a/themes/vufind/blueprint/templates/upgrade/getdbcredentials.phtml
+++ b/themes/vufind/blueprint/templates/upgrade/getdbcredentials.phtml
@@ -11,7 +11,7 @@
 <p>VuFind's database structure needs to be updated for the new version.  Please enter a database username and password
 with permission to alter and create tables.</p>
 
-<form method="POST" action="<?=$this->url(array('controller' => 'Upgrade', 'action' => 'GetDBCredentials'), 'default', true)?>">
+<form method="POST" action="<?=$this->url('upgrade-getdbcredentials')?>">
   <table>
     <tbody>
       <tr><td>MySQL Root User: </td><td><input type="text" name="dbrootuser" value="<?=$this->escape($this->dbrootuser)?>"/></td></tr>
diff --git a/themes/vufind/blueprint/templates/upgrade/getsourcedir.phtml b/themes/vufind/blueprint/templates/upgrade/getsourcedir.phtml
index 096608ad8ff2de3ee6ad35776cc34514bc054150..98d005299b91bcbc3509401a7ab6d8d4eaea6e49 100644
--- a/themes/vufind/blueprint/templates/upgrade/getsourcedir.phtml
+++ b/themes/vufind/blueprint/templates/upgrade/getsourcedir.phtml
@@ -8,6 +8,6 @@
 <h1><?=$this->transEsc('Upgrade VuFind')?></h1>
 <?=$this->flashmessages()?>
 <p>Please enter the full path of the directory containing your previous version of VuFind (i.e. /usr/local/vufind):</p>
-<form method="post" action="<?=$this->url(array('controller' => 'Upgrade', 'action' => 'GetSourceDir'), 'default', true)?>">
+<form method="post" action="<?=$this->url('upgrade-getsourcedir')?>">
 <input type="text" name="sourcedir" /> <input type="submit" />
 </form>
\ No newline at end of file
diff --git a/themes/vufind/blueprint/templates/upgrade/home.phtml b/themes/vufind/blueprint/templates/upgrade/home.phtml
index e0db4491d62c348f1f94ca9ef5ca18e9b60fb343..bd73071d93b15b1da00a04c0bf169ac0aa669532 100644
--- a/themes/vufind/blueprint/templates/upgrade/home.phtml
+++ b/themes/vufind/blueprint/templates/upgrade/home.phtml
@@ -15,7 +15,7 @@
   <li>If you have customized any of the YAML searchspecs files without using the *_local.yaml override mechanism, you will need to reapply those changes.</li>
   <li>If you have customized code or templates in your previous version, you will need to adapt those changes to the new architecture.</li>
   <li>You should reindex all of your content.</li>
-  <li>You may want to check for problems on the <a href="<?=$this->url(array('controller' => 'Install'), 'default', true)?>"><?=$this->transEsc('auto_configure_title')?></a> page.</li>
+  <li>You may want to check for problems on the <a href="<?=$this->url('install-home')?>"><?=$this->transEsc('auto_configure_title')?></a> page.</li>
 </ol>
 
 <p>For the latest notes on upgrading, see the <a href="http://www.vufind.org/wiki/migration_notes">online documentation</a>.</p>
diff --git a/themes/vufind/jquerymobile/templates/Recommend/FavoriteFacets.phtml b/themes/vufind/jquerymobile/templates/Recommend/FavoriteFacets.phtml
index cd56b087a8c121e3feab1a67b855676b14d5fa77..e4bfab5e6865c7c8074031f361f101b1fa51c10f 100644
--- a/themes/vufind/jquerymobile/templates/Recommend/FavoriteFacets.phtml
+++ b/themes/vufind/jquerymobile/templates/Recommend/FavoriteFacets.phtml
@@ -8,7 +8,7 @@
           <? if ($current['isApplied']): ?>
             <?=$this->escape($current['displayText'])?>
           <? else: ?>
-            <a href="<?=$this->url(array('id' => $current['value']), 'userList')?>"><?=$this->escape($current['displayText'])?></a>
+            <a href="<?=$this->url('userList', array('id' => $current['value']))?>"><?=$this->escape($current['displayText'])?></a>
           <? endif; ?>
           <span class="ui-li-count"><?=$this->escape($current['count'])?></span>
         </li>
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/SolrAuth/result-list.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/SolrAuth/result-list.phtml
index ca4d9c7b2abb30ff847c30ecfac0d9c768e28313..ded67db5d01e4e2a96e115377169c0290c35ea5a 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/SolrAuth/result-list.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/SolrAuth/result-list.phtml
@@ -4,7 +4,7 @@
         $heading = $this->translate('Heading unavailable.');
     }
 ?>
-<a rel="external" href="<?=$this->url(array('controller' => 'Authority', 'action' => 'Record'), 'default', true)?>?id=<?=urlencode($this->driver->getUniqueId())?>">
+<a rel="external" href="<?=$this->url('authority-record')?>?id=<?=urlencode($this->driver->getUniqueId())?>">
   <div class="result">
     <h3><?=$this->escape($heading)?></h3>
   </div>
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/core.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/core.phtml
index 31144bbb2e0c0eeaef2b15e905b93f93086f6b82..a109720fe73079dae7bafc31b758b45cdf4b7c1e 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/core.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/core.phtml
@@ -166,7 +166,7 @@
         <a rel="external" href="<?=$this->recordLink()->getUrl($this->driver, 'AddTag')?>" class="tool add tagRecord controller<?=$this->record($this->driver)->getController()?>" title="<?=$this->transEsc('Add Tag')?>" id="tagRecord"><?=$this->transEsc('Add Tag')?></a>
       </span>
       <div id="tagList">
-        <? $i = 0; foreach ($tagList as $tag): ?><?=($i++ == 0)?'':', '?><a rel="external" href="<?=$this->url(array('controller' => 'Tag', 'action' => 'Home'), 'default', true)?>?lookfor=<?=urlencode($tag->tag)?>"><?=$this->escape($tag->tag)?></a> (<?=$this->escape($tag->cnt)?>)<? endforeach; ?>
+        <? $i = 0; foreach ($tagList as $tag): ?><?=($i++ == 0)?'':', '?><a rel="external" href="<?=$this->url('tag-home')?>?lookfor=<?=urlencode($tag->tag)?>"><?=$this->escape($tag->tag)?></a> (<?=$this->escape($tag->cnt)?>)<? endforeach; ?>
       </div>
     </dd>
   <? endif; ?>
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-author.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-author.phtml
index edd9a48f6b4ba3ac94b20f1633b1c0a13228a237..1ef515fe458f58dbc0a53af91c01a7cbb097086e 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-author.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-author.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Author'), 'default', true)?>?author=<?=urlencode($this->lookfor)?>
\ No newline at end of file
+<?=$this->url('author-home')?>?author=<?=urlencode($this->lookfor)?>
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-journaltitle.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-journaltitle.phtml
index 8c4c1db72819ccb9946d4def73fd25b1c3ba1d0e..5987653afd9f7c4fff7a830588128fde1077c8a4 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-journaltitle.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-journaltitle.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=JournalTitle
\ No newline at end of file
+<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=JournalTitle
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-series.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-series.phtml
index 038f3bb12a46e3b38c18727fbbacf5fa3cf0b72a..bf7507d0a50c08a2edefcb6054506c4ca4c4dee1 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-series.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-series.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Series
\ No newline at end of file
+<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Series
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-subject.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-subject.phtml
index 260f6a167a6e7e84bc266f14a015b58bc339b1a9..07a34f729d9e6eda12dbc8cbd2bb8b8b3ded9791 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-subject.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-subject.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Subject
\ No newline at end of file
+<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Subject
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-title.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-title.phtml
index 1876b775c90e7165d415dbb09eb57b0dd9e4f55d..eca8c06502d139dd4ea37d34bb01aa516b9bd08e 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-title.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/SolrDefault/link-title.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Title
\ No newline at end of file
+<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Title
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-author.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-author.phtml
index 7b76c5e3c8b1deaadb7bdd1583c8a833ad05e28a..5aebd76f472dedf0a45e8d96de75376ed44caa8e 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-author.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-author.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Summon', 'action' => 'Search'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Author
\ No newline at end of file
+<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Author
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-journaltitle.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-journaltitle.phtml
index 53571ba82229394c264b15cc0ef0a288c438ea37..5536935b4f4be76c407a7dd867e1d3f1365c31aa 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-journaltitle.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-journaltitle.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Summon', 'action' => 'Search'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=PublicationTitle
\ No newline at end of file
+<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=PublicationTitle
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-series.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-series.phtml
index 5b794f66b24666fc6945ef5ab48b49df3a04d8fb..26a9524f15a53509bf7ac0cb7d8416536fbdbbda 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-series.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-series.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Summon', 'action' => 'Search'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=PublicationSeriesTitle
\ No newline at end of file
+<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=PublicationSeriesTitle
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-subject.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-subject.phtml
index a3afda46edd9d1b370b8380d96e03f5518a3be5d..cf66f99c10196f7e8380bf6955a933fc2730e6e9 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-subject.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-subject.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Summon', 'action' => 'Search'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Subject
\ No newline at end of file
+<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Subject
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-title.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-title.phtml
index 96b9e4aa0bd86fb02aae3c032b150a9c7c72bbc8..57cdc24f2d6d29a12d49a08447a5d08928a47b85 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-title.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/Summon/link-title.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'Summon', 'action' => 'Search'), 'default')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Title
\ No newline at end of file
+<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=Title
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-author.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-author.phtml
index 0e7b4193fadabfffd2ef3daa4abd7fe12d87a7df..b4790f29557f1da380d642dc25977ab745908be0 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-author.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-author.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'WorldCat', 'action' => 'Search'), 'default', true)?>?lookfor=<?=urlencode($this->lookfor)?>&amp;type=srw.au%3Asrw.pn%3Asrw.cn
\ No newline at end of file
+<?=$this->url('worldcat-search')?>?lookfor=<?=urlencode($this->lookfor)?>&amp;type=srw.au%3Asrw.pn%3Asrw.cn
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-series.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-series.phtml
index 8095d4954d2da5d5a1b6f9abf8e3b5da164cfb60..d95ad084838175f0a631beffe32ea08268c1dd06 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-series.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-series.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'WorldCat', 'action' => 'Search'), 'default', true)?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.se
\ No newline at end of file
+<?=$this->url('worldcat-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.se
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-subject.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-subject.phtml
index c3212621d10ab66d25bdd7cf2819e884c3433e60..6b6bb5c92351d841d4bb25b8cf4b28bdd27e4013 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-subject.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-subject.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'WorldCat', 'action' => 'Search'), 'default', true)?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.su
\ No newline at end of file
+<?=$this->url('worldcat-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.su
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-title.phtml b/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-title.phtml
index 705c080396f4ed225fffab944f7d348428e1b610..03f8d524558d20d3a643d5ea3b36e76553d3a8e2 100644
--- a/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-title.phtml
+++ b/themes/vufind/jquerymobile/templates/RecordDriver/WorldCat/link-title.phtml
@@ -1 +1 @@
-<?=$this->url(array('controller' => 'WorldCat', 'action' => 'Search'), 'default', true)?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.ti%3Asrw.se
\ No newline at end of file
+<?=$this->url('worldcat-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&amp;type=srw.ti%3Asrw.se
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/alphabrowse/home.phtml b/themes/vufind/jquerymobile/templates/alphabrowse/home.phtml
index 3b3e8abd401ebe0b6ec1f6b6098677ff7832967c..fae366e827d021331c89b4f44887947680a47bcd 100644
--- a/themes/vufind/jquerymobile/templates/alphabrowse/home.phtml
+++ b/themes/vufind/jquerymobile/templates/alphabrowse/home.phtml
@@ -6,7 +6,7 @@
   <? if (!$this->result): ?>
     <?=$this->mobileMenu()->header() ?>
     <div class="resulthead">
-      <form method="get" action="<?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>" name="alphaBrowseForm" id="alphaBrowseForm" data-ajax="false">
+      <form method="get" action="<?=$this->url('alphabrowse-home')?>" name="alphaBrowseForm" id="alphaBrowseForm" data-ajax="false">
         <div class="ui-body ui-body-d">
           <label for="alphaBrowseForm_source"><?=$this->transEsc('Browse Alphabetically') ?></label>
           <select id="alphaBrowseForm_source" name="source">
@@ -23,7 +23,7 @@
   <? else: ?>
     <?=$this->mobileMenu()->header(array(
       'extraButtons' => array('<a rel="external" href="'
-        . $this->url(array('controller' => 'AlphaBrowse', 'action' => 'Home'), 'default', true)
+        . $this->url('alphabrowse-home')
         . '" data-icon="home" class="ui-btn-left">'
         . $this->transEsc("Browse Home")
         . '</a>'
@@ -32,12 +32,12 @@
       <div class="ui-grid-a">
         <div class="ui-block-a">
           <? if (isset($this->prevpage)): ?>
-            <a data-role="button" data-mini="true" data-icon="arrow-l" href="<?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($this->from)?>&amp;page=<?=urlencode($this->prevpage)?>">Prev</a>
+            <a data-role="button" data-mini="true" data-icon="arrow-l" href="<?=$this->url('alphabrowse-home')?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($this->from)?>&amp;page=<?=urlencode($this->prevpage)?>">Prev</a>
           <? endif; ?>
         </div>
         <div class="ui-block-b">
           <? if (isset($this->nextpage)): ?>
-            <a data-role="button" data-mini="true" data-icon="arrow-r" data-iconpos="right" href="<?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($this->from)?>&amp;page=<?=urlencode($this->nextpage)?>">Next</a>
+            <a data-role="button" data-mini="true" data-icon="arrow-r" data-iconpos="right" href="<?=$this->url('alphabrowse-home')?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode($this->from)?>&amp;page=<?=urlencode($this->nextpage)?>">Next</a>
           <? endif; ?>
         </div>
       </div>
@@ -51,12 +51,12 @@
           <? if ($item['count'] > 0 || count($item['useInstead']) > 0): ?>
           <? ob_start(); ?>
             <? if (count($item['useInstead']) > 0): ?>
-              <?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>/Results?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode(implode($item['useInstead']))?>
+              <?=$this->url('alphabrowse-results')?>?source=<?=urlencode($this->source)?>&amp;from=<?=urlencode(implode($item['useInstead']))?>
             <? else: ?>
               <? if ($item['count'] < 5): ?>
-                <?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default', true)?>?type=ids&amp;lookfor=<? foreach ($item['ids'] as $id): ?><?=$id ?>+<? endforeach; ?>
+                <?=$this->url('search-results')?>?type=ids&amp;lookfor=<? foreach ($item['ids'] as $id): ?><?=$id ?>+<? endforeach; ?>
               <? else: ?>
-                <?=$this->url(array('controller' => 'Search', 'action' => 'Results'), 'default', true)?>?type=<?=urlencode(ucwords($this->source)) ?>Browse&amp;lookfor=<?=urlencode($item['heading'])?>
+                <?=$this->url('search-results')?>?type=<?=urlencode(ucwords($this->source)) ?>Browse&amp;lookfor=<?=urlencode($item['heading'])?>
               <? endif; ?>
             <? endif; ?>
             <? $searchLink = ob_get_contents(); ?>
diff --git a/themes/vufind/jquerymobile/templates/author/home.phtml b/themes/vufind/jquerymobile/templates/author/home.phtml
index c0dc2b935c47a4128ad62347e86c3930dfa55666..8cda4f3e6066f9e0ef9e9ed8ca1b55bc09482e0e 100644
--- a/themes/vufind/jquerymobile/templates/author/home.phtml
+++ b/themes/vufind/jquerymobile/templates/author/home.phtml
@@ -5,7 +5,7 @@
 <div data-role="page">
   <?=$this->mobileMenu()->header()?>
   <div data-role="content">
-    <form method="get" action="<?=$this->url(array('controller' => 'Author', 'action' => 'Search'), 'default', true)?>" data-ajax="false">
+    <form method="get" action="<?=$this->url('author-search')?>" data-ajax="false">
       <div data-role="fieldcontain">
         <label class="offscreen" for="author_lookfor"><?=$this->transEsc('Author Results for')?>:</label>
         <input type="search" id="author_lookfor" name="lookfor" />
diff --git a/themes/vufind/jquerymobile/templates/browse/home.phtml b/themes/vufind/jquerymobile/templates/browse/home.phtml
index a6d00687838a1444d2ce889d33f77addca397eea..a9243bbe6bea7e82ba8c811cfb4cf01e87110855 100644
--- a/themes/vufind/jquerymobile/templates/browse/home.phtml
+++ b/themes/vufind/jquerymobile/templates/browse/home.phtml
@@ -1,14 +1,12 @@
 <?
   $this->headTitle($this->translate('Browse the Catalog'));
 
-  $BROWSE_BASE = $this->url(array('controller' => 'Browse', 'action' => $this->currentAction), 'default', true);
-  $SEARCH_BASE = ($this->currentAction == 'Tag')
-    ? $this->url(array('controller' => 'Tag', 'action' => 'Home'), 'default', true)
-    : $this->url(array('controller' => 'Search', 'action' => 'Results'), 'default', true);
+  $BROWSE_BASE = $this->url('browse-' . strtolower($this->currentAction));
+  $SEARCH_BASE = $this->url($this->currentAction == 'Tag' ? 'tag-home' : 'search-results');
 
-  $BACK_LINK = $this->url(array('controller' => 'Browse', 'action' => 'Home'), 'default', true);
+  $BACK_LINK = $this->url('browse-home');
   if (isset($this->findby) || ($this->currentAction == 'LCC' && isset($this->query))) {
-    $BACK_LINK = $this->url(array('controller' => 'Browse', 'action' => $this->currentAction), 'default', true);
+    $BACK_LINK = $BROWSE_BASE;
   }
   if (isset($this->query) && $this->currentAction != 'LCC') {
     $BACK_LINK .= '?findby='.urlencode($this->findby).'&amp;query_field='.$this->browse()->getSolrField($this->findby, $this->currentAction);
@@ -17,12 +15,12 @@
 
 <div data-role="header" class="ui-bar-b">
 <? if (!isset($this->currentAction)): ?>
-  <a data-ajax="false" href="<?=$this->url(array('controller' => 'Index'), 'default', true) ?>" data-icon="home"><?=$this->transEsc('Search Home') ?></a>
+  <a data-ajax="false" href="<?=$this->url('home') ?>" data-icon="home"><?=$this->transEsc('Search Home') ?></a>
   <h1><?=$this->transEsc('Choose a Category to Begin Browsing') ?></h1>
 <? else: ?>
   <a data-ajax="false" href="<?=$BACK_LINK ?>" data-icon="arrow-l"><?=$this->transEsc('navigate_back')?></a>
   <h1>Browsing By <?=$this->currentAction ?></h1>
-  <a data-ajax="false" href="<?=$this->url(array('controller' => 'Browse', 'action' => 'Home'), 'default', true) ?>" data-icon="home"><?=$this->transEsc('Browse Home') ?></a>
+  <a data-ajax="false" href="<?=$this->url('browse-home') ?>" data-icon="home"><?=$this->transEsc('Browse Home') ?></a>
 <? endif; ?>
 </div>
 
@@ -63,7 +61,7 @@
     <? else: ?>
     <? foreach ($this->browseOptions as $item=>$currentOption): ?>
       <li>
-        <a data-ajax="false" href="<?=$this->url(array('controller' => 'Browse', 'action' => $currentOption['action']), 'default', true); ?>"><?=$this->transEsc($currentOption['description']) ?></a>
+        <a data-ajax="false" href="<?=$this->url('browse-' . strtolower($currentOption['action'])); ?>"><?=$this->transEsc($currentOption['description']) ?></a>
       </li>
     <? endforeach; ?>
     <? endif; ?>
diff --git a/themes/vufind/jquerymobile/templates/default-footer-navbar.phtml b/themes/vufind/jquerymobile/templates/default-footer-navbar.phtml
index f4f871ecf62bd8a0555b74d4920fe486f05a6c53..25bb38ba2b8ba3e0d909b8536afe12de9ded9e6e 100644
--- a/themes/vufind/jquerymobile/templates/default-footer-navbar.phtml
+++ b/themes/vufind/jquerymobile/templates/default-footer-navbar.phtml
@@ -2,10 +2,10 @@
   <ul>
     <li><a data-rel="dialog" href="#Language-dialog" data-transition="pop"><?=$this->transEsc('Language')?></a></li>
     <? if (is_object($this->account) && $this->account->loginEnabled()): // hide login/logout if unavailable ?>
-      <li><a rel="external" href="<?=$this->url(array('controller' => 'MyResearch'), 'default', true)?>"><?=$this->transEsc('Account')?></a></li>
+      <li><a rel="external" href="<?=$this->url('myresearch-home')?>"><?=$this->transEsc('Account')?></a></li>
     <? endif; ?>
     <? if ($this->account->isLoggedIn()): ?>
-      <li><a rel="external" href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Logout'), 'default', true)?>"><?=$this->transEsc("Log Out")?></a></li>
+      <li><a rel="external" href="<?=$this->url('myresearch-logout')?>"><?=$this->transEsc("Log Out")?></a></li>
     <? endif; ?>
   </ul>
 </div>
diff --git a/themes/vufind/jquerymobile/templates/header.phtml b/themes/vufind/jquerymobile/templates/header.phtml
index 97a24978b359b8fb37e50bad8e48c39602deb807..820b6f70d2c0c4658cd0a82357d3b04107e46a4a 100644
--- a/themes/vufind/jquerymobile/templates/header.phtml
+++ b/themes/vufind/jquerymobile/templates/header.phtml
@@ -12,7 +12,7 @@
       }
   ?>
   <? if ($this->searchLink): ?>
-    <a rel="external" href="<?=$this->url($this->searchLink, 'default', true)?>" data-icon="search"  class="ui-btn-right">
+    <a rel="external" href="<?=$this->url($this->searchLink)?>" data-icon="search"  class="ui-btn-right">
       <?=$this->transEsc('Search')?>
     </a>
   <? endif; ?>
diff --git a/themes/vufind/jquerymobile/templates/myresearch/editlist.phtml b/themes/vufind/jquerymobile/templates/myresearch/editlist.phtml
index 6c75490e99e599f5df3d25b8481850e703035c46..a7877d5032bbbce7e344ebd4ec375d91d4fde07d 100644
--- a/themes/vufind/jquerymobile/templates/myresearch/editlist.phtml
+++ b/themes/vufind/jquerymobile/templates/myresearch/editlist.phtml
@@ -2,12 +2,6 @@
     // Set up page title:
     $pageTitle = empty($this->list->id) ? 'Create a List' : "edit_list";
     $this->headTitle($this->translate($pageTitle));
-
-    // Set up breadcrumbs:
-    $this->layout()->breadcrumbs = '<a href="' .
-        $this->url(array('controller' => 'MyResearch', 'action' => 'Home'), 'default', true) .
-        '">' . $this->transEsc('Your Account') . '</a>' . '<span>&gt;</span><em>' .
-        $this->transEsc($pageTitle) . '</em>';
 ?>
 <div data-role="page" id="MyResearch-editlist">
   <?=$this->mobileMenu()->header()?>
@@ -34,7 +28,7 @@
             </div>
             <? if (!empty($this->list->id)): ?>
               <div class="ui-block-b">
-                <a data-role="button" data-theme="c" data-mini="true" href="<?=$this->url(array('action'=>'DeleteList', 'controller'=>'MyResearch'), 'default', true) ?>?listID=<?=urlencode($this->list->id)?>" id="deleteList<?=$this->list->id ?>" title="<?=$this->transEsc("delete_list")?>"><?=$this->transEsc("delete_list")?></a>
+                <a data-role="button" data-theme="c" data-mini="true" href="<?=$this->url('myresearch-deletelist') ?>?listID=<?=urlencode($this->list->id)?>" id="deleteList<?=$this->list->id ?>" title="<?=$this->transEsc("delete_list")?>"><?=$this->transEsc("delete_list")?></a>
               </div>
             <? endif; ?>
         </fieldset>
diff --git a/themes/vufind/jquerymobile/templates/myresearch/fines.phtml b/themes/vufind/jquerymobile/templates/myresearch/fines.phtml
index 7a05ee0a29f88b723b4667b66799f5e8d82866d5..76101edff4c7b6494ab5f9e207a79729725f1e73 100644
--- a/themes/vufind/jquerymobile/templates/myresearch/fines.phtml
+++ b/themes/vufind/jquerymobile/templates/myresearch/fines.phtml
@@ -13,7 +13,7 @@
         <? foreach ($this->fines as $record): ?>
           <li>
             <? if ($showLink = (!empty($record['title']) && isset($record['id']))): ?>
-              <a rel="external" href="<?=$this->url(array('id' => $record['id']), 'record', true)?>">
+              <a rel="external" href="<?=$this->url('record', array('id' => $record['id']))?>">
             <? endif; ?>
             <div class="result">
               <h3>
diff --git a/themes/vufind/jquerymobile/templates/myresearch/footer-navbar.phtml b/themes/vufind/jquerymobile/templates/myresearch/footer-navbar.phtml
index 28eabed4fafdf666283ef9b3203bdea0d215fb5a..0e1b7a80f1935eb5c3c1fc32eeea699cb652cf77 100644
--- a/themes/vufind/jquerymobile/templates/myresearch/footer-navbar.phtml
+++ b/themes/vufind/jquerymobile/templates/myresearch/footer-navbar.phtml
@@ -1,9 +1,9 @@
 <? if ($this->account->isLoggedIn()): ?>
   <div data-role="navbar">
     <ul>
-      <li><a rel="external" <?=$this->action=="mylist" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Favorites'), 'default', true)?>"><?=$this->transEsc('Favorites')?></a></li>
-      <li><a rel="external" <?=$this->action=="history" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url(array('controller' => 'Search', 'action' => 'History'), 'default', true)?>?require_login"><?=$this->transEsc('History')?></a></li>
-      <li><a rel="external" href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Logout'), 'default', true)?>"><?=$this->transEsc("Log Out")?></a></li>
+      <li><a rel="external" <?=$this->action=="mylist" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-favorites')?>"><?=$this->transEsc('Favorites')?></a></li>
+      <li><a rel="external" <?=$this->action=="history" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('search-history')?>?require_login"><?=$this->transEsc('History')?></a></li>
+      <li><a rel="external" href="<?=$this->url('myresearch-logout')?>"><?=$this->transEsc("Log Out")?></a></li>
     </ul>
   </div>
 <? else: ?>
diff --git a/themes/vufind/jquerymobile/templates/myresearch/header-navbar.phtml b/themes/vufind/jquerymobile/templates/myresearch/header-navbar.phtml
index 6566824b5085a28c0e166fe34eacec1769feb5c9..63edad2a5e74e2461b6e3f819743e4939076f0e2 100644
--- a/themes/vufind/jquerymobile/templates/myresearch/header-navbar.phtml
+++ b/themes/vufind/jquerymobile/templates/myresearch/header-navbar.phtml
@@ -1,9 +1,9 @@
 <? if (VF_Account_Manager::getInstance()->isLoggedIn()): ?>
   <div data-role="navbar">
     <ul>
-      <li><a rel="external" <?=$this->action=="checkedout" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'CheckedOut'), 'default', true)?>"><?=$this->transEsc('Checked Out')?></a></li>
-      <li><a rel="external" <?=$this->action=="holds" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Holds'), 'default', true)?>"><?=$this->transEsc('Holds')?></a></li>
-      <li><a rel="external" <?=$this->action=="fines" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Fines'), 'default', true)?>"><?=$this->transEsc('Fines')?></a></li>
+      <li><a rel="external" <?=$this->action=="checkedout" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-checkedout')?>"><?=$this->transEsc('Checked Out')?></a></li>
+      <li><a rel="external" <?=$this->action=="holds" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-holds')?>"><?=$this->transEsc('Holds')?></a></li>
+      <li><a rel="external" <?=$this->action=="fines" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-fines')?>"><?=$this->transEsc('Fines')?></a></li>
     </ul>
   </div>
 <? endif; ?>
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/myresearch/login.phtml b/themes/vufind/jquerymobile/templates/myresearch/login.phtml
index 39a4c3c23d71eba3daae82e320a6b73cc4774124..b4be6532380baf166de3abb962ea1fd61e558fb0 100644
--- a/themes/vufind/jquerymobile/templates/myresearch/login.phtml
+++ b/themes/vufind/jquerymobile/templates/myresearch/login.phtml
@@ -25,7 +25,7 @@
       <h3><?=$this->transEsc('Login')?></h3>
       <?=$this->flashmessages()?>
       <? if (!$this->account->getSessionInitiator()): // display default login form if no login URL provided ?>
-        <form method="post" action="<?=$this->url(array('controller' => 'MyResearch'), 'default', true)?>" name="loginForm" data-ajax="false">
+        <form method="post" action="<?=$this->url('myresearch-home')?>" name="loginForm" data-ajax="false">
           <div data-role="fieldcontain">
             <?=$this->auth()->getLoginFields()?>
           </div>
@@ -34,7 +34,7 @@
           </div>
         </form>
         <? if ($this->account->supportsCreation()): ?>
-          <a rel="external" data-role="button" class="new_account" href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'Account'), 'default')?>"><?=$this->transEsc('Create New Account')?></a>
+          <a rel="external" data-role="button" class="new_account" href="<?=$this->url('myresearch-account')?>"><?=$this->transEsc('Create New Account')?></a>
         <? endif; ?>
       <? else: ?>
         <a rel="external" data-role="button" href="<?=$this->escape($this->account->getSessionInitiator())?>"><?=$this->transEsc("Institutional Login")?></a>
diff --git a/themes/vufind/jquerymobile/templates/myresearch/mylist.phtml b/themes/vufind/jquerymobile/templates/myresearch/mylist.phtml
index 93280ccf75f9a9921ab5aabdfcc69ffd579e6b97..ec83236632006fb7625c10b783f1aeedbd869875 100644
--- a/themes/vufind/jquerymobile/templates/myresearch/mylist.phtml
+++ b/themes/vufind/jquerymobile/templates/myresearch/mylist.phtml
@@ -8,7 +8,7 @@
     // Set up extra button for header:
     $extraButton = isset($list)
         ? '<a rel="external" href="'
-            . $this->url(array('controller' => 'MyResearch', 'action' => 'EditList'), 'default', true)
+            . $this->url('myresearch-editlist')
             . '/'
             . $list->id
             . '" data-icon="gear" class="ui-btn-left">'
diff --git a/themes/vufind/jquerymobile/templates/record/save.phtml b/themes/vufind/jquerymobile/templates/record/save.phtml
index f5d82a2bd0f04d6258649648b4aa362791775896..716b9afad9125c7795a02edbcca29d3d5cb16a32 100644
--- a/themes/vufind/jquerymobile/templates/record/save.phtml
+++ b/themes/vufind/jquerymobile/templates/record/save.phtml
@@ -14,7 +14,7 @@
         <ul data-role="listview" data-dividertheme="e" data-inset="true">
           <li data-role="list-divider"><?=$this->transEsc('This item is already part of the following list/lists') ?>:</li>
           <? foreach ($this->containingLists as $list): ?>
-            <li><a rel="external" href="<?=$this->url(array('id' => $list['id']), 'userList') ?>"><?=$this->escape($list['title'])?></a></li>
+            <li><a rel="external" href="<?=$this->url('userList', array('id' => $list['id'])) ?>"><?=$this->escape($list['title'])?></a></li>
           <? endforeach; ?>
         </ul>
       <? endif; ?>
@@ -37,7 +37,7 @@
           </select>
         <? endif; ?>
 
-        <a rel="external" data-role="button" data-rel="dialog" href="<?=$this->url(array('id' => 'NEW'), 'editList', true) ?>?recordId=<?=urlencode($this->driver->getUniqueId())?>&amp;recordController=<?=urlencode($this->record($this->driver)->getController())?>" class="listEdit controller<?=$this->record($this->driver)->getController()?>" title="<?=$this->transEsc('Create a List') ?>"><? if ($showLists) echo $this->transEsc('or create a new list'); else echo $this->transEsc('Create a List'); ?></a>
+        <a rel="external" data-role="button" data-rel="dialog" href="<?=$this->url('editList', array('id' => 'NEW')) ?>?recordId=<?=urlencode($this->driver->getUniqueId())?>&amp;recordController=<?=urlencode($this->record($this->driver)->getController())?>" class="listEdit controller<?=$this->record($this->driver)->getController()?>" title="<?=$this->transEsc('Create a List') ?>"><? if ($showLists) echo $this->transEsc('or create a new list'); else echo $this->transEsc('Create a List'); ?></a>
 
         <? if ($showLists): ?>
           <label class="displayBlock" for="add_mytags"><?=$this->transEsc('Add Tags') ?></label>
diff --git a/themes/vufind/jquerymobile/templates/search/advanced.phtml b/themes/vufind/jquerymobile/templates/search/advanced.phtml
index ce048ae6eb6860c60b242443a43243bf609ad412..120649050683ecb27baa60da26edbf87e4e1f5d8 100644
--- a/themes/vufind/jquerymobile/templates/search/advanced.phtml
+++ b/themes/vufind/jquerymobile/templates/search/advanced.phtml
@@ -27,7 +27,7 @@
       </div>
     <? endif; ?>
     <!-- SEARCH BOXES -->
-    <form method="get" action="<?=$this->url($basicSearch, 'default', true)?>" data-ajax="false">
+    <form method="get" action="<?=$this->url($basicSearch)?>" data-ajax="false">
       <fieldset class="ui-grid-a">
       <? for ($i = 0; $i < 3; $i++): ?>
         <div class="ui-block-a">
diff --git a/themes/vufind/jquerymobile/templates/search/header-navbar.phtml b/themes/vufind/jquerymobile/templates/search/header-navbar.phtml
index 20d00202c2a18afc51c3bca55f0ab6230aaf08cc..4a181480510cf14e6de900f7e7d017a41c81ceff 100644
--- a/themes/vufind/jquerymobile/templates/search/header-navbar.phtml
+++ b/themes/vufind/jquerymobile/templates/search/header-navbar.phtml
@@ -7,9 +7,9 @@
       <li>
         <? if (isset($this->results) && is_numeric($this->results->getSearchId())): ?>
           <? if ($this->results->isSavedSearch()): ?>
-            <a rel="external" href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'SaveSearch'), 'default')?>?delete=<?=urlencode($this->results->getSearchId())?>"><?=$this->transEsc('save_search_remove')?></a>
+            <a rel="external" href="<?=$this->url('myresearch-savesearch')?>?delete=<?=urlencode($this->results->getSearchId())?>"><?=$this->transEsc('save_search_remove')?></a>
           <? else: ?>
-            <a rel="external" href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'SaveSearch'), 'default')?>?save=<?=urlencode($this->results->getSearchId())?>"><?=$this->transEsc('save_search')?></a>
+            <a rel="external" href="<?=$this->url('myresearch-savesearch')?>?save=<?=urlencode($this->results->getSearchId())?>"><?=$this->transEsc('save_search')?></a>
           <? endif; ?>
         <? endif; ?>
       </li>
diff --git a/themes/vufind/jquerymobile/templates/search/history-table.phtml b/themes/vufind/jquerymobile/templates/search/history-table.phtml
index f2a83ec493104720ab2935d9540e600d5fbd0b9c..0354bef5034291a916e4b36c84708698eba9c061 100644
--- a/themes/vufind/jquerymobile/templates/search/history-table.phtml
+++ b/themes/vufind/jquerymobile/templates/search/history-table.phtml
@@ -1,6 +1,6 @@
 <? foreach (($this->showSaved ? array_reverse($this->saved) : array_reverse($this->unsaved)) as $iteration => $info): ?>
   <li>
-    <a rel="external" href="<?=$this->url($info->getSearchAction(), 'default', true) . $info->getUrl()->getParams()?>">
+    <a rel="external" href="<?=$this->url($info->getSearchAction()) . $info->getUrl()->getParams()?>">
     <div class="result">
     <h3><?
       $desc = $info->getDisplayQuery();
@@ -16,9 +16,9 @@
     </div>
     </a>
     <? if ($this->showSaved): ?>
-      <a rel="external" href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'SaveSearch'), 'default')?>?delete=<?=urlencode($info->getSearchId())?>&amp;mode=history" class="delete"><?=$this->transEsc("history_delete_link")?></a>
+      <a rel="external" href="<?=$this->url('myresearch-savesearch')?>?delete=<?=urlencode($info->getSearchId())?>&amp;mode=history" class="delete"><?=$this->transEsc("history_delete_link")?></a>
     <? else: ?>
-      <a rel="external" href="<?=$this->url(array('controller' => 'MyResearch', 'action' => 'SaveSearch'), 'default')?>?save=<?=urlencode($info->getSearchId())?>&amp;mode=history" class="add"><?=$this->transEsc("history_save_link")?></a>
+      <a rel="external" href="<?=$this->url('myresearch-savesearch')?>?save=<?=urlencode($info->getSearchId())?>&amp;mode=history" class="add"><?=$this->transEsc("history_save_link")?></a>
     <? endif; ?>
   </li>
 <? endforeach; ?>
\ No newline at end of file
diff --git a/themes/vufind/jquerymobile/templates/search/home.phtml b/themes/vufind/jquerymobile/templates/search/home.phtml
index 46a26c505d032198fd9b923f38c113d50795f2c7..d09ddac60aa19f47b174197e120560e7f8f0a46b 100644
--- a/themes/vufind/jquerymobile/templates/search/home.phtml
+++ b/themes/vufind/jquerymobile/templates/search/home.phtml
@@ -20,11 +20,11 @@
     <? else: ?>
       <ul data-role="listview" data-inset="true" data-dividertheme="b">
         <li data-role="list-divider"><?=$this->transEsc('Find More')?></li>
-        <li><a data-ajax="false" href="<?=$this->url(array('controller' => 'Search', 'action' => 'advanced'), 'default', true)?>"><?=$this->transEsc('Advanced Search')?></a></li>
-        <li><a data-ajax="false" href="<?=$this->url(array('controller' => 'Browse'), 'default', true)?>"><?=$this->transEsc('Browse the Catalog')?></a></li>
-        <li><a data-ajax="false" href="<?=$this->url(array('controller' => 'AlphaBrowse'), 'default', true)?>"><?=$this->transEsc('Browse Alphabetically')?></a></li>
-        <li><a data-ajax="false" href="<?=$this->url(array('controller' => 'Search', 'action' => 'Reserves'), 'default', true)?>"><?=$this->transEsc('Course Reserves')?></a></li>
-        <li><a data-ajax="false" href="<?=$this->url(array('controller' => 'Search', 'action' => 'NewItem'), 'default', true)?>"><?=$this->transEsc('New Items')?></a></li>
+        <li><a data-ajax="false" href="<?=$this->url('search-advanced')?>"><?=$this->transEsc('Advanced Search')?></a></li>
+        <li><a data-ajax="false" href="<?=$this->url('browse-home')?>"><?=$this->transEsc('Browse the Catalog')?></a></li>
+        <li><a data-ajax="false" href="<?=$this->url('alphabrowse-home')?>"><?=$this->transEsc('Browse Alphabetically')?></a></li>
+        <li><a data-ajax="false" href="<?=$this->url('search-reserves')?>"><?=$this->transEsc('Course Reserves')?></a></li>
+        <li><a data-ajax="false" href="<?=$this->url('search-newitem')?>"><?=$this->transEsc('New Items')?></a></li>
       </ul>
     <? endif; ?>
   </div>
diff --git a/themes/vufind/jquerymobile/templates/search/list-authorfacets.phtml b/themes/vufind/jquerymobile/templates/search/list-authorfacets.phtml
index 32ceba55135ca4db6969a6808569126016b3f65e..325a8a87d150e51fca3092353538c3ab0f0edf4a 100644
--- a/themes/vufind/jquerymobile/templates/search/list-authorfacets.phtml
+++ b/themes/vufind/jquerymobile/templates/search/list-authorfacets.phtml
@@ -1,7 +1,7 @@
 <ul class="results" data-role="listview" data-split-icon="plus" data-split-theme="c">
   <? foreach ($this->results->getResults() as $record): ?>
     <li>
-      <a rel="external" href="<?=$this->url(array('controller' => 'Author', 'action' => 'Home'), 'default', true)?>?author=<?=urlencode($record['value'])?>">
+      <a rel="external" href="<?=$this->url('author-home')?>?author=<?=urlencode($record['value'])?>">
         <div class="result">
           <h3><?=$this->escape($record['value'])?></h3>
           
diff --git a/themes/vufind/jquerymobile/templates/search/results.phtml b/themes/vufind/jquerymobile/templates/search/results.phtml
index d65b4f089c472fbde6f3e3d9cf491b1ac02c3da5..f0b07c858811cf4408fcdbf22ae8096835f57504 100644
--- a/themes/vufind/jquerymobile/templates/search/results.phtml
+++ b/themes/vufind/jquerymobile/templates/search/results.phtml
@@ -51,7 +51,7 @@
       <?=$this->render('search/list-' . $this->results->getView() . '.phtml')?>
       <?=$this->paginationControl($this->results->getPaginator(), 'Sliding', 'search/pagination.phtml', array('results' => $this->results))?>
       <div data-role="controlgroup">
-        <a href="<?=$this->url(array('controller' => 'Search', 'action' => 'Email'), 'default')?>" data-role="button" rel="external"><?=$this->transEsc("Email this Search")?></a>
+        <a href="<?=$this->url('search-email')?>" data-role="button" rel="external"><?=$this->transEsc("Email this Search")?></a>
       </div>
     <? endif; ?>
   </div>
diff --git a/themes/vufind/jquerymobile/templates/search/searchbox.phtml b/themes/vufind/jquerymobile/templates/search/searchbox.phtml
index 9c9fa20402dfbf3e8b2b7837153704e4d48d87cf..1031d9e89782c4f7e2995f3e63308f55d8c77c54 100644
--- a/themes/vufind/jquerymobile/templates/search/searchbox.phtml
+++ b/themes/vufind/jquerymobile/templates/search/searchbox.phtml
@@ -13,7 +13,7 @@
   $lastSort = $options->getLastSort();
   $lastLimit = $options->getLastLimit();
 ?>
-<form method="get" action="<?=$this->url($basicSearch, 'default', true)?>" data-ajax="false">
+<form method="get" action="<?=$this->url($basicSearch)?>" data-ajax="false">
   <label class="offscreen" for="searchForm_lookfor">
     <?=$this->transEsc("Search")?>
   </label>
diff --git a/themes/vufind/root/templates/error/index.phtml b/themes/vufind/root/templates/error/index.phtml
index 67428a78dd614645326ffea6df44cbc64c216e33..b1160987c37a06e3f0350134ae13fd5bf5ea3a8a 100644
--- a/themes/vufind/root/templates/error/index.phtml
+++ b/themes/vufind/root/templates/error/index.phtml
@@ -2,9 +2,9 @@
 <h2><?=$this->transEsc($this->message)?></h2>
 
 <? if ($this->showInstallLink): ?>
-  <h3><a href="<?=$this->url(array('controller' => 'Install'), 'default', true)?>"><?=$this->transEsc('auto_configure_title', array(), 'Auto Configure')?></a></h3>
+  <h3><a href="<?=$this->url('install-home')?>"><?=$this->transEsc('auto_configure_title', array(), 'Auto Configure')?></a></h3>
   <?=$this->transEsc('auto_configure_description', array(), 'If this is a new installation, you may be able to fix the error using VuFind\'s Auto Configure tool.')?>
-  <h3><a href="<?=$this->url(array('controller' => 'Upgrade'), 'default', true)?>"><?=$this->transEsc('Upgrade VuFind')?></a></h3>
+  <h3><a href="<?=$this->url('upgrade-home')?>"><?=$this->transEsc('Upgrade VuFind')?></a></h3>
   <?=$this->transEsc('upgrade_description', array(), 'If you are upgrading a previous VuFind version, you can load your old settings with this tool.')?>
 <? endif; ?>
 
diff --git a/themes/vufind/root/templates/search/opensearch-describe.phtml b/themes/vufind/root/templates/search/opensearch-describe.phtml
index 87c894ee155d485ba5966ba5da7c8a2b89a6a0bc..2681b6d93a4137bf071c13b4c578a0e88aab9c7f 100644
--- a/themes/vufind/root/templates/search/opensearch-describe.phtml
+++ b/themes/vufind/root/templates/search/opensearch-describe.phtml
@@ -1,5 +1,5 @@
-<? $searchBase = $this->fullUrl($this->url(array('controller'=>'Search','action'=>'Results'), 'default', true)); ?>
-<? $suggestions = $this->fullUrl($this->url(array('controller'=>'Search','action'=>'Suggest'), 'default', true)); ?>
+<? $searchBase = $this->fullUrl($this->url('search-results')); ?>
+<? $suggestions = $this->fullUrl($this->url('search-suggest')); ?>
 <?='<'?>?xml version="1.0"?<?='>'?>
 <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
   <ShortName><?=$this->escape($this->site->title)?></ShortName>