 
     # only when the builder approves the new tag we can proceed with announcing
     # the new tag to the parent and to the tree and apply the childrenscope
-    @builder.approve this, newtag, (_, tag) =>
+    @builder.approve 'new', this, newtag, (_, tag) =>
 
         tag.on 'data', events.data = (data) =>
             if @pending[0] is tag

        else if type is 'text'
            tag.content

    use: (checker) ->
        @checkers.push checker

    approve: (parent, tag, callback) ->
        checkers = @checkers.slice()
        next = (tag) ->
            checker = checkers.shift() ? callback
            checker parent, tag, next
        next(tag)

# exports

        @builder = this
        @buffer = [] # for child output
        @pending = [] # no open child tag
        @checkers = {} # all the middlewares that have to approve a new tag
        # states
        @closed = no
        # defaults
