             remote-version (.mostRecentVersion remote-store)]
         (when (and local-version remote-version)
           (< local-version remote-version)))))
+
+;; ## Sinking and Sourcing
+;;
+;; These methods allow the user to sink and source objects from the
+;; supplied domain.
 
 ;; ## Domain Tidying
 

  (let [remote-fs     (h/filesystem hdfs-conf)
        remote-store  (DomainStore. remote-fs remote-path)
        local-store   (mk-local-store local-root remote-store)
        index (shard/generate-index hosts (-> local-store .getSpec .getNumShards))]
    (Domain. local-store
             remote-store
             (Utils/makeSerializer (.getSpec local-store))

;;
;; This is the main function used by a database to build its domain objects.

(defn local-domain
  "Returns a domain object to be used with local stores only."
  [local-root]
  (let [localhost   (u/local-hostname)
        local-store (mk-local-store local-root nil)
        index        (shard/generate-index
                      localhost (.getNumShards (.getSpec local-store)))]
    (doto (Domain. local-store
                   nil
                   (Utils/makeSerializer (.getSpec local-store))
                   nil
                   (u/mk-rw-lock)
                   localhost
                   (atom (KeywordStatus. :loading))
                   (atom {})
                   index)
      (load-version! (.mostRecentVersion local-store)))))

;; TODO: Add more keyword arguments here! This thing should degrade gracefully.
(defn build-domain
  "Constructs a domain record."
  [local-root hdfs-conf remote-path hosts replication
