diff --git a/application/modules/auth/controllers/IndexController.php b/application/modules/auth/controllers/IndexController.php
index d383236e6646215be0cb0b3fc22c12a68b486952..d8624c791e7c4cb6fd7154844dd7af7f2330921b 100644
--- a/application/modules/auth/controllers/IndexController.php
+++ b/application/modules/auth/controllers/IndexController.php
@@ -21,7 +21,7 @@ class Auth_IndexController extends App_Controller_Action {
 		$session = new Zend_Session_Namespace(__CLASS__);
 		$baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
 		try {
-		$referer = Zend_Uri_Http::factory($_SERVER['HTTP_REFERER']);
+            $referer = Zend_Uri_Http::factory($_SERVER['HTTP_REFERER']);
 		} catch (Exception $e) {
 		}
 		if ($referer && 
@@ -39,35 +39,20 @@ class Auth_IndexController extends App_Controller_Action {
 			$session->referer = '/';
 		}
 		
-        $this->_redirect('/auth/index/validate');
-        return;
+		$this->_redirect($this->_getCasAdapter()->getLoginUrl());
 	}
 	
 	public function logoutAction()
 	{
 		Zend_Auth::getInstance()->clearIdentity();
-		$this->_redirect('/');
+		$this->_getCasAdapter()->clearIdentity();
+		$this->_redirect($this->_getCasAdapter()->getLogoutUrl());
 	}
 	
 	public function validateAction()
 	{
-		$username = $this->getRequest()->getParam('username');
-		$password = $this->getRequest()->getParam('password');
-		
 		$auth = Unl_Auth::getInstance();
-		
-		//$ldap = new Unl_Ldap('ldap://localhost:10389');
-		//$ldapAdapter = new Unl_Auth_Adapter_Ldap($ldap, $username, $password);
-		//$auth->pushAdapter($ldapAdapter);
-		
-		if ($_SERVER['HTTPS'] == 'on') {
-		    $serviceUrl = 'https://';
-		} else {
-		    $serviceUrl = 'http://';
-		}
-		$serviceUrl .= $_SERVER['SERVER_NAME'] . Zend_Controller_Front::getInstance()->getBaseUrl() . '/auth/index/validate';
-		$casAdapter = new Unl_Auth_Adapter_Cas($serviceUrl, 'https://login.unl.edu/cas', $this->_getParam('ticket'));
-		$auth->pushAdapter($casAdapter);
+		$auth->pushAdapter($this->_getCasAdapter());
 		
 		try {
 			$result = $auth->authenticate();
@@ -75,18 +60,11 @@ class Auth_IndexController extends App_Controller_Action {
 			//
 		}
 		
-		if (!$result || !$result->isValid()) {
-			$session = new Zend_Session_Namespace(__CLASS__);
-			$session->errorMessage = 'Login Failed';
-			// Don't redirect, CAS is already doing it.
-			//$this->_redirect('/auth/index');
-            $this->_disableLayoutAndView();
-			return;
-		}
-		
-		$user = Auth_UserModel::findCurrentUser();
-		if (!$user) {
-			$user = Auth_UserModel::fetchNewFromLdap($auth->getIdentity());
+		if ($result && $result->isValid()) {
+	        $user = Auth_UserModel::findCurrentUser();
+	        if (!$user) {
+	            $user = Auth_UserModel::fetchNewFromLdap($auth->getIdentity());
+	        }
 		}
 		
 		$session = new Zend_Session_Namespace(__CLASS__);
@@ -96,5 +74,20 @@ class Auth_IndexController extends App_Controller_Action {
         	$this->_redirect('/');
 		}
 	}
+	
+	/**
+	 * Sets up the CAS adapter and returns it.
+	 * @return Unl_Auth_Adapter_Cas
+	 */
+	protected function _getCasAdapter()
+	{		
+        if ($_SERVER['HTTPS'] == 'on') {
+            $serviceUrl = 'https://';
+        } else {
+            $serviceUrl = 'http://';
+        }
+        $serviceUrl .= $_SERVER['SERVER_NAME'] . Zend_Controller_Front::getInstance()->getBaseUrl() . '/auth/index/validate';
+        return new Unl_Auth_Adapter_Cas($serviceUrl, 'https://login.unl.edu/cas', $this->_getParam('ticket'));
+	}
 
 }
diff --git a/application/modules/courses/models/ApprovalActionEmailCourseInfoModel.php b/application/modules/courses/models/ApprovalActionEmailCourseInfoModel.php
index 086c795b794d88698f74dcaf6dbd59d29b58f4d8..2371e791f084346b59d22af8648acbc5884a7028 100644
--- a/application/modules/courses/models/ApprovalActionEmailCourseInfoModel.php
+++ b/application/modules/courses/models/ApprovalActionEmailCourseInfoModel.php
@@ -142,7 +142,9 @@ class Courses_ApprovalActionEmailCourseInfoModel extends Requests_ApprovalAction
         $previousRequests = Requests_RequestModel::find($previousRequestIds);
         $this->_requestPreviousRequests = new Unl_Model_Collection('Requests_RequestModel');
         foreach ($previousRequestIds as $childId => $parentId) {
-        	$this->_requestPreviousRequests[$childId] = $previousRequests[$parentId];
+        	if ($previousRequests[$parentId]) {
+                $this->_requestPreviousRequests[$childId] = $previousRequests[$parentId];
+        	}
         }
         
         $ownerIds = array();
@@ -192,6 +194,10 @@ class Courses_ApprovalActionEmailCourseInfoModel extends Requests_ApprovalAction
 	        $text = strtr($text, array(
 	            '%rse-%' => $parentOwner->getEmail() 
 	        ));
+        } else {
+            $text = strtr($text, array(
+                '%rse-%' => 'nobody@example.com' 
+            ));
         }
         
         return $text;
diff --git a/application/modules/courses/views/scripts/view/index.phtml b/application/modules/courses/views/scripts/view/index.phtml
index 4cb8420e9652fc7f8c792fa26cebab9bef5fb1da..d7744d9bf230e5e1d483bf780e496e95c4d03e84 100644
--- a/application/modules/courses/views/scripts/view/index.phtml
+++ b/application/modules/courses/views/scripts/view/index.phtml
@@ -154,6 +154,7 @@ $this->layout()->breadcrumbs = array($breadcrumb . ': ' . $this->course->getCour
     
     <?php if ($this->action) { ?>
     <form id="decisionForm" action="<?php echo $this->baseUrl(); ?>/requests/index/decide.post">
+        <?php echo $this->formHidden('xsrfToken', Unl_XsrfToken::getInstance()->create()); ?>
         Action: <?php echo $this->action->getName(); ?><br />
         <?php echo $this->formHidden('returnUrl', '/courses/view/index/id/' . $this->request->getId()); ?>
         <?php echo $this->formSelect('decisions[' . $this->request->getId() . ']', $this->selectedDecision, null, array('_null' => $this->defaultDecision) + $this->action->getResultStatusStrings($this->user)); ?>
diff --git a/application/modules/default/views/scripts/layout.phtml b/application/modules/default/views/scripts/layout.phtml
index 2769a5cf223d1e446b6a170d24a57941fefe74ed..7df5e3b3e703d9d6a96bc501ca26997ba9be9d03 100644
--- a/application/modules/default/views/scripts/layout.phtml
+++ b/application/modules/default/views/scripts/layout.phtml
@@ -1,5 +1,7 @@
 <?php
 
+$baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
+
 $staticBaseUrl = '';
 if ($_SERVER['HTTPS']) {
     $staticBaseUrl = 'https://';
@@ -7,7 +9,7 @@ if ($_SERVER['HTTPS']) {
     $staticBaseUrl = 'http://';
 }
 $staticBaseUrl .= $_SERVER['HTTP_HOST']
-                . Zend_Controller_Front::getInstance()->getBaseUrl();
+                . $baseUrl;
 
 $this->headLink()->appendStylesheet($this->baseUrl() . '/css/index.css', 'all');
 $this->headLink()->appendStylesheet($this->baseUrl() . '/css/print.css', 'print');
@@ -100,6 +102,8 @@ try {
 	pageTracker._initData();
     pageTracker._trackPageview();
 } catch(err) {}
+
+WDN.idm.setLogoutURL('$baseUrl/auth/index/logout');
 </script>
 EOF;
 
diff --git a/application/modules/ping/controllers/IndexController.php b/application/modules/ping/controllers/IndexController.php
new file mode 100644
index 0000000000000000000000000000000000000000..de6bd0ff3945b640e749605615885732de51354e
--- /dev/null
+++ b/application/modules/ping/controllers/IndexController.php
@@ -0,0 +1,11 @@
+<?php
+
+class Ping_IndexController extends Unl_Controller_Action
+{
+	public function indexAction()
+	{
+		$this->getResponse()->setHeader('Content-type', 'text/plain');
+		$this->_disableLayoutAndView();
+		echo 'pong';
+	}
+}
diff --git a/application/modules/requests/controllers/IndexController.php b/application/modules/requests/controllers/IndexController.php
index 97adc9047ab96e2f19cde3a242889a4dcc7eb7cb..b67d5d06a11d45dd880900abdacfdc5ffcbc38ce 100644
--- a/application/modules/requests/controllers/IndexController.php
+++ b/application/modules/requests/controllers/IndexController.php
@@ -239,11 +239,17 @@ class Requests_IndexController extends App_Controller_Action
 				}
             }
 		}
+		
+		$this->view->xsrfToken = Unl_XsrfToken::getInstance()->create();
 	}
 
 	public function decidePostAction()
 	{
 	    $in = $this->getRequest()->getParams();
+	    
+	    if (!Unl_XsrfToken::getInstance()->verify($in['xsrfToken'])) {
+	    	throw new Zend_Exception('Invalid XSRF Token! Please go back click the Refresh button while holding Shift.');
+	    }
 
 	    $requestDecisions = array();
 	    foreach ($in['decisions'] as $requestId => $decision) {
diff --git a/application/modules/requests/views/scripts/index/index.phtml b/application/modules/requests/views/scripts/index/index.phtml
index a38e2504c0be7c187f9445dea8edd3d76bd43416..7a56ca934942d9f809df16c9ad18779ca4c256f8 100644
--- a/application/modules/requests/views/scripts/index/index.phtml
+++ b/application/modules/requests/views/scripts/index/index.phtml
@@ -110,6 +110,7 @@
     </div>
     <div class="content">
     <form action="<?php echo $this->baseUrl(); ?>/requests/index/decide.post" method="post">
+        <?php echo $this->formHidden('xsrfToken', $this->xsrfToken); ?>
         <?php if(count($this->userRequests) == 0) { ?>
         <h2>You currently have no requests.</h2>
         <?php } else { ?>
@@ -269,6 +270,7 @@ foreach($this->roles as $roleData) {
         	<?php } ?>
 
         <form action="<?php echo $this->baseUrl(); ?>/requests/index/decide.post" method="post">
+            <?php echo $this->formHidden('xsrfToken', $this->xsrfToken); ?>
             <div class="setAllDecisions">
                 <?php echo $this->formSubmit('submit', 'Submit Decisions'); ?>
             </div>
diff --git a/application/modules/ucc/controllers/ReportsController.php b/application/modules/ucc/controllers/ReportsController.php
index 4ee4c0d59ae7bb06d2758a272bef4b21d85d7034..217e2e566de363f5e3c9d2c5c8242eccbae80e6a 100644
--- a/application/modules/ucc/controllers/ReportsController.php
+++ b/application/modules/ucc/controllers/ReportsController.php
@@ -17,8 +17,8 @@ class Ucc_ReportsController extends App_Controller_Action
         if (!$year && !$month) {
             $startDate = new Zend_Date();
             $startDate->setYear(2008);
-            $startDate->setMonth(9);
             $startDate->setDay(15);
+            $startDate->setMonth(9);
             $startDate->setHour(0);
             $startDate->setMinute(0);
             $startDate->setSecond(0);
@@ -33,9 +33,9 @@ class Ucc_ReportsController extends App_Controller_Action
         }
         
         $startDate = new Zend_Date();
+        $startDate->setDay(1);
         $startDate->setYear($year);
         $startDate->setMonth($month);
-        $startDate->setDay(1);
         $startDate->setHour(0);
         $startDate->setMinute(0);
         $startDate->setSecond(0);
@@ -56,8 +56,8 @@ class Ucc_ReportsController extends App_Controller_Action
 		
 		$startDate = new Zend_Date();
 		$startDate->setYear($year);
-		$startDate->setMonth(1);
 		$startDate->setDay(1);
+        $startDate->setMonth(1);
 		$startDate->setHour(0);
 		$startDate->setMinute(0);
 		$startDate->setSecond(0);