     @formatters = @options.formatters || []
     @dependencies = []
     @setBinder()
-    @setObserver()
 
   # Sets the binder to use when binding and syncing.
   setBinder: =>

  # Sets a keypath observer that will notify this binding when any intermediary
  # keys are changed.
  setObserver: =>
    @observer = new Rivets.KeypathObserver @view, @view.models, @keypath, (obs) =>
      @unbind true if @key
      @model = obs.target
      @bind true if @key
      @sync()

    @key = @observer.key
    @model = @observer.target

  # Applies all the current formatters to the supplied value and returns the
  # formatted value.

      if @view.formatters[id]?.publish
        value = @view.formatters[id].publish value, args...

    @observer.setValue value

  # Subscribes to the model for changes at the specified keypath. Bi-directional
  # routines will also listen for changes on the element to propagate them back
  # to the model.
  bind: =>
    @binder.bind?.call @, @el
    @observer = new Rivets.Observer @view, @view.models, @keypath, @sync

    if @observer.target? and @options.dependencies?.length
      for dependency in @options.dependencies
        observer = new Rivets.Observer @view, @observer.target, dependency, @sync
        @dependencies.push observer

    @sync() if @view.config.preloadData

  # Unsubscribes from the model and the element.
  unbind: =>
    @binder.unbind?.call @, @el
    @observer.unobserve()

    observer.unobserver() for observer in @dependencies
    @dependencies = []

  # Updates the binding's model from what is currently set on the view. Unbinds
  # the old model first and then re-binds with the new model.
