diff --git a/man/man3/cmark.3 b/man/man3/cmark.3
@@ -1,53 +1,65 @@
-.TH "cmark" "3" "November 29, 2014" "libcmark manual" ""
+.TH "" "" "" "" ""
.SH NAME
.PP
-cmark \- parse, manipulate, and render CommonMark formatted text
+cmark \- CommonMark parsing, manipulating, and rendering
+.SH SIMPLE INTERFACE
.IP
.nf
\f[C]
-#include\ <cmark.h>
+#define\ CMARK_VERSION\ "0.1"
\f[]
.fi
-.SH SIMPLE INTERFACE
+.PP
+Current version of library.
.IP
.nf
\f[C]
-char*
-cmark_markdown_to_html(const\ char\ *text,\ int\ len);
+char\ *cmark_markdown_to_html(const\ char\ *text,\ int\ len);
\f[]
.fi
-.SH PARSING
+.PP
+Convert \f[C]text\f[] (assumed to be a UTF\-8 encoded string with length
+\f[C]len\f[]) from CommonMark Markdown to HTML, returning a
+null\-terminated, UTF\-8\-encoded string.
+.SH NODE STRUCTURE
.IP
.nf
\f[C]
-void
-cmark_parser_push(cmark_parser\ *parser,\ const\ char\ *buffer,\ size_t\ len);
+typedef\ enum\ {
+\ \ \ \ //\ Block
+\ \ \ \ CMARK_NODE_DOCUMENT,
+\ \ \ \ CMARK_NODE_BLOCK_QUOTE,
+\ \ \ \ CMARK_NODE_LIST,
+\ \ \ \ CMARK_NODE_LIST_ITEM,
+\ \ \ \ CMARK_NODE_CODE_BLOCK,
+\ \ \ \ CMARK_NODE_HTML,
+\ \ \ \ CMARK_NODE_PARAGRAPH,
+\ \ \ \ CMARK_NODE_HEADER,
+\ \ \ \ CMARK_NODE_HRULE,
+\ \ \ \ CMARK_NODE_REFERENCE_DEF,
-cmark_node*
-cmark_parse_document(const\ char\ *buffer,\ size_t\ len);
-cmark_node*
-cmark_parse_file(FILE\ *f);
-\f[]
-.fi
-.SH RENDERING
-.IP
-.nf
-\f[C]
-char*
-cmark_render_ast(cmark_node\ *root);
+typedef\ enum\ {
+\ \ \ \ CMARK_NO_LIST,
+\ \ \ \ CMARK_BULLET_LIST,
+\ \ \ \ CMARK_ORDERED_LIST
+}\ \ cmark_list_type;
+
-char*
-cmark_render_html(cmark_node\ *root);
+typedef\ enum\ {
+\ \ \ \ CMARK_PERIOD_DELIM,
+\ \ \ \ CMARK_PAREN_DELIM
+}\ cmark_delim_type;
\f[]
.fi
-.SH CREATING AND DESTROYING NODES
+.SH CREATING AND DESTORYING NODES
.IP
.nf
\f[C]
cmark_node*
cmark_node_new(cmark_node_type\ type);
+
void
cmark_node_free(cmark_node\ *node);
\f[]
@@ -59,39 +71,23 @@ cmark_node_free(cmark_node\ *node);
cmark_node*
cmark_node_next(cmark_node\ *node);
+
cmark_node*
cmark_node_previous(cmark_node\ *node);
+
cmark_node*
cmark_node_parent(cmark_node\ *node);
+
cmark_node*
cmark_node_first_child(cmark_node\ *node);
+
cmark_node*
cmark_node_last_child(cmark_node\ *node);
\f[]
.fi
-.SH TREE MANIPULATION
-.IP
-.nf
-\f[C]
-void
-cmark_node_unlink(cmark_node\ *node);
-
-int
-cmark_node_insert_before(cmark_node\ *node,\ cmark_node\ *sibling);
-
-int
-cmark_node_insert_after(cmark_node\ *node,\ cmark_node\ *sibling);
-
-int
-cmark_node_prepend_child(cmark_node\ *node,\ cmark_node\ *child);
-
-int
-cmark_node_append_child(cmark_node\ *node,\ cmark_node\ *child);
-\f[]
-.fi
.SH ACCESSORS
.IP
.nf
@@ -99,113 +95,145 @@ cmark_node_append_child(cmark_node\ *node,\ cmark_node\ *child);
cmark_node_type
cmark_node_get_type(cmark_node\ *node);
+
const\ char*
cmark_node_get_string_content(cmark_node\ *node);
+
int
cmark_node_set_string_content(cmark_node\ *node,\ const\ char\ *content);
+
int
cmark_node_get_header_level(cmark_node\ *node);
+
int
cmark_node_set_header_level(cmark_node\ *node,\ int\ level);
+
cmark_list_type
cmark_node_get_list_type(cmark_node\ *node);
+
int
cmark_node_set_list_type(cmark_node\ *node,\ cmark_list_type\ type);
+
int
cmark_node_get_list_start(cmark_node\ *node);
+
int
cmark_node_set_list_start(cmark_node\ *node,\ int\ start);
+
int
cmark_node_get_list_tight(cmark_node\ *node);
+
int
cmark_node_set_list_tight(cmark_node\ *node,\ int\ tight);
+
const\ char*
cmark_node_get_fence_info(cmark_node\ *node);
+
int
cmark_node_set_fence_info(cmark_node\ *node,\ const\ char\ *info);
+
const\ char*
cmark_node_get_url(cmark_node\ *node);
+
int
cmark_node_set_url(cmark_node\ *node,\ const\ char\ *url);
+
const\ char*
cmark_node_get_title(cmark_node\ *node);
+
int
cmark_node_set_title(cmark_node\ *node,\ const\ char\ *title);
+
int
cmark_node_get_start_line(cmark_node\ *node);
+
int
cmark_node_get_start_column(cmark_node\ *node);
+
int
cmark_node_get_end_line(cmark_node\ *node);
\f[]
.fi
-.SH DEFINITIONS
+.SH TREE MANIPULATION
.IP
.nf
\f[C]
-CMARK_VERSION
+void
+cmark_node_unlink(cmark_node\ *node);
-typedef\ enum\ {
-\ \ \ \ //\ Block
-\ \ \ \ CMARK_NODE_DOCUMENT,
-\ \ \ \ CMARK_NODE_BLOCK_QUOTE,
-\ \ \ \ CMARK_NODE_LIST,
-\ \ \ \ CMARK_NODE_LIST_ITEM,
-\ \ \ \ CMARK_NODE_CODE_BLOCK,
-\ \ \ \ CMARK_NODE_HTML,
-\ \ \ \ CMARK_NODE_PARAGRAPH,
-\ \ \ \ CMARK_NODE_HEADER,
-\ \ \ \ CMARK_NODE_HRULE,
-\ \ \ \ CMARK_NODE_REFERENCE_DEF,
-\ \ \ \ CMARK_NODE_FIRST_BLOCK\ =\ CMARK_NODE_DOCUMENT,
-\ \ \ \ CMARK_NODE_LAST_BLOCK\ \ =\ CMARK_NODE_REFERENCE_DEF,
+int
+cmark_node_insert_before(cmark_node\ *node,\ cmark_node\ *sibling);
-\ \ \ \ //\ Inline
-\ \ \ \ CMARK_NODE_TEXT,
-\ \ \ \ CMARK_NODE_SOFTBREAK,
-\ \ \ \ CMARK_NODE_LINEBREAK,
-\ \ \ \ CMARK_NODE_INLINE_CODE,
-\ \ \ \ CMARK_NODE_INLINE_HTML,
-\ \ \ \ CMARK_NODE_EMPH,
-\ \ \ \ CMARK_NODE_STRONG,
-\ \ \ \ CMARK_NODE_LINK,
-\ \ \ \ CMARK_NODE_IMAGE,
-\ \ \ \ CMARK_NODE_FIRST_INLINE\ =\ CMARK_NODE_TEXT,
-\ \ \ \ CMARK_NODE_LAST_INLINE\ \ =\ CMARK_NODE_IMAGE,
-}\ cmark_node_type;
+int
+cmark_node_insert_after(cmark_node\ *node,\ cmark_node\ *sibling);
-typedef\ enum\ {
-\ \ \ \ CMARK_NO_LIST,
-\ \ \ \ CMARK_BULLET_LIST,
-\ \ \ \ CMARK_ORDERED_LIST
-}\ \ cmark_list_type;
-typedef\ enum\ {
-\ \ \ \ CMARK_PERIOD_DELIM,
-\ \ \ \ CMARK_PAREN_DELIM
-}\ cmark_delim_type;
+int
+cmark_node_prepend_child(cmark_node\ *node,\ cmark_node\ *child);
+
+
+int
+cmark_node_append_child(cmark_node\ *node,\ cmark_node\ *child);
+\f[]
+.fi
+.SH PARSING
+.IP
+.nf
+\f[C]
+cmark_parser\ *cmark_parser_new();
+
+
+
+void\ cmark_parser_free(cmark_parser\ *parser);
+
+
+
+cmark_node\ *cmark_parser_finish(cmark_parser\ *parser);
+
+
+
+void\ cmark_parser_push(cmark_parser\ *parser,\ const\ char\ *buffer,\ size_t\ len);
+
+
+
+cmark_node\ *cmark_parse_document(const\ char\ *buffer,\ size_t\ len);
+
+
+
+cmark_node\ *cmark_parse_file(FILE\ *f);
+\f[]
+.fi
+.SH RENDERING
+.IP
+.nf
+\f[C]
+char\ *cmark_render_ast(cmark_node\ *root);
+
+
+
+char\ *cmark_render_html(cmark_node\ *root);
\f[]
.fi
.SH AUTHORS
.PP
-John MacFarlane
+John MacFarlane, Vicent Marti, Kārlis Gaņģis, Nick Wellnhofer.