Repository: Bridgeconn/usfm-grammar (language: python)

Issue:
"stub" books
Similar to the stub chapters, I noticed that translators may create an SFM file with an `/id` marker, book title, and little else. These fail to be processed. Perhaps this is the intended behavior, but when I'm calling usfm-grammar from within python the error messages don't get through. So, I have to hunt down all the books that are empty json files and find which are actual errors and which are just stubs. My preference would probably be to have a json produced with the book name and a warning to set it apart from the ones where some other error caused the failure.


Discussion / hints:

Fix patch:
diff --git a/docs/OutputComparisons.md b/docs/OutputComparisons.md
index e6ca72e2..5d82943e 100644
--- a/docs/OutputComparisons.md
+++ b/docs/OutputComparisons.md
@@ -1,3 +1,2264 @@
+# Difference in JSON Outputs of 1.x and 2.x
+
+The main changes brought in JSON strcuture of 2.x versions are shown below 
+#### The Basic USFM Components
+
+1. The minimal set of markers
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>
+    <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 verse one
+    \v 2 verse two
+    </pre></td><td><pre>      
+      {"metadata": 
+        {"id": {"book": "GEN"}},
+       "chapters": [
+          {  "header": {"title": "1"},
+             "metadata": [
+                {"styling": [{"marker": "p"}]}
+              ],
+             "verses": [
+                {"number": "1 ",
+                 "text objects": [
+                        {"text": "verse one",
+                         "index": 0}
+                    ],
+                 "text": "verse one "},
+                {"number": "2 ",
+                 "text objects": [
+                        {"text": "verse two",
+                         "index": 0}
+                    ],
+                 "text": "verse two "}
+            ]
+          }
+        ],
+        "messages": {"warnings": []}
+      }
+    </pre></td><td><pre>      
+    {"book":{"bookCode":"GEN"},
+      "chapters":[
+      {"chapterNumber":"1",
+          "contents":[
+          {"p":null},
+            {"verseNumber":"1",
+              "verseText":"verse one",
+              "contents":[
+              "verse one"
+                ]},
+            {"verseNumber":"2",
+              "verseText":"verse two",
+              "contents":[
+              "verse two"
+                ]}
+            ]}
+        ],
+      "_messages":{"_warnings":[]}}
+    </pre></tr></table>
+
+
+2. Multiple chapters
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    \c 2
+    \p
+    \v 1 the third verse
+    \v 2 the fourth verse
+    </pre></td><td><pre>
+      { "metadata": 
+          {"id": {"book": "GEN"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [
+                {"styling": [{"marker": "p"}]}
+              ],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        {"text": "the first verse",
+                         "index": 0}
+                    ],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}
+                    ],
+                  "text": "the second verse "
+                }
+            ]
+          },
+          {
+            "header": {"title": "2"},
+            "metadata": [
+                {"styling": [{"marker": "p"}]}
+              ],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        {"text": "the third verse",
+                         "index": 0}
+                      ],
+                  "text": "the third verse "
+                },
+                {
+                    "number": "2 ",
+                    "text objects": [
+                        { "text": "the fourth verse",
+                          "index": 0}
+                      ],
+                    "text": "the fourth verse "
+                }
+              ]
+          }
+         ],
+        "messages": {"warnings": []}
+      }
+  </pre></td><td><pre>      
+    {"book":{"bookCode":"GEN"},
+      "chapters":[
+      {"chapterNumber":"1",
+          "contents":[
+          {"p":null},
+            {"verseNumber":"1",
+              "verseText":"the first verse",
+              "contents":[
+              "the first verse"
+                ]},
+            {"verseNumber":"2",
+              "verseText":"the second verse",
+              "contents":[
+              "the second verse"
+                ]}
+            ]},
+        {"chapterNumber":"2",
+          "contents":[
+          {"p":null},
+            {"verseNumber":"1",
+              "verseText":"the third verse",
+              "contents":[
+              "the third verse"
+                ]},
+            {"verseNumber":"2",
+              "verseText":"the fourth verse",
+              "contents":[
+              "the fourth verse"
+                ]}
+            ]}
+        ],
+      "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+3. Section headings
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    \s A new section
+    \p
+    \v 3 the third verse
+    \v 4 the fourth verse
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "GEN"}},
+        "chapters": [
+          {
+            "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}
+                      ],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "metadata": [
+                        { "section": {"text": "A new section",
+                                      "marker": "s"},
+                          "index": 1},
+                        { "styling": [
+                                {"marker": "p",
+                                 "index": 2}]}
+                      ],
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}
+                      ],
+                  "text": "the second verse "
+                },
+                { "number": "3 ",
+                  "text objects": [
+                        { "text": "the third verse",
+                          "index": 0}
+                      ],
+                  "text": "the third verse "
+                },
+                { "number": "4 ",
+                  "text objects": [
+                        { "text": "the fourth verse",
+                          "index": 0}
+                      ],
+                  "text": "the fourth verse "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse",
+                  [
+                  {"s":[
+                      "A new section"
+                        ]}
+                    ],
+                  {"p":null}
+                  ]},
+              {"verseNumber":"3",
+                "verseText":"the third verse",
+                "contents":[
+                "the third verse"
+                  ]},
+              {"verseNumber":"4",
+                "verseText":"the fourth verse",
+                "contents":[
+                "the fourth verse"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+4. Header section markers
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id MRK The Gospel of Mark
+    \ide UTF-8
+    \usfm 3.0
+    \h Mark
+    \mt2 The Gospel according to
+    \mt1 MARK
+    \is Introduction
+    \ip \bk The Gospel according to Mark\bk* 
+    begins with the statement...
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    </pre></td><td><pre>
+      { "metadata": {
+          "id": {
+                        "book": "MRK",
+                        "details": " The Gospel of Mark"},
+          "headers": [
+              {"ide": "UTF-8"},
+              {"usfm": "3.0"},
+              {"h": "Mark"},
+              [ {"mt": [{"text": "The Gospel according to"}],
+                 "number": "2"},
+                {"mt": [{"text": "MARK"}],
+                 "number": "1"}
+              ]
+            ],
+          "introduction": [
+              {"is": [{"text": "Introduction"}]},
+              {"ip": [{ "bk": [{"text": "The Gospel according to Mark"}],
+                        "text": "The Gospel according to Mark",
+                        "closed": true,
+                        "inline": true},
+                      {"text": "begins with the statement..."}]
+              }
+            ]
+          },
+        "chapters": [
+          {
+            "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}],
+                  "text": "the second verse "
+                }
+              ]
+          }
+          ],
+        "messages": {"warnings": ["Empty lines present. "]}
+      }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"MRK",
+          "description":"The Gospel of Mark",
+          "meta":[
+          {"ide":"UTF-8"},
+            {"usfm":"3.0"},
+            {"h":"Mark"},
+            [
+            {"mt2":[
+                "The Gospel according to"
+                  ]},
+              {"mt1":[
+                "MARK"
+                  ]}
+              ],
+            {"is":[
+              "Introduction"
+                ]},
+            {"ip":[
+              {"bk":[
+                  "The Gospel according to Mark"
+                    ],
+                  "closing":"\\bk*"},
+                "begins with the statement..."
+                ]}
+            ]},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+5. Footnotes
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id MAT
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    \v 3 This is the Good News about Jesus 
+    Christ, the Son of God. \f + \fr 1.1: 
+    \ft Some manuscripts do not have \fq 
+    the Son of God.\f*
+    </pre></td><td><pre>
+      { 
+        "metadata": {"id": {"book": "MAT"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}],
+                  "text": "the second verse "
+                },
+                { "number": "3 ",
+                  "metadata": [
+                        { "footnote": [
+                                { "text": "+ ",
+                                  "index": 1},
+                                { "marker": "fr",
+                                  "inline": true,
+                                  "index": 2},
+                                { "text": "1.1: ",
+                                  "index": 3},
+                                { "marker": "ft",
+                                  "inline": true,
+                                  "index": 4},
+                                { "text": "Some manuscripts do not have ",
+                                  "index": 5},
+                                { "marker": "fq",
+                                  "inline": true,
+                                  "index": 6},
+                                { "text": "the Son of God.",
+                                  "index": 7}],
+                            "marker": "f",
+                            "closed": true,
+                            "inline": true,
+                            "index": 1
+                        }],
+                  "text objects": [
+                        { "text": "This is the Good News about Jesus Christ, the Son of God. ",
+                          "index": 0}],
+                  "text": "This is the Good News about Jesus Christ, the Son of God.  "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"MAT"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]},
+              {"verseNumber":"3",
+                "verseText":"This is the Good News about Jesus Christ,
+                the Son of God.",
+                "contents":[
+                "This is the Good News about Jesus Christ,
+                  the Son of God.",
+                  {"footnote":[
+                    {"caller":"+"},
+                      {"fr":"1.1:"},
+                      {"ft":"Some manuscripts do not have"},
+                      {"fq":"the Son of God."}
+                      ],
+                    "closing":"\\f*"}
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+6. Cross-refs
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id MAT
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    \v 3 \x - \xo 2.23: \xt Mrk 1.24; 
+    Luk 2.39; Jhn 1.45.\x* and made his 
+    home in a town named Nazareth.
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "MAT"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}],
+                  "text": "the second verse "
+                },
+                { "number": "3 ",
+                  "metadata": [
+                        { "cross-ref": [
+                                { "text": "- ",
+                                  "index": 1},
+                                { "marker": "xo",
+                                  "inline": true,
+                                  "index": 2},
+                                { "text": "2.23: ",
+                                  "index": 3},
+                                { "marker": "xt",
+                                  "inline": true,
+                                  "index": 4},
+                                { "text": "Mrk 1.24; Luk 2.39; Jhn 1.45.",
+                                  "index": 5}],
+                            "marker": "x",
+                            "closed": true,
+                            "inline": true,
+                            "index": 0}],
+                    "text objects": [
+                        { "text": "and made his home in a town named Nazareth.",
+                          "index": 1}],
+                    "text": "and made his home in a town named Nazareth. "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+   </pre></td><td><pre>      
+    {"book":{"bookCode":"MAT"},
+      "chapters":[
+      {"chapterNumber":"1",
+          "contents":[
+          {"p":null},
+            {"verseNumber":"1",
+              "verseText":"the first verse",
+              "contents":[
+              "the first verse"
+                ]},
+            {"verseNumber":"2",
+              "verseText":"the second verse",
+              "contents":[
+              "the second verse"
+                ]},
+            {"verseNumber":"3",
+              "verseText":"and made his home in a town named Nazareth.",
+              "contents":[
+              {"cross-ref":[
+                  {"caller":"-"},
+                    {"xo":"2.23:"},
+                    {"xt":"Mrk 1.24; Luk 2.39; Jhn 1.45."}
+                    ],
+                  "closing":"\\x* "},
+                "and made his home in a town named Nazareth."
+                ]}
+            ]}
+        ],
+      "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+7. Multiple para markers
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id JHN
+    \c 1
+    \s1 The Preaching of John the 
+    Baptist
+    \r (Matthew 3.1-12; Luke 3.1-18; 
+    John 1.19-28)
+    \p
+    \v 1 This is the Good News about 
+    Jesus Christ, the Son of God.
+    \v 2 It began as the prophet 
+    Isaiah had written:
+    \q1 “God said, ‘I will send my 
+    messenger ahead of you
+    \q2 to open the way for you.’
+    \q1
+    \v 3 Someone is shouting in 
+    the desert,
+    \q2 ‘Get the road ready for 
+    the Lord;
+    \q2 make a straight path for 
+    him to travel!’”
+    \p
+    \v 4 So John appeared in the 
+    desert, baptizing and preaching. 
+    “Turn away from your sins and 
+    be baptized,” he told the people, 
+    “and God will forgive your sins.”
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "JHN"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [
+                { "section": {
+                      "text": "The Preaching of John the Baptist",
+                      "marker": "s1"},
+                  "sectionPostheader": [
+                      {"r": [{"text": "(Matthew 3.1-12; Luke 3.1-18; John 1.19-28)"}]}]},
+                { "styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "This is the Good News about Jesus Christ, the Son of God.",
+                          "index": 0}],
+                  "text": "This is the Good News about Jesus Christ, the Son of God. "
+                },
+                { "number": "2 ",
+                  "metadata": [{"styling": [
+                        { "marker": "q1",
+                          "index": 1},
+                        { "marker": "q2",
+                          "index": 3},
+                        { "marker": "q1",
+                          "index": 5}]}],
+                  "text objects": [
+                        { "text": "It began as the prophet Isaiah had written:",
+                          "index": 0},
+                        { "text": "“God said, ‘I will send my messenger ahead of you",
+                          "index": 2},
+                        { "text": "to open the way for you.’",
+                          "index": 4}],
+                    "text": "It began as the prophet Isaiah had written: “God said, 
+                      ‘I will send my messenger ahead of you to open the way for you.’ "
+                },
+                { "number": "3 ",
+                  "metadata": [{"styling": [
+                        { "marker": "q2",
+                          "index": 1},
+                        { "marker": "q2",
+                          "index": 3},
+                        { "marker": "p",
+                          "index": 5}]}],
+                  "text objects": [
+                        { "text": "Someone is shouting in the desert,",
+                          "index": 0},
+                        { "text": "‘Get the road ready for the Lord;",
+                          "index": 2},
+                        { "text": "make a straight path for him to travel!’”",
+                          "index": 4}],
+                  "text": "Someone is shouting in the desert, ‘Get the road ready for the Lord; 
+                    make a straight path for him to travel!’” "
+                },
+                { "number": "4 ",
+                  "text objects": [
+                        { "text": "So John appeared in the desert, baptizing and preaching. 
+                            “Turn away from your sins and be baptized,” e told the people, 
+                            “and God will forgive your sins.”",
+                          "index": 0}],
+                  "text": "So John appeared in the desert, baptizing and preaching. 
+                    “Turn away from your sins and be baptized,” e told the people, 
+                    “and God will forgive your sins.” "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"JHN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            [
+              {"s1":[
+                  "The Preaching of John the Baptist"
+                    ]},
+                {"r":[
+                  "(Matthew 3.1-12; Luke 3.1-18; John 1.19-28)"
+                    ]}
+                ],
+              {"p":null},
+              {"verseNumber":"1",
+                "verseText":"This is the Good News about Jesus Christ,
+                the Son of God.",
+                "contents":[
+                "This is the Good News about Jesus Christ,
+                  the Son of God."
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"It began as the prophet Isaiah had written: �God said,
+                �I will send my messenger ahead of you to open the way for you.�",
+                "contents":[
+                "It began as the prophet Isaiah had written:",
+                  {"q1":null},
+                  "�God said,
+                  �I will send my messenger ahead of you",
+                  {"q2":null},
+                  "to open the way for you.�",
+                  {"q1":null}
+                  ]},
+              {"verseNumber":"3",
+                "verseText":"Someone is shouting in the desert,
+                �Get the road ready for the Lord; make a straight path for him to travel!��",
+                "contents":[
+                "Someone is shouting in the desert,
+                  ",
+                  {"q2":null},
+                  "�Get the road ready for the Lord;",
+                  {"q2":null},
+                  "make a straight path for him to travel!��",
+                  {"p":null}
+                  ]},
+              {"verseNumber":"4",
+                "verseText":"So John appeared in the desert,
+                baptizing and preaching. �Turn away from your sins and be baptized,
+                � he told the people,
+                �and God will forgive your sins.�",
+                "contents":[
+                "So John appeared in the desert,
+                  baptizing and preaching. �Turn away from your sins and be baptized,
+                  � he told the people,
+                  �and God will forgive your sins.�"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+  
+
+8. Character markers
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><tr><td>     <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    \v 15 Tell the Israelites that I, 
+    the \nd Lord\nd*, the God of their 
+    ancestors, the God of Abraham, Isaac, 
+    and Jacob,
+    </pre></td><td><pre>
+      { "metadata": {"id": {"book": "GEN"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}],
+                  "text": "the second verse "
+                },
+                { "number": "15 ",
+                  "text objects": [
+                        { "text": "Tell the Israelites that I, the ",
+                          "index": 0},
+                        { "nd": [{"text": "Lord"}],
+                          "text": "Lord",
+                          "closed": true,
+                          "inline": true,
+                          "index": 1},
+                        { "text": ", the God of their ancestors, the God of Abraham, Isaac, and Jacob,",
+                          "index": 2}],
+                    "text": "Tell the Israelites that I, the  Lord , the God of their ancestors, 
+                      the God of Abraham, Isaac, and Jacob, "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]},
+              {"verseNumber":"15",
+                "verseText":"Tell the Israelites that I,
+                the Lord,
+                the God of their ancestors,
+                the God of Abraham,
+                Isaac,
+                and Jacob,
+                ",
+                "contents":[
+                "Tell the Israelites that I,
+                  the",
+                  {"nd":[
+                    "Lord"
+                      ],
+                    "closing":"\\nd*"},
+                  ",
+                  the God of their ancestors,
+                  the God of Abraham,
+                  Isaac,
+                  and Jacob,
+                  "
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+  
+9. Markers with attributes
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse \w gracious|lemma="grace"\w*
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "GEN"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse ",
+                          "index": 0},
+                        { "w": [{"text": "gracious"}],
+                          "text": "gracious",
+                          "attributes": [{
+                              "name": "lemma",
+                              "value": "\"grace\""}],
+                          "closed": true,
+                          "inline": true,
+                          "index": 1}],
+                  "text": "the second verse  gracious "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse gracious",
+                "contents":[
+                "the second verse",
+                  {"w":[
+                    "gracious"
+                      ],
+                    "attributes":[
+                    {"lemma":"grace"}
+                      ],
+                    "closing":"\\w*"}
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+ 
+#### More Complex Components
+
+1. Lists
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    \c 2
+    \p
+    \v 1 the third verse
+    \v 2 the fourth verse
+    \s1 Administration of the Tribes of Israel
+    \lh
+    \v 16-22 This is the list of the 
+    administrators of the tribes of Israel:
+    \li1 Reuben - Eliezer son of Zichri
+    \li1 Simeon - Shephatiah son of Maacah
+    \li1 Levi - Hashabiah son of Kemuel
+    \lf This was the list of the 
+    administrators of the tribes of Israel.
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "GEN"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}],
+                  "text": "the second verse "
+                }]
+          },
+          { "header": {"title": "2"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the third verse",
+                          "index": 0}],
+                  "text": "the third verse "
+                },
+                { "number": "2 ",
+                  "metadata": [
+                        { "section": {
+                                "text": "Administration of the Tribes of Israel",
+                                "marker": "s1"},
+                          "index": 1},
+                        { "styling": [
+                                { "marker": "lh",
+                                  "index": 2}]}],
+                  "text objects": [
+                        { "text": "the fourth verse",
+                          "index": 0}],
+                  "text": "the fourth verse "
+                },
+                { "number": "16-22 ",
+                  "metadata": [{"styling": [
+                        { "marker": "lf",
+                          "index": 2}]}],
+                  "text objects": [
+                        { "text": "This is the list of the administrators 
+                                  of the tribes of Israel:",
+                          "index": 0},
+                        { "list": [
+                                { "li": [{"text": "Reuben - Eliezer son of Zichri"}],
+                                  "number": "1"},
+                                { "li": [{"text": "Simeon - Shephatiah son of Maacah"}],
+                                  "number": "1"},
+                                { "li": [{"text": "Levi - Hashabiah son of Kemuel"}],
+                                  "number": "1"}],
+                          "text": "Reuben - Eliezer son of Zichri | Simeon - 
+                                    Shephatiah son of Maacah | Levi - Hashabiah 
+                                    son of Kemuel | ",
+                          "index": 1},
+                        { "text": "This was the list of the administrators of the tribes of Israel.",
+                          "index": 3}],
+                    "text": "This is the list of the administrators of the tribes of 
+                              Israel: Reuben - Eliezer son of Zichri | Simeon - 
+                              Shephatiah son of Maacah | Levi - Hashabiah 
+                              son of Kemuel |  This was the list of the administrators 
+                              of the tribes of Israel. "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]}
+              ]},
+          {"chapterNumber":"2",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the third verse",
+                "contents":[
+                "the third verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the fourth verse",
+                "contents":[
+                "the fourth verse",
+                  [
+                  {"s1":[
+                      "Administration of the Tribes of Israel",
+                        {"list":[
+                          {"lh":null}
+                            ]}
+                        ]}
+                    ]
+                  ]},
+              {"verseNumber":"16-22",
+                "verseText":"This is the list of the administrators of the tribes of Israel: Reuben - Eliezer son of Zichri Simeon - Shephatiah son of Maacah Levi - Hashabiah son of Kemuel This was the list of the administrators of the tribes of Israel.",
+                "contents":[
+                "This is the list of the administrators of the tribes of Israel:",
+                  {"list":[
+                    {"li1":[
+                        "Reuben - Eliezer son of Zichri"
+                          ]},
+                      {"li1":[
+                        "Simeon - Shephatiah son of Maacah"
+                          ]},
+                      {"li1":[
+                        "Levi - Hashabiah son of Kemuel"
+                          ]},
+                      {"lf":[
+                        "This was the list of the administrators of the tribes of Israel."
+                          ]}
+                      ]}
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+2. Header section with more markers
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id MRK 41MRKGNT92.SFM, Good News Translation, June 2003
+    \h John
+    \toc1 The Gospel according to John
+    \toc2 John
+    \mt2 The Gospel
+    \mt3 according to
+    \mt1 JOHN
+    \ip The two endings to the Gospel, 
+    which are enclosed in brackets, 
+    are generally regarded as written 
+    by someone other than the author 
+    of \bk Mark\bk*
+    \iot Outline of Contents
+    \io1 The beginning of the 
+    gospel \ior (1.1-13)\ior*
+    \io1 Jesus' public ministry in 
+    Galilee \ior (1.14–9.50)\ior*
+    \io1 From Galilee to 
+    Jerusalem \ior (10.1-52)\ior*
+    \c 1
+    \ms BOOK ONE
+    \mr (Psalms 1–41)
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {
+            "book": "MRK",
+            "details": " 41MRKGNT92.SFM, Good News Translation, June 2003"},
+          "headers": [
+            { "h": "John"},
+            { "toc1": [{"text": "The Gospel according to John"}]},
+            { "toc2": [{"text": "John"}]},
+            [ { "mt": [{"text": "The Gospel"}],
+                "number": "2"},
+              { "mt": [{"text": "according to"}],
+                "number": "3"},
+              { "mt": [{"text": "JOHN"}],
+                "number": "1"}]
+            ],
+          "introduction": [
+            { "ip": [{  "text": "The two endings to the Gospel, which are 
+                          enclosed in brackets, are generally regarded as 
+                          written by someone other than the author of "},
+                    { "bk": [{"text": "Mark"}],
+                      "text": "Mark",
+                      "closed": true,
+                      "inline": true}]},
+            { "iot": [{"text": "Outline of Contents"}]},
+            [   { "io": [
+                        {
+                            "text": "The beginning of the gospel "
+                        },
+                        {
+                            "ior": [
+                                {
+                                    "text": "(1.1-13)"
+                                }
+                            ],
+                            "text": "(1.1-13)",
+                            "closed": true,
+                            "inline": true
+                        }
+                    ],
+                  "number": "1"
+                },
+                { "io": [ { "text": "Jesus' public ministry in Galilee "},
+                          { "ior": [{"text": "(1.14–9.50)"}],
+                            "text": "(1.14–9.50)",
+                            "closed": true,
+                            "inline": true}],
+                  "number": "1"},
+                { "io": [ { "text": "From Galilee to Jerusalem "},
+                          { "ior": [{"text": "(10.1-52)"}],
+                            "text": "(10.1-52)",
+                            "closed": true,
+                            "inline": true}],
+                  "number": "1"}]
+          ]
+          },
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [
+                {"section": 
+                      {"ms": {"text": "BOOK ONE"}},
+                  "sectionPostheader": [
+                      {"mr": {"text": "(Psalms 1–41)"}}]
+                },
+                {"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}],
+                  "text": "the second verse "
+                }
+            ]
+          }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>
+
+      {"book":{"bookCode":"MRK",
+          "description":"41MRKGNT92.SFM,
+          Good News Translation,
+          June 2003",
+          "meta":[
+          {"h":"John"},
+            {"toc1":[
+              "The Gospel according to John"
+                ]},
+            {"toc2":[
+              "John"
+                ]},
+            [
+            {"mt2":[
+                "The Gospel"
+                  ]},
+              {"mt3":[
+                "according to"
+                  ]},
+              {"mt1":[
+                "JOHN"
+                  ]}
+              ],
+            {"ip":[
+              "The two endings to the Gospel,
+                which are enclosed in brackets,
+                are generally regarded as written by someone other than the author of",
+                {"bk":[
+                  "Mark"
+                    ],
+                  "closing":"\\bk*"}
+                ]},
+            {"iot":[
+              "Outline of Contents"
+                ]},
+            [
+            {"io1":[
+                "The beginning of the gospel",
+                  {"ior":[
+                    "(1.1-13)"
+                      ],
+                    "closing":"\\ior*"}
+                  ]},
+              {"io1":[
+                "Jesus' public ministry in Galilee",
+                  {"ior":[
+                    "(1.14�9.50)"
+                      ],
+                    "closing":"\\ior*"}
+                  ]},
+              {"io1":[
+                "From Galilee to Jerusalem",
+                  {"ior":[
+                    "(10.1-52)"
+                      ],
+                    "closing":"\\ior*"}
+                  ]}
+              ]
+            ]},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            [
+              {"ms":"BOOK ONE"},
+                {"mr":"(Psalms 1�41)"}
+                ],
+              {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+3. Character marker nesting
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    \v 14 That is why \bk The Book of 
+    the \+nd Lord\+nd*'s Battles\bk* 
+    speaks of “...the town of Waheb in 
+    the area of Suphah
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "GEN"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{ "styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}],
+                  "text": "the second verse "
+                },
+                { "number": "14 ",
+                  "text objects": [
+                        { "text": "That is why ",
+                          "index": 0},
+                        { "bk": [ {"text": "The Book of the "},
+                                  {"+nd": [{"text": "Lord"}],
+                                    "text": "Lord",
+                                    "closed": true,
+                                    "inline": true},
+                                  { "text": "'s Battles"}],
+                          "text": "The Book of the Lord's Battles",
+                          "closed": true,
+                          "inline": true,
+                          "index": 1},
+                        { "text": "speaks of “...the town of Waheb in the area of Suphah",
+                          "index": 2}],
+                    "text": "That is why  The Book of the Lord's Battles speaks of 
+                          “...the town of Waheb in the area of Suphah "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]},
+              {"verseNumber":"14",
+                "verseText":"That is why The Book of the Lord's Battles speaks of �...the town of Waheb in the area of Suphah",
+                "contents":[
+                "That is why",
+                  {"bk":[
+                    "The Book of the",
+                      {"+nd":[
+                        "Lord"
+                          ],
+                        "closing":"\\+nd*"},
+                      "'s Battles"
+                      ],
+                    "closing":"\\bk*"},
+                  "speaks of �...the town of Waheb in the area of Suphah"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+4. Markers with default attributes
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse \w gracious|grace\w*
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "GEN"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{ "styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse ",
+                          "index": 0},
+                        { "w": [{"text": "gracious"}],
+                          "text": "gracious",
+                          "attributes": [
+                                { "name": "default attribute",
+                                  "value": "grace"}],
+                          "closed": true,
+                          "inline": true,
+                          "index": 1}],
+                  "text": "the second verse  gracious "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>
+    {"book":{"bookCode":"GEN"},
+      "chapters":[
+      {"chapterNumber":"1",
+          "contents":[
+          {"p":null},
+            {"verseNumber":"1",
+              "verseText":"the first verse",
+              "contents":[
+              "the first verse"
+                ]},
+            {"verseNumber":"2",
+              "verseText":"the second verse gracious",
+              "contents":[
+              "the second verse",
+                {"w":[
+                  "gracious"
+                    ],
+                  "attributes":[
+                  {"defaultAttribute":"grace"}
+                    ],
+                  "closing":"\\w*"}
+                ]}
+            ]}
+        ],
+      "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+5. Link-attributes and custom attributes
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second 
+    verse \w gracious|x-myattr="metadata"\w*
+    \q1 “Someone is shouting in the desert,
+    \q2 ‘Prepare a road for the Lord;
+    \q2 make a straight path for him to travel!’ ”
+    \ms \jmp |link-id="article-john_the_baptist"\jmp*
+    John the Baptist
+    \p John is sometimes called...
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "GEN"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "metadata": [{"styling": [
+                          { "marker": "q1",
+                            "index": 2},
+                          { "marker": "q2",
+                            "index": 4},
+                          { "marker": "q2",
+                            "index": 6},
+                          { "marker": "m",
+                            "index": 8},
+                          { "marker": "p",
+                            "index": 12}]}],
+                  "text objects": [
+                        { "text": "the second verse ",
+                          "index": 0},
+                        { "w": [{"text": "gracious"}],
+                          "text": "gracious",
+                          "attributes": [
+                                { "name": "x-myattr",
+                                  "value": "\"metadata\""}],
+                          "closed": true,
+                          "inline": true,
+                          "index": 1},
+                        { "text": "“Someone is shouting in the desert,",
+                          "index": 3},
+                        { "text": "‘Prepare a road for the Lord;",
+                          "index": 5},
+                        { "text": "make a straight path for him to travel!’ ”",
+                          "index": 7},
+                        { "text": "s ",
+                          "index": 9},
+                        { "jmp": [],
+                          "text": "",
+                          "attributes": [
+                                { "name": "link-id",
+                                  "value": "\"article-john_the_baptist\""}],
+                          "closed": true,
+                          "inline": true,
+                          "index": 10},
+                        { "text": "John the Baptist",
+                          "index": 11},
+                        { "text": "John is sometimes called...",
+                          "index": 13}],
+                  "text": "the second verse  gracious “Someone is shouting 
+                        in the desert, ‘Prepare a road for the Lord; make a 
+                        straight path for him to travel!’ ” s   John the Baptist 
+                        John is sometimes called... "
+                }
+             ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse gracious �Someone is shouting in the desert,
+                �Prepare a road for the Lord; make a straight path for him to travel!� � s John the Baptist John is sometimes called...",
+                "contents":[
+                "the second",
+                  "verse",
+                  {"w":[
+                    "gracious"
+                      ],
+                    "attributes":[
+                    {"x-myattr":"metadata"}
+                      ],
+                    "closing":"\\w*"},
+                  {"q1":null},
+                  "�Someone is shouting in the desert,
+                  ",
+                  {"q2":null},
+                  "�Prepare a road for the Lord;",
+                  {"q2":null},
+                  "make a straight path for him to travel!� �",
+                  {"m":null},
+                  "s",
+                  {"jmp":[],
+                    "attributes":[
+                    {"link-id":"article-john_the_baptist"}
+                      ],
+                    "closing":"\\jmp*"},
+                  "John the Baptist",
+                  {"p":null},
+                  "John is sometimes called..."
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+6. Table 
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    \p
+    \v 12-83 They presented their 
+    offerings in the following order:
+    \tr \th1 Day \th2 Tribe \th3 Leader
+    \tr \tcr1 1st \tc2 Judah \tc3 Nahshon 
+    son of Amminadab
+    \tr \tcr1 2nd \tc2 Issachar \tc3 Nethanel
+     son of Zuar
+    \tr \tcr1 3rd \tc2 Zebulun \tc3 Eliab 
+    son of Helon
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "GEN"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "metadata": [{"styling": [
+                            { "marker": "p",
+                              "index": 1}]}],
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}],
+                  "text": "the second verse "
+                },
+                { "number": "12-83 ",
+                  "text objects": [
+                        { "text": "They presented their offerings in the following order:",
+                          "index": 0},
+                        { "table": {
+                            "header": [
+                                { "th": "Day ",
+                                  "number": "1",
+                                  "inline": true},
+                                { "th": "Tribe ",
+                                  "number": "2",
+                                  "inline": true},
+                                { "th": "Leader",
+                                  "number": "3",
+                                  "inline": true}
+                                ],
+                            "rows": [
+                                [ { "tcr": "1st ",
+                                    "number": "1",
+                                    "inline": true},
+                                  { "tc": "Judah ",
+                                    "number": "2",
+                                    "inline": true},
+                                  { "tc": "Nahshon son of Amminadab",
+                                    "number": "3",
+                                    "inline": true}],
+                                [ { "tcr": "2nd ",
+                                    "number": "1",
+                                    "inline": true},
+                                  { "tc": "Issachar ",
+                                    "number": "2",
+                                    "inline": true},
+                                  { "tc": "Nethanel son of Zuar",
+                                    "number": "3",
+                                    "inline": true}],
+                                [ { "tcr": "3rd ",
+                                    "number": "1",
+                                    "inline": true},
+                                  { "tc": "Zebulun ",
+                                    "number": "2",
+                                    "inline": true},
+                                  { "tc": "Eliab son of Helon",
+                                    "number": "3",
+                                    "inline": true}]
+                                ]},
+                            "text": "Day  | Tribe  | Leader | \n
+                            1st  |  Judah  |Nahshon son of Amminadab |  \n
+                            2nd  |  Issachar  |  Nethanel son of Zuar |  \n
+                            3rd  |  Zebulun  |  Eliab son of Helon |  \n",
+                            "index": 1
+                        }
+                    ],
+                    "text": "They presented their offerings in the following order: 
+                    Day  | Tribe  | Leader | \n
+                    1st  |  Judah  |  Nahshon son of Amminadab |  \n
+                    2nd  |  Issachar  |  Nethanel son of Zuar |  \n
+                    3rd  |  Zebulun  |  Eliab son of Helon |  \n "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse",
+                  {"p":null}
+                  ]},
+              {"verseNumber":"12-83",
+                "verseText":"They presented their offerings in the following order: Day ~ Tribe ~ Leader ~ //1st ~ Judah ~ Nahshon son of Amminadab ~ //2nd ~ Issachar ~ Nethanel son of Zuar ~ //3rd ~ Zebulun ~ Eliab son of Helon ~ //",
+                "contents":[
+                "They presented their offerings in the following order:",
+                  {"table":{"header":[
+                      {"th1":"Day"},
+                        {"th2":"Tribe"},
+                        {"th3":"Leader"}
+                        ],
+                      "rows":[
+                      [
+                        {"tcr1":"1st"},
+                          {"tc2":"Judah"},
+                          {"tc3":"Nahshon son of Amminadab"}
+                          ],
+                        [
+                        {"tcr1":"2nd"},
+                          {"tc2":"Issachar"},
+                          {"tc3":"Nethanel son of Zuar"}
+                          ],
+                        [
+                        {"tcr1":"3rd"},
+                          {"tc2":"Zebulun"},
+                          {"tc3":"Eliab son of Helon"}
+                          ]
+                        ]},
+                    "text":"Day ~ Tribe ~ Leader ~ //1st ~ Judah ~ Nahshon son of Amminadab ~ //2nd ~ Issachar ~ Nethanel son of Zuar ~ //3rd ~ Zebulun ~ Eliab son of Helon ~ //"}
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+     </pre></tr></table>
+
+
+7. Milestones
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id GEN
+    \c 1
+    \p
+    \v 1 the first verse
+    \v 2 the second verse
+    \v 3 \qt-s |sid="qt_123" who="Pilate"\*“Are you the king of the Jews?”\qt-e |eid="qt_123"\*
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "GEN"}},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "text objects": [
+                        { "text": "the first verse",
+                          "index": 0}],
+                  "text": "the first verse "
+                },
+                { "number": "2 ",
+                  "text objects": [
+                        { "text": "the second verse",
+                          "index": 0}],
+                  "text": "the second verse "
+                },
+                { "number": "3 ",
+                  "metadata": [
+                        { "milestone": "qt",
+                          "start/end": "-s",
+                          "marker": "qt-s",
+                          "closed": true,
+                          "attributes": [
+                                { "name": "sid",
+                                  "value": "\"qt_123\""},
+                                { "name": "who",
+                                  "value": "\"Pilate\""}],
+                          "index": 0},
+                        { "milestone": "qt",
+                          "start/end": "-e",
+                          "marker": "qt-e",
+                          "closed": true,
+                          "attributes": [
+                                { "name": "eid",
+                                  "value": "\"qt_123\""}],
+                          "index": 2}],
+                    "text objects": [
+                        { "text": "“Are you the king of the Jews?”",
+                          "index": 1}],
+                    "text": "“Are you the king of the Jews?” "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": []}
+      }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]},
+              {"verseNumber":"3",
+                "verseText":"�Are you the king of the Jews?�",
+                "contents":[
+                {"milestone":"qt",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"sid":"qt_123"},
+                      {"who":"Pilate"}
+                      ]},
+                  "�Are you the king of the Jews?�",
+                  {"milestone":"qt",
+                    "delimter":"-e",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"eid":"qt_123"}
+                      ]}
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+
+     </pre></tr></table>
+
+
+8. Alignment files
+
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th></tr><td>     <pre>
+    \id ACT
+    \h प्रेरितों के काम
+    \toc1 प्रेरितों के काम
+    \toc2 प्रेरितों के काम
+    \mt प्रेरितों के काम
+    \c 1
+    \v 1 \w हे|x-occurrence="1" x-occurrences="1"\w*\zaln-s | x-verified="true" x-occurrence="1"    x-occurrences="1" x-content="Θεόφιλε"
+    \w थियुफिलुस|x-occurrence="1" x-occurrences="1"\w*
+    \zaln-e\*
+    \w मैंने|x-occurrence="1" x-occurrences="1"\w*\zaln-s | x-verified="true" x-occurrence="1"  x-occurrences="1" x-content="πρῶτον"
+    \w पहली|x-occurrence="1" x-occurrences="1"\w*
+    \zaln-e\*
+    \w पुस्तिका|x-occurrence="1" x-occurrences="1"\w*\w उन|x-occurrence="1" x-occurrences="1"\w*\w सब|  x-occurrence="1" x-occurrences="1"\w*\zaln-s | x-verified="true" x-occurrence="1" x-occurrences="1"   x-content="λόγον"
+    \w बातों|x-occurrence="1" x-occurrences="1"\w*
+    \zaln-e\*
+    \zaln-s | x-verified="true" x-occurrence="1" x-occurrences="1" x-content="ἀνελήμφθη"
+    \w ऊपर|x-occurrence="1" x-occurrences="1"\w*\w उठाया|x-occurrence="1" x-occurrences="1"\w*
+    \zaln-e\*
+    \zaln-s | x-verified="true" x-occurrence="1" x-occurrences="1" x-content="ἄχρι"
+    \w न|x-occurrence="1" x-occurrences="1"\w*
+    \zaln-e\*
+    \w गया|x-occurrence="1" x-occurrences="1"\w* 
+    \v 30 और पौलुस पूरे दो वर्ष अपने किराये के घर में रहा,
+    \v 31 और जो उसके पास आते थे, उन सबसे मिलता रहा और बिना रोक-टोक बहुत निडर होकर परमेश्‍वर के राज्य का     प्रचार करता और प्रभु यीशु मसीह की बातें सिखाता रहा।
+    </pre></td><td><pre>
+      {
+        "metadata": {"id": {"book": "ACT"},
+        "headers": [
+            { "h": "प्रेरितों के काम"},
+            { "toc1": [{"text": "प्रेरितों के काम"}]},
+            { "toc2": [{"text": "प्रेरितों के काम"}]},
+            [ {"mt": [{"text": "प्रेरितों के काम"}]}]
+          ]},
+        "chapters": [
+          { "header": {"title": "1"},
+            "metadata": [{"styling": [{"marker": "p"}]}],
+            "verses": [
+                { "number": "1 ",
+                  "metadata": [
+                        { "milestone": "zaln",
+                          "start/end": "-s",
+                          "marker": "zaln-s",
+                          "closed": true,
+                          "attributes": [
+                                { "name": "x-verified",
+                                  "value": "\"true\""},
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""},
+                                { "name": "x-content",
+                                  "value": "\"Θεόφιλε\""}],
+                          "index": 1},
+                        { "milestone": "zaln",
+                          "start/end": "-e",
+                          "marker": "zaln-e",
+                          "closed": true,
+                          "index": 3},
+                        { "milestone": "zaln",
+                          "start/end": "-s",
+                          "marker": "zaln-s",
+                          "closed": true,
+                          "attributes": [
+                                { "name": "x-verified",
+                                  "value": "\"true\""},
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""},
+                                { "name": "x-content",
+                                  "value": "\"πρῶτον\""}],
+                          "index": 5},
+                        { "milestone": "zaln",
+                          "start/end": "-e",
+                          "marker": "zaln-e",
+                          "closed": true,
+                          "index": 7},
+                        { "milestone": "zaln",
+                          "start/end": "-s",
+                          "marker": "zaln-s",
+                          "closed": true,
+                          "attributes": [
+                                { "name": "x-verified",
+                                  "value": "\"true\""},
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""},
+                                { "name": "x-content",
+                                  "value": "\"λόγον\""}],
+                          "index": 11},
+                        { "milestone": "zaln",
+                          "start/end": "-e",
+                          "marker": "zaln-e",
+                          "closed": true,
+                          "index": 13},
+                        { "milestone": "zaln",
+                          "start/end": "-s",
+                          "marker": "zaln-s",
+                          "closed": true,
+                          "attributes": [
+                                { "name": "x-verified",
+                                  "value": "\"true\""},
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""},
+                                { "name": "x-content",
+                                  "value": "\"ἀνελήμφθη\""}],
+                          "index": 14},
+                        { "milestone": "zaln",
+                          "start/end": "-e",
+                          "marker": "zaln-e",
+                          "closed": true,
+                          "index": 17},
+                        { "milestone": "zaln",
+                          "start/end": "-s",
+                          "marker": "zaln-s",
+                          "closed": true,
+                          "attributes": [
+                                { "name": "x-verified",
+                                  "value": "\"true\""},
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""},
+                                { "name": "x-content",
+                                  "value": "\"ἄχρι\""}],
+                          "index": 18},
+                        { "milestone": "zaln",
+                          "start/end": "-e",
+                          "marker": "zaln-e",
+                          "closed": true,
+                          "index": 20}],
+                  "text objects": [
+                        { "w": [{ "text": "हे"}],
+                          "text": "हे",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "inline": true,
+                          "index": 0},
+                        { "w": [{"text": "थियुफिलुस"}],
+                          "text": "थियुफिलुस",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "index": 2},
+                        { "w": [{"text": "मैंने"}],
+                          "text": "मैंने",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "index": 4},
+                        { "w": [{"text": "पहली"}],
+                          "text": "पहली",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "index": 6},
+                        { "w": [{"text": "पुस्तिका"}],
+                          "text": "पुस्तिका",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "index": 8},
+                        { "w": [{"text": "उन"}],
+                          "text": "उन",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "inline": true,
+                          "index": 9},
+                        { "w": [{"text": "सब"}],
+                          "text": "सब",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "inline": true,
+                          "index": 10},
+                        { "w": [{"text": "बातों"}],
+                          "text": "बातों",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "index": 12},
+                        { "w": [{"text": "ऊपर"}],
+                          "text": "ऊपर",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "index": 15},
+                        { "w": [{"text": "उठाया"}],
+                          "text": "उठाया",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "inline": true,
+                          "index": 16},
+                        { "w": [{"text": "न"}],
+                          "text": "न",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "index": 19},
+                        { "w": [{"text": "गया"}],
+                          "text": "गया",
+                          "attributes": [
+                                { "name": "x-occurrence",
+                                  "value": "\"1\""},
+                                { "name": "x-occurrences",
+                                  "value": "\"1\""}],
+                          "closed": true,
+                          "index": 21}
+                    ],
+                  "text": "हे थियुफिलुस मैंने पहली पुस्तिका उन सब बातों ऊपर उठाया न गया "
+                },
+                { "number": "30 ",
+                  "text objects": [
+                        { "text": "और पौलुस पूरे दो वर्ष अपने किराये के घर में रहा,",
+                          "index": 0}],
+                  "text": "और पौलुस पूरे दो वर्ष अपने किराये के घर में रहा, "
+                },
+                { "number": "31 ",
+                  "text objects": [
+                        { "text": "और जो उसके पास आते थे, उन सबसे मिलता रहा और 
+                            बिना रोक-टोक बहुत निडर होकर परमेश्‍वर के राज्य का प्रचार करता और
+                            प्रभु यीशु मसीह की बातें सिखाता रहा।",
+                          "index": 0}],
+                  "text": "और जो उसके पास आते थे, उन सबसे मिलता रहा और बिना रोक-टोक बहुत 
+                      निडर होकर परमेश्‍वर के राज्य का प्रचार करता और प्रभु यीशु मसीह की बातें सिखाता रहा। "
+                }
+              ]
+            }
+          ],
+        "messages": {"warnings": ["Empty lines present. "]}
+      }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"ACT",
+          "meta":[
+          {"h":"प्रेरितों के काम"},
+            {"toc1":[
+              "प्रेरितों के काम"
+                ]},
+            {"toc2":[
+              "प्रेरितों के काम"
+                ]},
+            [
+            {"mt":[
+                "प्रेरितों के काम"
+                  ]}
+              ]
+            ]},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"हेथियुफिलुसमैंनेपहलीपुस्तिकाउनसबबातोंऊपरउठायानगया",
+                "contents":[
+                {"w":[
+                    "हे"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"x-verified":"true"},
+                      {"x-occurrence":"1"},
+                      {"x-occurrences":"1"},
+                      {"x-content":"Θεόφιλε"}
+                      ]},
+                  {"w":[
+                    "थियुफिलुस"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-e",
+                    "closing":"\\*"},
+                  {"w":[
+                    "मैंने"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"x-verified":"true"},
+                      {"x-occurrence":"1"},
+                      {"x-occurrences":"1"},
+                      {"x-content":"πρῶτον"}
+                      ]},
+                  {"w":[
+                    "पहली"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-e",
+                    "closing":"\\*"},
+                  {"w":[
+                    "पुस्तिका"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"w":[
+                    "उन"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"w":[
+                    "सब"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"x-verified":"true"},
+                      {"x-occurrence":"1"},
+                      {"x-occurrences":"1"},
+                      {"x-content":"λόγον"}
+                      ]},
+                  {"w":[
+                    "बातों"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-e",
+                    "closing":"\\*"},
+                  {"milestone":"zaln",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"x-verified":"true"},
+                      {"x-occurrence":"1"},
+                      {"x-occurrences":"1"},
+                      {"x-content":"ἀνελήμφθη"}
+                      ]},
+                  {"w":[
+                    "ऊपर"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"w":[
+                    "उठाया"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-e",
+                    "closing":"\\*"},
+                  {"milestone":"zaln",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"x-verified":"true"},
+                      {"x-occurrence":"1"},
+                      {"x-occurrences":"1"},
+                      {"x-content":"ἄχρι"}
+                      ]},
+                  {"w":[
+                    "न"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-e",
+                    "closing":"\\*"},
+                  {"w":[
+                    "गया"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"}
+                  ]},
+              {"verseNumber":"30",
+                "verseText":"और पौलुस पूरे दो वर्ष अपने किराये के घर में रहा,
+                ",
+                "contents":[
+                "और पौलुस पूरे दो वर्ष अपने किराये के घर में रहा,
+                  "
+                  ]},
+              {"verseNumber":"31",
+                "verseText":"और जो उसके पास आते थे,
+                उन सबसे मिलता रहा और बिना रोक-टोक बहुत निडर होकर परमेश्‍वर के राज्य का प्रचार करता और प्रभु यीशु मसीह की बातें सिखाता रहा।",
+                "contents":[
+                "और जो उसके पास आते थे,
+                  उन सबसे मिलता रहा और बिना रोक-टोक बहुत निडर होकर परमेश्‍वर के राज्य का प्रचार करता और प्रभु यीशु मसीह की बातें सिखाता रहा।"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[      ]}}
+     </pre></tr></table>
+
+
+
+
 # The USFM Grammar Outputs 
 
 The comparison of JSON outputs obtained from usfm-grammar with varying parameters.
diff --git a/docs/changelog.md b/docs/changelog.md
index 137b871b..c61dd273 100644
--- a/docs/changelog.md
+++ b/docs/changelog.md
@@ -19,6 +19,8 @@
     - book, book.bookcode, book.details, book.meta, chapters, contents, 
       verseNumber, verseText, footnote, cross-ref, table, list, milestone, attributes,
       closing
+      
+  [JSON structure comparison](https://github.com/Bridgeconn/usfm-grammar/blob/master/docs/OutputComparisons.md#difference-in-json-outputs-of-1x-and-2x)
 - API changes
   usfm-grammar implementation is now class based. 
   new names for methods in previous version are as follows
@@ -47,7 +49,7 @@ The output JSON structure has been revised to enable the backward conversion pos
 > * published character --> cp
 > * description --> cd
 
-2. Have contents array within chapters and verses to list all scripture and meta-scripture sub-elements in them in the order of occurence.
+2. Adds index value for objects within a verse
     <table><tr><th>Input</th><th>New Structure</th></tr><tr><td>
     <pre>
     \v 2 O \nd Lord\nd*, I have heard of what you have done,
@@ -55,47 +57,39 @@ The output JSON structure has been revised to enable the backward conversion pos
     \q1 Now do again in our times
     \q2 the great deeds you used to do.
     </pre></td><td><pre>
-    "chapters": [
-        {
-            "chapterNumber": "3",
-            "contents": [
-                [
-                    {
-                        "s1": [
-                            "A Prayer of Habakkuk"
-                        ]
-                    }
-                ],
-                {
-                    "p": null
-                },
-                {
-                    "verseNumber": "2",
-                    "verseText": "O Lord, I have heard of what you have done, and I am filled with awe. Now do again in our times the great deeds you used to do.",
-                    "contents": [
-                        "O",
-                        {
-                            "nd": [
-                                "Lord"
-                            ],
-                            "closing": "\\nd*"
-                        },
-                        ", I have heard of what you have done,",
-                        {
-                            "q2": null
-                        },
-                        "and I am filled with awe.",
-                        {
-                            "q1": null
-                        },
-                        "Now do again in our times",
-                        {
-                            "q2": null
-                        },
-                        "the great deeds you used to do."
-                    ]
-                }
-            ]
+    "verses":[
+        {"number":"2",
+         "metadata":[
+            {"styling":[
+                {"marker":"q2",
+                  "index":3},
+                {"marker":"q1",
+                  "index":5},
+                {"marker":"q2",
+                  "index":7}
+                ]
+              }
+            ],
+          "text objects":[
+            {"text":"O ",
+              "index":0},
+            {"nd":[{"text":"Lord"}],
+              "text":"Lord",
+              "closed":true,
+              "inline":true,
+              "index":1},
+            {"text":", I have heard of what you have done,",
+              "index":2},
+            {"text":"and I am filled with awe.",
+              "index":4},
+            {"text":"Now do again in our times",
+              "index":6},
+            {"text":"the great deeds you used to do.",
+              "index":8}
+            ],
+          "text":"O Lord , I have heard of what you have done, 
+              and I am filled with awe. Now do again in our times 
+              the great deeds you used to do. "
         }
     ]
     </pre></td></table></tr></table>
@@ -127,112 +121,69 @@ The output JSON structure has been revised to enable the backward conversion pos
     \li1 Levi - Hashabiah son of Kemuel
     \li1 Aaron - Zadok
     </pre></td><td><pre>
-    {
-    "book": {
-        "bookCode": "GEN",
-        "meta": [
-            [
-                {
-                    "mt1": [
-                        "THE ACTS"
-                    ]
-                },
-                {
-                    "mt2": [
-                        "of the Apostles"
-                    ]
-                }
-            ],
-            {
-                "is": [
-                    "Introduction"
-                ]
-            },
-            {
-                "ip": [
-                    "The two endings to the Gospel,",
-                    "which are enclosed in brackets,",
-                    "are generally regarded",
-                    "as written by someone other than",
-                    "the author of",
-                    {
-                        "bk": [
-                            "Mark"
-                        ],
-                        "closing": "\\bk*"
-                    }
-                ]
-            },
-            {
-                "iot": [
-                    "Outline of Contents"
-                ]
-            },
-            [
-                {
-                    "io1": [
-                        "The beginning of the gospel",
-                        "(1.1-13)"
-                    ]
-                },
-                {
-                    "io1": [
-                        "Jesus' public ministry in",
-                        "Galilee (1.14–9.50)"
-                    ]
-                },
-                {
-                    "io1": [
-                        "From Galilee to Jerusalem",
-                        "(10.1-52)"
-                    ]
-                }
-            ]
+    "headers":[
+        [{"mt":[{"text":"THE ACTS"}],
+          "number":"1"},
+         {"mt":[{"text":"of the Apostles"}],
+          "number":"2"}
         ]
+      ],
+    "introduction":[
+        {"is":[{"text":"Introduction"}]},
+        {"iot":[{"text":"Outline of Contents"}]},
+        [{"io":[{"text":"The beginning of 
+              the gospel (1.1-13)"}],
+          "number":"1"},
+         {"io":[{"text":"Jesus' public ministry 
+            in Galilee (1.14�9.50)"}],
+          "number":"1"},
+         {"io":[{"text":"From Galilee to 
+                Jerusalem (10.1-52)"}],
+          "number":"1"}
+        ]
+      ]
     },
-    "chapters": [
-        {
-            "chapterNumber": "20",
-            "contents": [
-                {
-                    "p": null
-                },
-                {
-                    "verseNumber": "16-22",
-                    "verseText": "This is the list of the administrators of the tribes of Israel: Reuben - Eliezer son of Zichri Simeon - Shephatiah son of Maacah Levi - Hashabiah son of Kemuel Aaron - Zadok",
-                    "contents": [
-                        "This is the list of the",
-                        "administrators of the tribes of Israel:",
-                        {
-                            "list": [
-                                {
-                                    "li1": [
-                                        "Reuben - Eliezer son of Zichri"
-                                    ]
-                                },
-                                {
-                                    "li1": [
-                                        "Simeon - Shephatiah son of Maacah"
-                                    ]
-                                },
-                                {
-                                    "li1": [
-                                        "Levi - Hashabiah son of Kemuel"
-                                    ]
-                                },
-                                {
-                                    "li1": [
-                                        "Aaron - Zadok"
-                                    ]
-                                }
-                            ]
-                        }
-                    ]
-                }
-            ]
-        }
-    ]
-    }
+    "chapters":[
+       {"header":{"title":"20"},
+        "metadata":[
+          {"styling":[{"marker":"p"}]}
+          ],
+        "verses":[
+          {"number":"16-22",
+           "text objects":[
+              {"text":"This is the list of 
+                the administrators of the 
+                tribes of Israel:",
+                "index":0},
+              {"list":[
+                  {"li":{"text":"Reuben - 
+                  Eliezer son of Zichri"},
+                    "number":"1"},
+                  {"li":{"text":"Simeon - 
+                  Shephatiah son of Maacah"},
+                    "number":"1"},
+                  {"li":{"text":"Levi - 
+                  Hashabiah son of Kemuel"},
+                    "number":"1"},
+                  {"li":{"text":"Aaron - Zadok"},
+                    "number":"1"}
+                 ],
+                "text":"Reuben - Eliezer son 
+                of Zichri | Simeon - Shephatiah 
+                son of Maacah | Levi - Hashabiah 
+                son of Kemuel | Aaron - Zadok | ",
+                "index":1
+              }
+            ],
+            "text":"This is the list of the 
+            administrators of the tribes of 
+            Israel: Reuben - Eliezer son of Zichri 
+            | Simeon - Shephatiah son of Maacah | 
+            Levi - Hashabiah son of Kemuel | 
+            Aaron - Zadok | "
+            }
+          ]
+        },
     </pre></td><td><pre>
     {
     "metadata":{
@@ -295,8 +246,10 @@ The output JSON structure has been revised to enable the backward conversion pos
       ],
     "messages":{"warnings":[]}}
     }
+    
     </pre></td></tr></table>
-4. Adds 'closing'property to character, table and milestone markers
+
+4. Adds 'closed' and 'inline' properties to character, table and milestone markers
     <table><tr><th>Input</th><th>New Structure</th></tr><tr><td>
     <pre>
     \v 14 That is why \bk The Book of 
@@ -305,23 +258,31 @@ The output JSON structure has been revised to enable the backward conversion pos
     the area of Suphah
 
     </pre></td><td><pre>
-    "contents": [
-        "That is why",
-        {
-            "bk": [
-                "The Book of the",
-                {
-                    "+nd": [
-                        "Lord"
-                    ],
-                    "closing": "\\+nd*"
-                },
-                "'s Battles"
+    {"number":"14",
+    "text objects":[
+                {"text":"That is why ",
+                "index":0},
+                {"bk":[
+                    {"text":"The Book of the "},
+                    {"+nd":[{"text":"Lord"}],
+                    "text":"Lord",
+                    "closed":true,
+                    "inline":true
+                    },
+                    {"text":"'s Battles"}
+                ],
+                "text":"The Book of the Lord's Battles",
+                "closed":true,
+                "inline":true,
+                "index":1},
+                {"text":"speaks of �...the town of Waheb 
+                in the area of Suphah",
+                "index":2}
             ],
-            "closing": "\\bk*"
-        },
-        "speaks of “...the town of Waheb in the area of Suphah"
-    ]
+    "text":"That is why The Book of the Lord's 
+    Battles speaks of �...the town of Waheb in 
+    the area of Suphah "
+    }
 
     </pre></td></tr></table>
 
@@ -334,27 +295,25 @@ The output JSON structure has been revised to enable the backward conversion pos
     \v 2 the second verse \w gracious|lemma="grace" 
     strong="H1234,G5485" \w*
     </pre></td><td><pre>
-    {
-          "verseNumber": "2",
-          "verseText": "the second verse gracious",
-          "contents": [
-              "the second verse",
-              {
-                  "w": [
-                      "gracious"
-                  ],
-                  "attributes": [
-                      {
-                          "lemma": "grace"
-                      },
-                      {
-                          "strong": "H1234,G5485"
-                      }
-                  ],
-                  "closing": "\\w*"
-              }
-          ]
+    {"number":"2",
+        "text objects":[
+            {"text":"the second verse ",
+            "index":0},
+            {"w":[{"text":"gracious"}],
+            "text":"gracious",
+            "attributes":[
+                {"name":"lemma",
+                "value":"\"grace\""},
+                {"name":"strong",
+                "value":"\"H1234,G5485\""}
+                ],
+            "closed":true,
+            "inline":true,
+            "index":1}
+        ],
+        "text":"the second verse gracious "
     }
+
     </pre></td><td><pre>
     { "number":"2",
       "metadata":[
@@ -368,7 +327,7 @@ The output JSON structure has been revised to enable the backward conversion pos
     }
     </pre></td></tr></table>
 
-7. Change the structure for section headers, footnotes and crossrefs
+7. Include the marker name for section headers, footnotes and crossrefs
     <table><tr><th>Input</th><th>New Structure</th></tr><tr><td>
     <pre>
 
@@ -384,67 +343,54 @@ The output JSON structure has been revised to enable the backward conversion pos
 
     </pre></td><td><pre>
 
-    {
-    "book": {
-        "bookCode": "GEN"
-    },
-    "chapters": [
-        {
-            "chapterNumber": "1",
-            "contents": [
-                {
-                    "p": null
-                },
-                [
-                    {
-                        "s1": [
-                            "The Preaching of John the Baptist"
-                        ]
-                    },
-                    {
-                        "r": [
-                            "(Matthew 3.1-12; Luke 3.1-18;",
-                            "John 1.19-28)"
-                        ]
-                    }
+    {"metadata":
+      {"id":{"book":"GEN"}},
+     "chapters":[
+         {"header":{"title":"1"},
+          "metadata":[     
+            {"section":{"text":"The Preaching of John the Baptist",
+                        "marker":"s1"},
+             "sectionPostheader":[         
+                {"r":[{"text":"(Matthew 3.1-12; Luke 3.1-18; John 1.19-28)"}]}
+                ]
+            },
+            {"styling":[{"marker":"p"}]
+              }
+            ],
+          "verses":[
+            {"number":"1 ",
+             "metadata":[
+                {"footnote":[             
+                    {"text":"+ ","index":1},
+                    {"marker":"fr","inline":true,"index":2},
+                    {"text":"1.1: ","index":3},
+                    {"marker":"ft","inline":true,"index":4},
+                    {"text":"Some manuscripts do not have ","index":5},
+                    {"marker":"fq","inline":true,"index":6},
+                    {"text":"the Son of God.","index":7}
+                    ],
+                  "marker":"f",
+                  "closed":true,
+                  "inline":true,
+                  "index":1
+                  }
+              ],
+              "text objects":[  
+                {"text":"This is the Good News about Jesus Christ, the Son of God. ",
+                  "index":0}
                 ],
-                {
-                    "verseNumber": "1",
-                    "verseText": "This is the Good News about Jesus Christ, the Son of God.",
-                    "contents": [
-                        "This is the Good News about Jesus",
-                        "Christ, the Son of God.",
-                        {
-                            "footnote": [
-                                {
-                                    "caller": "+"
-                                },
-                                {
-                                    "fr": "1.1:"
-                                },
-                                {
-                                    "ft": "Some\r\nmanuscripts do not have"
-                                },
-                                {
-                                    "fq": "the Son of God."
-                                }
-                            ],
-                            "closing": "\\f*"
-                        }
-                    ]
-                }
+              "text":"This is the Good News about Jesus Christ, the Son of God. "
+            }
             ]
-        }
-    ],
-    "_messages": {
-        "_warnings": [
-            "Empty lines present. "
-        ]
-    }
-    }
+          }
+        ],
+      "messages":{"warnings":[] }
+      }
     </pre></td></tr></table>
+
 Another big enhancement is that, the footnote's and cross-reference's content is now parsed and the JSON output has an array of its contents. Refer the item 7 of above list, for the JSON structure. 
 
+
 #### Bug fixes
 
 * `\\ef` marker
diff --git a/docs/comparison.md b/docs/comparison.md
index 54a19564..b60995d3 100644
--- a/docs/comparison.md
+++ b/docs/comparison.md
@@ -1,9 +1,9 @@
-# Comparison of usfm-grammar(version 1.0.0) and usfm-js Libraries
+# Comparison of usfm-grammar(version 1.x & 2.x) output with usfm-js output
 
 ## The Basic USFM Components
 
 1. The minimal set of markers
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>
     <pre>
     \id GEN
     \c 1
@@ -36,6 +36,25 @@
         ],
         "messages": {"warnings": []}
       }
+    </pre></td><td><pre>      
+    {"book":{"bookCode":"GEN"},
+      "chapters":[
+      {"chapterNumber":"1",
+          "contents":[
+          {"p":null},
+            {"verseNumber":"1",
+              "verseText":"verse one",
+              "contents":[
+              "verse one"
+                ]},
+            {"verseNumber":"2",
+              "verseText":"verse two",
+              "contents":[
+              "verse two"
+                ]}
+            ]}
+        ],
+      "_messages":{"_warnings":[]}}
     </pre></td><td><pre>      
        {"headers":[
         {"tag":"id",
@@ -56,11 +75,11 @@
                 ]}}}}
     </pre></tr></table>
 
-  Two JSON structures. Both looks similar in complexity and readability. _\\p_ at chapter start gets added as _metadata_ at chapter start in usfm-grammar while it gets added as _front_ object at the chapter end in usfm-js
+  Two JSON structures. Both looks similar in complexity and readability. _\\p_ at chapter start in the begining just as it occurs in usfm-grammar while it gets added as _front_ object at the chapter end in usfm-js
 
 2. Multiple chapters
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -121,6 +140,39 @@
          ],
         "messages": {"warnings": []}
       }
+  </pre></td><td><pre>      
+    {"book":{"bookCode":"GEN"},
+      "chapters":[
+      {"chapterNumber":"1",
+          "contents":[
+          {"p":null},
+            {"verseNumber":"1",
+              "verseText":"the first verse",
+              "contents":[
+              "the first verse"
+                ]},
+            {"verseNumber":"2",
+              "verseText":"the second verse",
+              "contents":[
+              "the second verse"
+                ]}
+            ]},
+        {"chapterNumber":"2",
+          "contents":[
+          {"p":null},
+            {"verseNumber":"1",
+              "verseText":"the third verse",
+              "contents":[
+              "the third verse"
+                ]},
+            {"verseNumber":"2",
+              "verseText":"the fourth verse",
+              "contents":[
+              "the fourth verse"
+                ]}
+            ]}
+        ],
+      "_messages":{"_warnings":[]}}
   </pre></td><td><pre>
   {"headers":[
     {"tag":"id",
@@ -158,7 +210,7 @@ Two JSON structures. Both looks similar in complexity and readability. Chapters
 
 3. Section headings
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -217,6 +269,41 @@ Two JSON structures. Both looks similar in complexity and readability. Chapters
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse",
+                  [
+                  {"s":[
+                      "A new section"
+                        ]}
+                    ],
+                  {"p":null}
+                  ]},
+              {"verseNumber":"3",
+                "verseText":"the third verse",
+                "contents":[
+                "the third verse"
+                  ]},
+              {"verseNumber":"4",
+                "verseText":"the fourth verse",
+                "contents":[
+                "the fourth verse"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -251,11 +338,11 @@ Two JSON structures. Both looks similar in complexity and readability. Chapters
                 ]}}}}
      </pre></tr></table>
 
-  Two JSON structures. Both looks similar in complexity and readability. _\\s_ and _\\p_ after verse 2, gets added as _metadata_ to verse 2 object in usfm-grammar while it gets added as additional _verseObjects_ to the verse 2 in usfm-js
+  Two JSON structures. Both looks similar in complexity and readability. _\\s_ and _\\p_ after verse 2, gets added as _metadata_ to verse 2 object in usfm-grammar 1.x and to the _contents_ in 2.x, while it gets added as additional _verseObjects_ to the verse 2 in usfm-js
 
 4. Header section markers
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id MRK The Gospel of Mark
     \ide UTF-8
     \usfm 3.0
@@ -316,6 +403,49 @@ Two JSON structures. Both looks similar in complexity and readability. Chapters
           ],
         "messages": {"warnings": ["Empty lines present. "]}
       }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"MRK",
+          "description":"The Gospel of Mark",
+          "meta":[
+          {"ide":"UTF-8"},
+            {"usfm":"3.0"},
+            {"h":"Mark"},
+            [
+            {"mt2":[
+                "The Gospel according to"
+                  ]},
+              {"mt1":[
+                "MARK"
+                  ]}
+              ],
+            {"is":[
+              "Introduction"
+                ]},
+            {"ip":[
+              {"bk":[
+                  "The Gospel according to Mark"
+                    ],
+                  "closing":"\\bk*"},
+                "begins with the statement..."
+                ]}
+            ]},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -351,11 +481,11 @@ Two JSON structures. Both looks similar in complexity and readability. Chapters
                 ]}}}}
      </pre></tr></table>
 
-The usfm-js adds all the markers before chapter to a section called "headers". The usfm-grammar has three sections there, id, headers and introduction, all within a main "meta data" section. Also it combines the _mt_ markers as the spec says.
+The usfm-js adds all the markers before chapter to a section called "headers". The usfm-grammar 1.x has three sections there, id, headers and introduction, all within a main "meta data" section. Also it combines the _mt_ markers as the spec says. In usfm-grammar 2.x all header markers are added to the _meta_ of the _book_ element and the 3 sections are not shown in the output as in 1.x, but the order of these markers as per the 3 sections are validated in parsing.
 
 5. Footnotes
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id MAT
     \c 1
     \p
@@ -419,6 +549,39 @@ The usfm-js adds all the markers before chapter to a section called "headers". T
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"MAT"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]},
+              {"verseNumber":"3",
+                "verseText":"This is the Good News about Jesus Christ,
+                the Son of God.",
+                "contents":[
+                "This is the Good News about Jesus Christ,
+                  the Son of God.",
+                  {"footnote":[
+                    {"caller":"+"},
+                      {"fr":"1.1:"},
+                      {"ft":"Some manuscripts do not have"},
+                      {"fq":"the Son of God."}
+                      ],
+                    "closing":"\\f*"}
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -452,11 +615,11 @@ The usfm-js adds all the markers before chapter to a section called "headers". T
                 ]}}}}
      </pre></tr></table>
 
-  The footnote gets attched to the corresponding verse, as _metadata_ in usfm-grammar and as another _verseObject_ in usfm-js. usfm-js identifies the contents from start tag to end tag as one element without breaking it up into an internal structure as per the internal tags. Usfm-grammar on the other hand parses and validates each internal marker of the footnotes. 
+  The footnote gets attched to the corresponding verse, as _metadata_ in usfm-grammar 1.x, listed in _contents_ within the verse in 2.x and as another _verseObject_ in usfm-js. usfm-js identifies the contents from start tag to end tag as one element without breaking it up into an internal structure as per the internal tags. Usfm-grammar on the other hand parses and validates each internal marker of the footnotes. 
 
 6. Cross-refs
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id MAT
     \c 1
     \p
@@ -513,7 +676,37 @@ The usfm-js adds all the markers before chapter to a section called "headers". T
           ],
         "messages": {"warnings": []}
       }
