anchor.diff:          _ ->
               {riakc_obj:get_value(Doc), RD, DocCtx}
       end.
  -
  -accept_body(RD, Ctx) ->
  -    BucketName = wrq:path_info(bucket, RD),
  -    Key = wrq:path_info(key, RD),
  -    Body = wrq:req_body(RD),
  -    %% TODO :  move etag calculation to generate_etag
  -    RD2 = wrq:set_resp_header("ETag", 
  -        "\"" ++ riak_moss:binary_to_hexlist(crypto:md5(Body)) ++ "\"", RD),
  -    case riak_moss_riakc:put_object(0, BucketName, Key, Body, dict:new()) of
  -        ok ->
  -            riak_moss_s3_response:respond(200, <<>>, RD2, Ctx);
  -        _ ->
  -            riak_moss_s3_response:respond(500, <<>>, RD2, Ctx)
  -    end.
  -    
   
   %% @doc Callback for deleting an object.
   -spec delete_resource(term(), term()) -> boolean().
  
positive.code:     %% out of the request headers
      Metadata = dict:from_list([{<<"content-type">>, CType}]),
      riak_moss_riakc:put_object(KeyID, Bucket, Key, Body, Metadata),
      {true, RD, Ctx}.
  
negative.code:             {[{"text/plain", produce_body}], RD, Ctx}
      end.
  
  -spec produce_body(term(), term()) -> {iolist()|binary(), term(), term()}.
  produce_body(RD, Ctx) ->
      DocCtx = riak_moss_wm_utils:ensure_doc(Ctx),
  