anchor.diff:                      [DbName, Reason]);
               {Doc} ->
                   Shards = mem3_util:build_ordered_shards(DbName, Doc),
  -                gen_server:cast(?MODULE, {cache_insert, DbName, Shards}),
  +                Msg = {cache_insert_change, DbName, Shards, Seq},
  +                gen_server:cast(?MODULE, Msg),
                   [create_if_missing(mem3:name(S)) || S
                       <- Shards, mem3:node(S) =:= node()]
               end
           end
       end,
  -    {ok, couch_util:get_value(<<"seq">>, Change)};
  +    {ok, Seq};
   changes_callback(timeout, _) ->
       ok.
   
  
positive.code:     couch_stats:increment_counter([mem3, shard_cache, hit]),
      cache_hit(DbName),
      {noreply, St};
  handle_cast({cache_insert, DbName, Shards}, St) ->
      couch_stats:increment_counter([mem3, shard_cache, miss]),
      {noreply, cache_free(cache_insert(St, DbName, Shards))};
  handle_cast({cache_remove, DbName}, St) ->
      couch_stats:increment_counter([mem3, shard_cache, eviction]),
      {noreply, cache_remove(St, DbName)};
  handle_cast(_Msg, St) ->
      {noreply, St}.
  
  
negative.code:     exit({seq, EndSeq});
  changes_callback({change, {Change}, _}, _) ->
      DbName = couch_util:get_value(<<"id">>, Change),
      Seq = couch_util:get_value(<<"seq">>, Change),
      case DbName of <<"_design/", _/binary>> -> ok; _Else ->
          case mem3_util:is_deleted(Change) of
          true ->
              gen_server:cast(?MODULE, {cache_remove_change, DbName, Seq});
          false ->
              case couch_util:get_value(doc, Change) of
              {error, Reason} ->
  