        (fn [{:keys [new-thread-args
                     threads-opts]
              :or {threads-opts {}}}]
-         [:div.threads threads-opts
+         [:div.threads
+          (merge threads-opts
+                 {:on-wheel scroll-horizontally})
 
           (when new-thread-args
             [new-thread-view new-thread-args])

                                         to-remove (difference old-thread-ids new-thread-ids)
                                         to-add (difference new-thread-ids old-thread-ids)]
                                     (vec (concat (remove (fn [t] (contains? to-remove (t :id))) old-threads)
                                                  (filter (fn [t] (contains? to-add (t :id))) new-threads)))))))]
    (r/create-class
      {:display-name "threads-view"

       :component-did-mount
       (fn [this]
         (reset-threads! (props :threads)))

       :component-will-receive-props
       (fn [this [_ next-props]]

            [braid.client.ui.views.thread :refer [thread-view]]
            [braid.client.ui.views.new-thread :refer [new-thread-view]]))

(defn threads-view
  [props]
  (let [threads (r/atom [])
        this-elt (r/atom nil)
        reset-threads! (fn [new-threads]
                         (reset! threads (vec new-threads)))
        update-threads! (fn [new-threads]
