diff --git a/config/application.config.php b/config/application.config.php
index 183a9ebc3330eec5c9aa58ab531a85d6bfde3811..03ad5f13e447b85383c761c30c0a8af04919ea2f 100644
--- a/config/application.config.php
+++ b/config/application.config.php
@@ -21,6 +21,6 @@ $config = array(
     ),
 );
 if (PHP_SAPI == 'cli' && !defined('VUFIND_PHPUNIT_RUNNING')) {
-    $config['modules'][] = 'VuFind\\CLI';
+    $config['modules'][] = 'VuFindConsole';
 }
 return $config;
\ No newline at end of file
diff --git a/module/VuFind/CLI/config/module.config.php b/module/VuFind/CLI/config/module.config.php
deleted file mode 100644
index acbcbe2c41c2e540021ae922d715413d7d69ee3a..0000000000000000000000000000000000000000
--- a/module/VuFind/CLI/config/module.config.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-namespace VuFind\CLI\Module\Configuration;
-
-$config = array(
-    'controllers' => array(
-        'invokables' => array(
-            'harvest' => 'VuFind\CLI\Controller\HarvestController',
-            'import' => 'VuFind\CLI\Controller\ImportController',
-            'util' => 'VuFind\CLI\Controller\UtilController',
-        ),
-    ),
-);
-
-return $config;
\ No newline at end of file
diff --git a/module/VuFind/config/module.config.php b/module/VuFind/config/module.config.php
index e440fd3d6c0d0433e97cf3d1bc9268f29e1b7e90..a0697ab75bebd0122fa991df51ac02b7a67ed981 100644
--- a/module/VuFind/config/module.config.php
+++ b/module/VuFind/config/module.config.php
@@ -100,6 +100,13 @@ $config = array(
             'result-scroller' => 'VuFind\Controller\Plugin\ResultScroller',
         )
     ),
