           (let [old-bin (car/wcar conn (car/parse-raw (car/get id)))
                 old (when old-bin
                       (let [bais (ByteArrayInputStream. (car/wcar conn (car/parse-raw (car/get id))))]
-                        ;; drop carmine header of 2 bytes
-                        (.read bais)
-                        (.read bais)
                         (second (-deserialize serializer write-handlers bais))))
                 new (if (empty? rkey)
                       (up-fn old)

        (go nil)
        (let [res-ch (chan)]
          (try
            #_(println (map byte (car/wcar conn (car/parse-raw (car/get id)))))
            #_(println (-deserialize serializer read-handlers
                                   (ByteArrayInputStream. (byte-array (drop 2 (car/wcar conn (car/parse-raw (car/get id))))))))
            (let [bais (ByteArrayInputStream. (car/wcar conn (car/parse-raw (car/get id))))]
              ;; drop carmine header of 2 bytes
              (.read bais)
              (.read bais)
              (put! res-ch
                    (get-in
                     (second (-deserialize serializer read-handlers bais))

    (let [id (uuid key)]
      (go
        (try
          (car/wcar conn (car/set id (car/raw input)))
          nil
          (catch Exception e
            (ex-info "Could not write key."
                     {:type :write-error
