anchor.diff:  
   -spec key_is_common_prefix(binary(), list_object_request()) ->
       boolean().
  -%% TODO: please refactor this
   key_is_common_prefix(_Key, ?LOREQ{delimiter=undefined}) ->
       false;
   key_is_common_prefix(Key, ?LOREQ{prefix=Prefix,
                                    delimiter=Delimiter}) ->
       case Prefix of
           undefined ->
  -            case binary:match(Key, [Delimiter]) of
  +            handle_undefined_prefix(Key, Delimiter);
  +        _Prefix ->
  +            handle_prefix(Key, Prefix, Delimiter)
  +    end.
  +
  +-spec handle_undefined_prefix(binary(), binary()) -> boolean().
  +handle_undefined_prefix(Key, Delimiter) ->
  +    case binary:match(Key, [Delimiter]) of
  +        nomatch ->
  +            false;
  +        _Match ->
  +            true
  +    end.
  +
  +-spec handle_prefix(binary(), binary(), binary()) -> boolean().
  +handle_prefix(Key, Prefix, Delimiter) ->
  +    PrefixLen = byte_size(Prefix),
  +    case Key of
  +        <<Prefix:PrefixLen/binary, Rest/binary>> ->
  +            case binary:match(Rest, [Delimiter]) of
                   nomatch ->
                       false;
                   _Match ->
                       true
               end;
  -        _Prefix ->
  -            PrefixLen = byte_size(Prefix),
  -            case Key of
  -                <<Prefix:PrefixLen/binary, Rest/binary>> ->
  -                    case binary:match(Rest, [Delimiter]) of
  -                        nomatch ->
  -                            false;
  -                        _Match ->
  -                            true
  -                    end;
  -                _NoPrefix ->
  -                    false
  -            end
  +        _NoPrefix ->
  +            false
       end.
   
   -spec make_start_key(state()) -> binary().
  
positive.code:                          common_prefixes=CommonPrefixes,
                           req=Request=?LOREQ{max_keys=UserMaxKeys}}) ->
      ObjectBufferLength = length(ObjectBuffer),
      ProfilingStateData = update_profiling_state_with_end(State,
                                                           os:timestamp(),
                                                           ObjectBufferLength),
      RangeUpdatedStateData = update_last_request_state(ProfilingStateData, ObjectBuffer),
  
      FilteredObjects = exclude_key_from_state(State, ObjectBuffer),
      Manifests = [riak_cs_utils:manifests_from_riak_object(O) ||
  
negative.code:                                                common_prefixes=NewPrefixes,
                                                 reached_end_of_keyspace=ReachedEnd,
                                                 object_buffer=[]},
      respond(NewStateData, NewManis, NewPrefixes, Truncated).
  
  -spec update_profiling_and_last_request(state(), list(), integer()) ->
      state().
  update_profiling_and_last_request(State, ObjectBuffer, ObjectBufferLength) ->
      State2 = update_profiling_state_with_end(State, os:timestamp(),
                                               ObjectBufferLength),
      update_last_request_state(State2, ObjectBuffer).
  
  -spec respond(state(), list(), ordsets:ordset(), boolean()) ->
      fsm_state_return().
  respond(StateData=#state{req=Request},
          Manifests, Prefixes, Truncated) ->
      case enough_results(StateData) of
          true ->
              Response =
              response_from_manifests_and_common_prefixes(Request,
                                                          Truncated,
                                                          {Manifests, Prefixes}),
              try_reply({ok, Response}, StateData);
          false ->
              RiakcPid = StateData#state.riakc_pid,
              case make_2i_request(RiakcPid, StateData) of
                  {NewStateData2, {ok, ReqId}} ->
                      {next_state, waiting_object_list,
                       NewStateData2#state{object_list_req_id=ReqId}};
  