anchor.diff:  		Else                       -> exit({bad_return_value, Else})
   	end.
   
  --spec put(pid(), bucket_and_type(), binary(), entry()) -> ok.
  +-spec put(pid(), bucket_and_type(), binary(), entry()) -> entry().
   put(Pid, Bucket, Key, E) ->
  -	case catch riakc_pb_socket:update_type(Pid, Bucket, Key, riakc_map:to_op(E), [{pw, quorum}]) of
  -		ok                  -> ok;
  +	put(Pid, Bucket, Key, E, []).
  +
  +-spec put(pid(), bucket_and_type(), binary(), entry(), [proplists:property()]) -> entry().
  +put(Pid, Bucket, Key, E, Opts) ->
  +	case catch riakc_pb_socket:update_type(Pid, Bucket, Key, riakc_map:to_op(E), [{pw, quorum}|Opts]) of
  +		ok                  -> E;
  +		{ok, Emodified}     -> Emodified;
   		{error, unmodified} -> ok;
   		{error, Reason}     -> exit(Reason);
   		{'EXIT', Reason}    -> exit(Reason);
  
positive.code: %% API
  -export([
  	put_groups/4,
  	remove_groups/4,
  	update_groups/4,
  	find/3,
  	find/4,
  	get/3,
  	get/4,
  	get/5,
  	put/4
  ]).
  
  %% DataType API
  
negative.code: 
  -spec put_groups(pid(), bucket_and_type(), binary(), [{binary(), riakacl_group:group()}]) -> riakacl_entry:entry().
  put_groups(Pid, Bucket, Key, Groups) ->
  	put_groups(Pid, Bucket, Key, Groups, []).
  
  -spec put_groups(pid(), bucket_and_type(), binary(), [{binary(), riakacl_group:group()}], [proplists:property()]) -> riakacl_entry:entry().
  put_groups(Pid, Bucket, Key, Groups, Opts) ->
  	update_groups(Pid, Bucket, Key, fun(Gs) ->
  		lists:foldl(
  			fun({Name, Group}, Acc) ->
  				riakc_map:update({Name, map}, fun(_) -> Group end, Acc)
  			end, Gs, Groups)
  	end, Opts).
  
  -spec remove_groups(pid(), bucket_and_type(), binary(), [binary()]) -> entry().
  remove_groups(Pid, Bucket, Key, Names) ->
  