-    </pre></td><td><pre>
+   </pre></td><td><pre>      
+    {"book":{"bookCode":"MAT"},
+      "chapters":[
+      {"chapterNumber":"1",
+          "contents":[
+          {"p":null},
+            {"verseNumber":"1",
+              "verseText":"the first verse",
+              "contents":[
+              "the first verse"
+                ]},
+            {"verseNumber":"2",
+              "verseText":"the second verse",
+              "contents":[
+              "the second verse"
+                ]},
+            {"verseNumber":"3",
+              "verseText":"and made his home in a town named Nazareth.",
+              "contents":[
+              {"cross-ref":[
+                  {"caller":"-"},
+                    {"xo":"2.23:"},
+                    {"xt":"Mrk 1.24; Luk 2.39; Jhn 1.45."}
+                    ],
+                  "closing":"\\x* "},
+                "and made his home in a town named Nazareth."
+                ]}
+            ]}
+        ],
+      "_messages":{"_warnings":[]}}
+   </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
             "content":"MAT"}
@@ -543,11 +736,11 @@ The usfm-js adds all the markers before chapter to a section called "headers". T
                 ]}}}}
      </pre></tr></table>
 
-  The cross-ref gets attched to the corresponding verse, as _metadata_ in usfm-grammar and as another _verseObject_ in usfm-js. Here also internal markers are being parsed by usfm-grammar and not by usfm-js, as in the case of footnotes.
+  The cross-ref gets attched to the corresponding verse, as _metadata_ or _contents_ in usfm-grammar and as another _verseObject_ in usfm-js. Here also internal markers are being parsed by usfm-grammar and not by usfm-js, as in the case of footnotes.
 
 7. Multiple para markers
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id JHN
     \c 1
     \s1 The Preaching of John the 
