     om/IInitState
     (init-state [_]
       {:text ""
+       :force-close? false
        :highlighted-result-index -1})
     om/IRenderState
-    (render-state [_ {:keys [text highlighted-result-index] :as state}]
-      (let [clear-tags! (fn []
-                          (om/set-state! owner :text (string/replace text #"( *#\S*)" "")))
-            constrain (fn [x a z]
+    (render-state [_ {:keys [text force-close? highlighted-result-index] :as state}]
+      (let [constrain (fn [x a z]
                         (cond
                           (> x z) z
                           (< x a) a

              (om/set-state! owner :text ""))
            close-autocomplete!
            (fn []
              (clear-tags!)
              (highlight-clear!))
            autocomplete-open? (not (nil? results))]
          (dom/div #js {:className "message new"}
            (dom/textarea #js {:placeholder (config :placeholder)
                               :value (state :text)
                               :onChange (fn [e]
                                           (om/set-state! owner :text (.. e -target -value)))
                               :onKeyDown
                               (fn [e]
                                 (condp = e.keyCode

                                                      (when (= i highlighted-result-index) "highlight"))
                                      :style #js {:cursor "pointer"}
                                      :onClick (fn []
                                                 (choose-result! result))}
                          ((result :html))))
                      results))
                  (dom/div #js {:className "result"}
