   # the old model first and then re-binds with the new model.
   update: (models = {}) =>
     if models[@rootKey.path]
-      @view.adapters[@key.interface].unsubscribe @model, @key.path, @sync
+      @view.adapters[@key.interface].unsubscribe(@model, @key.path, @sync) if @key
       @setModel()
-      @view.adapters[@key.interface].subscribe @model, @key.path, @sync
+      @view.adapters[@key.interface].subscribe(@model, @key.path, @sync) if @key
       @sync()
 
     @binder.update?.call @, models


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

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

  # Unsubscribes from the model and the element.
  unbind: =>
    @binder.unbind?.call @, @el
    @view.adapters[@key.interface].unsubscribe(@model, @key.path, @sync) if @key

    if @dependencies.length
      for dep in @dependencies
