diff --git a/application/controllers/HomeController.php b/application/controllers/HomeController.php
index 3fc3b18404a268de4258cc30ea8c9b4dc0c736c8..0a9a481c7474fe7d05af729c79393bf4bbfc40f7 100644
--- a/application/controllers/HomeController.php
+++ b/application/controllers/HomeController.php
@@ -139,8 +139,8 @@ class HomeController extends Nmc_Controller_Action
         $out->user = $user;
         $out->roles = $rolesData;
         $out->myRequests = $myRequests['request'];
-        $out->savedRequests = Nmc_Registry_Session::getInstance()->savedRequests;
-        $out->savedCourses = Nmc_Registry_Session::getInstance()->savedCourses;
+        $out->savedRequests = unserialize(Registry::getInstance()->getValue($user->getId(), 'savedRequests'));
+        $out->savedCourses = unserialize(Registry::getInstance()->getValue($user->getId(), 'savedCourses'));
         $out->page = 'home';
         $out->tagline = 'My Requests';
 
diff --git a/application/controllers/RequestController.php b/application/controllers/RequestController.php
index 5d1cb9877a73c8cdc8391d893b98c53e1a793d89..49fab828dbaa8aa7a0d00bcfb4e0904d75d4cfc4 100755
--- a/application/controllers/RequestController.php
+++ b/application/controllers/RequestController.php
@@ -123,12 +123,20 @@ class RequestController extends Nmc_Controller_Action
     {
         $in = $this->getRequest();
         $requestId = $in->getParam(0);
+        $user = Nmc_User::getInstance()->getUser();
 
         if (strtolower($requestId) == 'saved') {
             $requestId = $in->getParam(1);
             $requestId = Zend_Filter_Int::filter($requestId);
-            $course = Nmc_Registry_Session::getInstance()->savedCourses[$requestId];
-            $request = Nmc_Registry_Session::getInstance()->savedRequests[$requestId];
+
+            $savedCourses = Registry::getInstance()->getValue($user->getId(), 'savedCourses');
+            $savedCourses = unserialize($savedCourses);
+            $course = $savedCourses[$requestId];
+
+            $savedRequests = Registry::getInstance()->getValue($user->getId(), 'savedRequests');
+            $savedRequests = unserialize($savedRequests);
+            $request = $savedRequests[$requestId];
+
         } else {
             $requestId = Zend_Filter_Int::filter($requestId);
             $request = Requests::getInstance()->findOne($requestId);
@@ -870,22 +878,27 @@ class RequestController extends Nmc_Controller_Action
         $course = Nmc_Registry_Session::getInstance()->course;
         $request = Nmc_Registry_Session::getInstance()->request;
 
-        if (!is_array(Nmc_Registry_Session::getInstance()->savedCourses)) {
-            Nmc_Registry_Session::getInstance()->savedCourses = array();
+        $savedCourses = Registry::getInstance()->getValue($user->getId(), 'savedCourses');
+        $savedCourses = unserialize($savedCourses);
+
+        $savedRequests = Registry::getInstance()->getValue($user->getId(), 'savedRequests');
+        $savedRequests = unserialize($savedRequests);
+
+        if (!is_array($savedCourses)) {
+            $savedCourses = array();
         }
-        if (!is_array(Nmc_Registry_Session::getInstance()->savedRequests)) {
-            Nmc_Registry_Session::getInstance()->savedRequests = array();
+        if (!is_array($savedRequests)) {
+            $savedRequests = array();
         }
 
+        $savedCourses[] = $course;
+        $savedRequests[] = $request;
 
-        Nmc_Registry_Session::getInstance()->savedCourses = array_merge(
-            Nmc_Registry_Session::getInstance()->savedCourses,
-            array($course)
-        );
-        Nmc_Registry_Session::getInstance()->savedRequests = array_merge(
-            Nmc_Registry_Session::getInstance()->savedRequests,
-            array($request)
-        );
+        $savedCourses = serialize($savedCourses);
+        Registry::getInstance()->setValue($user->getId(), 'savedCourses', $savedCourses);
+
+        $savedRequests = serialize($savedRequests);
+        Registry::getInstance()->setValue($user->getId(), 'savedRequests', $savedRequests);
 
         Nmc_Registry_Session::getInstance()->erase('course');
         Nmc_Registry_Session::getInstance()->erase('request');
diff --git a/application/models/tables/Registry.php b/application/models/tables/Registry.php
new file mode 100644
index 0000000000000000000000000000000000000000..79db58fe2b6378c311f4f3575b8a2cedf40eeda5
--- /dev/null
+++ b/application/models/tables/Registry.php
@@ -0,0 +1,89 @@
+<?php
+
+class Registry extends Nmc_Db_Table
+{
+    protected $_primary = 'registryId';
+
+    protected $_cache = array();
+
+    /**
+     * The one true instance
+     *
+     * @var Registry
+     */
+    static protected $_instance;
+
+    /**
+     * Return the one true instance
+     *
+     * @return Registry
+     */
+    static public function getInstance($config = array())
+    {
+        if (!self::$_instance) {
+            self::$_instance = new Registry($config);
+        }
+        return self::$_instance;
+    }
+
+    /**
+     * Retrieve a value from the registry
+     *
+     * @param string $namespace
+     * @param string $key
+     * @return mixed
+     */
+    public function getValue($namespace, $key) {
+        if (array_key_exists($namespace, $this->_cache)) {
+            if (array_key_exists($key, $this->_cache[$namespace])) {
+                return $this->_cache[$namespace][$key]->data;
+            }
+        } else {
+            $this->_cache[$namespace] = array();
+        }
+
+        $db = $this->getAdapter();
+
+        $where = array();
+        $where[] = $db->quoteInto('`namespace` = ?', $namespace);
+        $where[] = $db->quoteInto('`key` = ?', $key);
+        $where = implode(' AND ', $where);
+
+        $row = $this->fetchRow($where);
+        if (!$row) {
+            return null;
+        }
+        $row->data = unserialize($row->data);
+        $this->_cache[$namespace][$key] = $row;
+
+        return $this->_cache[$namespace][$key]->data;
+    }
+
+    /**
+     * Add/Set a value in the registry
+     *
+     * @param string $namespace
+     * @param string $key
+     * @param mixed $data
+     */
+    public function setValue($namespace, $key, $data) {
+        $this->getValue($namespace, $key);
+        if (!array_key_exists($key, $this->_cache[$namespace])) {
+            $row = $this->fetchNew();
+            $row->namespace = $namespace;
+            $row->key = $key;
+            $this->_cache[$namespace][$key] = $row;
+        }
+        $this->_cache[$namespace][$key]->data = $data;
+    }
+
+    public function __destruct()
+    {
+        foreach ($this->_cache as $namespace) {
+            foreach ($namespace as $row) {
+                $row->data = serialize($row->data);
+                $row->save();
+            }
+        }
+    }
+}
diff --git a/application/views/home.xhtml b/application/views/home.xhtml
index 52f7c633cb2949d0581c28d05b32291613a1b41c..c66cf309ce295b7ab3bbe22da46e9d6fba879889 100755
--- a/application/views/home.xhtml
+++ b/application/views/home.xhtml
@@ -15,7 +15,7 @@
     </div>
 </div>
 
-<?php if(count($this->savedRequests) > 0) { ?>
+<?php if(is_array($this->savedRequests) && count($this->savedRequests) > 0) { ?>
 <div id="activity" class="titled_box">
     <div class="box_shadow_2">
         <div class="tr"></div>
@@ -53,7 +53,6 @@
                              . $originalCourse->courseLetter; ?></td>
                 <td><?php echo $originalCourse->getHomeCollege()->name; ?></td>
                 <td><?php echo $request->type->name; ?></td>
-                <td>
                 <td>
                     <a href="/Request/Load/Saved/<?php echo $savedId; ?>">Edit</a>
                 </td>