anchor.diff:  
   handle_sync_event(_Event, _From, StateName, State) ->
       {reply, ignored, StateName, State}.
  +
  +handle_info({'DOWN', _MonitorRef, _Type, Object, _Info}, StateName, State) ->
  +    Observers = State#state.observers,
  +    State1 = State#state{observers=lists:delete(Object,Observers)},
  +    {next_state, StateName, State1};
   
   handle_info(heartbeat, up, State) ->
       {next_state, up, reset_timer(State)};
  
positive.code:             State
      end.
  
  notify_status_change(Status, State) ->
      Name = State#state.name,
      Observers = State#state.observers,
      [ Observer ! { Name,Status } || Observer <- Observers ].
  
  
  %% confirm that we have recieved enough heartbeats before coming up
  
negative.code: 
  handle_event({start_watching, Who}, StateName, #state{observers=Observers}=State) ->
      State1 = case lists:member(Who, Observers) of
          false ->
              erlang:monitor(process, Who),
              State#state{observers=[Who|Observers]};
          true -> State
      end,
      {next_state, StateName, State1};
  