anchor.diff:  
   %% API
   -export([start_link/5,
  -         prepare/2,
  -         deleting/2]).
  +         block_deleted/2]).
   
   %% gen_fsm callbacks
   -export([init/1,
  +         prepare/2,
  +         deleting/2,
            handle_event/3,
            handle_sync_event/4,
            handle_info/3,
  
positive.code:     State#state{unacked_deletes=NewUnackedDeletes,
                  delete_blocks_remaining=NewDeleteBlocksRemaining}.
  
  finish(_State) ->
      ok.
  
  %% ===================================================================
  %% Test API
  
negative.code:     Args = [Bucket, Key, UUID, RiakcPid, Options],
      gen_fsm:start_link(?MODULE, Args, []).
  
  block_deleted(Pid, BlockID) ->
      gen_fsm:send_event(Pid, {block_deleted, BlockID, self()}).
  
  %% ====================================================================
  %% gen_fsm callbacks
  %% ====================================================================
  
  init([Bucket, Key, UUID, RiakcPid, _Options]) ->
      %% TODO:
      %% gproc register
      %% or fail
      {ok, prepare, #state{bucket=Bucket,
                           key=Key,
                           uuid=UUID,
                           riakc_pid=RiakcPid},
                       0}.
  
  prepare(timeout, State=#state{bucket=Bucket,
                                key=Key,
                                uuid=UUID,
                                riakc_pid=RiakcPid}) ->
  
      ManiPid = riak_moss_manifest_fsm:start_link(Bucket, Key, RiakcPid),
  
      %% TODO:
      %% handle the case where the manifest
      %% is not found
      {ok, Manifest} = riak_moss_manifest_fsm:get_specific_manifest(UUID),
  
      %% Based on the manifest,
      %% fill in the delete_blocks_remaining
      {NewManifest, BlocksToDelete} = blocks_to_delete_from_manifest(Manifest),
  
      %% TODO:
      %% launch the delete workers
      AllDeleteWorkers = [],
  
      %% start the save_manifest
      %% timer
      %% TODO:
      %% this time probably
      %% shouldn't be hardcoded,
      %% and if it is, what should
      %% it be?
      {ok, TRef} = timer:send_interval(60000, self(), save_manifest),
  
      {next_state, deleting, State#state{mani_pid=ManiPid,
                                         manifest=NewManifest,
                                         all_delete_works=AllDeleteWorkers,
                                         delete_blocks_remaining=BlocksToDelete,
                                         timer_ref=TRef}}.
  
  deleting({block_deleted, BlockID, DeleterPid},
      State=#state{manifest=Manifest,
                   free_deleters=FreeDeleters,
                   unacked_deletes=UnackedDeletes}) ->
  
      NewFreeDeleters = ordsets:add_element(DeleterPid, FreeDeleters),
      NewUnackedDeletes = ordsets:del_element(BlockID, UnackedDeletes),
  
      NewManifest = riak_moss_lfs_utils:remove_write_block(Manifest, BlockID),
  
      State2 = State#state{free_deleters=NewFreeDeleters,
                           unacked_deletes=NewUnackedDeletes,
                           manifest=NewManifest},
  
      if
          NewManifest#lfs_manifest_v2.state == deleted ->
              State3 = finish(State2),
              {stop, normal, State3};
          true ->
  