You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by mi...@apache.org on 2016/06/26 05:57:59 UTC

[2/2] zeppelin git commit: [ZEPPELIN-1018] Apply auto "Table of Contents" generator to Zeppelin docs website

[ZEPPELIN-1018] Apply auto "Table of Contents" generator to Zeppelin docs website

### What is this PR for?
I added auto TOC(Table of Contents) generator for Zeppelin documentation website. TOC can help people looking through whole contents at a glance and finding what they want quickly.

I just added `<div id="toc"></div>`  to the each documentation header. [`toc`](https://github.com/apache/zeppelin/compare/master...AhyoungRyu:ZEPPELIN-1018?expand=1#diff-85af09fb498a5667ea455391533f945dR3)  recognize `<h2>` & `<h3>` as a title in the docs  and it automatically generate TOC. So I set a rule for this work. (I'll write this rule on `docs/CONTRIBUTING.md` or [docs/howtocontributewebsite](https://zeppelin.apache.org/docs/0.6.0-SNAPSHOT/development/howtocontributewebsite.html)).

```
# Level-1 Heading  <- Use only for the main title of the page
## Level-2 Heading <- Start with this one
### Level-3 heading <- Only use this one for child of Level-2

toc only recognize Level-2 & Level-3
```

Please see the below attached screenshot image.

### What type of PR is it?
Improvement & Documentation

### Todos
* [x] - Add TOC generator
* [x] - Apply TOC(`<div id="toc"></div>`) to every documentation and reorganize each headers(apply the above rule)
* [x] - Fix some broken code block in several docs
* [x] - Apply TOC to `r.md` (Currently R docs has some duplicated info since [this one](https://github.com/apache/zeppelin/commit/d5e87fb8ba98f08db5b0a4995104ce19f182c678) and [this one](https://github.com/apache/zeppelin/commit/7d6cc7e99154e2d337c11fdf8be1a874ed3e9ada) )
* [x] - Apply TOC to `install.md` after #1010 merged
* [x] - Apply TOC to `interpreterinstallation.md` after #1042 merged

### What is the Jira issue?
[ZEPPELIN-1018](https://issues.apache.org/jira/browse/ZEPPELIN-1018)

### How should this be tested?
1. Apply this patch and build `docs/` with [this guide](https://github.com/apache/zeppelin/tree/master/docs#build-documentation)
2.  Visit some docs page. Then you can see TOC in the header of page.

### Screenshots (if appropriate)
 - Automatically generated TOC in Spark interpreter docs page
<img width="831" alt="screen shot 2016-06-16 at 9 37 18 pm" src="https://cloud.githubusercontent.com/assets/10060731/16140902/945b9c7a-340a-11e6-91f3-b6174738bed0.png">

### Questions:
* Does the licenses files need update?
No. Actually I used [jekyll-table-of-contents#copyright](https://github.com/ghiculescu/jekyll-table-of-contents#copyright). But I don't need to add a license for this :)
* Is there breaking changes for older versions? No
* Does this needs documentation? Maybe

Author: AhyoungRyu <fb...@hanmail.net>

Closes #1031 from AhyoungRyu/ZEPPELIN-1018 and squashes the following commits:

e66397b [AhyoungRyu] Apply TOC to interpreterinstallation.md
009579b [AhyoungRyu] Add more info to 'What is the next?' in install.md
04cf501 [AhyoungRyu] Revert 'where to start' section
b7cbe5f [AhyoungRyu] Fix typo
cf0911c [AhyoungRyu] Rename license file
388f35a [AhyoungRyu] Add jekyll-table-of-contents license info
6394c70 [AhyoungRyu] Fix image path in python.md
d00e4b1 [AhyoungRyu] Move interpreter/screenshot/ -> asset/../img/docs-img/
3ffb383 [AhyoungRyu] Remove duplicated info in r.md & apply toc
a03ca99 [AhyoungRyu] Exclude toc.js from pom.xml
3fae7df [AhyoungRyu] Apply auto generated toc to install.md
d114a9d [AhyoungRyu] Address @felixcheung feedback
6a788fe [AhyoungRyu] Resize TOC tab indent
6760c00 [AhyoungRyu] Apply auto TOC to all of docs under docs/storage/
fbde57f [AhyoungRyu] Apply auto TOC to all of docs under docs/quickstart/
db76eb6 [AhyoungRyu] Apply auto TOC to all of docs under docs/install/
f35db47 [AhyoungRyu] Apply auto TOC to all of docs under docs/displaysystem/
b05365f [AhyoungRyu] Apply auto TOC to all of docs under docs/rest-api/
163691c [AhyoungRyu] Apply auto TOC to all of docs under docs/manual/
bef398e [AhyoungRyu] Apply auto TOC to all of docs under docs/development/
9c5f76b [AhyoungRyu] Apply auto TOC to all of docs under docs/interpreter/
587d4ba [AhyoungRyu] Apply auto TOC to all of docs under docs/security/
1f10b97 [AhyoungRyu] Change toc configuration
78dca9e [AhyoungRyu] Add toc.js for auto generating TOC


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/5975125f
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/5975125f
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/5975125f

Branch: refs/heads/master
Commit: 5975125f18856c11d129621de1914260158ce0e7
Parents: e1b3847
Author: AhyoungRyu <fb...@hanmail.net>
Authored: Sat Jun 25 12:44:53 2016 -0700
Committer: Mina Lee <mi...@apache.org>
Committed: Sat Jun 25 22:57:44 2016 -0700

----------------------------------------------------------------------
 LICENSE                                         |   8 +-
 docs/_includes/themes/zeppelin/default.html     |   1 +
 docs/assets/themes/zeppelin/css/style.css       |  14 +++
 .../zeppelin/img/docs-img/backtoscala.png       | Bin 0 -> 36308 bytes
 .../themes/zeppelin/img/docs-img/knitgeo.png    | Bin 0 -> 59594 bytes
 .../themes/zeppelin/img/docs-img/knitmotion.png | Bin 0 -> 33468 bytes
 .../themes/zeppelin/img/docs-img/knitstock.png  | Bin 0 -> 108868 bytes
 .../zeppelin/img/docs-img/pythonMatplotlib.png  | Bin 0 -> 20843 bytes
 .../themes/zeppelin/img/docs-img/repl2plus2.png | Bin 0 -> 13143 bytes
 .../themes/zeppelin/img/docs-img/replhead.png   | Bin 0 -> 42923 bytes
 .../themes/zeppelin/img/docs-img/replhist.png   | Bin 0 -> 31481 bytes
 .../zeppelin/img/docs-img/sparkrfaithful.png    | Bin 0 -> 52235 bytes
 .../themes/zeppelin/img/docs-img/varr1.png      | Bin 0 -> 16703 bytes
 .../themes/zeppelin/img/docs-img/varr2.png      | Bin 0 -> 18973 bytes
 .../themes/zeppelin/img/docs-img/varscala.png   | Bin 0 -> 21073 bytes
 docs/assets/themes/zeppelin/js/docs.js          |   4 +
 docs/assets/themes/zeppelin/js/toc.js           |  98 +++++++++++++++
 docs/development/howtocontribute.md             |  25 ++--
 docs/development/howtocontributewebsite.md      |  41 +++---
 docs/development/writingzeppelininterpreter.md  |  66 +++++-----
 docs/displaysystem/back-end-angular.md          |  29 ++---
 docs/displaysystem/basicdisplaysystem.md        |   4 +
 docs/displaysystem/front-end-angular.md         |  25 ++--
 docs/install/install.md                         |  28 ++---
 docs/install/upgrade.md                         |  10 +-
 docs/install/virtual_machine.md                 |  28 +++--
 docs/interpreter/alluxio.md                     |   6 +-
 docs/interpreter/cassandra.md                   |   4 +-
 docs/interpreter/elasticsearch.md               |   6 +-
 docs/interpreter/flink.md                       |   6 +-
 docs/interpreter/geode.md                       |  30 +++--
 docs/interpreter/hbase.md                       |  12 +-
 docs/interpreter/hdfs.md                        |  13 +-
 docs/interpreter/hive.md                        |  10 +-
 docs/interpreter/ignite.md                      |  14 ++-
 docs/interpreter/jdbc.md                        |  57 +++++----
 docs/interpreter/lens.md                        |  12 +-
 docs/interpreter/livy.md                        |  21 ++--
 docs/interpreter/markdown.md                    |   8 +-
 docs/interpreter/postgresql.md                  |  46 +++----
 docs/interpreter/python.md                      |  12 +-
 docs/interpreter/r.md                           | 114 ++++++++---------
 docs/interpreter/scalding.md                    |  19 +--
 docs/interpreter/screenshots/backtoscala.png    | Bin 36308 -> 0 bytes
 docs/interpreter/screenshots/knitgeo.png        | Bin 59594 -> 0 bytes
 docs/interpreter/screenshots/knitmotion.png     | Bin 33468 -> 0 bytes
 docs/interpreter/screenshots/knitstock.png      | Bin 108868 -> 0 bytes
 .../screenshots/pythonMatplotlib.png            | Bin 20843 -> 0 bytes
 docs/interpreter/screenshots/repl2plus2.png     | Bin 13143 -> 0 bytes
 docs/interpreter/screenshots/replhead.png       | Bin 42923 -> 0 bytes
 docs/interpreter/screenshots/replhist.png       | Bin 31481 -> 0 bytes
 docs/interpreter/screenshots/sparkrfaithful.png | Bin 52235 -> 0 bytes
 docs/interpreter/screenshots/varr1.png          | Bin 16703 -> 0 bytes
 docs/interpreter/screenshots/varr2.png          | Bin 18973 -> 0 bytes
 docs/interpreter/screenshots/varscala.png       | Bin 21073 -> 0 bytes
 docs/interpreter/spark.md                       |  22 ++--
 docs/manual/dynamicform.md                      |  22 ++--
 docs/manual/dynamicinterpreterload.md           |  25 ++--
 docs/manual/interpreterinstallation.md          |   2 +
 docs/manual/interpreters.md                     |  22 ++--
 docs/manual/notebookashomepage.md               | 125 +++++++++----------
 docs/manual/publish.md                          |  15 +--
 docs/quickstart/explorezeppelinui.md            |  26 ++--
 docs/quickstart/tutorial.md                     |  15 +--
 docs/rest-api/rest-configuration.md             |  19 +--
 docs/rest-api/rest-interpreter.md               |  35 +++---
 docs/rest-api/rest-notebook.md                  |  71 +++++------
 docs/security/authentication.md                 |  15 +--
 docs/security/interpreter_authorization.md      |   2 +
 docs/security/notebook_authorization.md         |   7 +-
 docs/security/shiroauthentication.md            |  26 ++--
 docs/storage/storage.md                         |  23 ++--
 licenses/LICENSE-jekyll-table-of-contents       |  19 +++
 pom.xml                                         |   3 +
 74 files changed, 745 insertions(+), 520 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
index 67a5b79..71d3c52 100644
--- a/LICENSE
+++ b/LICENSE
@@ -235,7 +235,13 @@ The text of each license is also included at licenses/LICENSE-[project]-[version
     (The MIT License) jekyll-bootstrap 0.3.0 (https://github.com/plusjade/jekyll-bootstrap) - https://github.com/plusjade/jekyll-bootstrap
     (The MIT License) jekyll 1.3.0 (http://jekyllrb.com/) - https://github.com/jekyll/jekyll/blob/v1.3.0/LICENSE
 
-
+========================================================================
+MIT-style licenses
+========================================================================
+The following components are provided under the MIT-style license. See project link for details.
+The text of each license is also included at licenses/LICENSE-[project]-[version].txt.
+    
+    (MIT Style) jekyll-table-of-contents (https://github.com/ghiculescu/jekyll-table-of-contents) - https://github.com/ghiculescu/jekyll-table-of-contents/blob/master/LICENSE.txt
 
 ========================================================================
 Apache licenses

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/_includes/themes/zeppelin/default.html
----------------------------------------------------------------------
diff --git a/docs/_includes/themes/zeppelin/default.html b/docs/_includes/themes/zeppelin/default.html
index eb99b9b..cd07602 100644
--- a/docs/_includes/themes/zeppelin/default.html
+++ b/docs/_includes/themes/zeppelin/default.html
@@ -33,6 +33,7 @@
     <script src="{{ ASSET_PATH }}/bootstrap/js/bootstrap.min.js"></script>
     <script src="{{ ASSET_PATH }}/js/docs.js"></script>
     <script src="{{ ASSET_PATH }}/js/anchor.min.js"></script>
+    <script src="{{ ASSET_PATH }}/js/toc.js"></script>
 
     <!-- atom & rss feed -->
     <link href="{{ BASE_PATH }}{{ site.JB.atom_path }}" type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed">

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/css/style.css
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/css/style.css b/docs/assets/themes/zeppelin/css/style.css
index a5507d3..8ab197c 100644
--- a/docs/assets/themes/zeppelin/css/style.css
+++ b/docs/assets/themes/zeppelin/css/style.css
@@ -545,6 +545,20 @@ a.anchor {
 
 a.anchorjs-link:hover { text-decoration: none; }
 
+/* Table of Contents(TOC) */
+#toc {
+  padding-top: 12px;
+  padding-bottom: 12px;
+}
+
+#toc ul {
+  margin-left: -14px;
+}
+
+#toc ul ul {
+  margin-left: -18px;
+}
+
 /* Custom, iPhone Retina */
 @media only screen and (max-width: 480px) {
   .jumbotron h1 {

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/backtoscala.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/backtoscala.png b/docs/assets/themes/zeppelin/img/docs-img/backtoscala.png
new file mode 100644
index 0000000..c0c897a
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/backtoscala.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/knitgeo.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/knitgeo.png b/docs/assets/themes/zeppelin/img/docs-img/knitgeo.png
new file mode 100644
index 0000000..d1eb0d8
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/knitgeo.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/knitmotion.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/knitmotion.png b/docs/assets/themes/zeppelin/img/docs-img/knitmotion.png
new file mode 100644
index 0000000..a1048ea
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/knitmotion.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/knitstock.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/knitstock.png b/docs/assets/themes/zeppelin/img/docs-img/knitstock.png
new file mode 100644
index 0000000..7a27c60
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/knitstock.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/pythonMatplotlib.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/pythonMatplotlib.png b/docs/assets/themes/zeppelin/img/docs-img/pythonMatplotlib.png
new file mode 100644
index 0000000..3d53043
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/pythonMatplotlib.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/repl2plus2.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/repl2plus2.png b/docs/assets/themes/zeppelin/img/docs-img/repl2plus2.png
new file mode 100644
index 0000000..8f70092
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/repl2plus2.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/replhead.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/replhead.png b/docs/assets/themes/zeppelin/img/docs-img/replhead.png
new file mode 100644
index 0000000..b09ccab
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/replhead.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/replhist.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/replhist.png b/docs/assets/themes/zeppelin/img/docs-img/replhist.png
new file mode 100644
index 0000000..5291404
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/replhist.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/sparkrfaithful.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/sparkrfaithful.png b/docs/assets/themes/zeppelin/img/docs-img/sparkrfaithful.png
new file mode 100644
index 0000000..ec956c7
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/sparkrfaithful.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/varr1.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/varr1.png b/docs/assets/themes/zeppelin/img/docs-img/varr1.png
new file mode 100644
index 0000000..ac997a8
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/varr1.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/varr2.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/varr2.png b/docs/assets/themes/zeppelin/img/docs-img/varr2.png
new file mode 100644
index 0000000..b49988d
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/varr2.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/img/docs-img/varscala.png
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/img/docs-img/varscala.png b/docs/assets/themes/zeppelin/img/docs-img/varscala.png
new file mode 100644
index 0000000..7f95ad2
Binary files /dev/null and b/docs/assets/themes/zeppelin/img/docs-img/varscala.png differ

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/js/docs.js
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/js/docs.js b/docs/assets/themes/zeppelin/js/docs.js
index 1d2d002..343f6e8 100644
--- a/docs/assets/themes/zeppelin/js/docs.js
+++ b/docs/assets/themes/zeppelin/js/docs.js
@@ -118,6 +118,10 @@ $(function() {
     maybeScrollToHash();
   });
 
+  $(document).ready(function() {
+    $('#toc').toc();
+  });
+
   // Scroll now too in case we had opened the page on a hash, but wait a bit because some browsers
   // will try to do *their* initial scroll after running the onReady handler.
   $(window).load(function() { setTimeout(function() { maybeScrollToHash(); }, 25); });

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/assets/themes/zeppelin/js/toc.js
----------------------------------------------------------------------
diff --git a/docs/assets/themes/zeppelin/js/toc.js b/docs/assets/themes/zeppelin/js/toc.js
new file mode 100755
index 0000000..8977fff
--- /dev/null
+++ b/docs/assets/themes/zeppelin/js/toc.js
@@ -0,0 +1,98 @@
+// https://github.com/ghiculescu/jekyll-table-of-contents
+(function($){
+  $.fn.toc = function(options) {
+    var defaults = {
+      noBackToTopLinks: false,
+      title: '<i></i>',
+      minimumHeaders: 2,
+      headers: 'h2, h3',
+      listType: 'ul', // values: [ol|ul]
+      showEffect: 'none', // values: [show|slideDown|fadeIn|none]
+      showSpeed: '0', // set to 0 to deactivate effect
+      classes: { list: '',
+                 item: ''
+               }
+    },
+    settings = $.extend(defaults, options);
+
+    function fixedEncodeURIComponent (str) {
+      return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+        return '%' + c.charCodeAt(0).toString(16);
+      });
+    }
+
+    function createLink (header) {
+      var innerText = (header.textContent === undefined) ? header.innerText : header.textContent;
+      return "<a href='#" + fixedEncodeURIComponent(header.id) + "'>" + innerText + "</a>";
+    }
+
+    var headers = $(settings.headers).filter(function() {
+      // get all headers with an ID
+      var previousSiblingName = $(this).prev().attr( "name" );
+      if (!this.id && previousSiblingName) {
+        this.id = $(this).attr( "id", previousSiblingName.replace(/\./g, "-") );
+      }
+      return this.id;
+    }), output = $(this);
+    if (!headers.length || headers.length < settings.minimumHeaders || !output.length) {
+      $(this).hide();
+      return;
+    }
+
+    if (0 === settings.showSpeed) {
+      settings.showEffect = 'none';
+    }
+
+    var render = {
+      show: function() { output.hide().html(html).show(settings.showSpeed); },
+      slideDown: function() { output.hide().html(html).slideDown(settings.showSpeed); },
+      fadeIn: function() { output.hide().html(html).fadeIn(settings.showSpeed); },
+      none: function() { output.html(html); }
+    };
+
+    var get_level = function(ele) { return parseInt(ele.nodeName.replace("H", ""), 10); };
+    var highest_level = headers.map(function(_, ele) { return get_level(ele); }).get().sort()[0];
+    var return_to_top = '<i class="icon-arrow-up back-to-top"> </i>';
+
+    var level = get_level(headers[0]),
+      this_level,
+      html = settings.title + " <" +settings.listType + " class=\"" + settings.classes.list +"\">";
+    headers.on('click', function() {
+      if (!settings.noBackToTopLinks) {
+        window.location.hash = this.id;
+      }
+    })
+    .addClass('clickable-header')
+    .each(function(_, header) {
+      this_level = get_level(header);
+      if (!settings.noBackToTopLinks && this_level === highest_level) {
+        $(header).addClass('top-level-header').after(return_to_top);
+      }
+      if (this_level === level) // same level as before; same indenting
+        html += "<li class=\"" + settings.classes.item + "\">" + createLink(header);
+      else if (this_level <= level){ // higher level than before; end parent ol
+        for(i = this_level; i < level; i++) {
+          html += "</li></"+settings.listType+">"
+        }
+        html += "<li class=\"" + settings.classes.item + "\">" + createLink(header);
+      }
+      else if (this_level > level) { // lower level than before; expand the previous to contain a ol
+        for(i = this_level; i > level; i--) {
+          html += "<" + settings.listType + " class=\"" + settings.classes.list +"\">" +
+                  "<li class=\"" + settings.classes.item + "\">"
+        }
+        html += createLink(header);
+      }
+      level = this_level; // update for the next one
+    });
+    html += "</"+settings.listType+">";
+    if (!settings.noBackToTopLinks) {
+      $(document).on('click', '.back-to-top', function() {
+        $(window).scrollTop(0);
+        window.location.hash = '';
+      });
+    }
+
+    render[settings.showEffect]();
+  };
+})(jQuery);

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/development/howtocontribute.md
----------------------------------------------------------------------
diff --git a/docs/development/howtocontribute.md b/docs/development/howtocontribute.md
index 7b3ee0c..2d3842a 100644
--- a/docs/development/howtocontribute.md
+++ b/docs/development/howtocontribute.md
@@ -7,8 +7,9 @@ group: development
 
 # Contributing to Apache Zeppelin ( Code )
 
-## IMPORTANT
-Apache Zeppelin is an [Apache2 License](http://www.apache.org/licenses/LICENSE-2.0.html) Software.
+<div id="toc"></div>
+
+> **NOTE :** Apache Zeppelin is an [Apache2 License](http://www.apache.org/licenses/LICENSE-2.0.html) Software.
 Any contributions to Zeppelin (Source code, Documents, Image, Website) means you agree with license all your contributions as Apache2 License.
 
 ## Setting up
@@ -22,7 +23,7 @@ Since Zeppelin uses Git for it's SCM system, you need git client installed in yo
 
 You are free to use whatever IDE you prefer, or your favorite command line editor.
 
-### Build Tools
+#### Build Tools
 
 To build the code, install
 
@@ -46,10 +47,10 @@ You may also want to develop against a specific branch. For example, for branch-
 git clone -b branch-0.5.6 git://git.apache.org/zeppelin.git zeppelin
 ```
 
-#### Fork repository
-If you want not only build Zeppelin but also make any changes, then you need fork [Zeppelin github mirror repository](https://github.com/apache/zeppelin) and make a pull request.
+Apache Zeppelin follows [Fork & Pull](https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request) as a source control workflow.
+If you want to not only build Zeppelin but also make any changes, then you need to fork [Zeppelin github mirror repository](https://github.com/apache/zeppelin) and make a pull request.
 
-###Build
+### Build
 
 ```
 mvn install
@@ -67,6 +68,8 @@ To build with specific spark / hadoop version
 mvn install -Dspark.version=x.x.x -Dhadoop.version=x.x.x
 ```
 
+For the further 
+
 ### Run Zeppelin server in development mode
 
 ```
@@ -88,21 +91,19 @@ Server will be run on [http://localhost:8080](http://localhost:8080).
 
 Some portions of the Zeppelin code are generated by [Thrift](http://thrift.apache.org). For most Zeppelin changes, you don't need to worry about this. But if you modify any of the Thrift IDL files (e.g. zeppelin-interpreter/src/main/thrift/*.thrift), then you also need to regenerate these files and submit their updated version as part of your patch.
 
-To regenerate the code, install **thrift-0.9.0** and change directory into Zeppelin source directory. and then run following command
+To regenerate the code, install **thrift-0.9.2** and change directory into Zeppelin source directory. and then run following command
 
 
 ```
 thrift -out zeppelin-interpreter/src/main/java/ --gen java zeppelin-interpreter/src/main/thrift/RemoteInterpreterService.thrift
 ```
 
-
-## JIRA
-Zeppelin manages its issues in Jira. [https://issues.apache.org/jira/browse/ZEPPELIN](https://issues.apache.org/jira/browse/ZEPPELIN)
-
 ## Where to Start
-You can find issues for [beginner](https://issues.apache.org/jira/browse/ZEPPELIN-924?jql=project%20%3D%20ZEPPELIN%20and%20status%20%3D%20Open%20and%20labels%20in%20\(beginner%2C%20newbie\)).
+You can find issues for <a href="https://issues.apache.org/jira/browse/ZEPPELIN-981?jql=project%20%3D%20ZEPPELIN%20AND%20labels%20in%20(beginner%2C%20newbie)">beginner & newbie</a>
 
 ## Stay involved
 Contributors should join the Zeppelin mailing lists.
 
 * [dev@zeppelin.apache.org](http://mail-archives.apache.org/mod_mbox/zeppelin-dev/) is for people who want to contribute code to Zeppelin. [subscribe](mailto:dev-subscribe@zeppelin.apache.org?subject=send this email to subscribe), [unsubscribe](mailto:dev-unsubscribe@zeppelin.apache.org?subject=send this email to unsubscribe), [archives](http://mail-archives.apache.org/mod_mbox/zeppelin-dev/)
+
+If you have any issues, create a ticket in [JIRA](https://issues.apache.org/jira/browse/ZEPPELIN).

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/development/howtocontributewebsite.md
----------------------------------------------------------------------
diff --git a/docs/development/howtocontributewebsite.md b/docs/development/howtocontributewebsite.md
index f56b8e3..0db1555 100644
--- a/docs/development/howtocontributewebsite.md
+++ b/docs/development/howtocontributewebsite.md
@@ -7,49 +7,52 @@ group: development
 
 # Contributing to Apache Zeppelin ( Website )
 
-## IMPORTANT
-Apache Zeppelin is an [Apache2 License](http://www.apache.org/licenses/LICENSE-2.0.html) Software.
-Any contribution to Zeppelin (Source code, Documents, Image, Website) means you agree license all your contributions as Apache2 License.
+<div id="toc"></div>
 
 
-## Modifying the website
+This page will give you an overview of how to build and contribute to the documentation of Apache Zeppelin.
+The online documentation at [zeppelin.apache.org](https://zeppelin.apache.org/docs/latest/) is also generated from the files found here.
 
-#### Getting the source code
-Website is hosted in 'master' branch under `/docs/` dir.
+> **NOTE :** Apache Zeppelin is an [Apache2 License](http://www.apache.org/licenses/LICENSE-2.0.html) Software.
+Any contributions to Zeppelin (Source code, Documents, Image, Website) means you agree with license all your contributions as Apache2 License.
 
-First of all, you need the website source code. The official location of mirror for Zeppelin is [http://git.apache.org/zeppelin.git](http://git.apache.org/zeppelin.git).
+## Getting the source code
+First of all, you need Zeppelin source code. The official location of Zeppelin is [http://git.apache.org/zeppelin.git](http://git.apache.org/zeppelin.git).
+Documentation website is hosted in 'master' branch under `/docs/` dir.
+
+### git access
 
+First of all, you need the website source code. The official location of mirror for Zeppelin is [http://git.apache.org/zeppelin.git](http://git.apache.org/zeppelin.git).
 Get the source code on your development machine using git.
 
 ```
 git clone git://git.apache.org/zeppelin.git
 cd docs
 ```
+Apache Zeppelin follows [Fork & Pull](https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request) as a source control workflow.
+If you want to not only build Zeppelin but also make any changes, then you need to fork [Zeppelin github mirror repository](https://github.com/apache/zeppelin) and make a pull request.
 
-#### Build
-
-To build, you'll need to install some prerequisites. Please check 'Build documentation' section in [docs/README.md](https://github.com/apache/zeppelin/blob/master/docs/README.md#build-documentation).
+### Build
 
-#### Run website in development mode
+You'll need to install some prerequisites to build the code. Please check [Build documentation](https://github.com/apache/zeppelin/blob/master/docs/README.md#build-documentation) section in [docs/README.md](https://github.com/apache/zeppelin/blob/master/docs/README.md).
 
-While you're modifying website, you'll want to see preview of it. Please check 'Run website' section in [docs/README.md](https://github.com/apache/zeppelin/blob/master/docs/README.md#run-website).
+### Run website in development mode
 
-You'll be able to access it on [http://localhost:4000](http://localhost:4000) with your web browser.
+While you're modifying website, you might want to see preview of it. Please check [Run website](https://github.com/apache/zeppelin/blob/master/docs/README.md#run-website) section in [docs/README.md](https://github.com/apache/zeppelin/blob/master/docs/README.md).
+Then you'll be able to access it on [http://localhost:4000](http://localhost:4000) with your web browser.
 
-#### Making a Pull Request
+### Making a Pull Request
 
 When you are ready, just make a pull-request.
 
 
 ## Alternative way
 
-You can directly edit .md files in `/docs/` dir at github's web interface and make pull-request immediatly.
-
-
-## JIRA
-Zeppelin manages its issues in Jira. [https://issues.apache.org/jira/browse/ZEPPELIN](https://issues.apache.org/jira/browse/ZEPPELIN)
+You can directly edit `.md` files in `/docs/` directory at the web interface of github and make pull-request immediatly.
 
 ## Stay involved
 Contributors should join the Zeppelin mailing lists.
 
 * [dev@zeppelin.apache.org](http://mail-archives.apache.org/mod_mbox/zeppelin-dev/) is for people who want to contribute code to Zeppelin. [subscribe](mailto:dev-subscribe@zeppelin.apache.org?subject=send this email to subscribe), [unsubscribe](mailto:dev-unsubscribe@zeppelin.apache.org?subject=send this email to unsubscribe), [archives](http://mail-archives.apache.org/mod_mbox/zeppelin-dev/)
+
+If you have any issues, create a ticket in [JIRA](https://issues.apache.org/jira/browse/ZEPPELIN).

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/development/writingzeppelininterpreter.md
----------------------------------------------------------------------
diff --git a/docs/development/writingzeppelininterpreter.md b/docs/development/writingzeppelininterpreter.md
index f341211..7e7f4ef 100644
--- a/docs/development/writingzeppelininterpreter.md
+++ b/docs/development/writingzeppelininterpreter.md
@@ -19,21 +19,25 @@ limitations under the License.
 -->
 {% include JB/setup %}
 
-### What is Zeppelin Interpreter
+# Writing a New Interpreter
 
-Zeppelin Interpreter is a language backend. For example to use scala code in Zeppelin, you need scala interpreter.
-Every Interpreter belongs to an InterpreterGroup.
+<div id="toc"></div>
+
+## What is Apache Zeppelin Interpreter
+
+Apache Zeppelin Interpreter is a language backend. For example to use scala code in Zeppelin, you need a scala interpreter.
+Every Interpreters belongs to an **InterpreterGroup**.
 Interpreters in the same InterpreterGroup can reference each other. For example, SparkSqlInterpreter can reference SparkInterpreter to get SparkContext from it while they're in the same group.
 
 <img class="img-responsive" style="width:50%; border: 1px solid #ecf0f1;" height="auto" src="/assets/themes/zeppelin/img/interpreter.png" />
 
-InterpreterSetting is configuration of a given InterpreterGroup and a unit of start/stop interpreter.
-All Interpreters in the same InterpreterSetting are launched in a single, separate JVM process. The Interpreter communicates with Zeppelin engine via thrift.
+[InterpreterSetting](https://github.com/apache/zeppelin/blob/master/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java) is configuration of a given [InterpreterGroup](https://github.com/apache/zeppelin/blob/master/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterGroup.java) and a unit of start/stop interpreter.
+All Interpreters in the same InterpreterSetting are launched in a single, separate JVM process. The Interpreter communicates with Zeppelin engine via **[Thrift](https://github.com/apache/zeppelin/blob/master/zeppelin-interpreter/src/main/thrift/RemoteInterpreterService.thrift)**.
 
-In 'Separate Interpreter for each note' mode, new Interpreter instance will be created per notebook. But it still runs on the same JVM while they're in the same InterpreterSettings.
+In 'Separate Interpreter(scoped / isolated) for each note' mode which you can see at the **Interpreter Setting** menu when you create a new interpreter, new interpreter instance will be created per notebook. But it still runs on the same JVM while they're in the same InterpreterSettings.
 
 
-### Make your own Interpreter
+## Make your own Interpreter
 
 Creating a new interpreter is quite simple. Just extend [org.apache.zeppelin.interpreter](https://github.com/apache/zeppelin/blob/master/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/Interpreter.java) abstract class and implement some methods.
 You can include `org.apache.zeppelin:zeppelin-interpreter:[VERSION]` artifact in your build system. And you should your jars under your interpreter directory with specific directory name. Zeppelin server reads interpreter directories recursively and initializes interpreters including your own interpreter.
@@ -91,18 +95,18 @@ The name of the interpreter is what you later write to identify a paragraph whic
 some interpreter specific code...
 ```
 
-### Programming Languages for Interpreter
+## Programming Languages for Interpreter
 If the interpreter uses a specific programming language ( like Scala, Python, SQL ), it is generally recommended to add a syntax highlighting supported for that to the notebook paragraph editor.  
 
 To check out the list of languages supported, see the `mode-*.js` files under `zeppelin-web/bower_components/ace-builds/src-noconflict` or from [github.com/ajaxorg/ace-builds](https://github.com/ajaxorg/ace-builds/tree/master/src-noconflict).  
 
 If you want to add a new set of syntax highlighting,  
 
-1. Add the `mode-*.js` file to `zeppelin-web/bower.json` ( when built, `zeppelin-web/src/index.html` will be changed automatically. ).  
-2. Add to the list of `editorMode` in `zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js` - it follows the pattern 'ace/mode/x' where x is the name.  
-3. Add to the code that checks for `%` prefix and calls `session.setMode(editorMode.x)` in `setParagraphMode` located in `zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js`.  
+1. Add the `mode-*.js` file to <code>[zeppelin-web/bower.json](https://github.com/apache/zeppelin/blob/master/zeppelin-web/bower.json)</code> ( when built, <code>[zeppelin-web/src/index.html](https://github.com/apache/zeppelin/blob/master/zeppelin-web/src/index.html)</code> will be changed automatically. ).  
+2. Add to the list of `editorMode` in <code>[zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js](https://github.com/apache/zeppelin/blob/master/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js)</code> - it follows the pattern 'ace/mode/x' where x is the name.  
+3. Add to the code that checks for `%` prefix and calls `session.setMode(editorMode.x)` in `setParagraphMode` located in <code>[zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js](https://github.com/apache/zeppelin/blob/master/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js)</code>.  
 
-### Install your interpreter binary
+## Install your interpreter binary
 
 Once you have built your interpreter, you can place it under the interpreter directory with all its dependencies.
 
@@ -110,7 +114,7 @@ Once you have built your interpreter, you can place it under the interpreter dir
 [ZEPPELIN_HOME]/interpreter/[INTERPRETER_NAME]/
 ```
 
-### Configure your interpreter
+## Configure your interpreter
 
 To configure your interpreter you need to follow these steps:
 
@@ -119,12 +123,12 @@ To configure your interpreter you need to follow these steps:
   Property value is comma separated [INTERPRETER\_CLASS\_NAME].
   For example,
 
-```
-<property>
-  <name>zeppelin.interpreters</name>
-  <value>org.apache.zeppelin.spark.SparkInterpreter,org.apache.zeppelin.spark.PySparkInterpreter,org.apache.zeppelin.spark.SparkSqlInterpreter,org.apache.zeppelin.spark.DepInterpreter,org.apache.zeppelin.markdown.Markdown,org.apache.zeppelin.shell.ShellInterpreter,org.apache.zeppelin.hive.HiveInterpreter,com.me.MyNewInterpreter</value>
-</property>
-```
+  ```
+  <property>
+    <name>zeppelin.interpreters</name>
+    <value>org.apache.zeppelin.spark.SparkInterpreter,org.apache.zeppelin.spark.PySparkInterpreter,org.apache.zeppelin.spark.SparkSqlInterpreter,org.apache.zeppelin.spark.DepInterpreter,org.apache.zeppelin.markdown.Markdown,org.apache.zeppelin.shell.ShellInterpreter,org.apache.zeppelin.hive.HiveInterpreter,com.me.MyNewInterpreter</value>
+  </property>
+  ```
 
 2. Add your interpreter to the [default configuration](https://github.com/apache/zeppelin/blob/master/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java#L397) which is used when there is no `zeppelin-site.xml`.
 
@@ -133,11 +137,11 @@ To configure your interpreter you need to follow these steps:
 4. In the interpreter page, click the `+Create` button and configure your interpreter properties.
 Now you are done and ready to use your interpreter.
 
-Note that the interpreters released with zeppelin have a [default configuration](https://github.com/apache/zeppelin/blob/master/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java#L397) which is used when there is no `conf/zeppelin-site.xml`.
+> **Note :** Interpreters released with zeppelin have a [default configuration](https://github.com/apache/zeppelin/blob/master/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java#L397) which is used when there is no `conf/zeppelin-site.xml`.
 
-### Use your interpreter
+## Use your interpreter
 
-#### 0.5.0
+### 0.5.0
 Inside of a notebook, `%[INTERPRETER_NAME]` directive will call your interpreter.
 Note that the first interpreter configuration in zeppelin.interpreters will be the default one.
 
@@ -150,8 +154,7 @@ val a = "My interpreter"
 println(a)
 ```
 
-<br />
-#### 0.6.0 and later
+### 0.6.0 and later
 Inside of a notebook, `%[INTERPRETER_GROUP].[INTERPRETER_NAME]` directive will call your interpreter.
 Note that the first interpreter configuration in zeppelin.interpreters will be the default one.
 
@@ -192,7 +195,7 @@ You can only omit your interpreter group when your interpreter group is selected
 codes for myintp2
 ```
 
-### Examples
+## Examples
 
 Checkout some interpreters released with Zeppelin by default.
 
@@ -201,15 +204,16 @@ Checkout some interpreters released with Zeppelin by default.
  - [shell](https://github.com/apache/zeppelin/tree/master/shell)
  - [jdbc](https://github.com/apache/zeppelin/tree/master/jdbc)
 
-### Contributing a new Interpreter to Zeppelin releases
+## Contributing a new Interpreter to Zeppelin releases
 
 We welcome contribution to a new interpreter. Please follow these few steps:
 
- - First, check out the general contribution guide [here](./howtocontributewebsite.html).
- - Follow the steps in "Make your own Interpreter" section above.
- - Add your interpreter as in the "Configure your interpreter" section above; also add it to the example template [zeppelin-site.xml.template](https://github.com/apache/zeppelin/blob/master/conf/zeppelin-site.xml.template).
- - Add tests! They are run by Travis for all changes and it is important that they are self-contained.
+ - First, check out the general contribution guide [here](https://github.com/apache/zeppelin/blob/master/CONTRIBUTING.md).
+ - Follow the steps in [Make your own Interpreter](#make-your-own-interpreter) section above.
+ - Add your interpreter as in the [Configure your interpreter](#configure-your-interpreter) section above; also add it to the example template [zeppelin-site.xml.template](https://github.com/apache/zeppelin/blob/master/conf/zeppelin-site.xml.template).
+ - Add tests! They are run by [Travis](https://travis-ci.org/apache/zeppelin) for all changes and it is important that they are self-contained.
  - Include your interpreter as a module in [`pom.xml`](https://github.com/apache/zeppelin/blob/master/pom.xml).
  - Add documentation on how to use your interpreter under `docs/interpreter/`. Follow the Markdown style as this [example](https://github.com/apache/zeppelin/blob/master/docs/interpreter/elasticsearch.md). Make sure you list config settings and provide working examples on using your interpreter in code boxes in Markdown. Link to images as appropriate (images should go to `docs/assets/themes/zeppelin/img/docs-img/`). And add a link to your documentation in the navigation menu (`docs/_includes/themes/zeppelin/_navigation.html`).
  - Most importantly, ensure licenses of the transitive closure of all dependencies are list in [license file](https://github.com/apache/zeppelin/blob/master/zeppelin-distribution/src/bin_license/LICENSE).
- - Commit your changes and open a Pull Request on the project [Mirror on GitHub](https://github.com/apache/zeppelin); check to make sure Travis CI build is passing.
+ - Commit your changes and open a [Pull Request](https://github.com/apache/zeppelin/pulls) on the project [Mirror on GitHub](https://github.com/apache/zeppelin); check to make sure Travis CI build is passing.
+ 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/displaysystem/back-end-angular.md
----------------------------------------------------------------------
diff --git a/docs/displaysystem/back-end-angular.md b/docs/displaysystem/back-end-angular.md
index 4a06a08..d84a033 100644
--- a/docs/displaysystem/back-end-angular.md
+++ b/docs/displaysystem/back-end-angular.md
@@ -19,15 +19,17 @@ limitations under the License.
 -->
 {% include JB/setup %}
 
+# Back-end Angular API in Apache Zeppelin
 
-## Back-end Angular API in Zeppelin
+<div id="toc"></div>
 
-Angular display system treats output as a view template for [AngularJS](https://angularjs.org/).
-It compiles templates and displays them inside of Zeppelin.
+## Overview
 
-Zeppelin provides a gateway between your interpreter and your compiled **AngularJS view** templates.
+Angular display system treats output as a view template for [AngularJS](https://angularjs.org/).
+It compiles templates and displays them inside of Apache Zeppelin. Zeppelin provides a gateway between your interpreter and your compiled **AngularJS view** templates.
 Therefore, you can not only update scope variables from your interpreter but also watch them in the interpreter, which is JVM process.
 
+## Basic Usage 
 ### Print AngularJS view
 
 To use angular display system, you should start with `%angular`.
@@ -94,30 +96,25 @@ When the button is clicked, you'll see both `run` and `numWatched` are increment
 ## Let's make it Simpler and more Intuitive
 In this section, we will introduce a simpler and more intuitive way of using **Angular Display System** in Zeppelin.
 
-### How can we use it?
 Here are some usages.
 
-#### Import
-
-#####  - In notebook scope
+### Import
 ```scala
+// In notebook scope
 import org.apache.zeppelin.display.angular.notebookscope._
 import AngularElem._
-```
 
-#####  - In paragraph scope
-```scala
+// In paragraph scope
 import org.apache.zeppelin.display.angular.paragraphscope._
 import AngularElem._
 ```
 
-
-#### Display Element
+### Display Element
 ```scala
 // automatically convert to string and print with %angular display system directive in front.
 <div><div>.display
 ```
-#### Event Handler
+### Event Handler
 ```scala
 // on click
 <div></div>.onClick(() => {
@@ -135,7 +132,7 @@ import AngularElem._
 }).display
 ```
 
-#### Bind Model
+### Bind Model
 ```scala
 // bind model
 <div></div>.model("myModel").display
@@ -144,7 +141,7 @@ import AngularElem._
 <div></div>.model("myModel", initialValue).display
 ```
 
-#### Interact with Model
+### Interact with Model
 ```scala
 // read model
 AngularModel("myModel")()

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/displaysystem/basicdisplaysystem.md
----------------------------------------------------------------------
diff --git a/docs/displaysystem/basicdisplaysystem.md b/docs/displaysystem/basicdisplaysystem.md
index 3821f1d..732408d 100644
--- a/docs/displaysystem/basicdisplaysystem.md
+++ b/docs/displaysystem/basicdisplaysystem.md
@@ -19,6 +19,10 @@ limitations under the License.
 -->
 {% include JB/setup %}
 
+# Basic Display System in Apache Zeppelin
+
+<div id="toc"></div>
+
 ## Text
 
 By default, Apache Zeppelin prints interpreter responce as a plain text using `text` display system.

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/displaysystem/front-end-angular.md
----------------------------------------------------------------------
diff --git a/docs/displaysystem/front-end-angular.md b/docs/displaysystem/front-end-angular.md
index c78b1b4..773b067 100644
--- a/docs/displaysystem/front-end-angular.md
+++ b/docs/displaysystem/front-end-angular.md
@@ -19,18 +19,18 @@ limitations under the License.
 -->
 {% include JB/setup %}
 
+# Front-end Angular API in Apache Zeppelin
 
-## Front-end Angular API in Zeppelin
+<div id="toc"></div>
 
-In addition to the back-end API to handle Angular objects binding, Zeppelin also exposes a simple AngularJS **`z`** object on the front-end side to expose the same capabilities.
+## Basic Usage
+In addition to the [back-end API](./back-end-angular.html) to handle Angular objects binding, Apache Zeppelin also exposes a simple AngularJS <code>**z**</code> object on the front-end side to expose the same capabilities.
+This <code>**z**</code> object is accessible in the Angular isolated scope for each paragraph.
 
-This **`z`** object is accessible in the Angular isolated scope for each paragraph.
 
-<br />
 ### Bind / Unbind Variables
 
-Through the **`z`**, you can bind / unbind variables to **AngularJS view**
-
+Through the **`z`**, you can bind / unbind variables to **AngularJS view**.
 Bind a value to an angular object and a **mandatory** target paragraph:
 
 ```html
@@ -68,9 +68,10 @@ Unbind/remove a value from angular object and a **mandatory** target paragraph:
 The signature for the **`z.angularBind() / z.angularUnbind()`** functions are:
 
 ```javascript
-
+// Bind
 z.angularBind(angularObjectName, angularObjectValue, paragraphId);
 
+// Unbind
 z.angularUnbind(angularObjectName, angularObjectValue, paragraphId);
 
 ```
@@ -100,24 +101,24 @@ You can also trigger paragraph execution by calling **`z.runParagraph()`** funct
 <img src="../assets/themes/zeppelin/img/screenshots/z_runParagraph.gif" />
 
 <br />
-### Overriding dynamic form with Angular Object
+## Overriding dynamic form with Angular Object
 
 The front-end Angular Interaction API has been designed to offer richer form capabilities and variable binding. With the existing **Dynamic Form** system you can already create input text, select and checkbox forms but the choice is rather limited and the look & feel cannot be changed.
 
 The idea is to create a custom form using plain HTML/AngularJS code and bind actions on this form to push/remove Angular variables to targeted paragraphs using this new API. 
 
-Consequently if you use the **Dynamic Form** syntax in a paragraph and there is a bound Angular object having the same name as the _${formName}_, the Angular object will have higher priority and the **Dynamic Form** will not be displayed. Example: 
+Consequently if you use the **Dynamic Form** syntax in a paragraph and there is a bound Angular object having the same name as the `${formName}`, the Angular object will have higher priority and the **Dynamic Form** will not be displayed. Example: 
  
 
 <img src="../assets/themes/zeppelin/img/screenshots/z_angularJs_overriding_dynamic_form.gif" />
 
 
 <br />
-### Feature matrix comparison
+## Feature matrix comparison
 
-How does the front-end AngularJS API compares to the back-end API ? Below is a comparison matrix for both APIs:
+How does the front-end AngularJS API compares to the [back-end API](./back-end-angular.html) ? Below is a comparison matrix for both APIs:
 
-<table>
+<table class="table-configuration">
     <thead>
         <tr>
             <th>Actions</th>

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/install/install.md
----------------------------------------------------------------------
diff --git a/docs/install/install.md b/docs/install/install.md
index 55741dc..bcc93da 100644
--- a/docs/install/install.md
+++ b/docs/install/install.md
@@ -23,15 +23,7 @@ limitations under the License.
 Welcome to your first trial to explore Apache Zeppelin! 
 This page will help you to get started and here is the list of topics covered.
 
-* [Installation](#installation)
-  * [Downloading Binary Package](#downloading-binary-package)
-  * [Building from Source](#building-from-source)
-* [Starting Apache Zeppelin with Command Line](#starting-apache-zeppelin-with-command-line)
-  * [Start Zeppelin](#start-zeppelin)
-  * [Stop Zeppelin](#stop-zeppelin)
-  * [(Optional) Start Apache Zeppelin with a service manager](#optional-start-apache-zeppelin-with-a-service-manager)
-* [What is the next?](#what-is-the-next)
-* [Apache Zeppelin Configuration](#apache-zeppelin-configuration)
+<div id="toc"></div>
 
 ## Installation
 
@@ -52,7 +44,7 @@ Apache Zeppelin officially supports and is tested on next environments.
   </tr>
 </table>
 
-There are two options to install Apache Zeppelin on your machine. One is [downloading prebuild binary package](#downloading-binary-package) from the archive. 
+There are two options to install Apache Zeppelin on your machine. One is [downloading pre-built binary package](#downloading-binary-package) from the archive. 
 You can download not only the latest stable version but also the older one if you need. 
 The other option is [building from the source](#building-from-source).
 Although it can be unstable somehow since it is on development status, you can explore newly added feature and change it as you want.
@@ -181,10 +173,18 @@ exec bin/zeppelin-daemon.sh upstart
 ## What is the next?
 Congratulation on your successful Apache Zeppelin installation! Here are two next steps you might need.
 
- * For an in-depth overview of Apache Zeppelin UI, head to [Explore Apache Zeppelin UI](../quickstart/explorezeppelinui.html)
- * After getting familiar with Apache Zeppelin UI, have fun with a short walk-through [Tutorial](../quickstart/tutorial.html) that uses Apache Spark backend
- * If you need more configuration setting for Apache Zeppelin, jump to the next section: [Apache Zeppelin Configuration](#apache-zeppelin-configuration)
-
+#### If you are new to Apache Zeppelin
+ * For an in-depth overview of Apache Zeppelin UI, head to [Explore Apache Zeppelin UI](../quickstart/explorezeppelinui.html).
+ * After getting familiar with Apache Zeppelin UI, have fun with a short walk-through [Tutorial](../quickstart/tutorial.html) that uses Apache Spark backend.
+ * If you need more configuration setting for Apache Zeppelin, jump to the next section: [Apache Zeppelin Configuration](#apache-zeppelin-configuration).
+ 
+#### If you need more information about Spark or JDBC interpreter setting
+ * Apache Zeppelin provides deep integration with [Apache Spark](http://spark.apache.org/). For the further informtation, see [Spark Interpreter for Apache Zeppelin](../interpreter/spark.html). 
+ * Also, you can use generic JDBC connections in Apache Zeppelin. Go to [Generic JDBC Interpreter for Apache Zeppelin](../interpreter/jdbc.html).
+ 
+#### If you are in multi-user environment
+ * You can set permissions for your notebooks and secure data resource in multi-user environment. Go to **More** -> **Security** section.
+   
 ## Apache Zeppelin Configuration
 
 You can configure Apache Zeppelin with both **environment variables** in `conf/zeppelin-env.sh` (`conf\zeppelin-env.cmd` for Windows) and **Java properties** in `conf/zeppelin-site.xml`. If both are defined, then the **environment variables** will take priority.

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/install/upgrade.md
----------------------------------------------------------------------
diff --git a/docs/install/upgrade.md b/docs/install/upgrade.md
index 21d44c2..a831eb9 100644
--- a/docs/install/upgrade.md
+++ b/docs/install/upgrade.md
@@ -19,12 +19,14 @@ limitations under the License.
 -->
 {% include JB/setup %}
 
-## Manual upgrade procedure for Zeppelin
+# Manual upgrade procedure for Zeppelin
+
+<div id="toc"></div>
 
 Basically, newer version of Zeppelin works with previous version notebook directory and configurations.
 So, copying `notebook` and `conf` directory should be enough.
 
-### Instructions
+## Instructions
 1. Stop Zeppelin
 
     ```
@@ -33,7 +35,7 @@ So, copying `notebook` and `conf` directory should be enough.
 
 1. Copy your `notebook` and `conf` directory into a backup directory
 
-1. Download newer version of Zeppelin and Install. See [Install page](./install.html)
+1. Download newer version of Zeppelin and Install. See [Install page](./install.html#installation).
 
 1. Copy backup `notebook` and `conf` directory into newer version of Zeppelin `notebook` and `conf` directory
 
@@ -41,4 +43,4 @@ So, copying `notebook` and `conf` directory should be enough.
 
    ```
    bin/zeppelin-daemon.sh start
-   ```
+   ```
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/install/virtual_machine.md
----------------------------------------------------------------------
diff --git a/docs/install/virtual_machine.md b/docs/install/virtual_machine.md
index 7849ff1..7360183 100644
--- a/docs/install/virtual_machine.md
+++ b/docs/install/virtual_machine.md
@@ -19,8 +19,11 @@ limitations under the License.
 -->
 {% include JB/setup %}
 
+# Vagrant Virtual Machine for Apache Zeppelin
 
-## Vagrant Virtual Machine for Apache Zeppelin
+<div id="toc"></div>
+
+## Overview
 
 Apache Zeppelin distribution includes a scripts directory
 
@@ -30,11 +33,11 @@ This script creates a virtual machine that launches a repeatable, known set of c
 For PySpark users, this script includes several helpful [Python Libraries](#python-extras).
 For SparkR users, this script includes several helpful [R Libraries](#r-extras).
 
-####Installing the required components to launch a virtual machine.
+### Prerequisites
 
 This script requires three applications, [Ansible](http://docs.ansible.com/ansible/intro_installation.html#latest-releases-via-pip "Ansible"), [Vagrant](http://www.vagrantup.com "Vagrant") and [Virtual Box](https://www.virtualbox.org/ "Virtual Box").  All of these applications are freely available as Open Source projects and extremely easy to set up on most operating systems.
 
-### Create a Zeppelin Ready VM in 4 Steps (5 on Windows)
+## Create a Zeppelin Ready VM
 
 If you are running Windows and don't yet have python installed, [install Python 2.7.x](https://www.python.org/downloads/release/python-2710/) first.
 
@@ -60,9 +63,15 @@ curl -fsSL https://raw.githubusercontent.com/NFLabs/z-manager/master/zeppelin-in
 ```
 
 
-### Building Zeppelin
+## Building Zeppelin
+
+You can now 
 
-You can now `git clone git://git.apache.org/zeppelin.git` into a directory on your host machine, or directly in your virtual machine.
+```
+git clone git://git.apache.org/zeppelin.git
+```
+
+into a directory on your host machine, or directly in your virtual machine.
 
 Cloning Zeppelin into the `/scripts/vagrant/zeppelin-dev` directory from the host, will allow the directory to be shared between your host and the guest machine.
 
@@ -74,14 +83,13 @@ By default, Vagrant will share your project directory (the directory with the Va
 `cd /vagrant/zeppelin`
 
 
-### What's in this VM?
+## What's in this VM?
 
 Running the following commands in the guest machine should display these expected versions:
 
 `node --version` should report *v0.12.7*
 `mvn --version` should report *Apache Maven 3.3.3* and *Java version: 1.7.0_85*
 
-
 The virtual machine consists of:
 
  - Ubuntu Server 14.04 LTS
@@ -96,7 +104,7 @@ The virtual machine consists of:
  - Python addons: pip, matplotlib, scipy, numpy, pandas
  - [R](https://www.r-project.org/) and R Packages required to run the R Interpreter and the related R tutorial notebook, including:  Knitr, devtools, repr, rCharts, ggplot2, googleVis, mplot, htmltools, base64enc, data.table
 
-### How to build & run Zeppelin
+## How to build & run Zeppelin
 
 This assumes you've already cloned the project either on the host machine in the zeppelin-dev directory (to be shared with the guest machine) or cloned directly into a directory while running inside the guest machine.  The following build steps will also include Python and R support via PySpark and SparkR:
 
@@ -111,7 +119,7 @@ On your host machine browse to `http://localhost:8080/`
 If you [turned off port forwarding](#tweaking-the-virtual-machine) in the `Vagrantfile` browse to `http://192.168.51.52:8080`
 
 
-### Tweaking the Virtual Machine
+## Tweaking the Virtual Machine
 
 If you plan to run this virtual machine along side other Vagrant images, you may wish to bind the virtual machine to a specific IP address, and not use port fowarding from your local host.
 
@@ -125,7 +133,7 @@ config.vm.network "private_network", ip: "192.168.51.52"
 `vagrant halt` followed by `vagrant up` will restart the guest machine bound to the IP address of `192.168.51.52`.
 This approach usually is typically required if running other virtual machines that discover each other directly by IP address, such as Spark Masters and Slaves as well as Cassandra Nodes, Elasticsearch Nodes, and other Spark data sources.  You may wish to launch nodes in virtual machines with IP addresses in a subnet that works for your local network, such as: 192.168.51.53, 192.168.51.54, 192.168.51.53, etc..
 
-
+## Extras
 ### Python Extras
 
 With Zeppelin running, **Numpy**, **SciPy**, **Pandas** and **Matplotlib** will be available.  Create a pyspark notebook, and try the below code.

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/alluxio.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/alluxio.md b/docs/interpreter/alluxio.md
index 332dd0d..c8ecf93 100644
--- a/docs/interpreter/alluxio.md
+++ b/docs/interpreter/alluxio.md
@@ -6,7 +6,11 @@ group: manual
 ---
 {% include JB/setup %}
 
-## Alluxio Interpreter for Apache Zeppelin
+# Alluxio Interpreter for Apache Zeppelin
+
+<div id="toc"></div>
+
+## Overview
 [Alluxio](http://alluxio.org/) is a memory-centric distributed storage system enabling reliable data sharing at memory-speed across cluster frameworks.
 
 ## Configuration

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/cassandra.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/cassandra.md b/docs/interpreter/cassandra.md
index 2091666..33cff19 100644
--- a/docs/interpreter/cassandra.md
+++ b/docs/interpreter/cassandra.md
@@ -6,7 +6,9 @@ group: manual
 ---
 {% include JB/setup %}
 
-## Cassandra CQL Interpreter for Apache Zeppelin
+# Cassandra CQL Interpreter for Apache Zeppelin
+
+<div id="toc"></div>
 
 <table class="table-configuration">
   <tr>

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/elasticsearch.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/elasticsearch.md b/docs/interpreter/elasticsearch.md
index 70af3c0..4721bcd 100644
--- a/docs/interpreter/elasticsearch.md
+++ b/docs/interpreter/elasticsearch.md
@@ -6,7 +6,11 @@ group: manual
 ---
 {% include JB/setup %}
 
-## Elasticsearch Interpreter for Apache Zeppelin
+# Elasticsearch Interpreter for Apache Zeppelin
+
+<div id="toc"></div>
+
+## Overview
 [Elasticsearch](https://www.elastic.co/products/elasticsearch) is a highly scalable open-source full-text search and analytics engine. It allows you to store, search, and analyze big volumes of data quickly and in near real time. It is generally used as the underlying engine/technology that powers applications that have complex search features and requirements.
 
 ## Configuration

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/flink.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/flink.md b/docs/interpreter/flink.md
index 9d2f0b0..a678480 100644
--- a/docs/interpreter/flink.md
+++ b/docs/interpreter/flink.md
@@ -6,7 +6,11 @@ group: manual
 ---
 {% include JB/setup %}
 
-## Flink interpreter for Apache Zeppelin
+# Flink interpreter for Apache Zeppelin
+
+<div id="toc"></div>
+
+## Overview
 [Apache Flink](https://flink.apache.org) is an open source platform for distributed stream and batch data processing. Flink\u2019s core is a streaming dataflow engine that provides data distribution, communication, and fault tolerance for distributed computations over data streams. Flink also builds batch processing on top of the streaming engine, overlaying native iteration support, managed memory, and program optimization.
 
 ## How to start local Flink cluster, to test the interpreter

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/geode.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/geode.md b/docs/interpreter/geode.md
index 53a912e..84a026e 100644
--- a/docs/interpreter/geode.md
+++ b/docs/interpreter/geode.md
@@ -6,7 +6,11 @@ group: manual
 ---
 {% include JB/setup %}
 
-## Geode/Gemfire OQL Interpreter for Apache Zeppelin
+# Geode/Gemfire OQL Interpreter for Apache Zeppelin
+
+<div id="toc"></div>
+
+## Overview
 <table class="table-configuration">
   <tr>
     <th>Name</th>
@@ -33,7 +37,7 @@ This interpreter supports the [Geode](http://geode.incubator.apache.org/) [Objec
 
 This [Video Tutorial](https://www.youtube.com/watch?v=zvzzA9GXu3Q) illustrates some of the features provided by the `Geode Interpreter`.
 
-### Create Interpreter
+## Create Interpreter
 By default Zeppelin creates one `Geode/OQL` instance. You can remove it or create more instances.
 
 Multiple Geode instances can be created, each configured to the same or different backend Geode cluster. But over time a  `Notebook` can have only one Geode interpreter instance `bound`. That means you _cannot_ connect to different Geode clusters in the same `Notebook`. This is a known Zeppelin limitation.
@@ -42,10 +46,10 @@ To create new Geode instance open the `Interpreter` section and click the `+Crea
 
 > Note: The `Name` of the instance is used only to distinguish the instances while binding them to the `Notebook`. The `Name` is irrelevant inside the `Notebook`. In the `Notebook` you must use `%geode.oql` tag.
 
-### Bind to Notebook
+## Bind to Notebook
 In the `Notebook` click on the `settings` icon in the top right corner. The select/deselect the interpreters to be bound with the `Notebook`.
 
-### Configuration
+## Configuration
 You can modify the configuration of the Geode from the `Interpreter` section.  The Geode interpreter expresses the following properties:
 
 <table class="table-configuration">
@@ -71,12 +75,12 @@ You can modify the configuration of the Geode from the `Interpreter` section.  T
   </tr>
 </table>
 
-### How to use
+## How to use
 > *Tip 1: Use (CTRL + .) for OQL auto-completion.*
 
 > *Tip 2: Always start the paragraphs with the full `%geode.oql` prefix tag! The short notation: `%geode` would still be able run the OQL queries but the syntax highlighting and the auto-completions will be disabled.*
 
-#### Create / Destroy Regions
+### Create / Destroy Regions
 The OQL specification does not support  [Geode Regions](https://cwiki.apache.org/confluence/display/GEODE/Index#Index-MainConceptsandComponents) mutation operations. To `create`/`destroy` regions one should use the [GFSH](http://geode-docs.cfapps.io/docs/tools_modules/gfsh/chapter_overview.html) shell tool instead. In the following it is assumed that the GFSH is colocated with Zeppelin server.
 
 ```bash
@@ -97,7 +101,7 @@ EOF
 
 Above snippet re-creates two regions: `regionEmployee` and `regionCompany`. Note that you have to explicitly specify the locator host and port. The values should match those you have used in the Geode Interpreter configuration. Comprehensive list of [GFSH Commands by Functional Area](http://geode-docs.cfapps.io/docs/tools_modules/gfsh/gfsh_quick_reference.html).
 
-#### Basic OQL
+### Basic OQL
 ```sql
 %geode.oql
 SELECT count(*) FROM /regionEmployee
@@ -136,7 +140,7 @@ SELECT e.key, e.value FROM /regionEmployee.entrySet e
 
 > Note: You can have multiple queries in the same paragraph but only the result from the first is displayed. [[1](https://issues.apache.org/jira/browse/ZEPPELIN-178)], [[2](https://issues.apache.org/jira/browse/ZEPPELIN-212)].
 
-#### GFSH Commands From The Shell
+### GFSH Commands From The Shell
 Use the Shell Interpreter (`%sh`) to run OQL commands form the command line:
 
 ```bash
@@ -145,7 +149,7 @@ source /etc/geode/conf/geode-env.sh
 gfsh -e "connect" -e "list members"
 ```
 
-#### Apply Zeppelin Dynamic Forms
+### Apply Zeppelin Dynamic Forms
 You can leverage [Zeppelin Dynamic Form](../manual/dynamicform.html) inside your OQL queries. You can use both the `text input` and `select form` parameterization features
 
 ```sql
@@ -153,7 +157,10 @@ You can leverage [Zeppelin Dynamic Form](../manual/dynamicform.html) inside your
 SELECT * FROM /regionEmployee e WHERE e.employeeId > ${Id}
 ```
 
-#### Geode REST API
+### Auto-completion
+The Geode Interpreter provides a basic auto-completion functionality. On `(Ctrl+.)` it list the most relevant suggestions in a pop-up window.
+
+## Geode REST API
 To list the defined regions you can use the [Geode REST API](http://geode-docs.cfapps.io/docs/geode_rest/chapter_overview.html):
 
 ```
@@ -182,6 +189,3 @@ http://<geode server hostname>phd1.localdomain:8484/gemfire-api/v1/
 http-service-port=8484
 start-dev-rest-api=true
 ```
-
-### Auto-completion
-The Geode Interpreter provides a basic auto-completion functionality. On `(Ctrl+.)` it list the most relevant suggestions in a pop-up window.

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/hbase.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/hbase.md b/docs/interpreter/hbase.md
index 2eaa915..1aeb77b 100644
--- a/docs/interpreter/hbase.md
+++ b/docs/interpreter/hbase.md
@@ -6,16 +6,22 @@ group: manual
 ---
 {% include JB/setup %}
 
-## HBase Shell Interpreter for Apache Zeppelin
+# HBase Shell Interpreter for Apache Zeppelin
+
+<div id="toc"></div>
+
+## Overview
 [HBase Shell](http://hbase.apache.org/book.html#shell) is a JRuby IRB client for Apache HBase. This interpreter provides all capabilities of Apache HBase shell within Apache Zeppelin. The interpreter assumes that Apache HBase client software has been installed and it can connect to the Apache HBase cluster from the machine on where Apache Zeppelin is installed.  
-To get start with HBase, please see [HBase Quickstart](https://hbase.apache.org/book.html#quickstart)
+To get start with HBase, please see [HBase Quickstart](https://hbase.apache.org/book.html#quickstart).
 
 ## HBase release supported
 By default, Zeppelin is built against HBase 1.0.x releases. To work with HBase 1.1.x releases, use the following build command:
+
 ```bash
 # HBase 1.1.4
 mvn clean package -DskipTests -Phadoop-2.6 -Dhadoop.version=2.6.0 -P build-distr -Dhbase.hbase.version=1.1.4 -Dhbase.hadoop.version=2.6.0
 ```
+
 To work with HBase 1.2.0+, use the following build command:
 
 ```bash
@@ -94,4 +100,4 @@ And then to put data into that table
 put 'test', 'row1', 'cf:a', 'value1'
 ```
 
-For more information on all commands available, refer to [HBase shell commands](https://learnhbase.wordpress.com/2013/03/02/hbase-shell-commands/)
+For more information on all commands available, refer to [HBase shell commands](https://learnhbase.wordpress.com/2013/03/02/hbase-shell-commands/).

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/hdfs.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/hdfs.md b/docs/interpreter/hdfs.md
index 58d825d..7cde31a 100644
--- a/docs/interpreter/hdfs.md
+++ b/docs/interpreter/hdfs.md
@@ -6,8 +6,11 @@ group: manual
 ---
 {% include JB/setup %}
 
-## HDFS File System Interpreter for Apache Zeppelin
+# HDFS File System Interpreter for Apache Zeppelin
 
+<div id="toc"></div>
+
+## Overview
 [Hadoop File System](http://hadoop.apache.org/) is a distributed, fault tolerant file system part of the hadoop project and is often used as storage for distributed processing engines like [Hadoop MapReduce](http://hadoop.apache.org/) and [Apache Spark](http://spark.apache.org/) or underlying file systems like [Alluxio](http://www.alluxio.org/).
 
 ## Configuration
@@ -44,13 +47,17 @@ It supports the basic shell file commands applied to HDFS, it currently only sup
 
 > **Tip :** Use ( Ctrl + . ) for autocompletion.
 
-### Create Interpreter
+## Create Interpreter
 
 In a notebook, to enable the **HDFS** interpreter, click the **Gear** icon and select **HDFS**.
 
 
-#### WebHDFS REST API
+## WebHDFS REST API
 You can confirm that you're able to access the WebHDFS API by running a curl command against the WebHDFS end point provided to the interpreter.
 
 Here is an example:
+
+```bash
 $> curl "http://localhost:50070/webhdfs/v1/?op=LISTSTATUS"
+```
+

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/hive.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/hive.md b/docs/interpreter/hive.md
index 2fc365c..a1fc4e1 100644
--- a/docs/interpreter/hive.md
+++ b/docs/interpreter/hive.md
@@ -6,8 +6,9 @@ group: manual
 ---
 {% include JB/setup %}
 
-## Hive Interpreter for Apache Zeppelin
-The [Apache Hive](https://hive.apache.org/) \u2122 data warehouse software facilitates querying and managing large datasets residing in distributed storage. Hive provides a mechanism to project structure onto this data and query the data using a SQL-like language called HiveQL. At the same time this language also allows traditional map/reduce programmers to plug in their custom mappers and reducers when it is inconvenient or inefficient to express this logic in HiveQL.
+# Hive Interpreter for Apache Zeppelin
+
+<div id="toc"></div>
 
 ## Important Notice
 Hive Interpreter will be deprecated and merged into JDBC Interpreter. You can use Hive Interpreter by using JDBC Interpreter with same functionality. See the example below of settings and dependencies.
@@ -52,7 +53,6 @@ Hive Interpreter will be deprecated and merged into JDBC Interpreter. You can us
   </tr>
 </table>
 
-----
 
 ### Configuration
 <table class="table-configuration">
@@ -115,6 +115,10 @@ Hive Interpreter will be deprecated and merged into JDBC Interpreter. You can us
 
 This interpreter provides multiple configuration with `${prefix}`. User can set a multiple connection properties by this prefix. It can be used like `%hive(${prefix})`.
 
+## Overview
+
+The [Apache Hive](https://hive.apache.org/) \u2122 data warehouse software facilitates querying and managing large datasets residing in distributed storage. Hive provides a mechanism to project structure onto this data and query the data using a SQL-like language called HiveQL. At the same time this language also allows traditional map/reduce programmers to plug in their custom mappers and reducers when it is inconvenient or inefficient to express this logic in HiveQL.
+
 ## How to use
 Basically, you can use
 

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/ignite.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/ignite.md b/docs/interpreter/ignite.md
index 6bc20ab..8a25fd7 100644
--- a/docs/interpreter/ignite.md
+++ b/docs/interpreter/ignite.md
@@ -6,16 +6,18 @@ group: manual
 ---
 {% include JB/setup %}
 
-## Ignite Interpreter for Apache Zeppelin
+# Ignite Interpreter for Apache Zeppelin
 
-### Overview
+<div id="toc"></div>
+
+## Overview
 [Apache Ignite](https://ignite.apache.org/) In-Memory Data Fabric is a high-performance, integrated and distributed in-memory platform for computing and transacting on large-scale data sets in real-time, orders of magnitude faster than possible with traditional disk-based or flash technologies.
 
 ![Apache Ignite](../assets/themes/zeppelin/img/docs-img/ignite-logo.png)
 
 You can use Zeppelin to retrieve distributed data from cache using Ignite SQL interpreter. Moreover, Ignite interpreter allows you to execute any Scala code in cases when SQL doesn't fit to your requirements. For example, you can populate data into your caches or execute distributed computations.
 
-### Installing and Running Ignite example
+## Installing and Running Ignite example
 In order to use Ignite interpreters, you may install Apache Ignite in some simple steps:
 
 1. Download Ignite [source release](https://ignite.apache.org/download.html#sources) or [binary release](https://ignite.apache.org/download.html#binaries) whatever you want. But you must download Ignite as the same version of Zeppelin's. If it is not, you can't use scala code on Zeppelin. You can find ignite version in Zeppelin at the pom.xml which is placed under `path/to/your-Zeppelin/ignite/pom.xml` ( Of course, in Zeppelin source release ). Please check `ignite.version` .<br>Currently, Zeppelin provides ignite only in Zeppelin source release. So, if you download Zeppelin binary release( `zeppelin-0.5.0-incubating-bin-spark-xxx-hadoop-xx` ), you can not use ignite interpreter on Zeppelin. We are planning to include ignite in a future binary release.
@@ -31,7 +33,7 @@ In order to use Ignite interpreters, you may install Apache Ignite in some simpl
 $ nohup java -jar </path/to/your Jar file name>
 ```
 
-### Configuring Ignite Interpreter
+## Configuring Ignite Interpreter
 At the "Interpreters" menu, you may edit Ignite interpreter or create new one. Zeppelin provides these properties for Ignite.
 
 <table class="table-configuration">
@@ -69,14 +71,14 @@ At the "Interpreters" menu, you may edit Ignite interpreter or create new one. Z
 
 ![Configuration of Ignite Interpreter](../assets/themes/zeppelin/img/docs-img/ignite-interpreter-setting.png)
 
-### Interpreter Binding for Zeppelin Notebook
+## How to use
 After configuring Ignite interpreter, create your own notebook. Then you can bind interpreters like below image.
 
 ![Binding Interpreters](../assets/themes/zeppelin/img/docs-img/ignite-interpreter-binding.png)
 
 For more interpreter binding information see [here](http://zeppelin.apache.org/docs/manual/interpreters.html).
 
-### How to use Ignite SQL interpreter
+### Ignite SQL interpreter
 In order to execute SQL query, use ` %ignite.ignitesql ` prefix. <br>
 Supposing you are running `org.apache.ignite.examples.streaming.wordcount.StreamWords`, then you can use "words" cache( Of course you have to specify this cache name to the Ignite interpreter setting section `ignite.jdbc.url` of Zeppelin ).
 For example, you can select top 10 words in the words cache using the following query

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/jdbc.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/jdbc.md b/docs/interpreter/jdbc.md
index c4eef98..830dd97 100644
--- a/docs/interpreter/jdbc.md
+++ b/docs/interpreter/jdbc.md
@@ -7,7 +7,11 @@ group: manual
 {% include JB/setup %}
 
 
-## Generic JDBC  Interpreter for Apache Zeppelin
+# Generic JDBC  Interpreter for Apache Zeppelin
+
+<div id="toc"></div>
+
+## Overview
 
 This interpreter lets you create a JDBC connection to any data source, by now it has been tested with:
 
@@ -16,16 +20,14 @@ This interpreter lets you create a JDBC connection to any data source, by now it
 * MariaDB
 * Redshift
 * Apache Hive
-* Apache Drill
-  * Details on using [Drill JDBC Driver](https://drill.apache.org/docs/using-the-jdbc-driver)
 * Apache Phoenix
-* Apache Tajo
+* Apache Drill (Details on using [Drill JDBC Driver](https://drill.apache.org/docs/using-the-jdbc-driverde* Apache Tajo
 
 If someone else used another database please report how it works to improve functionality.
 
-### Create Interpreter
+## Create Interpreter
 
-When create a interpreter by default use PostgreSQL with the next properties:
+When you create a interpreter by default use PostgreSQL with the next properties:
 
 <table class="table-configuration">
   <tr>
@@ -56,7 +58,7 @@ When create a interpreter by default use PostgreSQL with the next properties:
 
 It is not necessary to add driver jar to the classpath for PostgreSQL as it is included in Zeppelin.
 
-#### Simple connection
+### Simple connection
 
 Prior to creating the interpreter it is necessary to add maven coordinate or path of the JDBC driver to the Zeppelin classpath. To do this you must edit dependencies artifact(ex. `mysql:mysql-connector-java:5.1.38`) in interpreter menu as shown:
 
@@ -95,7 +97,7 @@ To create the interpreter you need to specify connection parameters as shown in
   </tr>      
 </table>
 
-#### Multiple connections
+### Multiple connections
 
 JDBC interpreter also allows connections to multiple data sources. It is necessary to set a prefix for each connection to reference it in the paragraph in the form of `%jdbc(prefix)`. Before you create the interpreter it is necessary to add each driver's maven coordinates or JDBC driver's jar file path to the Zeppelin classpath. To do this you must edit the dependencies of JDBC interpreter in interpreter menu as following:
 
@@ -151,10 +153,10 @@ You can add all the jars you need to make multiple connections into the same JDB
 </table>
 
 
-### Bind to Notebook
+## Bind to Notebook
 In the `Notebook` click on the `settings` icon at the top-right corner. Use select/deselect to specify the interpreters to be used in the `Notebook`.
 
-### More Properties
+## More Properties
 You can modify the interpreter configuration in the `Interpreter` section. The most common properties are as follows, but you can specify other properties that need to be connected.
 
  <table class="table-configuration">
@@ -197,9 +199,11 @@ To develop this functionality use this [method](http://docs.oracle.com/javase/7/
   </tr>
 </table>
 
-### Examples
-#### Hive
-##### Properties
+## Examples
+
+### Hive
+
+#### Properties
  <table class="table-configuration">
    <tr>
      <th>Name</th>
@@ -222,7 +226,8 @@ To develop this functionality use this [method](http://docs.oracle.com/javase/7/
      <td>hive_password</td>
    </tr>
  </table>
-##### Dependencies
+
+#### Dependencies
  <table class="table-configuration">
    <tr>
      <th>Artifact</th>
@@ -237,8 +242,9 @@ To develop this functionality use this [method](http://docs.oracle.com/javase/7/
      <td></td>
    </tr>
  </table>
-#### Phoenix
-##### Properties
+
+### Phoenix
+#### Properties
  <table class="table-configuration">
    <tr>
      <th>Name</th>
@@ -261,7 +267,7 @@ To develop this functionality use this [method](http://docs.oracle.com/javase/7/
      <td>phoenix_password</td>
    </tr>
  </table>
-##### Dependencies
+#### Dependencies
  <table class="table-configuration">
    <tr>
      <th>Artifact</th>
@@ -272,8 +278,9 @@ To develop this functionality use this [method](http://docs.oracle.com/javase/7/
      <td></td>
    </tr>
  </table>
-#### Tajo
-##### Properties
+
+### Tajo
+#### Properties
  <table class="table-configuration">
    <tr>
      <th>Name</th>
@@ -288,7 +295,8 @@ To develop this functionality use this [method](http://docs.oracle.com/javase/7/
      <td>jdbc:tajo://localhost:26002/default</td>
    </tr>
  </table>
-##### Dependencies
+
+#### Dependencies
  <table class="table-configuration">
    <tr>
      <th>Artifact</th>
@@ -300,9 +308,9 @@ To develop this functionality use this [method](http://docs.oracle.com/javase/7/
    </tr>
  </table>
  
-### How to use
+## How to use
 
-#### Reference in paragraph
+### Reference in paragraph
 
 Start the paragraphs with the `%jdbc`, this will use the `default` prefix for connection. If you want to use other connection you should specify the prefix of it as follows `%jdbc(prefix)`:
 
@@ -311,6 +319,7 @@ Start the paragraphs with the `%jdbc`, this will use the `default` prefix for co
 SELECT * FROM db_name;
 
 ```
+
 or
 
 ```sql
@@ -319,7 +328,7 @@ SELECT * FROM db_name;
 
 ```
 
-#### Apply Zeppelin Dynamic Forms
+### Apply Zeppelin Dynamic Forms
 
 You can leverage [Zeppelin Dynamic Form](../manual/dynamicform.html) inside your queries. You can use both the `text input` and `select form` parametrization features
 
@@ -330,5 +339,5 @@ FROM demo.performers
 WHERE name='{{performer=Sheryl Crow|Doof|Fanfarlo|Los Paranoia}}'
 ```
 
-### Bugs & Contacts
+## Bugs & Reporting
 If you find a bug for this interpreter, please create a [JIRA]( https://issues.apache.org/jira/browse/ZEPPELIN-382?jql=project%20%3D%20ZEPPELIN) ticket.

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/lens.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/lens.md b/docs/interpreter/lens.md
index 0b4711b..b4bcda4 100644
--- a/docs/interpreter/lens.md
+++ b/docs/interpreter/lens.md
@@ -6,14 +6,16 @@ group: manual
 ---
 {% include JB/setup %}
 
-## Lens Interpreter for Apache Zeppelin
+# Lens Interpreter for Apache Zeppelin
 
-### Overview
+<div id="toc"></div>
+
+## Overview
 [Apache Lens](https://lens.apache.org/) provides an Unified Analytics interface. Lens aims to cut the Data Analytics silos by providing a single view of data across multiple tiered data stores and optimal execution environment for the analytical query. It seamlessly integrates Hadoop with traditional data warehouses to appear like one.
 
 ![Apache Lens](../assets/themes/zeppelin/img/docs-img/lens-logo.png)
 
-### Installing and Running Lens
+## Installing and Running Lens
 In order to use Lens interpreters, you may install Apache Lens in some simple steps:
 
 1. Download Lens for latest version from [the ASF](http://www.apache.org/dyn/closer.lua/lens/2.3-beta). Or the older release can be found [in the Archives](http://archive.apache.org/dist/lens/).
@@ -24,7 +26,7 @@ In order to use Lens interpreters, you may install Apache Lens in some simple st
 ./bin/lens-ctl start (or stop)
 ```
 
-### Configuring Lens Interpreter
+## Configuring Lens Interpreter
 At the "Interpreters" menu, you can edit Lens interpreter or create new one. Zeppelin provides these properties for Lens.
 
 <table class="table-configuration">
@@ -163,7 +165,7 @@ query execute cube select customer_city_name, product_details.description, produ
 
 These are just examples that provided in advance by Lens. If you want to explore whole tutorials of Lens, see the [tutorial video](https://cwiki.apache.org/confluence/display/LENS/2015/07/13/20+Minute+video+demo+of+Apache+Lens+through+examples).
 
-### Lens UI Service
+## Lens UI Service
 Lens also provides web UI service. Once the server starts up, you can open the service on http://serverhost:19999/index.html and browse. You may also check the structure that you made and use query easily here.
 
 ![Lens UI Service](../assets/themes/zeppelin/img/docs-img/lens-ui-service.png)

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5975125f/docs/interpreter/livy.md
----------------------------------------------------------------------
diff --git a/docs/interpreter/livy.md b/docs/interpreter/livy.md
index 225cd81..ef7c8ce 100644
--- a/docs/interpreter/livy.md
+++ b/docs/interpreter/livy.md
@@ -6,8 +6,12 @@ group: manual
 ---
 {% include JB/setup %}
 
-## Livy Interpreter for Apache Zeppelin
-Livy is an open source REST interface for interacting with Spark from anywhere. It supports executing snippets of code or programs in a Spark context that runs locally or in YARN.
+# Livy Interpreter for Apache Zeppelin
+
+<div id="toc"></div>
+
+## Overview
+[Livy](http://livy.io/) is an open source REST interface for interacting with Spark from anywhere. It supports executing snippets of code or programs in a Spark context that runs locally or in YARN.
 
 * Interactive Scala, Python and R shells
 * Batch submissions in Scala, Java, Python
@@ -16,13 +20,12 @@ Livy is an open source REST interface for interacting with Spark from anywhere.
 * Does not require any code change to your programs
 
 ### Requirements
-
 Additional requirements for the Livy interpreter are:
 
  * Spark 1.3 or above.
  * Livy server.
 
-### Configuration
+## Configuration
 We added some common configurations for spark, and you can set any configuration you want.
 This link contains all spark configurations: http://spark.apache.org/docs/latest/configuration.html#available-properties.
 And instead of starting property with `spark.` it should be replaced with `livy.spark.`.
@@ -101,8 +104,6 @@ Example: `spark.master` to `livy.spark.master`
   </tr>
 </table>
 
-
-
 ## How to use
 Basically, you can use
 
@@ -136,7 +137,7 @@ hello("livy")
 When Zeppelin server is running with authentication enabled, then this interpreter utilizes Livy\u2019s user impersonation feature i.e. sends extra parameter for creating and running a session ("proxyUser": "${loggedInUser}"). This is particularly useful when multi users are sharing a Notebook server.
 
 
-### Apply Zeppelin Dynamic Forms
+## Apply Zeppelin Dynamic Forms
 You can leverage [Zeppelin Dynamic Form]({{BASE_PATH}}/manual/dynamicform.html). You can use both the `text input` and `select form` parameterization features.
 
 ```
@@ -159,7 +160,7 @@ The session would have timed out, you may need to restart the interpreter.
 
 > Blacklisted configuration values in session config: spark.master
 
-edit `conf/spark-blacklist.conf` file in livy server and comment out `#spark.master` line.
+Edit `conf/spark-blacklist.conf` file in livy server and comment out `#spark.master` line.
 
-if you choose to work on livy in `apps/spark/java` directory in https://github.com/cloudera/hue ,
-copy `spark-user-configurable-options.template` to `spark-user-configurable-options.conf` file in livy server and comment out `#spark.master` 
+If you choose to work on livy in `apps/spark/java` directory in [https://github.com/cloudera/hue](https://github.com/cloudera/hue),
+copy `spark-user-configurable-options.template` to `spark-user-configurable-options.conf` file in livy server and comment out `#spark.master`.