@@ -645,6 +838,65 @@ The usfm-js adds all the markers before chapter to a section called "headers". T
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"JHN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            [
+              {"s1":[
+                  "The Preaching of John the Baptist"
+                    ]},
+                {"r":[
+                  "(Matthew 3.1-12; Luke 3.1-18; John 1.19-28)"
+                    ]}
+                ],
+              {"p":null},
+              {"verseNumber":"1",
+                "verseText":"This is the Good News about Jesus Christ,
+                the Son of God.",
+                "contents":[
+                "This is the Good News about Jesus Christ,
+                  the Son of God."
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"It began as the prophet Isaiah had written: �God said,
+                �I will send my messenger ahead of you to open the way for you.�",
+                "contents":[
+                "It began as the prophet Isaiah had written:",
+                  {"q1":null},
+                  "�God said,
+                  �I will send my messenger ahead of you",
+                  {"q2":null},
+                  "to open the way for you.�",
+                  {"q1":null}
+                  ]},
+              {"verseNumber":"3",
+                "verseText":"Someone is shouting in the desert,
+                �Get the road ready for the Lord; make a straight path for him to travel!��",
+                "contents":[
+                "Someone is shouting in the desert,
+                  ",
+                  {"q2":null},
+                  "�Get the road ready for the Lord;",
+                  {"q2":null},
+                  "make a straight path for him to travel!��",
+                  {"p":null}
+                  ]},
+              {"verseNumber":"4",
+                "verseText":"So John appeared in the desert,
+                baptizing and preaching. �Turn away from your sins and be baptized,
+                � he told the people,
+                �and God will forgive your sins.�",
+                "contents":[
+                "So John appeared in the desert,
+                  baptizing and preaching. �Turn away from your sins and be baptized,
+                  � he told the people,
+                  �and God will forgive your sins.�"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -715,11 +967,11 @@ The usfm-js adds all the markers before chapter to a section called "headers". T
                 ]}}}}
      </pre></tr></table>
   
