diff --git a/module/VuFind/config/module.config.php b/module/VuFind/config/module.config.php
index 21bc531770ab1cd88c3f6278fad8f208957cc7e6..e9aa7eba06b73805012a38f62672225d899e3a78 100644
--- a/module/VuFind/config/module.config.php
+++ b/module/VuFind/config/module.config.php
@@ -450,6 +450,7 @@ $config = array(
             'VuFind\CacheManager' => 'VuFind\Cache\Manager',
             'VuFind\Mailer' => 'VuFind\Mailer',
             'VuFind\RecordLoader' => 'VuFind\Record\Loader',
+            'VuFind\RecordRouter' => 'VuFind\Record\Router',
             'VuFind\SearchSpecsReader' => 'VuFind\Config\SearchSpecsReader',
             'VuFind\SessionManager' => 'Zend\Session\SessionManager',
             'VuFind\WorldCatConnection' => 'VuFind\Connection\WorldCat',
diff --git a/module/VuFind/src/VuFind/Controller/AbstractBase.php b/module/VuFind/src/VuFind/Controller/AbstractBase.php
index f39cd369a12b93c376296e7e788895f75b13274e..601308f226f16abbff0d4aaf5885c0c88aeb363f 100644
--- a/module/VuFind/src/VuFind/Controller/AbstractBase.php
+++ b/module/VuFind/src/VuFind/Controller/AbstractBase.php
@@ -209,6 +209,16 @@ class AbstractBase extends AbstractActionController
         return $this->getServiceLocator()->get('VuFind\RecordLoader');
     }
 
+    /**
+     * Get the record router.
+     *
+     * @return \VuFind\Record\Router
+     */
+    public function getRecordRouter()
+    {
+        return $this->getServiceLocator()->get('VuFind\RecordRouter');
+    }
+
     /**
      * Get the search manager.
      *
diff --git a/module/VuFind/src/VuFind/Controller/AbstractRecord.php b/module/VuFind/src/VuFind/Controller/AbstractRecord.php
index ba55d3a7a7a1082b8ba7ab8e956de22e0652499d..7b0d67017134785945f98d3886b0d486569cba46 100644
--- a/module/VuFind/src/VuFind/Controller/AbstractRecord.php
+++ b/module/VuFind/src/VuFind/Controller/AbstractRecord.php
@@ -27,7 +27,6 @@
  */
 namespace VuFind\Controller;
 use VuFind\Exception\Mail as MailException, VuFind\Export,
-    VuFind\Record\Router as RecordRouter,
     Zend\Session\Container as SessionContainer;
 
 /**
@@ -529,7 +528,8 @@ class AbstractRecord extends AbstractBase
      */
     protected function redirectToRecord($params = '', $tab = null)
     {
-        $details = RecordRouter::getTabRouteDetails($this->loadRecord(), $tab);
+        $details = $this->getRecordRouter()
+            ->getTabRouteDetails($this->loadRecord(), $tab);
         $target = $this->url()->fromRoute($details['route'], $details['params']);
         return $this->redirect()->toUrl($target . $params);
     }
diff --git a/module/VuFind/src/VuFind/Controller/AbstractSearch.php b/module/VuFind/src/VuFind/Controller/AbstractSearch.php
index 0fc54cb31cf7b3b79f8f69bcc9bc0cedbad2d98c..56bf8971da12ccf3251b8b88e56c94eab65c2f39 100644
--- a/module/VuFind/src/VuFind/Controller/AbstractSearch.php
+++ b/module/VuFind/src/VuFind/Controller/AbstractSearch.php
@@ -26,8 +26,7 @@
  * @link     http://www.vufind.org  Main Page
  */
 namespace VuFind\Controller;
-use VuFind\Record\Router as RecordRouter, VuFind\Search\Memory,
-    Zend\Stdlib\Parameters;
+use VuFind\Search\Memory, Zend\Stdlib\Parameters;
 
 /**
  * VuFind Search Controller
@@ -267,7 +266,8 @@ class AbstractSearch extends AbstractBase
 
         // If we got this far, we have a valid parameter so we should redirect
         // and report success:
-        $details = RecordRouter::getTabRouteDetails($recordList[$jumpto - 1]);
+        $details = $this->getRecordRouter()
+            ->getTabRouteDetails($recordList[$jumpto - 1]);
         return $this->redirect()->toRoute($details['route'], $details['params']);
     }
 
diff --git a/module/VuFind/src/VuFind/Controller/MyResearchController.php b/module/VuFind/src/VuFind/Controller/MyResearchController.php
index cfa1b1029d9922b73711292313b5f7eac2944b42..d71271339eabf7514f084bd15aefdf0ed5a5f380 100644
--- a/module/VuFind/src/VuFind/Controller/MyResearchController.php
+++ b/module/VuFind/src/VuFind/Controller/MyResearchController.php
@@ -31,7 +31,7 @@ use VuFind\Config\Reader as ConfigReader,
     VuFind\Exception\Auth as AuthException,
     VuFind\Exception\ListPermission as ListPermissionException,
     VuFind\Exception\RecordMissing as RecordMissingException,
-    VuFind\Record\Router as RecordRouter, Zend\Stdlib\Parameters;
+    Zend\Stdlib\Parameters;
 
 /**
  * Controller for the user account area.
@@ -586,7 +586,7 @@ class MyResearchController extends AbstractBase
             $recordId = $this->params()->fromQuery('recordId');
             $recordSource = $this->params()->fromQuery('recordSource', 'VuFind');
             if (!empty($recordId)) {
-                $details = RecordRouter::getActionRouteDetails(
+                $details = $this->getRecordRouter()->getActionRouteDetails(
                     $recordSource . '|' . $recordId, 'Save'
                 );
                 return $this->redirect()
diff --git a/module/VuFind/src/VuFind/Controller/RecordsController.php b/module/VuFind/src/VuFind/Controller/RecordsController.php
index 41dee21e40ff2684985092a3b04a36c2a1442057..ac56e47aba7fe9426b71c5ac52b096e73efd454b 100644
--- a/module/VuFind/src/VuFind/Controller/RecordsController.php
+++ b/module/VuFind/src/VuFind/Controller/RecordsController.php
@@ -26,7 +26,6 @@
  * @link     http://vufind.org   Main Site
  */
 namespace VuFind\Controller;
