anchor.diff:                  {error, Reason} ->
                       {error, {format, Reason}, State}
               end;
  -         false ->
  -            {error, {format, "~p is not supported"}, [Type], State}
  +        {false, _} ->
  +            {error, {format, "Bucket must be allow_mult=true"}, State};
  +        {true, false} ->
  +            {error, {format, "`~p` is not a supported type", [Type]}, State}
       end.
  -
  -get_key(undefined) ->
  -    %% Generate a key, the user didn't supply one
  -    Key = list_to_binary(riak_core_util:unique_id_62()),
  -    {Key, Key};
  -get_key(K) ->
  -    {K, undefined}.
  -
  -%% @TODO actually use bucket types, here I just fake it
  -bucket_type_to_type(BType) ->
  -    binary_to_atom(BType, utf8).
  -
  -make_operation(Mod, Op, Ctx) ->
  -    #crdt_op{mod=Mod, op=Op, ctx=Ctx}.
  -
  -update_resp(map, Value, Ctx) ->
  -    #dtupdateresp{map_value=Value, context=Ctx};
  -update_resp(counter, Value, Ctx) ->
  -    #dtupdateresp{counter_value=Value, context=Ctx};
  -update_resp(set, Value, Ctx) ->
  -    #dtupdateresp{set_value=Value, context=Ctx}.
  -
  -return_value(true) ->
  -    [returnbody];
  -return_value(_) ->
  -    [].
  -
  -get_context(_Ctx, false) ->
  -   undefined;
  -get_context(Ctx, true) ->
  -    Ctx.
   
   %% @doc process_stream/3 callback. This service does not create any
   %% streaming responses and so ignores all incoming messages.
  
positive.code:                      n_val=NVal, include_context=InclCtx,
                       op=Op0, return_body=RetVal},
          #state{client=C} = State) ->
      Type = bucket_type_to_type(BType),
      Mod = riak_kv_crdt:to_mod(Type),
      %% @TODO bucket type check
      {Key, ReturnKey} = get_key(K),
      case riak_kv_crdt:supported(Mod) of
          true ->
              O = riak_kv_crdt:new(B, Key, Mod),
              Op = riak_pb_dt_codec:decode_operation(Op0, ?MOD_MAP),
              %% erlang_protobuffs encodes as 1/0/undefined
  
negative.code:                 {error, Reason} ->
                      {error, {format,Reason}, State}
              end;
          {false, _} ->
              {error, {format, "Bucket must be allow_mult=true"}, State};
          {true, false} ->
              {error, {format, "`~p` is not a supported type", [Type]}, State}
      end;
  process(#dtupdatereq{bucket=B, key=K, type=BType,
                       w=W0, dw=DW0, pw=PW0, context=Ctx,
  