-  The para-markers are attched to the verse object as styling object in its _metadata_ separate from its text, in usfm-grammar. The index value included enables to position them at the right position within text while re-constructing the usfm from this JSON. The usfm-js add the para-marker and text in the same verse object.
+  The para-markers are attached to the verse object as styling object in its _metadata_ separate from its text, in usfm-grammar 1.x. The index value included enables to position them at the right position within text while re-constructing the usfm from this JSON. Usfm-grammar 2.x has it the _contents_ in the order it appears and the text is separated as in 1.x. The usfm-js adds the para-marker and text in the same verse object.
 
 8. Character markers
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -766,6 +1018,47 @@ The usfm-js adds all the markers before chapter to a section called "headers". T
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]},
+              {"verseNumber":"15",
+                "verseText":"Tell the Israelites that I,
+                the Lord,
+                the God of their ancestors,
+                the God of Abraham,
+                Isaac,
+                and Jacob,
+                ",
+                "contents":[
+                "Tell the Israelites that I,
+                  the",
+                  {"nd":[
+                    "Lord"
+                      ],
+                    "closing":"\\nd*"},
+                  ",
+                  the God of their ancestors,
+                  the God of Abraham,
+                  Isaac,
+                  and Jacob,
+                  "
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -801,11 +1094,11 @@ The usfm-js adds all the markers before chapter to a section called "headers". T
                 ]}}}}
      </pre></tr></table>
 
