                                                         render: { (n: DOMNode) in
                                                             return "<img src=\"/smilies/\(emote.1)\" alt=\"\" />" })))
         }
+
+        // Create .root description
+        let rootDescription = TagDescription(tagNeeded: false, Singular: false,
+                                             subelts: [],
+                                             allowAttr: false,
+                                             render: { n in
+                                                return n.renderChildren() })
+        for tag in tags {
+            rootDescription.subelts?.append(tag.1)
+        }
+        tags.append(("", .root, rootDescription))
+
         self.tagManager = TagManager(tags: tags);
     }
 

        var g = self.unicodeScalars.makeIterator()
        var lastWasCR = false
        while let c = g.next() {
            if c == UnicodeScalar(10) {
                if lastWasCR {
                    lastWasCR = false
                    ret.append("\n")

        init(tags: [TagInfo]) {
            var tmptags = tags



            tmptags.sort(by: {a, b in
                if a.0.characters.count > b.0.characters.count {
