diff --git a/include/class.thread.php b/include/class.thread.php
index 63d8fb6f12eedeea4f6667e04ffe4a0207d8c940..8a7e1f744576f849ac24a7f5f3e9ecbe84873a5c 100644
--- a/include/class.thread.php
+++ b/include/class.thread.php
@@ -171,7 +171,7 @@ class Thread extends VerySimpleModel {
             $vars['origin'] = 'Email';
 
             if ($object instanceof Threadable)
-                return $object->postMessage($vars, $vars['origin']);
+                return $object->postThreadEntry('M', $vars);
             elseif ($this instanceof ObjectThread)
                 $this->addMessage($vars, $errors);
             else
@@ -185,7 +185,7 @@ class Thread extends VerySimpleModel {
             $vars['note'] = $body;
 
             if ($object instanceof Threadable)
-                return $object->postNote($vars, $errors);
+                return $object->postThreadEntry('N', $vars);
             elseif ($this instanceof ObjectThread)
                 return $this->addNote($vars, $errors);
             else
@@ -202,7 +202,7 @@ class Thread extends VerySimpleModel {
                 $vars['note'] = $body;
                 $vars['poster'] = $poster;
                 if ($object instanceof Threadable)
-                    return $object->postNote($vars, $errors);
+                    return $object->postThreadEntry('N', $vars);
                 elseif ($this instanceof ObjectThread)
                     return $this->addNote($vars, $errors);
                 else
@@ -219,7 +219,7 @@ class Thread extends VerySimpleModel {
             $vars['userId'] = 0; //Unknown user! //XXX: Assume ticket owner?
             $vars['origin'] = 'Email';
             if ($object instanceof Threadable)
-                return $object->postMessage($vars, $errors);
+                return $object->postThreadEntry('M', $vars);
             elseif ($this instanceof ObjectThread)
                 return $this->addMessage($vars, $errors);
             else
@@ -1611,10 +1611,6 @@ abstract class ThreadEntryAction {
 }
 
 interface Threadable {
-    /*
-    function postMessage($vars, $errors);
-    function postNote($vars, $errors);
-    function postReply($vars, $errors);
-    */
+    function postThreadEntry($type, $vars);
 }
 ?>
diff --git a/include/class.ticket.php b/include/class.ticket.php
index 626e2265fe4ce55e7db98168cd04221f1581e573..2225baada592ddee78c26d7682481bc38dad3b9a 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -2319,6 +2319,18 @@ implements RestrictedAccess, Threadable {
         return $note;
     }
 
+    // Threadable interface
+    function postThreadEntry($type, $vars) {
+        switch ($type) {
+        case 'M':
+            return $this->postMessage($vars, $vars['origin']);
+        case 'N':
+            return $this->postNote($vars);
+        case 'R':
+            return $this->postReply($vars);
+        }
+    }
+
     //Print ticket... export the ticket thread as PDF.
     function pdfExport($psize='Letter', $notes=false) {
         global $thisstaff;