diff --git a/bueditor.js b/bueditor.js
old mode 100644
new mode 100755
index 89c877e..d1a3a0d
--- a/bueditor.js
+++ b/bueditor.js
@@ -2,8 +2,20 @@
 
 var BUE = window.BUE = window.BUE || {preset: {}, templates: {}, instances: [], preprocess: {}, postprocess: {}};
 
+// Set behaviors that must run before BUE.
+var runBefore = {
+  textarea: Drupal.behaviors.textarea || null,
+  teaser  : Drupal.behaviors.teaser || null
+};
+
 // Get editor settings from Drupal.settings and process preset textareas.
 Drupal.behaviors.BUE = function(context) {
+  // Check for any necessary behaviors that haven't run yet and execute them.
+  for (var i in runBefore) {
+    if (!runBefore[i]) {
+      Drupal.behaviors[i].apply(this, arguments);
+    }
+  }
   var set = Drupal.settings.BUE, tpls = BUE.templates, pset = BUE.preset;
   if (set) {
     $.each(set.templates, function (id, tpl) {
@@ -20,22 +32,6 @@ Drupal.behaviors.BUE = function(context) {
   $('input:text', context).bind('keydown.bue', BUE.eFixEnter);
 };
 
-// Make sure BUE behavior runs after textarea behavior
-if (!Drupal.behaviors.textarea) {
-  var bFunc = Drupal.behaviors.BUE;
-  Drupal.behaviors.BUE = function() {
-    var tFunc = Drupal.behaviors.textarea;
-    if (tFunc) {
-      Drupal.behaviors.textarea = function() {
-        tFunc.apply(this, arguments);
-        bFunc.apply(this, arguments);
-      };
-      Drupal.behaviors.BUE = function(){};
-    }
-    else bFunc.apply(this, arguments);
-  };
-}
-
 // Integrate editor template into textarea T
 BUE.processTextarea = function (T, tplid) {
   if (!T || !BUE.templates[tplid] || !(T = $(T).filter('textarea')[0])) return false;
