diff --git a/documentation/UI/index.md b/documentation/UI/index.md
new file mode 100644
index 00000000..725c1a3d
--- /dev/null
+++ b/documentation/UI/index.md
@@ -0,0 +1,3 @@
+# Index for UI code
+
+1. [Rendering DOM elements](./render-dom-elements.md)
diff --git a/documentation/UI/render-dom-elements.md b/documentation/UI/render-dom-elements.md
new file mode 100644
index 00000000..7bcf93e9
--- /dev/null
+++ b/documentation/UI/render-dom-elements.md
@@ -0,0 +1,47 @@
+tldr; Use `tag` from `ui/general/html.js` to quickly create DOM elements.
+
+## Syntax
+---
+The general syntax is as follows:
+```js
+tag.tag_name({attribute1: value, attribute2: value, ...}, [child_elements]);
+```
+**tag_name** can be any one of the following:
+```
+ br, a, ol, ul, li, div, h1, h2, h3, h4, h5, h6,
+ p, strong, em, span, img, section, main, article, aside,
+ pre, button, time, input, textarea, label, form, progress, output, video
+```
+
+
+
+eg:
+Here is an example HTML segment followed with the code to create it in Hydrogen.
+```html
+
+```
+```js
+tag.section({className: "main-section"},[
+ tag.h1("Demo"),
+ tag.button({className:"btn_cool"}, "Click me")
+ ]);
+```
+
+
+**Note:** In views based on `TemplateView`, you will see `t` used instead of `tag`.
+`t` is is `TemplateBuilder` object passed to the render function in `TemplateView`.
+Although syntactically similar, they are not functionally equivalent.
+Primarily `t` **supports** bindings and event handlers while `tag` **does not**.
+
+```js
+ // The onClick here wont work!!
+ tag.button({className:"awesome-btn", onClick: () => this.foo()});
+
+ render(t, vm){
+ // The onClick works here.
+ t.button({className:"awesome-btn", onClick: () => this.foo()});
+ }
+```