-The verse text is complete and together in one place and the details of character marker is added to _metadata_ of verse in usfm-grammar. Where as usfm-js add verseObjects for each chunk of the verse text, outside and within the charater marker making the verse text broken.
+Usfm-grammar has verse text complete and together in one place and also have the details of character marker is added to _metadata_ or _contents_ of verse without loosing any info. Where as, usfm-js add verseObjects for each chunk of the verse text, outside and within the charater marker making the verse text broken.
   
 9. Markers with attributes
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -843,6 +1136,32 @@ The verse text is complete and together in one place and the details of characte
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>      
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse gracious",
+                "contents":[
+                "the second verse",
+                  {"w":[
+                    "gracious"
+                      ],
+                    "attributes":[
+                    {"lemma":"grace"}
+                      ],
+                    "closing":"\\w*"}
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -873,7 +1192,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 1. No Chapter
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \p
     \v 1 the first verse
@@ -905,7 +1224,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 2. In-correct book name
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-js</th></tr><td>     <pre>
     \id XXX
     \c 1
     \p
@@ -963,7 +1282,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 3. No verse marker
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -989,7 +1308,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 4. No verse number in verse marker
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -1024,7 +1343,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 5. No para marker at start of chapter
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \v 1 the first verse
@@ -1055,7 +1374,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 6. Character marker not closed
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -1104,7 +1423,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 7. In-correct syntax in foot-notes
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -1166,7 +1485,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 8. Invalid marker
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -1207,7 +1526,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 1. Lists
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -1301,6 +1620,66 @@ The attribute name and value is captured by both. But the JSON structure to repr
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]}
+              ]},
+          {"chapterNumber":"2",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the third verse",
+                "contents":[
+                "the third verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the fourth verse",
+                "contents":[
+                "the fourth verse",
+                  [
+                  {"s1":[
+                      "Administration of the Tribes of Israel",
+                        {"list":[
+                          {"lh":null}
+                            ]}
+                        ]}
+                    ]
+                  ]},
+              {"verseNumber":"16-22",
+                "verseText":"This is the list of the administrators of the tribes of Israel: Reuben - Eliezer son of Zichri Simeon - Shephatiah son of Maacah Levi - Hashabiah son of Kemuel This was the list of the administrators of the tribes of Israel.",
+                "contents":[
+                "This is the list of the administrators of the tribes of Israel:",
+                  {"list":[
+                    {"li1":[
+                        "Reuben - Eliezer son of Zichri"
+                          ]},
+                      {"li1":[
+                        "Simeon - Shephatiah son of Maacah"
+                          ]},
+                      {"li1":[
+                        "Levi - Hashabiah son of Kemuel"
+                          ]},
+                      {"lf":[
+                        "This was the list of the administrators of the tribes of Israel."
+                          ]}
+                      ]}
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -1362,7 +1741,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 2. Header section with more markers
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id MRK 41MRKGNT92.SFM, Good News Translation, June 2003
     \h John
     \toc1 The Gospel according to John
@@ -1471,6 +1850,89 @@ The attribute name and value is captured by both. But the JSON structure to repr
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>
+
+      {"book":{"bookCode":"MRK",
+          "description":"41MRKGNT92.SFM,
+          Good News Translation,
+          June 2003",
+          "meta":[
+          {"h":"John"},
+            {"toc1":[
+              "The Gospel according to John"
+                ]},
+            {"toc2":[
+              "John"
+                ]},
+            [
+            {"mt2":[
+                "The Gospel"
+                  ]},
+              {"mt3":[
+                "according to"
+                  ]},
+              {"mt1":[
+                "JOHN"
+                  ]}
+              ],
+            {"ip":[
+              "The two endings to the Gospel,
+                which are enclosed in brackets,
+                are generally regarded as written by someone other than the author of",
+                {"bk":[
+                  "Mark"
+                    ],
+                  "closing":"\\bk*"}
+                ]},
+            {"iot":[
+              "Outline of Contents"
+                ]},
+            [
+            {"io1":[
+                "The beginning of the gospel",
+                  {"ior":[
+                    "(1.1-13)"
+                      ],
+                    "closing":"\\ior*"}
+                  ]},
+              {"io1":[
+                "Jesus' public ministry in Galilee",
+                  {"ior":[
+                    "(1.14�9.50)"
+                      ],
+                    "closing":"\\ior*"}
+                  ]},
+              {"io1":[
+                "From Galilee to Jerusalem",
+                  {"ior":[
+                    "(10.1-52)"
+                      ],
+                    "closing":"\\ior*"}
+                  ]}
+              ]
+            ]},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            [
+              {"ms":"BOOK ONE"},
+                {"mr":"(Psalms 1�41)"}
+                ],
+              {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -1525,11 +1987,11 @@ The attribute name and value is captured by both. But the JSON structure to repr
                 ]}}}}
      </pre></tr></table>
 
