 			else if selector instanceof RegExp then rawstyle_mask_re.call this, selector
 			else selector.parentStyleSheet.deleteRule selector.indexInSheet$; set_styles$.call this
 
-	new_pseudo_element$ = (w, pseudoElement) -> (fn=->); fn.prototype = w.constructor.prototype; o = new fn; extend o, w; o.$pseudoElement = pseudoElement; o
+	new_pseudo_element$ = (w, pseudoElement) -> (fn=->); fn.prototype = w.constructor.prototype; o = new fn; extend o, w; o._pseudoElement = pseudoElement; o
 	ex_uniq$ = (a) -> x={}; z=0 ; (for i in a when not((t=i.selectorText) of x) then x[t] = z++); r=[]; (r[x[k]]=k for k of x); r
 	goal_selector$ = -> (@id id=CMath.uniqid() unless id=@id()); "#"+id
 	goal_rule$ = (pseudoElement) -> rules = @rawstyle selector = goal_selector$.call(this)+(pseudoElement || ''); (unless rules.length then @rawstyle selector, {}; rules = @rawstyle selector); rules

	insertAfter: (val) -> @wrap(val).after this ; this
	append: (val, timeout, listen) ->
		val = @wrap val
		if timeout
			for i in val.items()
				i.before i1=@wrap("<div></div>").css(visibility: 'hidden').css(x=i.css 'width,height,float,position,display'.split /,/).animate width: 0, height: 0, timeout
				say x
				delete x.width, x.height
				@append i2=@wrap("<div></div>").css(visibility: 'hidden', width:0, height:0).css(x).animate width: @width(), height: @height(), timeout
				save = i.css ['position']
				i.css(position: 'absolute').animate left: i2.left(), top: i2.top(), timeout, do(i1, i2, i) => => @append i.css save; i1.union(i2).free(); if listen then if typeof listen == 'string' then @send listen else listen.call this
		else e=@element; (for v in val.all() then e.appendChild v)
		this
	appendTo: (val) -> @wrap(val).append this ; this

			else if wdiv$.hasCss old, '1px' then val+='px'; css_px[key] = 1
			else if wdiv$.hasCss old, '#AAAAAA' then val = CColor.fromNumber val; css_color[key] = 1
			else css_not_px[key] = 1
		style = (@_pseudoElement || @element).style
		if important then style.setProperty key.lc(), val, "!important" else style[key] = val
		this
	getCssStyle: (key, pseudoClass) -> if p=@_pseudoElement then p.style else if @htm().contains this then getComputedStyle @element, pseudoClass else @element.style
	getCssValue: (key, pseudoClass) -> @getCssStyle(key, pseudoClass).getPropertyCSSValue toCssCase key
	getCss: (key, pseudoClass) ->
		if (fn=css_get_fn[key]) and off != ret=fn.call this, key, pseudoClass then return ret
		@getCssStyle(key, pseudoClass)[toCssCase key]
	saveCss: -> if @_pseudoElement? then @css.apply this, arguments else @_pseudoElement = @element; ret = @css.apply this, arguments; delete @_pseudoElement; ret
		
	css: (name, val, important) -> if arguments.length==0 then r={}; (for k in @element.style then r[k = toCssCase k] = @getCss k); r else if name instanceof Array then r={}; (for k in name then r[k]=@getCss k); r else if name instanceof Object then (for k of name then @setCss k, name[k], val); this else if arguments.length >= 2 and val != null then @setCss name, val, important; this else @getCss name
	extend @::css,
