         opts.end ?= true
         @end arguments... if opts.end
         @parent
+
+    show: () =>
+        @hidden = no
+        @emit 'show', this
+        this
+
+    hide: () =>
+        @hidden = yes
+        @emit 'hide', this
+        this
 
     end: () =>
         if not @closed or @closed is 'pending' or @closed is 'approving'

                    else
                        data = "</#{@name}>"
                        @closed = yes
                    @emit 'data', prettify this, data
                    @emit 'close', this
                    @emit 'end'
                    @writable = false


    write: (content, {escape} = {}) =>
        content = safe(content) if escape
        return true if @hidden # dont emit data when this tag is hidden
        if @isempty
            @emit 'data', prettify this, "<#{@name}#{new_attrs @attrs}>"
            @isempty = no
