anchor.diff:      riak_core_vnode_master:get_vnode_pid(I, ?MODULE).
   
   %% @doc Read state of key at given snapshot time
  --spec read(Key::term(), Type::term(), Snapshot_time::vectorclock:vectorclock())
  -          -> {ok, term()} | {error, term()}.
  +-spec read(key(), type(), vectorclock:vectorclock()) -> {ok, term()} | {error, atom()}.
   read(Key, Type, Snapshot_time) ->
       DocIdx = riak_core_util:chash_key({?BUCKET,
                                          term_to_binary(Key)}),
  
positive.code:       NewPref, {read, Key, Type, Snapshot_time}, materializer_vnode_master).
  
  %%@doc write downstream operation to persistant log and cache it for future read
  -spec update(Key::term(), DownstreamOp::#clocksi_payload{})
              -> ok | {error, term()}.
  update(Key, DownstreamOp) ->
      DocIdx = riak_core_util:chash_key({?BUCKET,
                                         term_to_binary(Key)}),
      Preflist = riak_core_apl:get_primary_apl(DocIdx, 1, materializer),
      [{NewPref,_}] = Preflist,
      riak_core_vnode_master:sync_command(NewPref, {update, Key, DownstreamOp},
  
negative.code: 
  filter_ops(Ops) ->
      %% TODO: Filter out only downstream update operations from log
      [Op || { _Key, Op} <- Ops].
  