             (set! (.-onmessage conn) (fn [e] 
               (.log js/console (read-string (.-data e)))
               (reset! app-state (read-string (.-data e)))))
-            (swap! socket (fn [_] conn))) ; set the socket, so that it can be used for sending things
+            (reset! socket conn)) ; set the socket, so that it can be used for sending things
         (reset! app-state res)
         (om/root app-view app-state
            {:target (. js/document (getElementById "app"))
             :shared {:tx-chan tx-pub-chan}
             :tx-listen
             (fn [tx-data root-cursor]
+                (save-state (:new-state tx-data)) ; to enable the timeline
                 (put! tx-chan [tx-data root-cursor]))}))}))
                      :sync-chan sub-chan
                      :on-error
                      (fn [err tx-data]
                        (reset! app-state (:old-state tx-data))
                        (om/set-state! owner :err-msg
                          "Ooops! Sorry something went wrong try again later."))}})

  (edn-xhr
    {:method :get
     :url "/data"
     :on-error (fn [res tx-data] (prn "Error: ")(println res))
     :on-complete
     (fn [res]
       (let [host (aget js/window "location" "hostname")
