anchor.diff:      Bucket = riak_object:bucket(RObj),
       case riak_core_bucket:get_bucket(Bucket) of
           BProps when is_list(BProps) ->
  -            Type = proplists:get_value(datatype, BProps),
  -            Mod = riak_kv_crdt:to_mod(Type),
  -            supported(Mod)
  +            is_crdt(RObj, BProps);
  +        {error, _}=Err ->
  +            Err;
  +        _ ->
  +            false
  +    end.
  +
  +-spec is_crdt(riak_object:riak_object(), riak_kv_bucket:props()) -> boolean().
  +is_crdt(RObj, BProps) when is_list(BProps) ->
  +    Type = proplists:get_value(datatype, BProps),
  +    Mod = riak_kv_crdt:to_mod(Type),
  +    supported(Mod) andalso is_crdt_object(RObj);
  +is_crdt(_RObj, _BProps) ->
  +    false.
  +
  +-spec is_crdt_object(riak_object:riak_object()) -> boolean()|{error,_}.
  +is_crdt_object(RObj) ->
  +    ObjVal = riak_object:get_value(RObj),
  +    case ObjVal of
  +        <<69, _Rest/binary>> when is_binary(ObjVal) ->
  +            true;
  +       _ -> false
       end.
   
   %% @TODO in riak_dt change value to query allow query to take an
  
positive.code: %% MR helper funs
  -export([value/1, counter_value/1, set_value/1, map_value/1]).
  %% Other helper funs
  -export([is_crdt/1]).
  
  -include("riak_kv_wm_raw.hrl").
  -include("riak_object.hrl").
  
negative.code:             true
      end.
  
  -spec new(riak_object:bucket(), riak_object:key(), DT_MOD::module())
           -> riak_object:riak_object().
  new(B, K, Mod) ->
      CRDT=#crdt{ctype=CType} = to_record(Mod, Mod:new()),
      Bin = to_binary(CRDT),
  