+    'service_manager' => array(
+        'invokables' => array(
+            'authmanager' => 'VuFind\Auth\Manager',
+            'cart' => 'VuFind\Cart',
+            'sessionmanager' => 'Zend\Session\SessionManager',
+        )
+    ),
     'translator' => array(),
     'view_manager' => array(
         'display_not_found_reason' => APPLICATION_ENV == 'development',
diff --git a/module/VuFind/src/VuFind/Bootstrap.php b/module/VuFind/src/VuFind/Bootstrap.php
index e0bc7b16b1033ef1545b6bfefb0c85cc369d080c..ddc785c468a4306be83002a1159cb77c0df702d2 100644
--- a/module/VuFind/src/VuFind/Bootstrap.php
+++ b/module/VuFind/src/VuFind/Bootstrap.php
@@ -26,13 +26,12 @@
  * @link     http://vufind.org   Main Site
  */
 namespace VuFind;
-use VuFind\Auth\Manager as AuthManager, VuFind\Config\Reader as ConfigReader,
+use VuFind\Config\Reader as ConfigReader,
     VuFind\Db\AdapterFactory as DbAdapterFactory, VuFind\Logger,
     VuFind\Theme\Initializer as ThemeInitializer,
     VuFind\Translator\Translator, Zend\Console\Console,
     Zend\Db\TableGateway\Feature\GlobalAdapterFeature as DbGlobalAdapter,
-    Zend\Mvc\MvcEvent, Zend\Mvc\Router\Http\RouteMatch,
-    Zend\Session\SessionManager;
+    Zend\Mvc\MvcEvent, Zend\Mvc\Router\Http\RouteMatch;
 
 /**
  * VuFind Bootstrapper
@@ -107,9 +106,8 @@ class Bootstrap
         }
 
         // Register a session manager in the service manager:
-        $sessionManager = new SessionManager();
         $serviceManager = $this->event->getApplication()->getServiceManager();
-        $serviceManager->setService('SessionManager', $sessionManager);
+        $sessionManager = $serviceManager->get('SessionManager');
 
         // Set up session handler (after manipulating the type setting for legacy
         // compatibility -- VuFind 1.x used MySQL instead of Database and had
@@ -178,17 +176,11 @@ class Bootstrap
      */
     protected function initAccount()
     {
-        $authManager = new AuthManager();
-
-        // Register in service manager:
+        // Retrieve from service manager:
         $serviceManager = $this->event->getApplication()->getServiceManager();
-        $serviceManager->setService('AuthManager', $authManager);
-
-        // ...and register service manager in AuthManager (for access to other
-        // services, such as the session manager):
-        $authManager->setServiceLocator($serviceManager);
+        $authManager = $serviceManager->get('AuthManager');
 
-        // Now that we're all set up, make sure credentials haven't expired:
+        // Make sure credentials haven't expired:
         $authManager->checkForExpiredCredentials();
 
         // Register in view:
diff --git a/module/VuFind/src/VuFind/Cart.php b/module/VuFind/src/VuFind/Cart.php
index 262427d96bbefd41c49d2f44bb39737f7aa5a6b4..73b2d5107deda8a264c2e4737918e63c8c0dcc96 100644
--- a/module/VuFind/src/VuFind/Cart.php
+++ b/module/VuFind/src/VuFind/Cart.php
@@ -42,7 +42,6 @@ use VuFind\Record;
  */
 class Cart
 {
-    protected static $singleton;
     protected $items;
     protected $maxSize = 100;
     protected $active = false;
@@ -52,9 +51,9 @@ class Cart
     const CART_COOKIE_DELIM = "\t";
 
     /**
-     * Protected constructor to ensure singleton pattern.
+     * Constructor
      */
-    protected function __construct()
+    public function __construct()
     {
         $config = ConfigReader::getConfig();
         if (isset($config->Site->showBookBag)) {
@@ -69,20 +68,6 @@ class Cart
         $this->init();
     }
 
-    /**
-     * Get the current instance of the user's cart, if
-     * it is not initialized, then one will be initialized.
-     *
-     * @return Cart_Model
-     */
-    static function getInstance()
-    {
-        if (!self::$singleton) {
-            self::$singleton = new Cart();
-        }
-        return self::$singleton;
-    }
-
     /**
      * Return the contents of the cart.
      *
diff --git a/module/VuFind/src/VuFind/Controller/AjaxController.php b/module/VuFind/src/VuFind/Controller/AjaxController.php
index 0f8eb54df100362574cb6d186786dba14e7970a4..62ed914957f3ec42f9e36e0c85dbb8613a4d9582 100644
--- a/module/VuFind/src/VuFind/Controller/AjaxController.php
+++ b/module/VuFind/src/VuFind/Controller/AjaxController.php
@@ -26,7 +26,7 @@
  * @link     http://vufind.org/wiki/building_a_recommendations_module Wiki
  */
 namespace VuFind\Controller;
-use VuFind\Cart, VuFind\Config\Reader as ConfigReader,
+use VuFind\Config\Reader as ConfigReader,
     VuFind\Connection\Manager as ConnectionManager,
     VuFind\Db\Table\Comments as CommentsTable,
     VuFind\Db\Table\Resource as ResourceTable, VuFind\Db\Table\Tags as TagsTable,
@@ -1168,14 +1168,14 @@ class AjaxController extends AbstractBase
     protected function removeItemsCart()
     {
         // Without IDs, we can't continue
-        $ids = $this->params()->fromQuery('ids');
+        $ids = $this->params()->fromPost('ids');
         if (empty($ids)) {
             return $this->output(
                 array('result'=>Translator::translate('bulk_error_missing')),
                 self::STATUS_ERROR
             );
         }
-        Cart::getInstance()->removeItems($ids);
+        $this->getServiceLocator()->get('Cart')->removeItems($ids);
         return $this->output(array('delete' => true), self::STATUS_OK);
     }
 
diff --git a/module/VuFind/src/VuFind/Controller/CartController.php b/module/VuFind/src/VuFind/Controller/CartController.php
index b0715df6d94aca157b76c2a57bc2a99ba17fc998..8f3280ff842fec901c8370712a7e11f20b2a263d 100644
--- a/module/VuFind/src/VuFind/Controller/CartController.php
+++ b/module/VuFind/src/VuFind/Controller/CartController.php
@@ -26,7 +26,7 @@
  * @link     http://vufind.org   Main Site
  */
 namespace VuFind\Controller;
-use VuFind\Cart, VuFind\Exception\Mail as MailException, VuFind\Export,
+use VuFind\Exception\Mail as MailException, VuFind\Export,
     VuFind\Mailer, VuFind\Record, VuFind\Translator\Translator,
     Zend\Session\Container as SessionContainer;
 
@@ -53,6 +53,16 @@ class CartController extends AbstractBase
         $this->session = new SessionContainer('cart_followup');
     }
 
+    /**
+     * Get the cart object.
+     *
+     * @return \VuFind\Cart
+     */
+    protected function getCart()
+    {
+        return $this->getServiceLocator()->get('Cart');
+    }
+
     /**
      * Process requests for main cart.
      *
@@ -92,18 +102,18 @@ class CartController extends AbstractBase
 
         // Add items if necessary:
         if (strlen($this->params()->fromPost('empty', '')) > 0) {
-            Cart::getInstance()->emptyCart();
+            $this->getCart()->emptyCart();
         } else if (strlen($this->params()->fromPost('delete', '')) > 0) {
             if (empty($ids)) {
                 return $this->redirectToSource('error', 'bulk_noitems_advice');
             } else {
-                Cart::getInstance()->removeItems($ids);
+                $this->getCart()->removeItems($ids);
             }
         } else if (strlen($this->params()->fromPost('add', '')) > 0) {
             if (empty($ids)) {
                 return $this->redirectToSource('error', 'bulk_noitems_advice');
             } else {
-                $addItems = Cart::getInstance()->addItems($ids);
+                $addItems = $this->getCart()->addItems($ids);
                 if (!$addItems['success']) {
                     $msg = Translator::translate('bookbag_full_msg') . ". "
                         . $addItems['notAdded'] . " "
diff --git a/module/VuFind/src/VuFind/Db/Table/UserStatsFields.php b/module/VuFind/src/VuFind/Db/Table/UserStatsFields.php
index ade5407dc2d9d763794528d82d193c0e2183f192..c3412c51cd0083b7f001055bf36022c971c89aa8 100644
--- a/module/VuFind/src/VuFind/Db/Table/UserStatsFields.php
+++ b/module/VuFind/src/VuFind/Db/Table/UserStatsFields.php
@@ -106,7 +106,7 @@ class UserStatsFields extends Gateway
                     array($fields[$i] => 'field'.$i.'.value')
                 );
             }
-             foreach ($values as $key=>$value) {
+            foreach ($values as $key=>$value) {
                 $select->where->equalTo($key, $value);
             }
         };
diff --git a/module/VuFind/src/VuFind/Statistics/AbstractBase.php b/module/VuFind/src/VuFind/Statistics/AbstractBase.php
index b23c1a45c416d58a50d45a41b43be14f61eac956..9bdd41f5466b32141b3e94383e236f31f94369e4 100644
--- a/module/VuFind/src/VuFind/Statistics/AbstractBase.php
+++ b/module/VuFind/src/VuFind/Statistics/AbstractBase.php
@@ -55,12 +55,25 @@ abstract class AbstractBase implements ServiceLocatorAwareInterface
         $this->drivers = self::getDriversForSource($source);
     }
     
-    // Set it
-    public function setServiceLocator(ServiceLocatorInterface $serviceLocator) {
+    /**
+     * Set the service locator.
+     *
+     * @param ServiceLocatorInterface $serviceLocator Locator to register
+     *
+     * @return Manager
+     */
+    public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
+    {
         $this->serviceLocator = $serviceLocator;
     }
-    // Get it
-    public function getServiceLocator() {
+
+    /**
+     * Get the service locator.
+     *
+     * @return \Zend\ServiceManager\ServiceLocatorInterface
+     */
+    public function getServiceLocator()
+    {
         return $this->serviceLocator;
     }
 
@@ -156,19 +169,21 @@ abstract class AbstractBase implements ServiceLocatorAwareInterface
      */
     protected function getUserData($request)
     {
-        $agent = $request->getServer()->get('HTTP_USER_AGENT');
+        $server = $request->getServer();
+        $agent = $server->get('HTTP_USER_AGENT');
         list($browser, $version) = explode(' ', static::getBrowser($agent));
         return array(
             'id'               => uniqid('', true),
             'datestamp'        => substr(date('c', strtotime('now')), 0, -6) . 'Z',
             'browser'          => $browser,
             'browserVersion'   => $version,
-            'ipaddress'        => $request->getServer()->get('REMOTE_ADDR'),
-            'referrer'         => ($request->getServer()->get('HTTP_REFERER') == null)
+            'ipaddress'        => $server->get('REMOTE_ADDR'),
+            'referrer'         => ($server->get('HTTP_REFERER') == null)
                 ? 'Manual'
-                : $request->getServer()->get('HTTP_REFERER'),
-            'url'              => $request->getServer()->get('REQUEST_URI'),
-            'session'          => $this->getServiceLocator()->get('SessionManager')->getId()
+                : $server->get('HTTP_REFERER'),
+            'url'              => $server->get('REQUEST_URI'),
+            'session'          =>
+                $this->getServiceLocator()->get('SessionManager')->getId()
         );
     }
 
diff --git a/module/VuFind/src/VuFind/Statistics/Driver/File.php b/module/VuFind/src/VuFind/Statistics/Driver/File.php
index 61bb15f0ffb30914a9ffd0284916e7a9985ce0fd..6841428b1a9a400cf266ebf8ea7a233697a90033 100644
--- a/module/VuFind/src/VuFind/Statistics/Driver/File.php
+++ b/module/VuFind/src/VuFind/Statistics/Driver/File.php
@@ -54,7 +54,7 @@ class File extends AbstractBase
         $configs = ConfigReader::getConfig();
         $this->folder = $configs->Statistics->file;
         // Use class name as file name
-        $parts = explode('\\',$source);
+        $parts = explode('\\', $source);
         $this->file = strToLower(end($parts));
     }
 
diff --git a/module/VuFind/src/VuFind/Theme/Root/Helper/Cart.php b/module/VuFind/src/VuFind/Theme/Root/Helper/Cart.php
index 99e5c00777d057188b6123c3b312a59c225aaa19..bffdbd03cfaf91d1ffb261b4f3e018ff1d36e50b 100644
--- a/module/VuFind/src/VuFind/Theme/Root/Helper/Cart.php
+++ b/module/VuFind/src/VuFind/Theme/Root/Helper/Cart.php
@@ -26,7 +26,9 @@
  * @link     http://vufind.org/wiki/building_a_recommendations_module Wiki
  */
 namespace VuFind\Theme\Root\Helper;
-use VuFind\Cart as VuFindCart, Zend\View\Helper\AbstractHelper;
+use Zend\ServiceManager\ServiceLocatorInterface,
+    Zend\ServiceManager\ServiceLocatorAwareInterface,
+    Zend\View\Helper\AbstractHelper;
 
 /**
  * Cart view helper
@@ -37,15 +39,42 @@ use VuFind\Cart as VuFindCart, 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 Cart extends AbstractHelper
+class Cart extends AbstractHelper implements ServiceLocatorAwareInterface
 {
+    protected $serviceLocator;
+
     /**
-     * Get the Cart singleton object.
+     * Get the Cart object from the service manager.
      *
-     * @return VuFindCart
+     * @return \VuFind\Cart
      */
     public function __invoke()
     {
-        return VuFindCart::getInstance();
+        return $this->getServiceLocator()->get('Cart');
+    }
+
+    /**
+     * Set the service locator.
+     *
+     * @param ServiceLocatorInterface $serviceLocator Locator to register
+     *
+     * @return Manager
+     */
+    public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
+    {
+        // The service locator passed in here is a Zend\View\HelperPluginManager;
+        // we want to pull out the main Zend\ServiceManager\ServiceManager.
+        $this->serviceLocator = $serviceLocator->getServiceLocator();
+        return $this;
+    }
+
+    /**
+     * Get the service locator.
+     *
+     * @return \Zend\ServiceManager\ServiceLocatorInterface
+     */
+    public function getServiceLocator()
+    {
+        return $this->serviceLocator;
     }
 }
\ No newline at end of file
diff --git a/module/VuFind/src/VuFind/Summon.php b/module/VuFind/src/VuFind/Theme/Root/Helper/Summon.php
similarity index 93%
rename from module/VuFind/src/VuFind/Summon.php
rename to module/VuFind/src/VuFind/Theme/Root/Helper/Summon.php
index ee8597a651534c013b6a5ebfb2d7fbfd1db20981..1e73c76827b7d4233d81d855f3a9bf13355d10a0 100644
--- a/module/VuFind/src/VuFind/Summon.php
+++ b/module/VuFind/src/VuFind/Theme/Root/Helper/Summon.php
@@ -25,7 +25,8 @@
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://www.vufind.org  Main Page
  */
-namespace VuFind;
+namespace VuFind\Theme\Root\Helper;
+use Zend\View\Helper\AbstractHelper;
 
 /**
  * Summon support functions.
@@ -36,7 +37,7 @@ namespace VuFind;
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://www.vufind.org  Main Page
  */
-class Summon
+class Summon extends AbstractHelper
 {
     /**
      * Export support function to convert Summon format to EndNote format.
@@ -45,7 +46,7 @@ class Summon
      *
      * @return string
      */
-    public static function getEndnoteFormat($format)
+    public function getEndnoteFormat($format)
     {
         switch ($format) {
         case 'Journal Article':
@@ -70,7 +71,7 @@ class Summon
      *
      * @return string
      */
-    public static function getRefWorksFormat($format)
+    public function getRefWorksFormat($format)
     {
         switch ($format) {
         case 'Book Chapter':
diff --git a/module/VuFind/CLI/Module.php b/module/VuFindConsole/Module.php
similarity index 65%
rename from module/VuFind/CLI/Module.php
rename to module/VuFindConsole/Module.php
index a853bec7e7f68b8c9ed87af64ac1be47fcdeeced..4e51ee00d473065239a807e94eb67d3775c18abd 100644
--- a/module/VuFind/CLI/Module.php
+++ b/module/VuFindConsole/Module.php
@@ -1,7 +1,7 @@
 <?php
 
-namespace VuFind\CLI;
-use VuFind\Mvc\Router\ConsoleRouter,
+namespace VuFindConsole;
+use VuFindConsole\Mvc\Router\ConsoleRouter,
     Zend\ModuleManager\ModuleManager, Zend\Mvc\MvcEvent;
 
 class Module
@@ -13,10 +13,13 @@ class Module
 
     public function getAutoloaderConfig()
     {
-        // No extra configuration necessary; since this module uses a subset of the
-        // VuFind namespace, its library code is in the main src area of the VuFind
-        // module.
-        return array();
+        return array(
+            'Zend\Loader\StandardAutoloader' => array(
+                'namespaces' => array(
+                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
+                ),
+            ),
+        );
     }
 
     public function init(ModuleManager $m)
diff --git a/module/VuFindConsole/config/module.config.php b/module/VuFindConsole/config/module.config.php
new file mode 100644
index 0000000000000000000000000000000000000000..546a9a74eb69c37f426d8a3e27672ce611f786e0
--- /dev/null
+++ b/module/VuFindConsole/config/module.config.php
@@ -0,0 +1,14 @@
+<?php
+namespace VuFindConsole\Module\Configuration;
+
+$config = array(
+    'controllers' => array(
+        'invokables' => array(
+            'harvest' => 'VuFindConsole\Controller\HarvestController',
+            'import' => 'VuFindConsole\Controller\ImportController',
+            'util' => 'VuFindConsole\Controller\UtilController',
+        ),
+    ),
+);
+
+return $config;
\ No newline at end of file
diff --git a/module/VuFind/src/VuFind/CLI/Controller/AbstractBase.php b/module/VuFindConsole/src/VuFindConsole/Controller/AbstractBase.php
similarity index 98%
rename from module/VuFind/src/VuFind/CLI/Controller/AbstractBase.php
rename to module/VuFindConsole/src/VuFindConsole/Controller/AbstractBase.php
index 7bcea077c885f3b9238bc77e5661e19ce4276ffc..e6fcac5a2a3083d9fe41ff25b25ea21d49c32034 100644
--- a/module/VuFind/src/VuFind/CLI/Controller/AbstractBase.php
+++ b/module/VuFindConsole/src/VuFindConsole/Controller/AbstractBase.php
@@ -26,7 +26,7 @@
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://vufind.org/wiki/building_a_recommendations_module Wiki
  */
-namespace VuFind\CLI\Controller;
+namespace VuFindConsole\Controller;
 use Zend\Console\Console, Zend\Console\Getopt,
     Zend\Mvc\Controller\AbstractActionController;
 
diff --git a/module/VuFind/src/VuFind/CLI/Controller/HarvestController.php b/module/VuFindConsole/src/VuFindConsole/Controller/HarvestController.php
similarity index 99%
rename from module/VuFind/src/VuFind/CLI/Controller/HarvestController.php
rename to module/VuFindConsole/src/VuFindConsole/Controller/HarvestController.php
index ceacd2161965ff155b07a3d8512ea07e9805a18c..67c11bb21c76b9e78b4d61bc571853bc2265b93b 100644
--- a/module/VuFind/src/VuFind/CLI/Controller/HarvestController.php
+++ b/module/VuFindConsole/src/VuFindConsole/Controller/HarvestController.php
@@ -25,7 +25,7 @@
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://vufind.org/wiki/building_a_recommendations_module Wiki
  */
-namespace VuFind\CLI\Controller;
+namespace VuFindConsole\Controller;
 use VuFind\Config\Reader as ConfigReader, VuFind\Harvester\NAF, VuFind\Harvester\OAI,
     Zend\Console\Console;
 
diff --git a/module/VuFind/src/VuFind/CLI/Controller/ImportController.php b/module/VuFindConsole/src/VuFindConsole/Controller/ImportController.php
similarity index 99%
rename from module/VuFind/src/VuFind/CLI/Controller/ImportController.php
rename to module/VuFindConsole/src/VuFindConsole/Controller/ImportController.php
index caa4042ae310062df44cf4b1d2de7f206bea5611..32d9edb0c1bc41168c001726ad8e8a8864e0d983 100644
--- a/module/VuFind/src/VuFind/CLI/Controller/ImportController.php
+++ b/module/VuFindConsole/src/VuFindConsole/Controller/ImportController.php
@@ -25,7 +25,7 @@
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://vufind.org/wiki/building_a_recommendations_module Wiki
  */
-namespace VuFind\CLI\Controller;
+namespace VuFindConsole\Controller;
 use VuFind\XSLT\Importer, Zend\Console\Console;
 
 /**
diff --git a/module/VuFind/src/VuFind/CLI/Controller/UtilController.php b/module/VuFindConsole/src/VuFindConsole/Controller/UtilController.php
similarity index 99%
rename from module/VuFind/src/VuFind/CLI/Controller/UtilController.php
rename to module/VuFindConsole/src/VuFindConsole/Controller/UtilController.php
index d6d6b9fbf3ca061f523945e9cc3f24225e628a6f..ec346a0846946e683064a8fac7086295634973dc 100644
--- a/module/VuFind/src/VuFind/CLI/Controller/UtilController.php
+++ b/module/VuFindConsole/src/VuFindConsole/Controller/UtilController.php
@@ -25,7 +25,7 @@
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://vufind.org/wiki/building_a_recommendations_module Wiki
  */
-namespace VuFind\CLI\Controller;
+namespace VuFindConsole\Controller;
 use File_MARC, File_MARCXML, VuFind\Connection\Manager as ConnectionManager,
     VuFind\Db\Table\Search as SearchTable, VuFind\Sitemap, Zend\Console\Console;
 
@@ -240,7 +240,7 @@ class UtilController extends AbstractBase
         $query = $search->getExpiredQuery($daysOld);
         if (($count = count($search->select($query))) == 0) {
             Console::writeLine("No expired searches to delete.");
-            return $this->getFailureResponse();
+            return $this->getSuccessResponse();
         }
         $search->delete($query);
         Console::writeLine("{$count} expired searches deleted.");
diff --git a/module/VuFind/src/VuFind/Mvc/Router/ConsoleRouter.php b/module/VuFindConsole/src/VuFindConsole/Mvc/Router/ConsoleRouter.php
similarity index 99%
rename from module/VuFind/src/VuFind/Mvc/Router/ConsoleRouter.php
rename to module/VuFindConsole/src/VuFindConsole/Mvc/Router/ConsoleRouter.php
index e8a84609e79848f925ddc3f863a114b420fe8610..a45764bd1e41d4ebb6e0355ca9d192241fadd565 100644
--- a/module/VuFind/src/VuFind/Mvc/Router/ConsoleRouter.php
+++ b/module/VuFindConsole/src/VuFindConsole/Mvc/Router/ConsoleRouter.php
@@ -25,7 +25,7 @@
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
  * @link     http://vufind.org   Main Site
  */
-namespace VuFind\Mvc\Router;
+namespace VuFindConsole\Mvc\Router;
 use Zend\Mvc\Router\Http\RouteMatch, Zend\Mvc\Router\RouteStackInterface,
     Zend\Stdlib\RequestInterface as Request;
 
diff --git a/themes/blueprint/templates/header.phtml b/themes/blueprint/templates/header.phtml
index 0447332ec7aea344717b9cfee30ec5fd4d1d31a8..3a734a1dba66f495b62d7c10ad2b00e76c519eae 100644
--- a/themes/blueprint/templates/header.phtml
+++ b/themes/blueprint/templates/header.phtml
@@ -1,7 +1,7 @@
 <? $account = $this->layout()->account; ?>
 <a id="logo" href="<?=$this->url('home')?>"></a>
 <div id="headerRight">
-  <? $cart = \VuFind\Cart::getInstance(); if ($cart->isActive()): ?>
+  <? $cart = $this->cart(); if ($cart->isActive()): ?>
     <div id="cartSummary" class="cartSummary">
       <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>
diff --git a/themes/blueprint/templates/layout/layout.phtml b/themes/blueprint/templates/layout/layout.phtml
index f838bcf5b2bfbc2db8edc8ab4b07eed4640eda45..283ac9e339447368df06a2cce296b194b7712787 100644
--- a/themes/blueprint/templates/layout/layout.phtml
+++ b/themes/blueprint/templates/layout/layout.phtml
@@ -22,7 +22,7 @@
         $this->headScript()->prependScript("path = '" . rtrim($this->url('home'), '/') . "';");
 
         // Deal with cart stuff:
-        $cart = \VuFind\Cart::getInstance();
+        $cart = $this->cart();
         if ($cart->isActive()) {
             $this->headScript()->appendFile("jquery.cookie.js");
             $this->headScript()->appendFile("cart.js");
diff --git a/themes/root/templates/RecordDriver/Summon/export-endnote.phtml b/themes/root/templates/RecordDriver/Summon/export-endnote.phtml
index 3b8e2e3146fbb6d196e2da1e088385bb716aa118..11b49399f999d5aed186865308c4fbe653d29f12 100644
--- a/themes/root/templates/RecordDriver/Summon/export-endnote.phtml
+++ b/themes/root/templates/RecordDriver/Summon/export-endnote.phtml
@@ -2,10 +2,10 @@
 // Convert Summon formats to EndNote formats:
 $formats = $this->driver->getFormats();
 foreach ($formats as $i => $format) {
-    $formats[$i] = \VuFind\Summon::getEndnoteFormat($format);
+    $formats[$i] = $this->summon()->getEndnoteFormat($format);
 }
 
 // Use the default template, but override the formats:
 $this->overrideFormats = $formats;
-echo $this->render('RecordDriver/Base/export-endnote.phtml');
+echo $this->render('RecordDriver/AbstractBase/export-endnote.phtml');
 ?>
\ No newline at end of file
diff --git a/themes/root/templates/RecordDriver/Summon/export-refworks.phtml b/themes/root/templates/RecordDriver/Summon/export-refworks.phtml
index f11c469505598a8c568d6f992044cb75abc33d19..621f324cf5768bfb46d2526d00f4ef4d426eaeeb 100644
--- a/themes/root/templates/RecordDriver/Summon/export-refworks.phtml
+++ b/themes/root/templates/RecordDriver/Summon/export-refworks.phtml
@@ -2,10 +2,10 @@
 // Convert Summon formats to RefWorks formats:
 $formats = $this->driver->getFormats();
 foreach ($formats as $i => $format) {
-    $formats[$i] = \VuFind\Summon::getRefWorksFormat($format);
+    $formats[$i] = $this->summon()->getRefWorksFormat($format);
 }
 
 // Use the default template, but override the formats:
 $this->overrideFormats = $formats;
-echo $this->render('RecordDriver/Base/export-refworks.phtml');
+echo $this->render('RecordDriver/AbstractBase/export-refworks.phtml');
 ?>
\ No newline at end of file
diff --git a/themes/root/theme.ini b/themes/root/theme.ini
index e6f8267ec949bae6d77cd50ed4a588e2f0ce9d9c..971c6c474eb988c431f3dceddc0a17025286baef 100644
--- a/themes/root/theme.ini
+++ b/themes/root/theme.ini
@@ -37,6 +37,7 @@ helpers_to_register[] = "Reviews"
 helpers_to_register[] = "SearchOptions"
 helpers_to_register[] = "SafeMoneyFormat"
 helpers_to_register[] = "SortFacetList"
+helpers_to_register[] = "Summon"
 helpers_to_register[] = "SyndeticsPlus"
 helpers_to_register[] = "SystemEmail"
 helpers_to_register[] = "TransEsc"