diff --git a/include/class.thread.php b/include/class.thread.php
index 29e1b1d574c44e79bc8c1045b3fbf021fc58f3c4..a1a79e3916ccdea3a16c51adc9ed4b1afdd92a77 100644
--- a/include/class.thread.php
+++ b/include/class.thread.php
@@ -215,6 +215,19 @@ class Thread {
                 && $thread->getId()
                 )?$thread:null;
     }
+
+    function getVar($name) {
+        switch ($name) {
+        case 'original':
+            return Message::firstByTicketId($this->ticket->getId())
+                ->getBody();
+            break;
+        case 'last_message':
+        case 'lastmessage':
+            return $this->ticket->getLastMessage()->getBody();
+            break;
+        }
+    }
 }
 
 
@@ -806,10 +819,18 @@ class Message extends ThreadEntry {
     }
 
     function lastByTicketId($ticketId) {
+        return self::byTicketId($ticketId);
+    }
+
+    function firstByTicketId($ticketId) {
+        return self::byTicketId($ticketId, false);
+    }
+
+    function byTicketId($ticketId, $last=true) {
 
         $sql=' SELECT thread.id FROM '.TICKET_THREAD_TABLE.' thread '
             .' WHERE thread_type=\'M\' AND thread.ticket_id = '.db_input($ticketId)
-            .' ORDER BY thread.id DESC LIMIT 1';
+            .sprintf(' ORDER BY thread.id %s LIMIT 1', $last ? 'DESC' : 'ASC');
 
         if (($res = db_query($sql)) && ($id = db_result($res)))
             return Message::lookup($id);
diff --git a/include/class.ticket.php b/include/class.ticket.php
index 247d869db5d439c311a3a4dee3ff9904ec60ea00..c3eb29d8db0708ab626b225a3d75318a6f33fe72 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -1293,8 +1293,9 @@ class Ticket {
         //Strip quoted reply...on emailed replies
         if(!strcasecmp($origin, 'Email')
                 && $cfg->stripQuotedReply()
-                && ($tag=$cfg->getReplySeparator()) && strpos($vars['message'], $tag))
-            if(list($msg) = split($tag, $vars['message']))
+                && ($tag=$cfg->getReplySeparator())
+                && strpos($vars['message'], $tag))
+            if((list($msg) = explode($tag, $vars['message'], 2)) && trim($msg))
                 $vars['message'] = $msg;
 
         if(isset($vars['ip']))
diff --git a/include/client/faq-category.inc.php b/include/client/faq-category.inc.php
index 50a51782f214b8fc28b78f54afdd005c3f1a71df..32b4a9c63c3bb16a3c973d469b5975aa3f6ea5d5 100644
--- a/include/client/faq-category.inc.php
+++ b/include/client/faq-category.inc.php
@@ -11,7 +11,8 @@ $sql='SELECT faq.faq_id, question, count(attach.file_id) as attachments '
     .' FROM '.FAQ_TABLE.' faq '
     .' LEFT JOIN '.FAQ_ATTACHMENT_TABLE.' attach ON(attach.faq_id=faq.faq_id) '
     .' WHERE faq.ispublished=1 AND faq.category_id='.db_input($category->getId())
-    .' GROUP BY faq.faq_id';
+    .' GROUP BY faq.faq_id '
+    .' ORDER BY question';
 if(($res=db_query($sql)) && db_num_rows($res)) {
     echo '
          <h2>Frequently Asked Questions</h2>
diff --git a/include/client/knowledgebase.inc.php b/include/client/knowledgebase.inc.php
index 1d00ca59ca9ca0b5e6e42724986b61ccef4090fc..79bfa6836857a8b3123d030d8dbfd34c34e2da8a 100644
--- a/include/client/knowledgebase.inc.php
+++ b/include/client/knowledgebase.inc.php
@@ -78,7 +78,7 @@ if($_REQUEST['q'] || $_REQUEST['cid'] || $_REQUEST['topicId']) { //Search.
                  )";
     }
 
-    $sql.=' GROUP BY faq.faq_id';
+    $sql.=' GROUP BY faq.faq_id ORDER BY question';
     echo "<div><strong>Search Results</strong></div><div class='clear'></div>";
     if(($res=db_query($sql)) && ($num=db_num_rows($res))) {
         echo '<div id="faq">'.$num.' FAQs matched your search criteria.
diff --git a/include/staff/faq-categories.inc.php b/include/staff/faq-categories.inc.php
index 89c2e95d16882d3cd8e82aabef5e64b212e0fd0f..4d05df1be7d4e41170e81250814860b2aa5984c8 100644
--- a/include/staff/faq-categories.inc.php
+++ b/include/staff/faq-categories.inc.php
@@ -76,7 +76,7 @@ if($_REQUEST['q'] || $_REQUEST['cid'] || $_REQUEST['topicId']) { //Search.
                  )";
     }
 
-    $sql.=' GROUP BY faq.faq_id';
+    $sql.=' GROUP BY faq.faq_id ORDER BY question';
 
     echo "<div><strong>Search Results</strong></div><div class='clear'></div>";
     if(($res=db_query($sql)) && db_num_rows($res)) {
diff --git a/include/staff/faq-category.inc.php b/include/staff/faq-category.inc.php
index f12ed8ae8f3d4c90b0245235525ce4160b6cd836..5f22cb6f89e5b063d3b2a3877226ab2b3de900a0 100644
--- a/include/staff/faq-category.inc.php
+++ b/include/staff/faq-category.inc.php
@@ -33,7 +33,7 @@ $sql='SELECT faq.faq_id, question, ispublished, count(attach.file_id) as attachm
     .' FROM '.FAQ_TABLE.' faq '
     .' LEFT JOIN '.FAQ_ATTACHMENT_TABLE.' attach ON(attach.faq_id=faq.faq_id) '
     .' WHERE faq.category_id='.db_input($category->getId())
-    .' GROUP BY faq.faq_id';
+    .' GROUP BY faq.faq_id ORDER BY question';
 if(($res=db_query($sql)) && db_num_rows($res)) {
     echo '<div id="faq">
             <ol>';