   observeAttribute = (name, value) ->
     element = top()
 
+    {nodeName} = element
+
     update = (newValue) ->
       if newValue? and newValue != false
         element.setAttribute name, newValue
       else
         element.removeAttribute name
 
+    # TODO: Consolidate special bindings better than if/else
     if (name is "value") and (typeof value is "function")
       valueBind(element, value)
     else if (name is "checked") and (typeof value is "function")
       element.onchange = ->
         value element.checked
       bindObservable(element, value, update)
+    else if binding = specialBindings[nodeName]?[name]
+      binding(element, value)
     # Straight up onclicks, etc.
     else if name.match(/^on/) and isEvent(name.substr(2))
       element[name] = value

  return self

module.exports = Runtime

      parent = lastParent()

      # TODO: Work when rendering many sibling elements
      items.observe ->
        replace elements

      replace = (oldElements) ->
        elements = []
        items.each (item, index, array) ->
          element = fn.call(item, item, index, array)

          if isFragment(element)
