           model = @view.models[dependency.shift()]
           keypath = dependency.join '.'
 
-        @view.config.adapter.unsubscribe model, keypath, @sync
+        @view.adapters['.'].unsubscribe model, keypath, @sync
 
   # 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.
   update: (models = {}) =>
     if @key
       if models[@key]
-        unless @options.bypass
-          @view.config.adapter.unsubscribe @model, @keypath, @sync
-
+        @view.adapters['.'].unsubscribe @model, @keypath, @sync
         @model = models[@key]
-
-        if @options.bypass
-          @sync()
-        else
-          @view.config.adapter.subscribe @model, @keypath, @sync
-          @sync() if @view.config.preloadData
+        @view.adapters['.'].subscribe @model, @keypath, @sync
+        @sync() if @view.config.preloadData
     else
       @sync()
 

      pipes = (pipe.trim() for pipe in declaration.split '|')
      context = (ctx.trim() for ctx in pipes.shift().split '<')
      path = context.shift()
      splitPath = path.split /\.|:/
      options.formatters = pipes
      options.bypass = path.indexOf(':') != -1

      if splitPath[0]
        key = splitPath.shift()


  # Syncs up the view binding with the model.
  sync: =>
    @set @view.adapters['.'].read @model, @keypath

  # Publishes the value currently set on the input element back to the model.
  publish: =>
