diff --git a/lib/.pear2registry b/lib/.pear2registry
index f730b57a291602618899cfcdfef23bcfe028b6d2..4b735cd904fc772daa7efb34c00e940528978569 100644
Binary files a/lib/.pear2registry and b/lib/.pear2registry differ
diff --git a/lib/.xmlregistry/channels/channel-simplecas.googlecode.com##svn.xml b/lib/.xmlregistry/channels/channel-simplecas.googlecode.com##svn.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8de923b8b5f085d6281cd2da4b868b98c8b1603b
--- /dev/null
+++ b/lib/.xmlregistry/channels/channel-simplecas.googlecode.com##svn.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<channel version="1.0" xmlns="http://pear.php.net/channel-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/channel-1.0 http://pear.php.net/dtd/channel-1.0.xsd">
+ <name>simplecas.googlecode.com/svn</name>
+ <suggestedalias>simplecas</suggestedalias>
+ <summary>simplecas</summary>
+ <servers>
+  <primary>
+   <rest>
+    <baseurl type="REST1.0">http://simplecas.googlecode.com/svn/rest/</baseurl>
+    <baseurl type="REST1.1">http://simplecas.googlecode.com/svn/rest/</baseurl>
+    <baseurl type="REST1.3">http://simplecas.googlecode.com/svn/rest/</baseurl>
+   </rest>
+  </primary>
+ </servers>
+</channel>
diff --git a/lib/.xmlregistry/channels/channelalias-simplecas.txt b/lib/.xmlregistry/channels/channelalias-simplecas.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fdae489857385937081e3051151920aa6c6e6422
--- /dev/null
+++ b/lib/.xmlregistry/channels/channelalias-simplecas.txt
@@ -0,0 +1 @@
+simplecas.googlecode.com/svn
\ No newline at end of file
diff --git a/lib/.xmlregistry/packages/pear.unl.edu/UNL_Auth/0.3.2-info.xml b/lib/.xmlregistry/packages/pear.unl.edu/UNL_Auth/0.3.2-info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f26b986f99de2f98d511bde5fa937c16738454e2
--- /dev/null
+++ b/lib/.xmlregistry/packages/pear.unl.edu/UNL_Auth/0.3.2-info.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" packagerversion="1.8.0alpha1" version="2.0" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0     http://pear.php.net/dtd/tasks-1.0.xsd     http://pear.php.net/dtd/package-2.0     http://pear.php.net/dtd/package-2.0.xsd">
+ <name>UNL_Auth</name>
+ <channel>pear.unl.edu</channel>
+ <summary>An authentication framework for PHP Applications at UNL</summary>
+ <description>This package provides an authentication framework for web 
+applications developed at UNL.</description>
+ <lead>
+  <name>Brett Bieber</name>
+  <user>saltybeagle</user>
+  <email>brett.bieber@gmail.com</email>
+  <active>yes</active>
+ </lead>
+ <date>2009-11-29</date>
+ <time>07:56:32</time>
+ <version>
+  <release>0.3.2</release>
+  <api>0.3.0</api>
+ </version>
+ <stability>
+  <release>alpha</release>
+  <api>alpha</api>
+ </stability>
+ <license uri="http://www1.unl.edu/wdn/wiki/Software_License">BSD License</license>
+ <notes>
+* Increase SimpleCAS dependency of 0.3.0 to use new object names and array options for the constructor.
+ </notes>
+ <contents>
+  <dir name="/">
+   <file baseinstalldir="/" md5sum="b7a35f1bfe174ef2725733df1539f212" name="UNL/Auth/SimpleCAS/ZendAuth.php" role="php"/>
+   <file baseinstalldir="/" md5sum="6def037a77fd9fa49bcc5e752cbb8170" name="UNL/Auth/SimpleCAS.php" role="php"/>
+   <file baseinstalldir="/" md5sum="ada4bb738641430ba2420da94ec3e749" name="UNL/Auth/CAS/PEARAuth.php" role="php"/>
+   <file baseinstalldir="/" md5sum="76deaf815ba781ca6f7f6bbcc7095912" name="UNL/Auth/CAS.php" role="php"/>
+   <file baseinstalldir="/" md5sum="f23e61f13d36579cc5f86e8c1a376392" name="UNL/Auth.php" role="php"/>
+   <file baseinstalldir="/" md5sum="c4ee1094cd276ff40fbd2b16d66068fe" name="docs/examples/Zend_SimpleCAS_example.php" role="doc"/>
+   <file baseinstalldir="/" md5sum="3a80ba084e5bc5f8b17d188b15e6a7aa" name="docs/examples/SimpleCAS_example.php" role="doc"/>
+   <file baseinstalldir="/" md5sum="3759e0e8f63d4161653c158b08cdd0ed" name="docs/examples/CAS_example.php" role="doc"/>
+   <file baseinstalldir="/" md5sum="e89e49dca8497ec59459d17140c6e63a" name="docs/examples/CASPEARAuth_example.php" role="doc"/>
+  </dir>
+ </contents>
+ <dependencies>
+  <required>
+   <php>
+    <min>5.1.2</min>
+   </php>
+   <pearinstaller>
+    <min>1.4.3</min>
+   </pearinstaller>
+  </required>
+  <optional>
+   <package>
+    <name>Auth</name>
+    <channel>pear.php.net</channel>
+    <min>1.0</min>
+   </package>
+   <package>
+    <name>CAS</name>
+    <channel>pear.unl.edu</channel>
+    <min>1.0.0</min>
+   </package>
+   <package>
+    <name>SimpleCAS</name>
+    <channel>simplecas.googlecode.com/svn</channel>
+    <min>0.3.0</min>
+   </package>
+  </optional>
+ </dependencies>
+ <phprelease>
+  <changelog>
+   <release>
+    <version>
+     <release>0.1.0</release>
+     <api>0.1.0</api>
+    </version>
+    <stability>
+     <release>alpha</release>
+     <api>alpha</api>
+    </stability>
+    <date>2007-12-17</date>
+    <license uri="http://www1.unl.edu/wdn/wiki/Software_License">BSD License</license>
+    <notes>
+First Release - only CAS is available.
+   </notes>
+   </release>
+   <release>
+    <version>
+     <release>0.1.1</release>
+     <api>0.1.1</api>
+    </version>
+    <stability>
+     <release>alpha</release>
+     <api>alpha</api>
+    </stability>
+    <date>2008-05-20</date>
+    <license uri="http://www1.unl.edu/wdn/wiki/Software_License">BSD License</license>
+    <notes>
+* Check if session is already started - kabel
+* Improve PHP docs and fix example. - bbieber
+   </notes>
+   </release>
+   <release>
+    <version>
+     <release>0.2.0</release>
+     <api>0.2.0</api>
+    </version>
+    <stability>
+     <release>alpha</release>
+     <api>alpha</api>
+    </stability>
+    <date>2008-08-22</date>
+    <license uri="http://www1.unl.edu/wdn/wiki/Software_License">BSD License</license>
+    <notes>
+* Upgrade CAS driver dependency to 1.0.0
+   </notes>
+   </release>
+   <release>
+    <version>
+     <release>0.3.0</release>
+     <api>0.3.0</api>
+    </version>
+    <stability>
+     <release>alpha</release>
+     <api>alpha</api>
+    </stability>
+    <date>2008-12-09</date>
+    <license uri="http://www1.unl.edu/wdn/wiki/Software_License">BSD License</license>
+    <notes>
+* Enable SimpleCAS support. http://code.google.com/p/simplecas/
+   </notes>
+   </release>
+   <release>
+    <version>
+     <release>0.3.1</release>
+     <api>0.3.0</api>
+    </version>
+    <stability>
+     <release>alpha</release>
+     <api>alpha</api>
+    </stability>
+    <date>2009-02-12</date>
+    <license uri="http://www1.unl.edu/wdn/wiki/Software_License">BSD License</license>
+    <notes>
+* Increase SimpleCAS dependency of 0.2.0 to take advantage of getRequest() so we can ignore the ssl peer verification.
+   </notes>
+   </release>
+   <release>
+    <version>
+     <release>0.3.2</release>
+     <api>0.3.0</api>
+    </version>
+    <stability>
+     <release>alpha</release>
+     <api>alpha</api>
+    </stability>
+    <date>2009-03-03</date>
+    <license uri="http://www1.unl.edu/wdn/wiki/Software_License">BSD License</license>
+    <notes>
+* Increase SimpleCAS dependency of 0.3.0 to use new object names and array options for the constructor.
+   </notes>
+   </release>
+  </changelog>
+ </phprelease>
+</package>
diff --git a/lib/docs/UNL_Auth/docs/examples/CASPEARAuth_example.php b/lib/docs/UNL_Auth/docs/examples/CASPEARAuth_example.php
new file mode 100644
index 0000000000000000000000000000000000000000..8b2442757e45a7bf08ad841e36e340859292363a
--- /dev/null
+++ b/lib/docs/UNL_Auth/docs/examples/CASPEARAuth_example.php
@@ -0,0 +1,26 @@
+<?php
+ini_set('display_errors', true);
+error_reporting(E_ALL);
+chdir(dirname(__FILE__).'/../../');
+require_once 'UNL/Auth.php';
+
+//$auth = UNL_Auth::PEARFactory('CAS', $options=null, $loginfunction=null, false);
+$auth = UNL_Auth::PEARFactory('CAS');
+$auth->start();
+
+if (isset($_GET['logout']) && $auth->checkAuth()) {
+    $auth->logout();
+    $auth->start();
+}
+
+if ($auth->checkAuth()) {
+    /*
+     * The output of your site goes here.
+     */
+    echo 'You are authenticated, '.$auth->getUsername().'<br />';
+    echo '<a href="?logout">Logout</a>';
+} else {
+    echo 'You need to log in bro!';
+}
+
+?>
\ No newline at end of file
diff --git a/lib/docs/UNL_Auth/docs/examples/CAS_example.php b/lib/docs/UNL_Auth/docs/examples/CAS_example.php
new file mode 100644
index 0000000000000000000000000000000000000000..42acfc6dff5776434521d352519b0d0cc3c91160
--- /dev/null
+++ b/lib/docs/UNL_Auth/docs/examples/CAS_example.php
@@ -0,0 +1,22 @@
+<?php
+ini_set('display_errors', true);
+error_reporting(E_ALL);
+chdir(dirname(__FILE__).'/../../');
+require_once 'UNL/Auth.php';
+
+$auth = UNL_Auth::factory('CAS');
+
+if (isset($_GET['login'])) {
+	$auth->login();
+} elseif (isset($_GET['logout'])) {
+	$auth->logout();
+}
+
+if (!$auth->isLoggedIn()) {
+    // Could call $auth->login() here to get the party started.
+	echo "You are not logged in.\n<br />\n";
+	echo '<a href="?login=true">Click here to log in!</a>';
+} else {
+	echo "You are logged in as {$auth->getUser()}<br />";
+	echo "<a href='?logout'>logout</a>";
+}
diff --git a/lib/docs/UNL_Auth/docs/examples/SimpleCAS_example.php b/lib/docs/UNL_Auth/docs/examples/SimpleCAS_example.php
new file mode 100644
index 0000000000000000000000000000000000000000..d514e53980d381ea273aaa4aa3fec1be787c2636
--- /dev/null
+++ b/lib/docs/UNL_Auth/docs/examples/SimpleCAS_example.php
@@ -0,0 +1,22 @@
+<?php
+ini_set('display_errors', true);
+error_reporting(E_ALL);
+chdir(dirname(__FILE__).'/../../');
+require_once 'UNL/Auth.php';
+
+$auth = UNL_Auth::factory('SimpleCAS');
+
+if (isset($_GET['login'])) {
+    $auth->login();
+} elseif (isset($_GET['logout'])) {
+    $auth->logout();
+}
+
+if (!$auth->isLoggedIn()) {
+    // Could call $auth->login() here to get the party started.
+    echo "You are not logged in.\n<br />\n";
+    echo '<a href="?login=true">Click here to log in!</a>';
+} else {
+    echo "You are logged in as {$auth->getUser()}<br />";
+    echo "<a href='?logout'>logout</a>";
+}
\ No newline at end of file
diff --git a/lib/docs/UNL_Auth/docs/examples/Zend_SimpleCAS_example.php b/lib/docs/UNL_Auth/docs/examples/Zend_SimpleCAS_example.php
new file mode 100644
index 0000000000000000000000000000000000000000..adac078d28164bb35aa64c3727a047378b9eac59
--- /dev/null
+++ b/lib/docs/UNL_Auth/docs/examples/Zend_SimpleCAS_example.php
@@ -0,0 +1,26 @@
+<?php
+ini_set('display_errors', true);
+error_reporting(E_ALL);
+chdir(dirname(__FILE__).'/../../');
+require_once 'UNL/Auth.php';
+require_once 'Zend/Auth.php';
+
+$auth = Zend_Auth::getInstance();
+$authAdapter = UNL_Auth::ZendFactory('SimpleCAS');
+if (!$auth->hasIdentity()) {
+    $result = $auth->authenticate($authAdapter);
+    if (!$result->isValid()) {
+        // Authentication failed; print the reasons why
+        foreach ($result->getMessages() as $message) {
+            echo "$message\n";
+        }
+    } else {
+        // Authentication succeeded; the identity ($username) is stored
+        // in the session
+        // $result->getIdentity() === $auth->getIdentity()
+        echo 'Hello '.$result->getIdentity();
+    }
+} else {
+    echo 'Hello@';
+}
+
diff --git a/lib/php/UNL/Auth.php b/lib/php/UNL/Auth.php
new file mode 100644
index 0000000000000000000000000000000000000000..a7ac0f33b42016026e68a321c2dc734b787c9302
--- /dev/null
+++ b/lib/php/UNL/Auth.php
@@ -0,0 +1,118 @@
+<?php
+/**
+ * This is a generic authentication framework for UNL which will return customized
+ * containers for use at UNL.
+ * 
+ * <code>
+ * <?php
+ * require_once 'UNL/Auth.php';
+ * $a = UNL_Auth::factory('CAS');
+ * if ($a->isLoggedIn()) {
+ *     echo 'Hello ' . $a->getUser();
+ * } else {
+ *     echo 'Sorry, you must log in.';
+ * }
+ * </code>
+ *
+ * PHP version 5
+ * 
+ * @category  Authentication 
+ * @package   UNL_Auth
+ * @author    Brett Bieber <brett.bieber@gmail.com>
+ * @copyright 2008 Regents of the University of Nebraska
+ * @license   http://www1.unl.edu/wdn/wiki/Software_License BSD License
+ * @link      http://pear.unl.edu/package/UNL_Auth
+ */
+class UNL_Auth
+{
+    protected static $_instance = null;
+    
+    public static function getInstance()
+    {
+        if (null === self::$_instance) {
+            self::$_instance = new self();
+        }
+
+        return self::$_instance;
+    }
+    
+    private function __construct()
+    {}
+    
+    private function __clone()
+    {}
+    
+    /**
+     * Abstract factory, used to get drivers for any of the authentication methods
+     * on campus.
+     *
+     * @param string $auth_type CAS, LDAP, LotusNotes, etc
+     * @param mixed  $options   Options for the specific container
+     * 
+     * @return mixed
+     */
+    public function factory($auth_type, $options = null)
+    {
+        $auth_class = 'UNL_Auth_'.$auth_type;
+        $class_file = dirname(__FILE__).'/Auth/'.$auth_type.'.php';
+        return self::discoverAndReturn($auth_class, $class_file, $options);
+    }
+    
+    /**
+     * Returns an auth container for use with systems compatible with PEAR Auth
+     *
+     * @param string $auth_type CAS, LDAP, LotusNotes, etc
+     * @param mixed  $options   Options for the container
+     * 
+     * @return mixed
+     */
+    public function PEARFactory($auth_type, $options = null, $loginFunction = null, $showLogin = true)
+    {
+        require_once 'Auth/Auth.php';
+        /// Get the class... return the pear auth container.
+        $auth_class = 'UNL_Auth_'.$auth_type.'_PEARAuth';
+        $class_file = dirname(__FILE__).'/Auth/'.$auth_type.'/PEARAuth.php';
+        $container = self::discoverAndReturn($auth_class, $class_file, $options);
+        return $container->getPEARAuth($options, $loginFunction, $showLogin);
+    }
+    
+    public function ZendFactory($auth_type, $options = null)
+    {
+        throw new Exception('not implemented yet!');
+        /// Get the class name, return the Zend Auth extended class
+        $auth_class = 'UNL_Auth_'.$auth_type.'_ZendAuth';
+        $class_file = dirname(__FILE__).'/Auth/'.$auth_type.'/ZendAuth.php';
+        $container = self::discoverAndReturn($auth_class, $class_file, $options);
+        return $container;
+    }
+    
+    /**
+     * This is a class used to discover and return a new class based given a class
+     * name and file.
+     *
+     * @param string $class      name of the class to load UNL_Auth_CAS
+     * @param string $class_file ./Auth/CAS.php
+     * 
+     * @return object
+     */
+    protected function discoverAndReturn($class, $class_file, $options = null)
+    {
+        if (!class_exists($class)) {
+            if (file_exists($class_file)) {
+                require_once $class_file;
+            } else {
+                throw new Exception('Cannot find authentication class that matches '.
+                                    $auth_type.' I tried '.$class_file);
+            }
+        }
+        if (method_exists($class, 'getInstance')) {
+            return call_user_func(array($class, 'getInstance'), $options);
+        } else {
+            return new $class($options);
+        }
+        
+    }
+}
+
+
+?>
\ No newline at end of file
diff --git a/lib/php/UNL/Auth/CAS.php b/lib/php/UNL/Auth/CAS.php
new file mode 100644
index 0000000000000000000000000000000000000000..a73d4d1440d39413c6faf307cb084158cfb23428
--- /dev/null
+++ b/lib/php/UNL/Auth/CAS.php
@@ -0,0 +1,157 @@
+<?php
+/**
+ * This is a CAS central authentication.
+ *
+ * DO NOT MODIFY THIS FILE.
+ * This file remains part of the UNL Login public API and is subject to change.
+ * If you require features built into this class, please contact us by email at
+ * <accounts@answers4families.org>.
+ *
+ * based on the Answers4Families [http://www.answers4families.org/] Account Services 
+ * LDAP-CAS API.
+ *
+ * 
+ * PHP version 5
+ * 
+ * @category  Authentication 
+ * @package   UNL_Auth
+ * @author    Brett Bieber <brett.bieber@gmail.com>
+ * @author    Ryan Lim <rlim@ccfl.unl.edu>
+ * @copyright 2008 Regents of the University of Nebraska
+ * @license   http://www1.unl.edu/wdn/wiki/Software_License BSD License
+ * @link      http://pear.unl.edu/package/UNL_Auth
+ */
+
+require_once 'CAS.php';
+
+
+/**
+ * UNL_Auth_CAS
+ *
+ * This is the CAS UserAccount class.
+ * This class takes care of user authentication using CAS and obtains the user
+ * account information via LDAP.
+ *
+ * This class does not handle changes to the user account information. All account
+ * information changes are handled by http://login.unl.edu/
+ * 
+ */
+class UNL_Auth_CAS extends UNL_Auth
+{
+    
+    /**
+     * Boolean flag to if the user is authenticated or not.
+     * 
+     * @var bool
+     */
+    protected $isAuth = false;
+
+    /**
+     * $uid is the LDAP uid value of the authenticated user.
+     * 
+     * @var string
+     */
+    protected $uid;
+    
+    /**
+     * Options for the CAS server
+     *
+     * @var array
+     */
+    protected $cas_options = array('host' => 'login.unl.edu',
+                                   'port' => 443,
+                                   'path' => 'cas');
+
+    /**
+     * The class constructor used to initialize the phpCAS class settings.
+     */
+    private function __construct(array $options = null)
+    {
+        if (session_id() != '') {
+            $start_session = false;
+        } else {
+            $start_session = true;
+        }
+        phpCAS::setDebug(false);
+        phpCAS::client(CAS_VERSION_2_0,
+            $this->cas_options['host'], $this->cas_options['port'], $this->cas_options['path'],
+            $start_session);
+        phpCAS::setNoCasServerValidation();
+        phpCAS::setCacheTimesForAuthRecheck(-1);
+
+        $this->isAuth = phpCAS::checkAuthentication();
+    }
+    
+    /**
+     * get a singleton instance of this class
+     *
+     * @return UNL_Auth_CAS
+     */
+    public static function getInstance()
+    {
+        if (null === self::$_instance) {
+            self::$_instance = new self();
+        }
+
+        return self::$_instance;
+    }
+    
+    /**
+     * Log in the user.
+     */
+    function login()
+    {
+        phpCAS::forceAuthentication();
+        $this->isAuth = true;
+        $this->uid    = phpCAS::getUser();
+    }
+
+    /**
+     * Log out the user.
+     */
+    function logout()
+    {
+        $this->isAuth = false;
+        phpCAS::forceAuthentication();
+        if (!empty($_SERVER['HTTP_REFERER'])) {
+            phpCAS::logoutWithUrl($_SERVER['HTTP_REFERER']);
+        } else {
+            phpCAS::logout();
+        }
+    }
+
+    /**
+     * Checks to see if the user is logged in.
+     * 
+     * @return bool true if logged in, false otherwise.
+     */
+    function isLoggedIn()
+    {
+        return $this->isAuth;
+    }
+
+    /**
+     * Get the LDAP-uid.
+     *
+     * @return string | bool The LDAP uid of the logged in user.
+     */
+    function getUser()
+    {
+        if ($this->isAuth) {
+            return phpCAS::getUser();
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Stores the LDAP-uid internally in this instance of the class.
+     *
+     * @return string The LDAP uid of the logged in user. If the user is not logged in, return false.
+     */
+    function getUid()
+    {
+        $this->uid = $this->getUser();
+        return $this->uid;
+    }
+}
diff --git a/lib/php/UNL/Auth/CAS/PEARAuth.php b/lib/php/UNL/Auth/CAS/PEARAuth.php
new file mode 100644
index 0000000000000000000000000000000000000000..c2f441bf5b64d9670e95fd6f8160b47519df4079
--- /dev/null
+++ b/lib/php/UNL/Auth/CAS/PEARAuth.php
@@ -0,0 +1,65 @@
+<?php
+/**
+ * PEAR Auth compatible container for CAS
+ *
+ * PHP version 5
+ * 
+ * @category  Default 
+ * @package   UNL_Auth
+ * @author    Brett Bieber <brett.bieber@gmail.com>
+ * @copyright 2008 Regents of the University of Nebraska
+ * @license   http://www1.unl.edu/wdn/wiki/Software_License BSD License
+ * @link      http://pear.unl.edu/package/UNL_Auth
+ */
+
+include_once 'Auth/Container.php';
+require_once 'UNL/Auth/CAS.php';
+
+class UNL_Auth_CAS_PEARAuth extends Auth_Container
+{
+    protected $cas;
+    
+    public function __construct($options)
+    {
+        $this->cas = UNL_Auth_CAS::getInstance();
+    }
+    
+    public function getPEARAuth($options = null, $loginFunction = null, $showLogin = true)
+    {
+        if (!isset($loginFunction)) {
+            $loginFunction = array('UNL_Auth_CAS_PEARAuth', 'login');
+        }
+        $auth = new Auth($this, $options, $loginFunction, $showLogin);
+        if ($this->checkAuth()) {
+            $auth->setAuth($this->getUsername());
+        }
+        $auth->setLogoutCallback(array('UNL_Auth_CAS_PEARAuth','logout'));
+        return $auth;
+    }
+    
+    public function login()
+    {
+        UNL_Auth_CAS::getInstance()->login();
+    }
+    
+    public function logout()
+    {
+        return UNL_Auth_CAS::getInstance()->logout();
+    }
+    
+    public function getAuth()
+    {
+        return UNL_Auth_CAS::getInstance()->isLoggedIn();
+    }
+    
+    public function checkAuth()
+    {
+        return UNL_Auth_CAS::getInstance()->isLoggedIn();
+    }
+    
+    public function getUsername()
+    {
+        return UNL_Auth_CAS::getInstance()->getUser();
+    }
+    
+}
diff --git a/lib/php/UNL/Auth/SimpleCAS.php b/lib/php/UNL/Auth/SimpleCAS.php
new file mode 100644
index 0000000000000000000000000000000000000000..6f2cd0cfb1be2d0c7281e752d9723b671ab2c268
--- /dev/null
+++ b/lib/php/UNL/Auth/SimpleCAS.php
@@ -0,0 +1,107 @@
+<?php
+/**
+ * This is a CAS central authentication.
+ *
+ * PHP version 5
+ * 
+ * @category  Authentication 
+ * @package   UNL_Auth
+ * @author    Brett Bieber <brett.bieber@gmail.com>
+ * @copyright 2008 Regents of the University of Nebraska
+ * @license   http://www1.unl.edu/wdn/wiki/Software_License BSD License
+ * @link      http://pear.unl.edu/package/UNL_Auth
+ */
+
+require_once 'SimpleCAS/Autoload.php';
+require_once 'HTTP/Request2.php';
+
+/**
+ * UNL_Auth_SimpleCAS
+ *
+ * This is the CAS UserAccount class.
+ * This class takes care of user authentication using CAS and obtains the user
+ * account information via LDAP.
+ *
+ * This class does not handle changes to the user account information. All account
+ * information changes are handled by http://login.unl.edu/
+ * 
+ */
+class UNL_Auth_SimpleCAS extends UNL_Auth
+{
+    /**
+     * Boolean flag to if the user is authenticated or not.
+     * 
+     * @var bool
+     */
+    protected $isAuth = false;
+
+    /**
+     * $uid is the LDAP uid value of the authenticated user.
+     * 
+     * @var string
+     */
+    protected $uid;
+    
+    /**
+     * Options for the CAS server
+     *
+     * @var array
+     */
+    protected $options = array('hostname' => 'login.unl.edu',
+                               'port'     => 443,
+                               'uri'      => 'cas');
+    
+    protected $client;
+    
+    /**
+     * The class constructor used to initialize the SimpleCAS class settings.
+     */
+    private function __construct(array $options = array())
+    {
+        $options = array_merge($this->options, $options);
+        $protocol = new SimpleCAS_Protocol_Version2($this->options);
+        
+        $protocol->getRequest()->setConfig('ssl_verify_peer', false);
+        
+        $this->client = SimpleCAS::client($protocol);
+        if ($this->client->isAuthenticated()) {
+            $this->isAuth = true;
+            $this->uid    = $this->client->getUsername();
+        }
+    }
+    
+    /**
+     * get a singleton instance of this class
+     *
+     * @return UNL_Auth_SimpleCAS
+     */
+    public static function getInstance()
+    {
+        if (null === self::$_instance) {
+            self::$_instance = new self();
+        }
+
+        return self::$_instance;
+    }
+    
+    function isLoggedIn()
+    {
+        return $this->isAuth;
+    }
+    
+    function getUser()
+    {
+        return $this->client->getUsername();
+    }
+    
+    function login()
+    {
+        return $this->client->forceAuthentication();
+    }
+    
+    function logout()
+    {
+        return $this->client->logout();
+    }
+}
+?>
\ No newline at end of file
diff --git a/lib/php/UNL/Auth/SimpleCAS/ZendAuth.php b/lib/php/UNL/Auth/SimpleCAS/ZendAuth.php
new file mode 100644
index 0000000000000000000000000000000000000000..8a759b39286f1178b7da0078874314594b9b4b5b
--- /dev/null
+++ b/lib/php/UNL/Auth/SimpleCAS/ZendAuth.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * This is a Zend_Auth adapter library for CAS.
+ * It uses SimpleCAS.
+ *
+ * <code>
+ * public function casAction()
+ * {
+ *     $auth = Zend_Auth::getInstance();
+ *     $authAdapter = UNL_Auth::factory('SimpleCAS', Zend_Registry::get('config')->auth->cas);
+ * 
+ *     # User has not been identified, and there's a ticket in the URL
+ *     if (!$auth->hasIdentity() && isset($_GET['ticket'])) {
+ *         $authAdapter->setTicket($_GET['ticket']);
+ *         $result = $auth->authenticate($authAdapter);
+ * 
+ *         if ($result->isValid()) {
+ *             Zend_Session::regenerateId();
+ *         }
+ *     }
+ * 
+ *     # No ticket or ticket was invalid. Redirect to CAS.
+ *     if (!$auth->hasIdentity()) {
+ *         $this->_redirect($authAdapter->getLoginURL());
+ *     }
+ * }
+ * </code>
+ */
+
+
+/**
+ * @see Zend_Auth_Adapter_Interface
+ */
+require_once 'Zend/Auth/Adapter/Interface.php';
+
+require_once 'UNL/Auth/SimpleCAS.php';
+
+class UNL_Auth_SimpleCAS_ZendAuth implements Zend_Auth_Adapter_Interface
+{
+    /**
+     * CAS client
+     * 
+     * @var UNL_Auth_SimpleCAS
+     */
+    protected $_simplecas;
+
+    /**
+     * Constructor
+     *
+     * @return void
+     */ 
+    public function __construct()
+    {
+        $this->_simplecas = UNL_Auth::factory('SimpleCAS');
+    }
+
+    /**
+     * Authenticates the user
+     *
+     * @return Zend_Auth_Result
+     */ 
+    public function authenticate()
+    {
+        $this->_simplecas->login();
+        if ($this->_simplecas->isLoggedIn()) {
+            return new Zend_Auth_Result(
+                Zend_Auth_Result::SUCCESS,
+                $this->_simplecas->getUser(),
+                array("Authentication successful"));
+        } else {
+            return new Zend_Auth_Result(
+                Zend_Auth_Result::FAILURE,
+                null,
+                array("Authentication failed"));
+        }
+    }
+ 
+}
diff --git a/src/UNL/UCARE/Confirmation.php b/src/UNL/UCARE/Confirmation.php
new file mode 100644
index 0000000000000000000000000000000000000000..864639e10a4b7ce3b658f3f32bc6af02f14bd33e
--- /dev/null
+++ b/src/UNL/UCARE/Confirmation.php
@@ -0,0 +1,6 @@
+<?php
+class UNL_UCARE_Confirmation
+{
+    public $message;
+}
+?>
\ No newline at end of file
diff --git a/src/UNL/UCARE/Controller.php b/src/UNL/UCARE/Controller.php
index 08c2ae2eb8100e86418a8cecdbf4797aa7a18d2f..5549610ded7ba8adf819f10ce7f402cc3f67a3a9 100644
--- a/src/UNL/UCARE/Controller.php
+++ b/src/UNL/UCARE/Controller.php
@@ -3,16 +3,32 @@ class UNL_UCARE_Controller
 {
     public $options = array('view' => 'year1');
     
-    protected $view_map = array('year1'=>'UNL_UCARE_Year1Application');
+    protected $view_map = array('year1'  => 'UNL_UCARE_Year1Application',
+                                'year2'  => 'UNL_UCARE_Year2Application',
+                                'thanks' => 'UNL_UCARE_Confirmation');
     
     public $actionable = array();
     
     function __construct($options)
     {
-        $this->options += $options;
+        $options += $this->options;
+        $this->options = $options;
+        if (!empty($_POST)) {
+            $this->handlePost();
+        }
         $this->run();
     }
     
+    function handlePost()
+    {
+        switch($_POST['type']) {
+            case 'year1':
+            case 'year2':
+                // save the app
+                header('Location: ?view=thanks');
+        }
+    }
+    
     function run()
     {
          if (isset($this->view_map[$this->options['view']])) {
diff --git a/www/templates/Confirmation.tpl.php b/www/templates/Confirmation.tpl.php
new file mode 100644
index 0000000000000000000000000000000000000000..bcfa2d42296732a2f6d0946d885d96c8da2cac42
--- /dev/null
+++ b/www/templates/Confirmation.tpl.php
@@ -0,0 +1,4 @@
+<h3>Thank you for submitting your UCARE application.</h3>
+
+<p>Once the faculty member has approved your application it will be reviewed.</p>
+<p>If you have any questions, contact us.</p>
\ No newline at end of file
diff --git a/www/templates/Controller.tpl.php b/www/templates/Controller.tpl.php
index 0f6b11a5af74647a51b9e854f81d412077b78969..022ddb413505436b44e1c16ea71e2025943b3ce6 100644
--- a/www/templates/Controller.tpl.php
+++ b/www/templates/Controller.tpl.php
@@ -4,5 +4,4 @@ $p = UNL_Templates::factory('Secure');
 $p->doctitle = '<title>UNL | UCARE Application</title>';
 $p->titlegraphic = '<h1>UCARE Application</h1>';
 $p->maincontentarea = UNL_UCARE_OutputController::display($this->actionable, true);
-
 echo $p;
diff --git a/www/templates/Year1Application.tpl.php b/www/templates/Year1Application.tpl.php
index b5fa873bc2fd74a18562498d0795416186197ad6..ed94605d6207d9cd255f6299650326908e198a5c 100644
--- a/www/templates/Year1Application.tpl.php
+++ b/www/templates/Year1Application.tpl.php
@@ -2,6 +2,7 @@
 WDN.loadCSS('http://www.unl.edu/ucomm/templatedependents/templatecss/components/forms.css');
 </script>
 <form action="?" method="post">
+    <input type="hidden" name="type" value="year1" />
     <fieldset>
         <legend>Sample Form Content</legend>
         <ol>