-  There is division of markers before chapter into _id_, _header_ and _introduction_ section in usfm-grammar. Also some markers like _mt_ and _io_ get combined into one separate array. In usfm-js there is no such subdivision, and all such markers get added to the _headers_ array at the begining of JSON structure. 
+  There is division of markers before chapter into _id_, _header_ and _introduction_ section in usfm-grammar 1.x. Also some markers like _mt_ and _io_ get combined into one separate array in both 1.x ans 2.x. In usfm-js there is no such subdivision, and all such markers get added to the _headers_ array at the begining of JSON structure. 
 
 3. Character marker nesting
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -1582,6 +2044,40 @@ The attribute name and value is captured by both. But the JSON structure to repr
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]},
+              {"verseNumber":"14",
+                "verseText":"That is why The Book of the Lord's Battles speaks of �...the town of Waheb in the area of Suphah",
+                "contents":[
+                "That is why",
+                  {"bk":[
+                    "The Book of the",
+                      {"+nd":[
+                        "Lord"
+                          ],
+                        "closing":"\\+nd*"},
+                      "'s Battles"
+                      ],
+                    "closing":"\\bk*"},
+                  "speaks of �...the town of Waheb in the area of Suphah"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -1619,11 +2115,11 @@ The attribute name and value is captured by both. But the JSON structure to repr
                 ]}}}}
      </pre></tr></table>
 
