anchor.diff:  del_subscriber(SubscriberId) ->
       plumtree_metadata:delete(?SUBSCRIBER_DB, SubscriberId).
   
  --spec del_subscriber(topic() | '_' , subscriber_id()) -> ok.
  -del_subscriber(Topic, SubscriberId) ->
  +-spec del_subscriptions([topic()], subscriber_id()) -> ok.
  +del_subscriptions(Topics, SubscriberId) ->
       Subs = plumtree_metadata:get(?SUBSCRIBER_DB, SubscriberId, [{default, []}]),
  -    NewSubs = [Sub || {T, _, N} = Sub <- Subs, (T /= Topic) and (N /= node())],
  +    NewSubs =
  +    lists:foldl(fun({Topic, _, Node} = Sub, NewSubsAcc) ->
  +                        case Node == node() of
  +                            true ->
  +                                case lists:member(Topic, Topics) of
  +                                    true ->
  +                                        NewSubsAcc;
  +                                    false ->
  +                                        [Sub|NewSubsAcc]
  +                                end;
  +                            false ->
  +                                [Sub|NewSubsAcc]
  +                        end
  +                end, [], Subs),
       plumtree_metadata:put(?SUBSCRIBER_DB, SubscriberId, NewSubs).
   
   -spec remap_subscription(subscriber_id(), atom()) -> ok | {error, overloaded}.
  
positive.code:               end, Acc, vmq_session).
  
  
  -spec add_subscriber(topic(), qos(), subscriber_id()) -> ok.
  add_subscriber(Topic, QoS, SubscriberId) ->
      NewSubs =
      case plumtree_metadata:get(?SUBSCRIBER_DB, SubscriberId) of
          undefined ->
              [{Topic, QoS, node()}];
          Subs ->
              lists:usort([{Topic, QoS, node()}|Subs])
      end,
      plumtree_metadata:put(?SUBSCRIBER_DB, SubscriberId, NewSubs).
  
  
negative.code: subscribe_op(User, SubscriberId, QPid, Topics) ->
      rate_limited_op(
        fun() ->
                add_subscriber(Topics, SubscriberId)
        end,
        fun(_) ->
                _ = [begin
  