         @_save _
 
     markFailed: (_) ->
+        @_data.active = false
+        # let `activeAt` remain where it was, for debugging
+        @_data.finishedAt = new Date().toISOString()
         @_data.ready = false
         @_data.failed = true
-        # let `progress` remain where it was
-        delete @_data.dzi
+        # let `progress` remain where it was, for debugging
+        # let `dzi` remain where it was, for debugging
         @_save _
+
+    # TODO:
+    # - markProgress
+    # - others?
 
     _save: (_) ->
         # TODO: Can we have saves be precise and isolated?

        clone[prop] = val for prop, val of raw
        clone

    ## Instance methods:

    toJSON: ->
        # The native JSON.stringify doesn't pick up property getters on our
        # *prototype*, which is where they're defined.

            # note that our URL files are symlinks to the ID files, and
            # node's FS.readFile() follows symlinks natively. sweet!
            if json = readFile (getFilePathForURL url), _
                enqueueIfNeeded _, new Content JSON.parse json
            else
                null

