anchor.diff:                     raw_path= <<"/",Path/binary>>,
                      transport=Transport,
                      socket=Socket}=Rq,
  -         #req_state{dir=Dir}=St) ->
  -    case ?BACKEND:obj_meta(Dir, Bucket, Path) of
  +         St) ->
  +    case bookshelf_store:obj_meta(Bucket, Path) of
           {ok, #object{size=Size}} ->
               SFun = fun() ->
  -                           case ?BACKEND:obj_send(Dir, Bucket, Path,
  -                                                  Transport, Socket) of
  +                           Bridge = bkss_transport:new(bksw_socket_transport,
  +                                                       [Transport, Socket,
  +                                                        ?TIMEOUT_MS]),
  +                           case bookshelf_store:obj_send(Bucket, Path, Bridge) of
                                  {ok, Size} -> sent;
                                  _          -> {error, "Download unsuccessful"}
                              end
  
positive.code: %% permissions and limitations under the License.
  
  -module(bookshelf_obj).
  -include("bookshelf.hrl").
  -include_lib("cowboy/include/http.hrl").
  
  -compile(export_all).
  
  %% ===================================================================
  %%                              Cowboy
  
negative.code: 
  resource_exists(#http_req{host=[Bucket|_],
                            raw_path= <<"/",Path/binary>>}=Rq,
                  St) ->
      {bookshelf_store:obj_exists(Bucket, Path), Rq, St}.
  
  delete_resource(#http_req{host=[Bucket|_],
                            raw_path= <<"/",Path/binary>>}=Rq,
                  St) ->
      case bookshelf_store:obj_delete(Bucket, Path) of
          ok -> {true, Rq, St};
          _  -> {false, Rq, St}
      end.
  
  last_modified(#http_req{host=[Bucket|_],
                          raw_path= <<"/",Path/binary>>}=Rq,
                St) ->
      case bookshelf_store:obj_meta(Bucket, Path) of
          {ok, #object{date=Date}} ->
              {Date, Rq, St};
          _  ->
              {halt, Rq, St}
      end.
  
  generate_etag(#http_req{host=[Bucket|_],
                          raw_path= <<"/",Path/binary>>}=Rq,
                St) ->
      case bookshelf_store:obj_meta(Bucket, Path) of
          {ok, #object{digest=Digest}} ->
              {{strong, list_to_binary(bookshelf_format:to_hex(Digest))}, Rq, St};
          _ ->
              {halt, Rq, St}
      end.
  
  %% ===================================================================
  