-  Nesting is implemented in a somewhat similar structure in both JSONs. In usfm-js, there are multiple verseObjects and the verse text is split across them. But the structure allows re-constrution of usfm from it. In usfm-grammar, the verse text is accessible at one place. Also the reconstruction of usfm is possible from the JSON representation as index value is provided with each object.
+  Nesting is implemented in a somewhat similar structure in both JSONs. In usfm-js, there are multiple verseObjects and the verse text is split across them.
 
 4. Markers with default attributes
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -1662,6 +2158,34 @@ The attribute name and value is captured by both. But the JSON structure to repr
         "messages": {"warnings": []}
       }
      </pre></td><td><pre>
+{"book":{"bookCode":"GEN"},
+  "chapters":[
+  {"chapterNumber":"1",
+      "contents":[
+      {"p":null},
+        {"verseNumber":"1",
+          "verseText":"the first verse",
+          "contents":[
+          "the first verse"
+            ]},
+        {"verseNumber":"2",
+          "verseText":"the second verse gracious",
+          "contents":[
+          "the second verse",
+            {"w":[
+              "gracious"
+                ],
+              "attributes":[
+              {"defaultAttribute":"grace"}
+                ],
+              "closing":"\\w*"}
+            ]}
+        ]}
+    ],
+  "_messages":{"_warnings":[
+    "Empty lines present. "
+      ]}}
+     </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
             "content":"GEN"}
@@ -1689,7 +2213,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 5. Link-attributes and custom attributes
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -1768,6 +2292,51 @@ The attribute name and value is captured by both. But the JSON structure to repr
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse gracious �Someone is shouting in the desert,
+                �Prepare a road for the Lord; make a straight path for him to travel!� � s John the Baptist John is sometimes called...",
+                "contents":[
+                "the second",
+                  "verse",
+                  {"w":[
+                    "gracious"
+                      ],
+                    "attributes":[
+                    {"x-myattr":"metadata"}
+                      ],
+                    "closing":"\\w*"},
+                  {"q1":null},
+                  "�Someone is shouting in the desert,
+                  ",
+                  {"q2":null},
+                  "�Prepare a road for the Lord;",
+                  {"q2":null},
+                  "make a straight path for him to travel!� �",
+                  {"m":null},
+                  "s",
+                  {"jmp":[],
+                    "attributes":[
+                    {"link-id":"article-john_the_baptist"}
+                      ],
+                    "closing":"\\jmp*"},
+                  "John the Baptist",
+                  {"p":null},
+                  "John is sometimes called..."
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -1821,7 +2390,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 6. Table 
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -1922,6 +2491,55 @@ The attribute name and value is captured by both. But the JSON structure to repr
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse",
+                  {"p":null}
+                  ]},
+              {"verseNumber":"12-83",
+                "verseText":"They presented their offerings in the following order: Day ~ Tribe ~ Leader ~ //1st ~ Judah ~ Nahshon son of Amminadab ~ //2nd ~ Issachar ~ Nethanel son of Zuar ~ //3rd ~ Zebulun ~ Eliab son of Helon ~ //",
+                "contents":[
+                "They presented their offerings in the following order:",
+                  {"table":{"header":[
+                      {"th1":"Day"},
+                        {"th2":"Tribe"},
+                        {"th3":"Leader"}
+                        ],
+                      "rows":[
+                      [
+                        {"tcr1":"1st"},
+                          {"tc2":"Judah"},
+                          {"tc3":"Nahshon son of Amminadab"}
+                          ],
+                        [
+                        {"tcr1":"2nd"},
+                          {"tc2":"Issachar"},
+                          {"tc3":"Nethanel son of Zuar"}
+                          ],
+                        [
+                        {"tcr1":"3rd"},
+                          {"tc2":"Zebulun"},
+                          {"tc3":"Eliab son of Helon"}
+                          ]
+                        ]},
+                    "text":"Day ~ Tribe ~ Leader ~ //1st ~ Judah ~ Nahshon son of Amminadab ~ //2nd ~ Issachar ~ Nethanel son of Zuar ~ //3rd ~ Zebulun ~ Eliab son of Helon ~ //"}
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -1986,7 +2604,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 7. Milestones
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id GEN
     \c 1
     \p
@@ -2042,6 +2660,44 @@ The attribute name and value is captured by both. But the JSON structure to repr
           ],
         "messages": {"warnings": []}
       }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"GEN"},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"the first verse",
+                "contents":[
+                "the first verse"
+                  ]},
+              {"verseNumber":"2",
+                "verseText":"the second verse",
+                "contents":[
+                "the second verse"
+                  ]},
+              {"verseNumber":"3",
+                "verseText":"�Are you the king of the Jews?�",
+                "contents":[
+                {"milestone":"qt",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"sid":"qt_123"},
+                      {"who":"Pilate"}
+                      ]},
+                  "�Are you the king of the Jews?�",
+                  {"milestone":"qt",
+                    "delimter":"-e",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"eid":"qt_123"}
+                      ]}
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[]}}
+
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
@@ -2076,7 +2732,7 @@ The attribute name and value is captured by both. But the JSON structure to repr
 
 8. Alignment files
 
-    <table><tr><th>Input</th><th>usfm-grammar</th><th>usfm-js</th></tr><td>     <pre>
+    <table><tr><th>Input</th><th>usfm-grammar 1.x</th><th>usfm-grammar 2.x</th><th>usfm-js</th></tr><td>     <pre>
     \id ACT
     \h प्रेरितों के काम
     \toc1 प्रेरितों के काम
@@ -2347,6 +3003,204 @@ The attribute name and value is captured by both. But the JSON structure to repr
           ],
         "messages": {"warnings": ["Empty lines present. "]}
       }
