   ###
   _getAttrDirect: (_id, _key)->
     _elem = @_elements[_id]
-    _elem.getAttribute( _key )
+    _elem[_key]
 
   ###
   Gets a named element attribute from the cache or selectively direct
   ###
   getAttr: (_id, _key, _noCache)->
-    if _noCache
+    return null if not @_attrCache[_id]?
+    _val = @_attrCache[_id][_key]
+    if _noCache or not _val?
       _val = @_getAttrDirect( _id, _key )
-    else
-      _val = @_attrCache[_id][_key]
-    @_attrCache[_id][_key] = _val
+      @_attrCache[_id][_key] = _val
     _val
   
   ###
   Sets a named element attribute into the cache and buffer or selectively direct
   ###
   setAttr: (_id, _key, _value, _noCache)->
+    return null unless @_elements[_id]? # item is deleted
     _attrTodo = @_attrTodo[_id]
     _attrCache = @_attrCache[_id]
-    @_elements[_id].setAttribute( _key, _value ) if _noCache
-    _reCache = _value != @getAttr( _id, _key )
+    @_elements[_id][_key] = _value if _noCache
+    _reCache = ( _value != @getAttr( _id, _key ) )
     if _reCache or _noCache
       _attrCache[_key] = _value
       unless _noCache

  Gets the named element style attribute value.
  ###
  getStyle: (_id, _key, _noCache)->
    _cached = @_styleCache[_id]
    _key = @_deCamelize(_key)
    if _cached[_key] == undefined or _noCache

  Adds a named CSS className to the element
  ###
  addClassName: (_id, _className)->
    return null unless @_elements[_id]? # item is deleted
    unless @hasClassName( _id, _className )
      _elem = @_elements[_id]
      if _elem.className.trim() == ''
