anchor.diff:  
   For convenience, the event name, source, and arguments are all bundled into an `Event` object before being disseminated to observers.
   
  +=== Making an object observable
  +
   *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:
  
positive.code: <%= File.read("examples/include_observer.rb") %>
  ```
  
  *So including `Observer` automatically handles the dispatching of events from `#call` to the various `#on_*` methods?*
  
  Yes, exactly. And through some metaprogramming, it is able to do this in a way that is just as performant as a hand-written case statement.
  
  *How do you know it's that fast?*
  
  You can run the proof-of-concept benchmark for yourself! It's in the `scripts` directory.
  
  ## Installation
  
  
negative.code: 
  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:
  