anchor.diff:  
   % API
   -export([start_link/1]).
  --export([add_entity/1, remove_entity/1, get_entity/1, update_entity_state/3]).
  --export([add_watcher/2, remove_watcher/2, send_to_watchers/2]).
  +-export([add_entity/2, remove_entity/2, get_entity/2, update_entity_state/4]).
  +-export([add_watcher/3, remove_watcher/3, send_to_watchers/2]).
  +-export([client_request/6, client_event/5]).
   
   % gen_server
   -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
   
   % Simulation interval
   -define(INTERVAL, 17). % 1/60th of a second.
  +
  +% Full Update interval
  +-define(FULL_INTERVAL, 30000). % 30 seconds.
   
   -record(state, {
   	entities :: dict()
  
positive.code: 	send_to_watchers(Watchers, Entity#entity.id, State).
  
  %% --------------------------------------------------------------------------------------------------------------------
  %% gen_server
  %% --------------------------------------------------------------------------------------------------------------------
  
  
negative.code: 		entities = lists:store(EntityID, #entity{}, Entities)
  	},
      {reply, ok, NewState};
  
  
  handle_call({request, EntityID, Channel, RequestType, RequestID, Request}, _From, State) ->
  	Entities = State#state.entities,
  	Entity = dict:fetch(EntityID, Entities),
  	Behavior = Entity#entity.behavior,
  
  	% Call the behavior
  	{Response, NewState} = Behavior:client_request(Entity, Channel, RequestType, RequestID, Request),
      {reply, Response, NewState};
  
  
  handle_call({event, EntityID, Channel, EventType, Event}, _From, State) ->
  	Entities = State#state.entities,
  	Entity = dict:fetch(EntityID, Entities),
  	Behavior = Entity#entity.behavior,
  
  	% Call the behavior
  	{Response, NewState} = Behavior:client_request(Entity, Channel, EventType, Event),
      {reply, Response, NewState};
  
  
  handle_call(_, _From, State) ->
      {reply, invalid, State}.
  