anchor.diff:  
   Well, the most important feature it has is *named event types*. Instead of a single "update" event, events have symbolic names. Observers can choose which events they care about, and ignore the rest.
   
  +=== Defining some terms
  +
   *What exactly is a "observer"? Is it a special kind of object?*
   
   Not really, no. Fundamentally a observer is any object which responds to `#call`. The most obvious example of such an object is a `Proc`. Here's an example of using a proc as a simple observer:
  
positive.code: 
  For convenience, the event name, source, and arguments are all bundled into an `Event` object before being disseminated to observers.
  
  *OK, say I have an object that I want to make observable. How would I go about that?*
  
  Well, the no-magic way might go something like this:
  
negative.code: <%= File.read("examples/include_manifestly_observable.rb") %>
  ```
  
  === All about observers
  
  *I'm still a little confused about `#on`. Is that just another way to add an observer?*
  
  `#on` is really just a shortcut. Often we don't want to attach a whole observer to an observable object. We just want to trigger a particular block of code to be run when a specific event is detected. So `#on` makes it easy to hook up a block of code to a single event.
  