     true
 
   ###
+  Get classnames of element
+  ###
+  _getClassNames: ( _id ) ->
+    _elem = @_elements[_id]
+    if @_isSVGElem( _elem )
+      _elem.className.baseVal
+    else
+      _elem.className
+
+  ###
+  Set classnames for element
+  ###
+  _setClassNames: ( _id, _className ) ->
+    _elem = @_elements[_id]
+    if @_isSVGElem( _elem )
+      _elem.className.baseVal = _className
+    else
+      _elem.className = _className
+
+
+  ###
   Checks if the element has a named CSS className
   ###
   hasClassName: (_id, _className)->
     return null unless @_elements[_id]? # item is deleted
-    _classNames = @_elements[_id].className.split(' ')
+    _classNames = @_getClassNames( _id ).split(' ')
     return !!~_classNames.indexOf( _className )
 
   ###

  getSize: (_id)->
    _elem = @_elements[_id]
    [ w, h ] = [ 0, 0 ]
    if _elem?
      [ w, h ] = [ _elem.offsetWidth, _elem.offsetHeight ]
    else if !@isProduction
      console.warn( 'ELEM.getSize(', _id, '): Element not found' )

  getPosition: (_id)->
    _elem = @_elements[_id]
    [ x, y ] = [ 0, 0 ]
    if @_isSVGElem( _elem )
      _rect = _elem.getBoundingClientRect()
      [ x, y ] = [ _rect.left, _rect.top ]
    else if _elem?
      [ x, y ] = [ _elem.offsetLeft, _elem.offsetTop ]
    else if !@isProduction
      console.warn( 'ELEM.getPosition(', _id, '): Element not found' )
