diff --git a/application/controllers/RequestController.php b/application/controllers/RequestController.php
index 821a3b072e1ddc37a8698304c5863056911af086..4c8c3652068311695c575190589a8ee9971bf901 100755
--- a/application/controllers/RequestController.php
+++ b/application/controllers/RequestController.php
@@ -166,7 +166,7 @@ class RequestController extends Nmc_Controller_Action
         RequestViewTimes::getInstance()->setViewTimeForUserAndRequest($user, $request, $time);
 
         $view = new Application_View();
-        $view->page = 'viewRequest';
+        $view->page = 'request/view';
         $view->request = $request;
         $view->currentGeneration = $currentGeneration;
         $view->proposedGeneration = $proposedGeneration;
@@ -434,12 +434,24 @@ class RequestController extends Nmc_Controller_Action
             }
         }
 
-        if($submit == 'Submit') {
-            return $this->_submitRequestAction();
-        } else if ($submit == 'SaveforLaterSubmission') {
-            return $this->_saveUnfinishedRequest();
-        } else if ($submit == 'CancelRequest') {
-            return $this->_cancelRequest();
+        switch ($submit) {
+            case 'Submit':
+            case 'SaveChanges':
+                return $this->_submitRequestAction();
+                break;
+
+            case 'SaveforLaterSubmission':
+                return $this->_saveUnfinishedRequest();
+                break;
+
+            case 'Cancel':
+            case 'CancelRequest':
+            case 'AbandonChanges':
+                return $this->_cancelRequest();
+                break;
+
+            default:
+                break;
         }
 
         $out = new Application_View();
@@ -450,7 +462,6 @@ class RequestController extends Nmc_Controller_Action
                                   'NotesDescription',
                                   'GraduateTieIn',
                                   'SupportiveMaterial',
-                                  //'AdditionalInformation',
                                   'SubmitRequest');
 
         $currentForm = $_SERVER['HTTP_REFERER'];
@@ -459,19 +470,24 @@ class RequestController extends Nmc_Controller_Action
             array_pop($currentForm);
         }
         $currentForm = array_pop($currentForm);
-        $currentForm = array_search(strtolower($currentForm),
-                                    array_map("strtolower", $requestFormOrder));
-        if($currentForm === false) {
-            $nextForm = $requestFormOrder[count($requestFormOrder) - 1];
-        } else if($currentForm < count($requestFormOrder) - 1) {
-            $nextForm = $requestFormOrder[$currentForm + 1];
+
+        $currentFormIndex = array_search(strtolower($currentForm),
+                                         array_map("strtolower", $requestFormOrder));
+        if($currentFormIndex === false) {
+            if (strtolower($currentForm) == 'edit') {
+                $nextForm = 'Preview';
+            } else {
+                $nextForm = $requestFormOrder[count($requestFormOrder) - 1];
+            }
+        } else if($currentFormIndex < count($requestFormOrder) - 1) {
+            $nextForm = $requestFormOrder[$currentFormIndex + 1];
         } else {
-            $nextForm = $requestFormOrder[$currentForm];
+            $nextForm = $requestFormOrder[$currentFormIndex];
         }
-        if($currentForm > 0) {
-            $prevForm = $requestFormOrder[$currentForm - 1];
+        if($currentFormIndex > 0) {
+            $prevForm = $requestFormOrder[$currentFormIndex - 1];
         } else {
-            $prevForm = $requestFormOrder[$currentForm];
+            $prevForm = $requestFormOrder[$currentFormIndex];
         }
 
         if (in_array($submit, $requestFormOrder)) {
@@ -724,6 +740,39 @@ class RequestController extends Nmc_Controller_Action
         $out->setBody($view->render('unlModernWrapper.xhtml'));
     }
 
+    public function previewAction()
+    {
+
+        $course = Nmc_Registry_Session::getInstance()->course;
+        $request = Nmc_Registry_Session::getInstance()->request;
+
+        $proposedGeneration = $course;
+        $currentGeneration = $proposedGeneration;
+        while ($currentGeneration && $currentGeneration->type != 'official') {
+            $currentGeneration = $currentGeneration->getParentGeneration();
+        }
+
+        $out = new Application_View();
+        //$out->addSidebarModule('requestProgress');
+        $out->addSidebarModule('bulletinPreview');
+        $out->course = $course;
+        $out->request = $request;
+        $out->currentGeneration = $currentGeneration;
+        $out->proposedGeneration = $proposedGeneration;
+        $out->page = 'request/view';
+        $out->tagline = 'Preview Request';
+        $out->addCssFile('/ooss/request/submit');
+
+        $out->preview = true;
+        if ($request->getPrimaryKey() > 0) {
+            $out->initialRequest = false;
+        } else {
+            $out->initialRequest = true;
+        }
+
+        echo $out->render('unlModernWrapper.xhtml');
+    }
+
     protected function _submitRequestAction()
     {
         try {
diff --git a/application/views/request/fullEdit.xhtml b/application/views/request/fullEdit.xhtml
index 5ee7f3b08b155707d1e87249ad9fd03ea210968a..d65bb4b8597ce18b12e3cd0cd721e901b161b7a6 100644
--- a/application/views/request/fullEdit.xhtml
+++ b/application/views/request/fullEdit.xhtml
@@ -654,6 +654,7 @@
 
 
 
-<input type="submit" value="Update Course" />
+<input type="submit" value="Preview" />
+<input id="cancel_request" type="submit" name="submitType" value="Cancel" />
 
 </form>
\ No newline at end of file
diff --git a/application/views/viewRequest.xhtml b/application/views/request/view.xhtml
similarity index 83%
rename from application/views/viewRequest.xhtml
rename to application/views/request/view.xhtml
index 11cf38888508b2035fc09b967bab187bd1eab120..0c2bb23dcf16e0f65b0318a8748c45498c56d6c2 100644
--- a/application/views/viewRequest.xhtml
+++ b/application/views/request/view.xhtml
@@ -75,6 +75,19 @@
     </div>
     <?php } ?>
 
+    <?php if ($this->preview) { ?>
+    <form method="post" action="/Request/Update">
+        <?php if ($this->initialRequest) { ?>
+        <input id="submit_request" type="submit" name="submitType" value="Submit" />
+        <input id="save_request" type="submit" name="submitType" value="Save for Later Submission" />
+        <input id="cancel_request" type="submit" name="submitType" value="Cancel Request" />
+        <?php } else { ?>
+        <input id="submit_request" type="submit" name="submitType" value="Save Changes" />
+        <input id="cancel_request" type="submit" name="submitType" value="Abandon Changes" />
+        <?php } ?>
+    </form>
+    <?php } else { ?>
+
     <div id="comments">
         <div class="tabBar">
             <a href="#" id="commentsTab">Comments</a>
@@ -107,6 +120,7 @@
             EDITOR COMMENTS!
         </div>
     </div>
+    <?php } ?>
 
     <div class="clear"></div>
 </div>
diff --git a/document_root/css/viewrequest.oss b/document_root/css/request/view.oss
similarity index 100%
rename from document_root/css/viewrequest.oss
rename to document_root/css/request/view.oss
diff --git a/document_root/javascript/viewRequest.js b/document_root/javascript/request/view.js
similarity index 100%
rename from document_root/javascript/viewRequest.js
rename to document_root/javascript/request/view.js