anchor.diff:  -include("market_types.hrl").
   
   
  +-record(state,
  +    {listings    = [] :: list()
  +    ,subscribers = [] :: list()
  +    }
  +).
  +
  +
   %% ============================================================================
   %% API
   %% ============================================================================
  
positive.code: 
  init([]) ->
      self() ! init,
      Listings = [],
      Subscribers = [],
      State = {Listings, Subscribers},
      {ok, State}.
  
  
  terminate(_Reason, State) ->
  
negative.code:     {noreply, State}.
  
  
  handle_info(init, State) ->
      % Generate listings
      Listings = sets:to_list(sets:from_list(
          [market_lib:random_symbol() || _ <- lists:seq(1, ?NUM_LISTINGS)]
      )),
      erlang:send_after(?TICKER_INTERVAL, self(), publish),
      {noreply, State#state{listings=Listings}};
  
  handle_info({subscribe, PID}, #state{subscribers=Subscribers}=State) ->
      {noreply, State#state{subscribers=[PID|Subscribers]}, hibernate};
  
  handle_info(publish, #state{listings=Listings, subscribers=Subscribers}=State) ->
      Prices = [{Symbol, market_lib:random_price()} || Symbol <- Listings],
  
      % Broadcast prices to subscribers
  