anchor.diff:  	gen_server:call(?MODULE, {subscribe, Topics});
   subscribe(Topic) -> subscribe([Topic]).
   
  +subscribe(Topics, Callback) when is_list(Topics)->
  +	gen_server:call(?MODULE, {subscribe, Topics, Callback});
  +subscribe(Topic, Callback) -> subscribe([Topic], Callback).
  +
   send(Topic, Message) ->
   	gen_server:cast(?MODULE, {send, self(), Topic, Message}).
   
  
positive.code: send_event(Message, From, {Topic, Subscriber}) ->
  	Subscriber ! {hot_proxy_event, From, {Topic, Message}},
  	ok.
  
negative.code: 	{ok, #{ subscribers => [] }}.
  
  handle_call({subscribe, Topics}, {From, _}, #{ subscribers := Subs } = State) ->
  	NewSubs = ensure_monitor(From, Subs),
  	true = ets:insert(?MODULE, [{Topic, From} || Topic <- Topics]),
  	{reply, ok, State#{ subscribers :=  NewSubs }};
  handle_call({subscribe, Topics, Callback}, {From, _}, #{ subscribers := Subs } = State) ->
  	NewSubs = ensure_monitor(From, Subs),
  	true = ets:insert(?MODULE, [{Topic, From, Callback} || Topic <- Topics]),
  	{reply, ok, State#{ subscribers :=  NewSubs }};
  handle_call(_Request, _From, State) ->
  	{reply, ok, State}.
  