anchor.diff:  
   handle_event({start_watching, Who}, StateName, #state{observers=Observers}=State) ->
       State1 = case lists:member(Who, Observers) of
  -        false -> State#state{observers=[Who|Observers]};
  +        false ->
  +            erlang:monitor(process, Who),
  +            State#state{observers=[Who|Observers]};
           true -> State
       end,
       {next_state, StateName, State1};
  
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_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)};
  