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


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

          optionName = value?.name or value
          bindObservable option, optionName, value, (newValue) ->
            # Ideally this should only be option.textContent
            # but that fails in IE8
            option.textContent = option.innerText = newValue

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

          return option

      bindObservable element, values, context, updateValues

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)

    # element contents stuff
    buffer: (content) ->
      if self.root
        throw new Error "Cannot have multiple root elements"

      self.root = content
      return

    element: makeElement

