 
     /// Verifies that `<b>Bold?</b>` gets effectively translated into it's tree representation.
     ///
-    func testBoldStyleGetsEffectivelyConvertedIntoBoldNode() {
+    func testBoldStyleGetsProperlySerializedBackIntoItsHtmlRepresentation() {
         let input = "<b>Bold?</b>"
         let expected = input
 
-        let attrString = attributedString(from: input)
-        let node = rootNode(from: attrString)
-        let generated = html(from: node)
-
-        XCTAssertEqual(generated, expected)
-    }
-
-    ///
-    ///
-    func testListItemsGetEffectivelyMerged() {
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
+
+    /// Verifies that `<i>Italics!</i>` gets effectively translated into it's tree representation.
+    ///
+    func testItalicsStyleGetsProperlySerializedBackIntoItsHtmlRepresentation() {
+        let input = "<i>Italics!</i>"
+        let expected = input
+
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
+
+    ///
+    ///
+    func testUnderlinedStyleGetsProperlySerializedBackIntoItsHtmlRepresentation() {
+        let input = "<u>Underlined</u>"
+        let expected = input
+
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
+
+    ///
+    ///
+    func testStrikeStyleGetsProperlySerializedBackIntoItsHtmlRepresentation() {
+        let input = "<strike>Srike!</strike>"
+        let expected = input
+
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
+
+    ///
+    ///
+    func testLinksStyleGetsProperlySerializedBackIntoItsHtmlRepresentation() {
+        let input = "<a href=\"yosemite.com\">Yo! Yose! Yosemite!</a>"
+        let expected = input
+
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
+
+    ///
+    ///
+    func testListItemsRemainInTheSameContainingUnorderedList() {
+        let input = "<ul><li>First Line</li><li>Second Line</li></ul>"
+        let expected = input
+
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
+
+    ///
+    ///
+    func testCommentsArePreservedAndSerializedBack() {
+        let input = "<!-- I'm a comment. YEAH --><ul><li>Item</li></ul><!-- Tail Comment -->"
+        let expected = input
+
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
+
+    ///
+    ///
+    func testUnknownHtmlDoesNotGetNuked() {
+        let input = "<table><tr><td>ROW ROW</td></tr></table><ul><li>Item</li></ul><!-- Tail Comment -->"
+        let expected = input
+
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
+
+    ///
+    ///
+    func testHeaderElementGetsProperlySerialiedBackIntoItsHtmlRepresentation() {
+        for level in 1...6 {
+            let input = "<h\(level)>Aztec Rocks</h\(level)>Newline!"
+            let expected = input
+
+            let generated = generatedHTML(input: input)
+            XCTAssertEqual(generated, expected)
+        }
+    }
+
+
+    ///
+    ///
+    func testLineElementGetsProperlySerialiedBackIntoItsHtmlRepresentation() {
+        let input = "<hr>I'm a text line<hr>I'm another text line<hr>And i'm a third one"
+        let expected = "<hr>I&apos;m a text line<hr>I&apos;m another text line<hr>And i&apos;m a third one"
+
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
+
+    ///
+    ///
+    func testContiguousUnorderedListsGetHeirItemsmerged() {
+        let input = "<ul><li>First Line</li></ul><ul><li>Second Line</li></ul>"
+        let expected = "<ul><li>First Line</li><li>Second Line</li></ul>"
+
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
+
+    ///
+    //
+    func testSomething2() {
         let input = "<blockquote><ul><li>First Line</li></ul></blockquote><blockquote><ul><li>Second Line</li></ul></blockquote>"
         let expected = "<blockquote><ul><li>First Line</li><li>Second Line</li></ul></blockquote>"
 
-        let attrString = attributedString(from: input)
-        let node = rootNode(from: attrString)
-        let generated = html(from: node)
-
-        XCTAssertEqual(generated, expected)
-    }
+        let generated = generatedHTML(input: input)
+        XCTAssertEqual(generated, expected)
+    }
+
 
     ///
     ///

        return attrString
    }

    ///
    ///
    func rootNode(from attrString: NSAttributedString) -> RootNode {
        let converter = NSAttributedStringToNodes()

// MARK: - Helpers
//
private extension NSAttributedStringToNodesTests {

    /// Returns the HTML resulting of converting:
    ///
    /// 1.  Input >> Attributed String
    /// 2.  Attributed String >> Node
    /// 3.  Node >> HTML
    ///
    func generatedHTML(input html: String) -> String {
        let attrString = attributedString(from: html)
        let node = rootNode(from: attrString)

        return self.html(from: node)
    }

    /// Converts a raw HTML String into it's NSAttributedString Representation
    ///
