              :id "upload-file"}]]])
 
 (defn set-upload-indicator []
-  (session/put! :upload-status [:div 
-                                [:h4 "Upload In Progress"]
-                                [:p [:span.fa.fa-spinner.fa-spin.fa-pulse.fa-4x]]
-                                [:p]]))
+  (let [class "fa fa-spinner fa-spin fa-pulse"]
+    (session/put! :upload-status [:div 
+                                  [:p "Uploading file... "
+                                   [:span {:class class}]]])))
 
 (defn into-list [items]
   (into [:ul]

        iframe (IframeIo.)]
    (events/listen iframe goog.net.EventType.COMPLETE
                   (fn [event]
                     (handle-iframe-response (.getResponseJson iframe))
                     (.dispose iframe)))
    (set-upload-indicator)


;;; goog.net.IFrameIO routines
(defn iframe-response-ok [msg]
  (let [status (set-status "alert alert-success"
                           "Upload Successful"
                           [(str "Filename: " (:filename msg))
                            (str "Size: " (:size msg))
                            (str "Tempfile: " (:tempfile msg))])]
    (session/put! :upload-status status)))

(defn iframe-response-error [msg]
  (let [status (set-status "alert alert-danger"
                           "Upload Failure"
                           [(str "Status: " (:status msg))
                            (str (:message msg))])]
    (session/put! :upload-status status)))

(defn handle-iframe-response [json-msg]
  (let [msg (js->clj json-msg :keywordize-keys true)]
