     (update-state! message state-ref)
     (if (and (not (= nick (:name @irc))) (.contains message (:name @irc)))
         (send-message irc channel
-            (join " " (generate-sentence
+            (join (take 450 (join " " (generate-sentence
                 @state-ref
-                (let [keywords (set (remove #(.contains % (:name @irc)) (split-sentence-to-words message)))]
-                    (if (<= (count keywords) 3) keywords #{}))))))
+                (set (remove #(.contains % (:name @irc)) (split-sentence-to-words message)))))))))
     (if (.startsWith message "!burrito")
         (send-message irc channel
             (generate-burrito)))

(def empty-state {
    :forwardtable {}
    :backwardtable {}
    :n-grams []
})



            (reverse (take 500 (stream-of-shite (reverse seed) backward))))
        (take 500 (stream-of-shite seed forward))))

(defn extend-vec [v e n] (vec (concat v (take (- n (count v)) (repeat e)))))
(defn append-null [s] (join (concat (seq s) [(char 0)])))

(defn generate-sentence [state keywords]
    {
        :pre [(or (empty? keywords) (sorted? (:n-grams state)))]
    }
    (if (empty? keywords)
        (remove keyword? (map first
            (apply max-key #(count (filter true? (map second %)))
