                               (and number-cruncher? (is-factorial? input))            (print-factorial input)
                               (and s-expressions?   (is-s-expression? input))         (s-expression input)
                               (congrats? input)                                       (congratulate input)
+                              (happy-birthday? input)                                 (happy-birthday input)
                               (is-word-from-known-responses? input) (return-known-response input)
                               (is-word-from-dictionary? input) (return-words-from-dictionary input)
                               (one-word-like-this? input)      (return-word-like-this input)

            (log/error e "dictionary-status")
            "Can not access database")))

(defn congrats?
    [input]
    (re-matches #"congrats [a-zA-Z0-9]+" input))

(defn congratulate-to
    [name]
    (let [message (rand-nth @congrat-messages)]
       (format message name)))

(defn congratulate
    [input]
    (let [name (second (re-matches #"congrats ([a-zA-Z0-9]+)" input))]
        (congratulate-to name)))

(defn prepare-reply-text
    [incomming-message nick input-text]

     " " (rand-nth @adjectives)
     " " (rand-nth @nouns)))

(defn say-quote
    [quotes]
    (rand-nth @quotes))

(defn primefactors 
    ([n] 
        (primefactors n 2 '()))
