         _                (println "Message data:" (pr-str msg))
         raw-incoming     (cdc/decode (.getBytes msg) :transit)
         [event msg-data] raw-incoming
-        args             (:args msg-data)
-        ;; this will fail for e.g. (log-out!) (:args msg-data) will be nil
+        args             (or (:args msg-data) [:place-holder])
+        ;; :place-holder is to prever failure for e.g. (log-out!),
+        ;; otherwise (:args msg-data) will be nil
         rpc?             (boolean args)
         _                (println "raw-incoming ffs: " (pr-str raw-incoming))
         _                (println "\t: " (pr-str [event] :handler))

             :ss      ss
             :schema  (datomic-db->datomic-schema db)})))

(defn update-session [my-session [_ data] context]
  ;; XXX update-in is dangerous here, we're allowing any key the user
  ;; encodes in transit to be inserted here and to get broadcast out
  ;; to other users. Should apply a whitelist approach.

        _                (def -last-session session)
        _                (println "\targs: " args)
        handler          (get-in routing-table [[event] :handler] default-handler)
        ;; Temp hackishness
        handler          (if (var? handler)
                           @handler
                           handler)
        data             (if rpc?
                           {:server/rpc-id (:rpc/id msg-data)
                            :data          (apply (partial handler session all-sessions) args)}
                           (apply (partial handler session all-sessions) (or args)))
        _                (println "data: " (pr-str data))
        encoded          (cdc/encode data :transit)]
    (when data