-use VuFind\Record\Router as RecordRouter;
 
 /**
  * Records Controller
@@ -59,7 +58,7 @@ class RecordsController extends AbstractSearch
         // If there is exactly one record, send the user directly there:
         $ids = $this->params()->fromQuery('id', array());
         if (count($ids) == 1) {
-            $details = RecordRouter::getTabRouteDetails($ids[0]);
+            $details = $this->getRecordRouter()->getTabRouteDetails($ids[0]);
             $target = $this->url()->fromRoute($details['route'], $details['params']);
             // forward print param, if necessary:
             $print = $this->params()->fromQuery('print');
diff --git a/module/VuFind/src/VuFind/Record/Router.php b/module/VuFind/src/VuFind/Record/Router.php
index 1d7d5e76dd54e72bf2a33e43c3d666e1402db4c9..eb5cafa4cccd3c065c73afb37586478269ed9c2f 100644
--- a/module/VuFind/src/VuFind/Record/Router.php
+++ b/module/VuFind/src/VuFind/Record/Router.php
@@ -47,9 +47,9 @@ class Router
      *
      * @return array
      */
-    public static function getActionRouteDetails($driver, $action)
+    public function getActionRouteDetails($driver, $action)
     {
-        return static::getRouteDetails($driver, '-' . strtolower($action));
+        return $this->getRouteDetails($driver, '-' . strtolower($action));
     }
 
     /**
@@ -61,9 +61,9 @@ class Router
      *
      * @return array
      */
-    public static function getTabRouteDetails($driver, $tab = null)
+    public function getTabRouteDetails($driver, $tab = null)
     {
-        $route = static::getRouteDetails(
+        $route = $this->getRouteDetails(
             $driver, '', empty($tab) ? array() : array('tab' => $tab)
         );
 
@@ -98,7 +98,7 @@ class Router
      *
      * @return array
      */
-    public static function getRouteDetails($driver, $routeSuffix,
+    public function getRouteDetails($driver, $routeSuffix,
         $extraParams = array()
     ) {
         // Extract source and ID from driver or string:
diff --git a/module/VuFind/src/VuFind/Theme/Root/Helper/RecordLink.php b/module/VuFind/src/VuFind/Theme/Root/Helper/RecordLink.php
index 5da6905dfe001d38e2d29ff2ccb0e476d581997f..05f3d748b2177162ffda74d6ccc781231e27dd5c 100644
--- a/module/VuFind/src/VuFind/Theme/Root/Helper/RecordLink.php
+++ b/module/VuFind/src/VuFind/Theme/Root/Helper/RecordLink.php
@@ -26,7 +26,7 @@
  * @link     http://vufind.org/wiki/building_a_recommendations_module Wiki
  */
 namespace VuFind\Theme\Root\Helper;
-use VuFind\Record\Router as RecordRouter, Zend\View\Helper\AbstractHelper;
+use Zend\View\Helper\AbstractHelper;
 
 /**
  * Record link view helper
@@ -37,8 +37,18 @@ use VuFind\Record\Router as RecordRouter, Zend\View\Helper\AbstractHelper;
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://vufind.org/wiki/building_a_recommendations_module Wiki
  */
-class RecordLink extends AbstractHelper
+class RecordLink extends AbstractServiceLocator
 {
+    /**
+     * Get the record router.
+     *
+     * @return \VuFind\Record\Router
+     */
+    protected function getRecordRouter()
+    {
+        return $this->getServiceLocator()->get('VuFind\RecordRouter');
+    }
+
     /**
      * Given an array representing a related record (which may be a bib ID or OCLC
      * number), this helper renders a URL linking to that record.
@@ -100,7 +110,7 @@ class RecordLink extends AbstractHelper
     {
         // Build the URL:
         $urlHelper = $this->getView()->plugin('url');
-        $details = RecordRouter::getActionRouteDetails($driver, $action);
+        $details = $this->getRecordRouter()->getActionRouteDetails($driver, $action);
         return $urlHelper($details['route'], $details['params']);
     }
 
@@ -152,7 +162,7 @@ class RecordLink extends AbstractHelper
     {
         // Build the URL:
         $urlHelper = $this->getView()->plugin('url');
-        $details = RecordRouter::getTabRouteDetails($driver, $tab);
+        $details = $this->getRecordRouter()->getTabRouteDetails($driver, $tab);
         return $urlHelper($details['route'], $details['params']);
     }