+     </pre></td><td><pre>
+      {"book":{"bookCode":"ACT",
+          "meta":[
+          {"h":"प्रेरितों के काम"},
+            {"toc1":[
+              "प्रेरितों के काम"
+                ]},
+            {"toc2":[
+              "प्रेरितों के काम"
+                ]},
+            [
+            {"mt":[
+                "प्रेरितों के काम"
+                  ]}
+              ]
+            ]},
+        "chapters":[
+        {"chapterNumber":"1",
+            "contents":[
+            {"p":null},
+              {"verseNumber":"1",
+                "verseText":"हेथियुफिलुसमैंनेपहलीपुस्तिकाउनसबबातोंऊपरउठायानगया",
+                "contents":[
+                {"w":[
+                    "हे"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"x-verified":"true"},
+                      {"x-occurrence":"1"},
+                      {"x-occurrences":"1"},
+                      {"x-content":"Θεόφιλε"}
+                      ]},
+                  {"w":[
+                    "थियुफिलुस"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-e",
+                    "closing":"\\*"},
+                  {"w":[
+                    "मैंने"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"x-verified":"true"},
+                      {"x-occurrence":"1"},
+                      {"x-occurrences":"1"},
+                      {"x-content":"πρῶτον"}
+                      ]},
+                  {"w":[
+                    "पहली"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-e",
+                    "closing":"\\*"},
+                  {"w":[
+                    "पुस्तिका"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"w":[
+                    "उन"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"w":[
+                    "सब"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"x-verified":"true"},
+                      {"x-occurrence":"1"},
+                      {"x-occurrences":"1"},
+                      {"x-content":"λόγον"}
+                      ]},
+                  {"w":[
+                    "बातों"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-e",
+                    "closing":"\\*"},
+                  {"milestone":"zaln",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"x-verified":"true"},
+                      {"x-occurrence":"1"},
+                      {"x-occurrences":"1"},
+                      {"x-content":"ἀνελήμφθη"}
+                      ]},
+                  {"w":[
+                    "ऊपर"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"w":[
+                    "उठाया"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-e",
+                    "closing":"\\*"},
+                  {"milestone":"zaln",
+                    "delimter":"-s",
+                    "closing":"\\*",
+                    "attributes":[
+                    {"x-verified":"true"},
+                      {"x-occurrence":"1"},
+                      {"x-occurrences":"1"},
+                      {"x-content":"ἄχρι"}
+                      ]},
+                  {"w":[
+                    "न"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"},
+                  {"milestone":"zaln",
+                    "delimter":"-e",
+                    "closing":"\\*"},
+                  {"w":[
+                    "गया"
+                      ],
+                    "attributes":[
+                    {"x-occurrence":"1"},
+                      {"x-occurrences":"1"}
+                      ],
+                    "closing":"\\w*"}
+                  ]},
+              {"verseNumber":"30",
+                "verseText":"और पौलुस पूरे दो वर्ष अपने किराये के घर में रहा,
+                ",
+                "contents":[
+                "और पौलुस पूरे दो वर्ष अपने किराये के घर में रहा,
+                  "
+                  ]},
+              {"verseNumber":"31",
+                "verseText":"और जो उसके पास आते थे,
+                उन सबसे मिलता रहा और बिना रोक-टोक बहुत निडर होकर परमेश्‍वर के राज्य का प्रचार करता और प्रभु यीशु मसीह की बातें सिखाता रहा।",
+                "contents":[
+                "और जो उसके पास आते थे,
+                  उन सबसे मिलता रहा और बिना रोक-टोक बहुत निडर होकर परमेश्‍वर के राज्य का प्रचार करता और प्रभु यीशु मसीह की बातें सिखाता रहा।"
+                  ]}
+              ]}
+          ],
+        "_messages":{"_warnings":[      ]}}
+
      </pre></td><td><pre>
       {"headers":[
         {"tag":"id",
diff --git a/grammar/usfm-relaxed.ohm b/grammar/usfm-relaxed.ohm
index 6b6b9239..2c68f7dd 100644
--- a/grammar/usfm-relaxed.ohm
+++ b/grammar/usfm-relaxed.ohm
@@ -1,8 +1,8 @@
 usfmRelaxed{
-	File = BookHead Chapter+
+	File = BookHead Chapter*
 
 	BookHead = idMarker (MilesstoneMarker | ClosedMarker | NormalMarker)*
-	Chapter = ChapterMarker (VerseMarker | Note | ExtendedStudyContents | MilesstoneMarker | ClosedMarker | NormalMarker )+
+	Chapter = ChapterMarker (VerseMarker | Note | ExtendedStudyContents | MilesstoneMarker | ClosedMarker | NormalMarker )*
 
 	verseNumber = number letter? ("-" number letter?)? 
 	markerName = ~(cTag) ~(vTag) ~(noteTag) "+"? (letter | digit | "_")+ number?
diff --git a/grammar/usfm-relaxed.ohm.js b/grammar/usfm-relaxed.ohm.js
index 04a6f291..a1e32f5c 100644
--- a/grammar/usfm-relaxed.ohm.js
+++ b/grammar/usfm-relaxed.ohm.js
@@ -1,1 +1,1 @@
-exports.contents = 'usfmRelaxed{\n  File = BookHead Chapter+\n  BookHead = idMarker (MilesstoneMarker | ClosedMarker | NormalMarker)*\n  Chapter = ChapterMarker (VerseMarker | Note | ExtendedStudyContents | MilesstoneMarker | ClosedMarker | NormalMarker )+\n  verseNumber = number letter? ("-" number letter?)? \n  markerName = ~(cTag) ~(vTag) ~(noteTag) "+"? (letter | digit | "_")+ number?\n    attributes = "|" (~(backSlash) any)*\n  backSlash = "\\\\"\n  newLine = ("\\r" | "\\n")+\n  spaceChar = " "\n  char = ~(backSlash) ~(newLine) ~spaceChar ~("|") any\n  number = digit+\n  word = spaceChar* char+ spaceChar*\n  text =  newLine? word+\n  cTag = "c" spaceChar\n  vTag = "v" spaceChar\n  noteTag = "f" &" " | "fe" &" " | "ef" &" " | "x" &" " | "ex" &" " | "f" "*" | "fe" "*" | "ef" "*" | "x" "*" | "ex" "*"\n  idMarker = newLine? backSlash "id" spaceChar word text?\n  ChapterMarker = newLine? backSlash cTag number\n  VerseMarker = newLine? backSlash vTag verseNumber  (text | Note | MilesstoneMarker | ClosedMarker | NormalMarker)*\n  ClosedMarker = backSlash markerName (text | Note | ClosedMarker)* attributes? backSlash markerName "*"\n  NormalMarker = backSlash markerName ( text  | ClosedMarker )* \n  MilesstoneMarker = MilesstoneMarkerSingle | MilesstoneMarkerPair\n  MilesstoneMarkerSingle = backSlash markerName backSlash "*"\n  MilesstoneMarkerPair = backSlash markerName "-" ("s"|"e") attributes? (backSlash "*")?\n  ExtendedStudyContents = backSlash "esbe" (text | Note | MilesstoneMarker | ClosedMarker | NormalMarker)* backSlash "esbe"\n  \n  NoteMarker<tag> = backSlash tag (text | ClosedMarker | NormalMarker )+ (backSlash tag "*") -- closed\n          | backSlash tag (text | ClosedMarker | NormalMarker )+ &(end) -- atEOF\n          | backSlash tag (text | ClosedMarker | NormalMarker )+ &(backSlash ("c"|"v")) -- atVerseEnd\n  Note = NoteMarker<"f"> | NoteMarker<"fe"> | NoteMarker<"ef"> | NoteMarker<"x"> | NoteMarker<"ex">\n}';
+exports.contents = 'usfmRelaxed{\n  File = BookHead Chapter*\n  BookHead = idMarker (MilesstoneMarker | ClosedMarker | NormalMarker)*\n  Chapter = ChapterMarker (VerseMarker | Note | ExtendedStudyContents | MilesstoneMarker | ClosedMarker | NormalMarker )*\n  verseNumber = number letter? ("-" number letter?)? \n  markerName = ~(cTag) ~(vTag) ~(noteTag) "+"? (letter | digit | "_")+ number?\n    attributes = "|" (~(backSlash) any)*\n  backSlash = "\\\\"\n  newLine = ("\\r" | "\\n")+\n  spaceChar = " "\n  char = ~(backSlash) ~(newLine) ~spaceChar ~("|") any\n  number = digit+\n  word = spaceChar* char+ spaceChar*\n  text =  newLine? word+\n  cTag = "c" spaceChar\n  vTag = "v" spaceChar\n  noteTag = "f" &" " | "fe" &" " | "ef" &" " | "x" &" " | "ex" &" " | "f" "*" | "fe" "*" | "ef" "*" | "x" "*" | "ex" "*"\n  idMarker = newLine? backSlash "id" spaceChar word text?\n  ChapterMarker = newLine? backSlash cTag number\n  VerseMarker = newLine? backSlash vTag verseNumber  (text | Note | MilesstoneMarker | ClosedMarker | NormalMarker)*\n  ClosedMarker = backSlash markerName (text | Note | ClosedMarker)* attributes? backSlash markerName "*"\n  NormalMarker = backSlash markerName ( text  | ClosedMarker )* \n  MilesstoneMarker = MilesstoneMarkerSingle | MilesstoneMarkerPair\n  MilesstoneMarkerSingle = backSlash markerName backSlash "*"\n  MilesstoneMarkerPair = backSlash markerName "-" ("s"|"e") attributes? (backSlash "*")?\n  ExtendedStudyContents = backSlash "esbe" (text | Note | MilesstoneMarker | ClosedMarker | NormalMarker)* backSlash "esbe"\n  \n  NoteMarker<tag> = backSlash tag (text | ClosedMarker | NormalMarker )+ (backSlash tag "*") -- closed\n          | backSlash tag (text | ClosedMarker | NormalMarker )+ &(end) -- atEOF\n          | backSlash tag (text | ClosedMarker | NormalMarker )+ &(backSlash ("c"|"v")) -- atVerseEnd\n  Note = NoteMarker<"f"> | NoteMarker<"fe"> | NoteMarker<"ef"> | NoteMarker<"x"> | NoteMarker<"ex">\n}';
diff --git a/js/grammarOperations-relaxed.js b/js/grammarOperations-relaxed.js
index afd212dc..c1ac3adf 100644
--- a/js/grammarOperations-relaxed.js
+++ b/js/grammarOperations-relaxed.js
@@ -1,4 +1,5 @@
 const ohm = require('ohm-js');
+const Events = require('events');
 const { contents: grammar } = require('../grammar/usfm-relaxed.ohm.js');
 const { buildVerseText } = require('./grammarOperations.js');
 
@@ -33,14 +34,25 @@ const paraMarkers = ['p', 'm', 'po', 'pr', 'cls', 'pmo', 'pm', 'pmc',
 
 // const punctPattern = new RegExp('^[,./;:\'"`~!@#$%^&*(){}[}|]');
 
+const emitter = new Events.EventEmitter();
+const warningMessages = [];
+emitter.on('warning', (err) => {
+  if (!warningMessages.includes(err.message)) {
+    warningMessages.push(err.message);
+  }
+});
+
 sem.addOperation('buildJson', {
   File(bookhead, chapters) {
     const parse = {
       book: bookhead.buildJson(),
       chapters: chapters.buildJson(),
     };
-    const res = { parseStructure: parse, warnings: [] };
-
+    const res = { parseStructure: parse };
+    if (parse.chapters.length === 0) {
+      emitter.emit('warning', new Error('No chapters in the file.'));
+    }
+    res.warnings = warningMessages;
     return res;
   },
 
@@ -78,6 +90,9 @@ sem.addOperation('buildJson', {
         }
       }
     }
+    if (res.contents.length === 0) {
+      emitter.emit('warning', new Error(`No contents in chapter ${res.chapterNumber}.`));
+    }
     return res;
   },
 


Test patch:
diff --git a/test/test_bugFixes.js b/test/test_bugFixes.js
index 9dee0edc..87f0e6cd 100644
--- a/test/test_bugFixes.js
+++ b/test/test_bugFixes.js
@@ -278,4 +278,45 @@ describe('Test bug fixes', () => {
         + 'which is Solomon’s.');
     assert.strictEqual(jsonOutput.chapters[0].contents[1].contents[2].sp, 'She');
   });
+
+  it('Allow empty chapter stubs', () => {
+    // if there is a chapter it was mandatory to have some contents within it.
+    // As it was observed that translators who work on projects may add chapter stubs
+    // while project is in progess
+    // this rule is relaxed in relaxed mode.
+    // https://github.com/Bridgeconn/usfm-grammar/issues/113
+    const inputUsfm = '\\id SNG\\c 1\\p\\v 1 The Song of Songs, which is Solomon’s.\n\\c 2 \\c 3';
+    const usfmParser = new grammar.USFMParser(inputUsfm);
+    let thrownError = false;
+    try {
+      usfmParser.toJSON();
+    } catch (err) {
+      thrownError = true;
+    }
+    assert.strictEqual(thrownError, true);
+    const usfmParserRelaxed = new grammar.USFMParser(inputUsfm, grammar.LEVEL.RELAXED);
+    const jsonOutput = usfmParserRelaxed.toJSON();
+    assert.strictEqual(jsonOutput.chapters[1].contents.length, 0);
+    assert.strictEqual(jsonOutput.chapters[2].contents.length, 0);
+    assert.strictEqual(jsonOutput._messages._warnings.includes('No contents in chapter 2.'), true);
+  });
+
+  it('Allow files or books without any chapters', () => {
+    // it was mandatory to have at least one chapter in a file.
+    // this rule is relaxed in relaxed mode.
+    // https://github.com/Bridgeconn/usfm-grammar/issues/114
+    const inputUsfm = '\\id SNG';
+    const usfmParser = new grammar.USFMParser(inputUsfm);
+    let thrownError = false;
+    try {
+      usfmParser.toJSON();
+    } catch (err) {
+      thrownError = true;
+    }
+    assert.strictEqual(thrownError, true);
+    const usfmParserRelaxed = new grammar.USFMParser(inputUsfm, grammar.LEVEL.RELAXED);
+    const jsonOutput = usfmParserRelaxed.toJSON();
+    assert.strictEqual(jsonOutput.chapters.length, 0);
+    assert.strictEqual(jsonOutput._messages._warnings.includes('No chapters in the file.'), true);
+  });
 });