     addKey(rootContext) if node == rootNode
     keys.join('.')
 
-  valueAttributeForNode = (node) ->
+  valuePropertyForNode = (node) ->
     name = node.nodeName.toLowerCase()
     if name in ['input', 'textarea', 'select']
       if node.getAttribute('type') in ['checkbox', 'radio'] then 'checked' else 'value'

          return unless node.checked
          setValue(context, keypath, node.value)
        else
          setValue(context, keypath, node[valueAttribute])

      keypath = keypathForKey(node, definition)
      twoWayBinding = valueAttribute != 'textContent' && node.type != 'hidden'

      if keypath[0] == '$root'
        context = rootContext

        return if newValue == lastValue # return if we can and avoid a DOM operation

        lastValue = newValue
        return if newValue == node[valueProp]

        node[valueProp] = if checkedValueType then newValue == node.value else newValue
        fireCustomChangeEvent(node)

      return {refresh} unless isKeypath(definition)
