diff --git a/README.md b/README.md
index af7cf60..f1d8b27 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,16 @@
# underlined
-Simple Mistune plug-in that turns `_` tags into `<ul>` instead of `<em>`
+Simple Mistune plug-in that turns `_` Markdown tags into `
` instead of `` HTML tags
+
+## Use
+
+```Python
+from mistune import Markdown
+from underlined import underlined
+
+md = 'this _text_ is underlined'
+parser = Markdown()
+underlined(parser)
+html = parser(md)
+```
+
+> `this is underlined`
\ No newline at end of file
diff --git a/underlined.py b/underlined.py
new file mode 100644
index 0000000..13fb8b5
--- /dev/null
+++ b/underlined.py
@@ -0,0 +1,54 @@
+__all__ = ['underlined']
+
+import re
+
+UNDERLINED = r'\b_{1,3}(?=[^\s_])'
+UNDERLINED_END_RE = {
+ '_': re.compile(r'(?:(? int:
+ pos = m.end()
+ marker = m.group(0)
+ mlen = len(marker)
+ _end_re = UNDERLINED_END_RE[marker]
+ m1 = _end_re.search(state.src, pos)
+ if not m1:
+ state.append_token({'type': 'text', 'raw': marker})
+ return pos
+ end_pos = m1.end()
+ text = state.src[pos:end_pos-mlen]
+ prec_pos = self.precedence_scan(m, state, end_pos)
+ if prec_pos:
+ return prec_pos
+ new_state = state.copy()
+ new_state.src = text
+ new_state.in_underlined = True
+ state.append_token({
+ 'type': 'underlined',
+ 'children': self.render(new_state),
+ })
+ return end_pos
+
+def render_underlined_mu(self, token, state) -> str:
+ return '`_' + self.render_children(token, state) + '`_'
+
+def render_underlined_html(self, token, state) -> str:
+ return '' + self.render_children(token, state) + ''
+
+def underlined(md):
+ """A mistune plugin to render underlined tags.
+ Most Markdown parsers render it as emphasis tag.
+
+ Underlined text is surrounded by `_`, `__`, or `___`
+
+ :param md: Markdown instance
+ """
+ md.inline.register('underlined', UNDERLINED, parse_underlined, before='emphasis')
+ if md.renderer:
+ if md.renderer.NAME == 'html':
+ md.renderer.register('underlined', render_underlined_html)
+ elif md.renderer.NAME == 'micron':
+ md.renderer.register('underlined', render_underlined_mu)
\ No newline at end of file