     cleaners.push cleaner
   else
     elementCleaners.set element, [cleaner]
+  return
 
 valueBind = (element, value, context) ->
   switch element.nodeName

    checked: (element, value, context) ->
      element.onchange = ->
        value? element.checked

      bindObservable element, value, context, (newValue) ->
        element.checked = newValue
  SELECT:
    options: (element, values, context) ->
      values = Observable values, context

      updateValues = (values) ->
        empty(element)
        element._options = values



          bindObservable option, optionValue, value, (newValue) ->
            option.value = newValue
            return

          optionName = value?.name or value
          bindObservable option, optionName, value, (newValue) ->
            option.textContent = newValue
            return

          element.appendChild option
          element.selectedIndex = index if value is element._value

          return option
        return

observeAttribute = (element, context, name, value) ->
  {nodeName} = element

  # TODO: Consolidate special bindings better than if/else
  if name is "value"
    valueBind(element, value)
  else if binding = specialBindings[nodeName]?[name]
    binding(element, value, context)
