          '[:limit :header :parser-state
            (:packets/packet {:idx ?selected-idx})
            (:packets/slice {:offset ?offset :limit 40})
+           (:packets/repl-output {:repl-input ?repl-input})
            :packets/count
            (:repl/output {:repl/input ?repl-input})
            :file/results

          (fn [result] (:value result)))))

(defmethod read "repl"
  [{:keys [state ast] :as env} k {:keys [:repl/input] :as data}]
  (case k
    :repl/output
    (let [old-value (get @state k "Loading...")]
      {:value (read-expr input)})))

(defmethod read "packets"
  [{:keys [state ast] :as env} k {:keys [idx offset limit]}]
  (case k
    :packets/packet
    {:value (when idx (nth (get @state :packets) idx))}

    :packets/count
    {:value (-> @state :packets count)}

    :packets/slice
    (let [packets (get @state :packets)]

          props (om/props this)
          {:keys [header limit results parser-state
                  repl/output
                  packets/packet
                  packets/repl-output]} props

          packets-count (:packets/count props)
          packets (:packets/slice props)]
