   (let [hash-fn (checked-hasher algorithm)
         content (collect-bytes source)]
     (when (pos? (count content))
-      (Block. (hash-fn (.open content)) (count content) content nil nil nil))))
+      (->Block (hash-fn (.open content)) (count content) content nil nil nil))))
 
 
 (defn clean-block
   "Creates a version of the given block without extra attributes or metadata."
   [^Block block]
-  (Block. (.id block)
-          (.size block)
-          (.content block)
-          (.reader block)
-          nil
-          nil))
+  (->Block (.id block)
+           (.size block)
+           (.content block)
+           (.reader block)
+           nil
+           nil))
 
 
 (defn merge-blocks

;; ## Constructors

;; Remove automatic constructor function.
(ns-unmap *ns* '->Block)


(defn lazy-block

  given the id and size directly, without being checked."
  ^blocks.data.Block
  [id size reader]
  (->Block id size nil reader nil nil))


(defn literal-block
