             @args.shift()
 
     @binder or= @view.binders['*']
-
-    if @binder instanceof Function
-      @binder = {routine: @binder}
-
+    @binder = {routine: @binder} if @binder instanceof Function
     @formatters = @options.formatters || []
+    @model = @view.models[@key]
 
   # Applies all the current formatters to the supplied value and returns the
   # formatted value.

            options.formatters = pipes
            options.bypass = path.indexOf(':') != -1
            if splitPath[0]
              model = @models[splitPath.shift()]
            else
              model = @models
              splitPath.shift()
            keypath = splitPath.join '.'

            if model
              if dependencies = context.shift()
                options.dependencies = dependencies.split /\s+/

              @bindings.push new Rivets.Binding @, node, type, model, keypath, options

        attributes = null if attributes


  # All information about the binding is passed into the constructor; the
  # containing view, the DOM node, the type of binding, the model object and the
  # keypath at which to listen for changes.
  constructor: (@view, @el, @type, @key, @keypath, @options = {}) ->
    unless @binder = @view.binders[type]
      for identifier, value of @view.binders
        if identifier isnt '*' and identifier.indexOf('*') isnt -1
