You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by ar...@apache.org on 2020/04/18 23:50:31 UTC

[incubator-nlpcraft-website] branch web-staging created (now 8f23385)

This is an automated email from the ASF dual-hosted git repository.

aradzinski pushed a change to branch web-staging
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft-website.git.


      at 8f23385  WIP.

This branch includes the following new commits:

     new 8f23385  WIP.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-nlpcraft-website] 01/01: WIP.

Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

aradzinski pushed a commit to branch web-staging
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft-website.git

commit 8f233859a70080fce13f8553f802d5d0fe4af8ba
Author: Aaron Radzinzski <ar...@datalingvo.com>
AuthorDate: Sat Apr 18 16:50:26 2020 -0700

    WIP.
---
 404.html                       |   10 +-
 Gemfile                        |   25 -
 _config.yml                    |   52 -
 _data/bin-releases.yml         |   27 -
 _data/metrics.yml              |   93 --
 _data/news.yml                 |   26 -
 _data/src-releases.yml         |   26 -
 _includes/quick-links.html     |   51 -
 _layouts/blog.html             |   88 --
 _layouts/compress.html         |   27 -
 _layouts/default.html          |  152 --
 _layouts/documentation.html    |  127 --
 _layouts/interior.html         |   31 -
 _layouts/release-notes.html    |   57 -
 _scss/404.scss                 |   29 -
 _scss/basic-concepts.scss      |   68 -
 _scss/buttons.scss             |   92 --
 _scss/colors.scss              |  159 ---
 _scss/community.scss           |   30 -
 _scss/download.scss            |   28 -
 _scss/fonts.scss               |   82 --
 _scss/footer.scss              |   56 -
 _scss/header.scss              |   75 -
 _scss/index.scss               |  298 ----
 _scss/integrations.scss        |   35 -
 _scss/metrics-and-tracing.scss |   23 -
 _scss/misc.scss                |  392 -----
 _scss/server-and-probes.scss   |   24 -
 _scss/sh.scss                  |   49 -
 _scss/three-cols.scss          |  223 ---
 _scss/use-cases.scss           |   44 -
 assets/css/style.css           |    1 +
 assets/css/style.scss          |   67 -
 basic-concepts.html            |  244 +---
 community.html                 |  362 +----
 data-model.html                | 3068 +---------------------------------------
 docs.html                      |  106 +-
 download.html                  |  421 +-----
 examples/alarm_clock.html      |  290 +---
 examples/light_switch.html     |  297 +---
 examples/weather_bot.html      |   69 +-
 feed.xml                       |    1 +
 first-example.html             |  253 +---
 getting-started.html           |  172 +--
 index.html                     |  269 +---
 installation.html              |   46 +-
 integrations.html              |  781 +---------
 intent-matching.html           |  535 +------
 metrics-and-tracing.html       |  273 +---
 release-notes-0.5.0.html       |   41 +-
 server-and-probe.html          |  355 +----
 use-cases.html                 |  116 +-
 using-rest.html                |  402 +-----
 53 files changed, 170 insertions(+), 10498 deletions(-)

diff --git a/404.html b/404.html
index c6433bc..eb8a640 100644
--- a/404.html
+++ b/404.html
@@ -1,7 +1,3 @@
----
-layout: default
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -19,8 +15,4 @@ layout: default
  limitations under the License.
 -->
 
-<div class="container page-not-found">
-  <h1>404</h1>
-  <p><strong>Page not found :(</strong></p>
-  <p>The requested page could not be found</p>
-</div>
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index 1c82245..0000000
--- a/Gemfile
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-source "https://rubygems.org"
-
-# Plugins.
-group :jekyll_plugins do
-  gem "jekyll-feed", "~> 0.9"
-  gem "jekyll-seo-tag", "~> 2.1"
-end
-
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index 0118a53..0000000
--- a/_config.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-title: Apache NLPCraft
-copyright: Copyright 2020 (C) Apache Software Foundation.
-baseurl: ""
-url: ""
-
-zip_base: apache-nlpcraft
-
-twitter_username: nlpcraft
-github_username:  nlpcraft
-
-# Manually update to the latest version:
-# ===================
-latest_version: 0.5.0
-java_client_latest_version: 0.5.0
-# ===================
-
-# SASS settings.
-sass:
-  sass_dir: _scss
-  style: compressed
-
-compress_html:
-  clippings: all
-  comments: all
-  endings: all
-  blanklines: false
-  profile: false
-  startings: [html, head, body]
-
-# Build settings.
-markdown: kramdown
-plugins:
-  - jekyll-feed
-  - jekyll-seo-tag
-
diff --git a/_data/bin-releases.yml b/_data/bin-releases.yml
deleted file mode 100644
index d914c72..0000000
--- a/_data/bin-releases.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-- version: 0.5.0
-  date: Apr 16, 2020
-  zip_name: apache-nlpcraft-0.5.0.zip
-  zip_url: https://github.com/apache/incubator-nlpcraft/releases/download/0.5.0/apache-nlpcraft-0.5.0.zip
-  sha256_url: https://github.com/apache/incubator-nlpcraft/releases/download/0.5.0/apache-nlpcraft-0.5.0.zip.sha256
-  pgp_url: https://github.com/apache/incubator-nlpcraft/releases/download/0.5.0/apache-nlpcraft-0.5.0.zip.sig
-  github_link: https://github.com/apache/incubator-nlpcraft/tree/0.5.0
-  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
-  backward_compatible: yes
-
diff --git a/_data/metrics.yml b/_data/metrics.yml
deleted file mode 100644
index 800441a..0000000
--- a/_data/metrics.yml
+++ /dev/null
@@ -1,93 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-server:
-  - name: ask
-    description: <code>/ask</code> REST call
-
-  - name: cancel
-    description: <code>/cancel</code> REST call
-
-  - name: check
-    description: <code>/check</code> REST call
-
-  - name: signin
-    description: <code>/signin</code> REST call
-
-  - name: signout
-    description: <code>/signout</code> REST call
-
-  - name: ask_sync
-    description: <code>/ask/sync</code> REST call
-
-  - name: clear_conversation
-    description: <code>/clear/conversation</code> REST call
-
-  - name: clear_dialog
-    description: <code>/clear/dialog</code> REST call
-
-  - name: company_add
-    description: <code>/company/add</code> REST call
-
-  - name: company_update
-    description: <code>/company/update</code> REST call
-
-  - name: company_token
-    description: <code>/company/token</code> REST call
-
-  - name: company_delete
-    description: <code>/company/delete</code> REST call
-
-  - name: feedback_add
-    description: <code>/feedback/add</code> REST call
-
-  - name: feedback_delete
-    description: <code>/feedback/delete</code> REST call
-
-  - name: feedback_all
-    description: <code>/feedback/all</code> REST call
-
-  - name: user_add
-    description: <code>/user/add</code> REST call
-
-  - name: user_delete
-    description: <code>/user/delete</code> REST call
-
-  - name: user_update
-    description: <code>/user/update</code> REST call
-
-  - name: user_admin
-    description: <code>/user/admin</code> REST call
-
-  - name: user_passwd
-    description: <code>/user/passwd</code> REST call
-
-  - name: user_all
-    description: <code>/user/all</code> REST call
-
-  - name: probe_all
-    description: <code>/probe/all</code> REST call
-
-  - name: roundtrip
-    description: server-probe-server rountrip
-
-probe:
-  - name: sys_task
-    description: system tasks
-
-  - name: user_task
-    description: user tasks
\ No newline at end of file
diff --git a/_data/news.yml b/_data/news.yml
deleted file mode 100644
index 8e0f773..0000000
--- a/_data/news.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-- title: Introducing Apache NLPCraft 0.5.0
-  url: https://medium.com/@aradzinski/introducing-nlpcraft-0-6-74cea6a4d203
-  excerpt: Announcing the 1st release of the Apache NLPCraft.
-  author: Aaron Radzinksi
-  avatar_url: images/lion.jpg
-  publish_date: April 16, 2020
-  linkedin_id: aaron-radzinski-6b2228167
-  twitter_id: aaron_radzinski
-  medium_id: aradzinski
diff --git a/_data/src-releases.yml b/_data/src-releases.yml
deleted file mode 100644
index 13a1193..0000000
--- a/_data/src-releases.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-- version: 0.5.0
-  date: Apr 16, 2020
-  zip_name: apache-nlpcraft-0.5.0-src.zip
-  zip_url: https://github.com/apache/incubator-nlpcraft/releases/download/0.5.0/apache-nlpcraft-0.5.0-src.zip
-  sha256_url: https://github.com/apache/incubator-nlpcraft/releases/download/0.5.0/apache-nlpcraft-0.5.0-src.zip.sha256
-  pgp_url: https://github.com/apache/incubator-nlpcraft/releases/download/0.5.0/apache-nlpcraft-0.5.0-src.zip.sig
-  github_link: https://github.com/apache/incubator-nlpcraft/tree/0.5.0
-  backward_compatible: yes
-
diff --git a/_includes/quick-links.html b/_includes/quick-links.html
deleted file mode 100644
index e381b1d..0000000
--- a/_includes/quick-links.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<li class="side-nav-title">Quick Links</li>
-<li>
-    <i class="fab fa-fw fa-github mr-2"></i><a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples">Examples</a>
-</li>
-<li>
-    <i class="fab fa-fw fa-java mr-2"></i><a target="_" href="/apis/latest/index.html">Javadoc</a>
-</li>
-<li>
-    <i class="fas fa-fw fa-code mr-2"></i><a href="https://github.com/apache/incubator-nlpcraft/blob/master/openapi/nlpcraft_swagger.yml" target="github">REST API</a>
-</li>
-<li>
-    <i class="fas fa-fw fa-download mr-2"></i><a href="/download.html">Download</a>
-</li>
-<li class="side-nav-title">Support</li>
-<li>
-    <nobr>
-        <i class="fab fa-fw fa-jira mr-2"></i><a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues">JIRA</a>
-    </nobr>
-</li>
-<li>
-    <nobr>
-        <i class="far fa-fw fa-envelope mr-2"></i><a href="http://mail-archives.apache.org/mod_mbox/nlpcraft-dev/">Dev List</a>
-    </nobr>
-</li>
-<li>
-    <nobr>
-        <i class="fab fa-fw fa-stack-overflow mr-2"></i><a target="so" href="https://stackoverflow.com/questions/ask">Stack Overflow</a>
-    </nobr>
-</li>
-<li>
-    <nobr>
-        <i class="fab fa-fw fa-github mr-2"></i><a target="github" href="https://github.com/apache/incubator-nlpcraft">GitHub</a>
-    </nobr>
-</li>
diff --git a/_layouts/blog.html b/_layouts/blog.html
deleted file mode 100644
index 05c4c7a..0000000
--- a/_layouts/blog.html
+++ /dev/null
@@ -1,88 +0,0 @@
----
-layout: default
----
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<div class="container-fluid">
-    <div class="navbar-aligned">
-        <ol class="breadcrumb">
-            <li class="mr-1"><a href="index.html">Home</a></li>
-            <li class="mr-1"><a href="/blogs.html">Blogs</a></li>
-            <li class="mr-1 active">{{ page.title }}</li>
-        </ol>
-
-        <h1 class="page-title">
-            <span><i class="fas fa-fw fa-blog"></i> Blogs</span>
-        </h1>
-
-        <div class="three-cols-container">
-            <div class="col-md-2 first-column">
-                <ul class="side-nav">
-                    <li class="side-nav-title">Documentation</li>
-                    <li><a href="/docs.html">Overview</a></li>
-                    <li><a href="/installation.html">Installation</a></li>
-                    <li><a href="/getting-started.html">Getting Started</a></li>
-                </ul>
-            </div>
-            <div id="blog" class="col-md-8 second-column">
-                {{ content }}
-            </div>
-            <div class="col-md-2 third-column">
-                <ul class="side-nav">
-                    <li class="side-nav-title">Quick Links</li>
-                    <li>
-                        <img alt="" class="quick-link-img mr-2" src="/images/github_logo.png"><a
-                        target="github"
-                        href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples">Examples</a>
-                    </li>
-                    <li>
-                        <i class="fab fa-java mr-2"></i><a target="_" href="/apis/latest/index.html">Javadoc</a>
-                    </li>
-                    <li>
-                        <img alt="" class="quick-link-img mr-2" src="/images/apiary.svg"><a
-                        href="https://nlpcraft.docs.apiary.io"
-                        target="apiary">REST API</a>
-                    </li>
-                    <li>
-                        <i class="fas fa-download mr-2"></i><a href="/download.html">Download</a>
-                    </li>
-                    <li>
-                        <i class="fas fa-blog mr-2"></i><a href="/blogs.html">Blogs</a>
-                    </li>
-                    <li class="side-nav-title">Support</li>
-                    <li>
-                        <nobr>
-                            <i class="far fa-fw fa-envelope mr-2"></i><a href="mailto:dev@nlpcraft.apache.org">Dev List</a>
-                        </nobr>
-                    </li>
-                    <li>
-                        <nobr>
-                            <i class="fab fa-fw fa-stack-overflow mr-2"></i><a target="so" href="https://stackoverflow.com/questions/ask">Stack Overflow</a>
-                        </nobr>
-                    </li>
-                    <li>
-                        <nobr>
-                            <i class="fab fa-fw fa-github mr-2"></i><a target="github" href="https://github.com/apache/incubator-nlpcraft">GitHub</a>
-                        </nobr>
-                    </li>
-                </ul>
-            </div>
-        </div>
-    </div>
-</div>
\ No newline at end of file
diff --git a/_layouts/compress.html b/_layouts/compress.html
deleted file mode 100644
index fdddf75..0000000
--- a/_layouts/compress.html
+++ /dev/null
@@ -1,27 +0,0 @@
----
-# Jekyll layout that compresses HTML
-# v3.1.0
-# http://jch.penibelst.de/
-# © 2014–2015 Anatol Broder
-# MIT License
----
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-{% capture _LINE_FEED %}
-{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% fo [...]
diff --git a/_layouts/default.html b/_layouts/default.html
deleted file mode 100644
index f8f5be4..0000000
--- a/_layouts/default.html
+++ /dev/null
@@ -1,152 +0,0 @@
----
-layout: compress
----
-
-<!doctype html>
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-    <meta name="description" content="An open source API to convert natural language into actions.">
-    <meta name="author" content="NLPCraft.">
-    <title>Apache NLPCraft - Natural Language Interface</title>
-    <!-- BS3 CSS, etc. -->
-    <link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet">
-    <link href="//use.fontawesome.com/releases/v5.7.1/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" rel="stylesheet" crossorigin="anonymous">
-    <link href="{{ '/ext/syntaxhighlighter/styles/shCoreNLPCraft.css' | relative_url }}" rel="stylesheet" type="text/css">
-    <link href="{{ '/ext/syntaxhighlighter/styles/shThemeNLPCraft.css' | relative_url }}" rel="stylesheet" type="text/css">
-    <link href="//fonts.googleapis.com/css?family=Amatic+SC|Roboto+Mono" rel="stylesheet">
-
-    <!-- Loading some init libs here. -->
-    <script src="{{ '/ext/syntaxhighlighter/scripts/XRegExp.js' | relative_url }}" type="text/javascript"></script>
-    <script src="{{ '/ext/syntaxhighlighter/scripts/shCore.js' | relative_url }}" type="text/javascript"></script>
-    <script src="{{ '/ext/syntaxhighlighter/scripts/shBrushXml.js' | relative_url }}" type="text/javascript"></script>
-    <script src="{{ '/ext/syntaxhighlighter/scripts/shBrushPlain.js' | relative_url }}" type="text/javascript"></script>
-    <script src="{{ '/ext/syntaxhighlighter/scripts/shBrushJava.js' | relative_url }}" type="text/javascript"></script>
-    <script src="{{ '/ext/syntaxhighlighter/scripts/shBrushScala.js' | relative_url }}" type="text/javascript"></script>
-    <script src="{{ '/ext/syntaxhighlighter/scripts/shBrushPython.js' | relative_url }}" type="text/javascript"></script>
-    <script src="{{ '/ext/syntaxhighlighter/scripts/shBrushJScript.js' | relative_url }}" type="text/javascript"></script>
-    <script async defer src="https://buttons.github.io/buttons.js"></script>
-
-    <!-- Main CSS. -->
-    <link rel="stylesheet" type="text/css" href="{{ '/assets/css/style.css' | relative_url }}"/>
-
-    <!-- Typekit fonts. -->
-    <script type="text/javascript" src="//use.typekit.net/pso2adz.js"></script>
-    <script type="text/javascript">
-        try {
-            Typekit.load();
-        }
-        catch(e) {
-            // Ignore.
-        }
-    </script>
-
-    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
-    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
-    <!--[if lt IE 9]>
-    <script src="//cdn.jsdelivr.net/html5shiv/3.7.2/html5shiv.min.js"></script>
-    <script src="//cdn.jsdelivr.net/respond/1.4.2/respond.src.js"></script>
-    <![endif]-->
-</head>
-<body>
-<!-- Fixed navbar -->
-<nav class="navbar navbar-expand-lg navbar-light bg-light" id="top-header">
-    <a class="navbar-brand mr-4" href="/index.html">
-        <img src="{{ 'images/nlpcraft_logo_white.gif' | relative_url }}" height="24px">
-    </a>
-    
-    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
-        <span class="navbar-toggler-icon"></span>
-    </button>
-
-    <div class="collapse navbar-collapse" id="navbarSupportedContent">
-        <ul class="navbar-nav mr-auto">
-            <li class="nav-item">
-                <a class="nav-link" href="/index.html#features">Features</a>
-            </li>
-            <li class="nav-item">
-                <a class="nav-link" href="/docs.html">Docs</a>
-            </li>
-            <li class="nav-item">
-                <a class="nav-link" href="/download.html">Downloads <i class="fas fa-download"></i></a>
-            </li>
-            <li class="nav-item">
-                <a class="nav-link" href="/community.html">Community</a>
-            </li>
-            <li class="nav-item">
-                <a class="nav-link" href="/use-cases.html">Use Cases</a>
-            </li>
-        </ul>
-        <ul class="navbar-nav ml-auto">
-            <li class="nav-item mr-2">
-                <a class="nav-link" href="/download.html">v.{{ site.latest_version}}</a>
-            </li>
-            <li class="nav-item">
-                <a class="nav-link fork-link" target="github" href="https://github.com/apache/incubator-nlpcraft">GitHub <img height="20px" src="{{ 'images/github_logo_white.png' | relative_url }}"></a>
-            </li>
-        </ul>
-    </div>
-</nav>
-
-{{ content }}
-
-<div id="footer">
-    <div class="container">
-        <div class="text-muted text-center">
-            <span>Copyright &copy; 2020 Apache Software Foundation</span>
-            <span>
-                <a target=_new href="https://apache.org"><img alt="asf" src="{{ '/images/asf_logo.png' | relative_url }}" height="24px"></a>
-            </span>
-            <a href="/index.html#news" class="btn btn-link ml-4">News</a>
-            <span class="sep">•</span>
-            <a href="/docs.html" class="btn btn-link">Docs</a>
-            <span class="ml-4">release: <a href="/download.html"><code>{{ site.latest_version }}</code></a></span>
-            <span class="ml-2">
-                <a target="jenkins" href="https://builds.apache.org/view/Incubator%20Projects/job/incubator-nlpcraft/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fbuilds.apache.org%2Fview%2FIncubator%2520Projects%2Fjob%2Fincubator-nlpcraft%2F"></a>
-                <a target=_ href="https://gitter.im/apache-nlpcraft/community"><img alt="Gitter" src="https://badges.gitter.im/apache-nlpcraft/community.svg"></a>
-            </span>
-        </div>
-    </div>
-</div>
-
-<!-- 3rd party libraries. -->
-<script src="//code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
-<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
-<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
-<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js" type="text/javascript" ></script>
-<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/moment.min.js" type="text/javascript" ></script>
-<script src="//cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.5/moment-timezone-with-data.min.js" type="text/javascript" ></script>
-
-<!-- Google Analytics -->
-<!-- TODO: add GA wart here. -->
-
-<!-- Syntax highlighter. -->
-<script type="text/javascript">
-    SyntaxHighlighter.defaults["auto-links"] = false;
-    SyntaxHighlighter.defaults["tab-size"] = 2;
-
-    SyntaxHighlighter.all();
-</script>
-
-</body>
-</html>
diff --git a/_layouts/documentation.html b/_layouts/documentation.html
deleted file mode 100644
index 26a8c0c..0000000
--- a/_layouts/documentation.html
+++ /dev/null
@@ -1,127 +0,0 @@
----
-layout: interior
----
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<h1 class="page-title">
-    <span><i class="fas fa-fw fa-book"></i> {{ page.active_crumb }}</span>
-</h1>
-
-<div class="three-cols-container">
-    <div class="col-md-2 first-column">
-        <ul class="side-nav">
-            <li class="side-nav-title">Introduction</li>
-            <li>
-                {% if page.id == "overview" %}
-                <a class="active" href="/docs.html">Overview</a>
-                {% else %}
-                <a href="/docs.html">Overview</a>
-                {% endif %}
-            </li>
-            <li>
-                {% if page.id == "installation" %}
-                <a class="active" href="/installation.html">Installation</a>
-                {% else %}
-                <a href="/installation.html">Installation</a>
-                {% endif %}
-            </li>
-            <li>
-                {% if page.id == "getting_started" %}
-                <a class="active" href="/getting-started.html">Getting Started</a>
-                {% else %}
-                <a href="/getting-started.html">Getting Started</a>
-                {% endif %}
-            </li>
-            <li class="side-nav-title">Developer Guide</li>
-            <li>
-                {% if page.id == "basic_concepts" %}
-                <a class="active" href="/basic-concepts.html">Basic Concepts</a>
-                {% else %}
-                <a href="/basic-concepts.html">Basic Concepts</a>
-                {% endif %}
-            </li>
-            <li>
-                {% if page.id == "first_example" %}
-                <a class="active" href="/first-example.html">First Example</a>
-                {% else %}
-                <a href="/first-example.html">First Example</a>
-                {% endif %}
-            </li>
-            <li>
-                {% if page.id == "data_model" %}
-                <a class="active" href="/data-model.html">Data Model</a>
-                {% else %}
-                <a href="/data-model.html">Data Model</a>
-                {% endif %}
-            </li>
-            <li>
-                {% if page.id == "intent_matching" %}
-                    <a class="active" href="/intent-matching.html">Intent Matching</a>
-                {% else %}
-                    <a href="/intent-matching.html">Intent Matching</a>
-                {% endif %}
-            </li>
-            <li>
-                {% if page.id == "rest" %}
-                <a class="active" href="/using-rest.html">REST API</a>
-                {% else %}
-                <a href="/using-rest.html">REST API</a>
-                {% endif %}
-            </li>
-            <li>
-                {% if page.id == "server_and_probe" %}
-                <a class="active" href="/server-and-probe.html">Server <span class="amp">&amp;</span> Probe</a>
-                {% else %}
-                <a href="/server-and-probe.html">Server <span class="amp">&amp;</span> Probe</a>
-                {% endif %}
-            </li>
-            <li>
-                {% if page.id == "metrics" %}
-                <a class="active" href="/metrics-and-tracing.html">Metrics <span class="amp">&amp;</span> Tracing</a>
-                {% else %}
-                <a href="/metrics-and-tracing.html">Metrics <span class="amp">&amp;</span> Tracing</a>
-                {% endif %}
-            </li>
-            <li>
-                {% if page.id == "integrations" %}
-                <a class="active" href="/integrations.html">Integrations</a>
-                {% else %}
-                <a href="/integrations.html">Integrations</a>
-                {% endif %}
-            </li>
-            <li class="side-nav-title">Examples</li>
-            <li>
-                {% if page.id == "alarm_clock" %}
-                <a class="active" href="/examples/alarm_clock.html">Alarm Clock</a>
-                {% else %}
-                <a href="/examples/alarm_clock.html">Alarm Clock</a>
-                {% endif %}
-            </li>
-            <li>
-                {% if page.id == "light_switch" %}
-                <a class="active" href="/examples/light_switch.html">Light Switch</a>
-                {% else %}
-                <a href="/examples/light_switch.html">Light Switch</a>
-                {% endif %}
-            </li>
-        </ul>
-    </div>
-
-    {{ content }}
-</div>
\ No newline at end of file
diff --git a/_layouts/interior.html b/_layouts/interior.html
deleted file mode 100644
index 9a7d4ff..0000000
--- a/_layouts/interior.html
+++ /dev/null
@@ -1,31 +0,0 @@
----
-layout: default
----
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<div class="container-fluid">
-    <div class="navbar-aligned">
-        <ol class="breadcrumb">
-            <li class="mr-1"><a href="/index.html">Home</a></li>
-            <li class="mr-1 active">{{ page.active_crumb }}</li>
-        </ol>
-
-        {{ content }}
-    </div>
-</div>
\ No newline at end of file
diff --git a/_layouts/release-notes.html b/_layouts/release-notes.html
deleted file mode 100644
index fec5ec7..0000000
--- a/_layouts/release-notes.html
+++ /dev/null
@@ -1,57 +0,0 @@
----
-layout: default
----
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<div class="container-fluid">
-    <div class="navbar-aligned">
-        <ol class="breadcrumb">
-            <li class="mr-1"><a href="index.html">Home</a></li>
-            <li class="mr-1"><a href="/download.html">Download</a></li>
-            <li class="mr-1 active">Release Notes {{ page.rel_ver }}</li>
-        </ol>
-
-        <h1 class="page-title">
-            <span><i class="fas fa-fw fa-file-alt"></i> Release Notes {{ page.rel_ver }}</span>
-        </h1>
-
-        <div class="three-cols-container">
-            <div class="col-md-2 first-column">
-                <ul class="side-nav">
-                    <li class="side-nav-title">Documentation</li>
-                    <li><a href="/docs.html">Overview</a></li>
-                    <li><a href="/installation.html">Installation</a></li>
-                    <li><a href="/getting-started.html">Getting Started</a></li>
-                </ul>
-            </div>
-            <div class="col-md-8 second-column">
-                {{ content }}
-            </div>
-            <div class="col-md-2 third-column">
-                <ul class="side-nav">
-                    <li class="side-nav-title">On This Page</li>
-                    <li><a href="#new">New</a></li>
-                    <li><a href="#enhancements">Enhancements</a></li>
-                    <li><a href="#fixes">Fixes</a></li>
-                    {% include quick-links.html %}
-                </ul>
-            </div>
-        </div>
-    </div>
-</div>
\ No newline at end of file
diff --git a/_scss/404.scss b/_scss/404.scss
deleted file mode 100644
index 79d384f..0000000
--- a/_scss/404.scss
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-.page-not-found {
-    margin: 15% auto;
-    max-width: 600px;
-    text-align: center;
-
-    h1 {
-        margin: 30px 0;
-        font-size: 4em;
-        line-height: 1;
-        letter-spacing: -1px;
-    }
-}
\ No newline at end of file
diff --git a/_scss/basic-concepts.scss b/_scss/basic-concepts.scss
deleted file mode 100644
index b26c3a6..0000000
--- a/_scss/basic-concepts.scss
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#basic-concepts {
-    dl.stm-example {
-        padding: 20px;
-        border: 1px solid #ddd;
-        -webkit-border-radius: 4px;
-        -moz-border-radius: 4px;
-        border-radius: 4px;
-        margin-left: 0 !important;
-
-        dd {
-            font-weight: 400;
-            font-family: monospace;
-            margin-top: 20px;
-            font-size: 120%;
-
-            i.fa {
-                text-align: left;
-                vertical-align: text-bottom;
-            }
-        }
-
-        dt {
-            margin-left: 20px;
-            font-weight: 400;
-        }
-
-        .stm-state {
-            display: inline-flex;
-
-            .stm {
-                margin-right: 20px;
-
-                label {
-                    font-weight: 500;
-                    display: block;
-                }
-
-                span {
-                    min-width: 50px;
-                    display: inline-block;
-                    padding: 3px 6px;
-                    border: 1px solid #C5D2F7 !important;
-                    border-radius: 2px;
-                    text-align: center;
-                    font-weight: 200;
-                    letter-spacing: 0.02em;
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/_scss/buttons.scss b/_scss/buttons.scss
deleted file mode 100644
index ac58e79..0000000
--- a/_scss/buttons.scss
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-@mixin custom-button($fg, $bg) {
-    border-color: $bg !important;
-    background-color: $bg !important;
-    color: $fg !important;
-    font-weight: 400;
-
-    &:focus {
-        border-color: $bg !important;
-        background-color: $bg !important;
-        color: $fg !important;
-    }
-
-    &:hover {
-        color: $fg !important;
-        border-color: $bg !important;
-        background-color: darken($bg, 3%) !important;
-    }
-}
-
-.btn {
-    letter-spacing: 0.02em;
-}
-
-.btn-default:hover, .btn-default:active, .btn-default:visited {
-    background-color: #efefef !important;
-    border-color: #ddd !important;
-}
-
-.btn-creme { @include custom-button(#8a6d3b, #fcf8e3) }
-.btn-beta { @include custom-button(#fff, $color-beta) }
-.btn-black { @include custom-button(#fff, #555) }
-.btn-white { @include custom-button(#333, #fff) }
-.btn-milk { @include custom-button(#333, #f9f9f3) }
-.btn-turquoise { @include custom-button(#fff, $color-turquoise) }
-.btn-emerald { @include custom-button(#fff, $color-emerald) }
-.btn-river { @include custom-button(#fff, $color-river) }
-.btn-amethyst { @include custom-button(#fff, $color-amethyst) }
-.btn-asphalt { @include custom-button(#fff, $color-asphalt) }
-.btn-sea { @include custom-button(#fff, $color-sea) }
-.btn-nephritis { @include custom-button(#fff, $color-nephritis) }
-.btn-belize { @include custom-button(#fff, $color-belize) }
-.btn-wisteria { @include custom-button(#fff, $color-wisteria) }
-.btn-midnight { @include custom-button(#fff, $color-midnight) }
-.btn-orange { @include custom-button(#fff, $color-orange) }
-.btn-carrot { @include custom-button(#fff, $color-carrot) }
-.btn-pumpkin { @include custom-button(#fff, $color-pumpkin) }
-.btn-alizarin { @include custom-button(#fff, $color-alizarin) }
-.btn-pomegranate { @include custom-button(#fff, $color-pomegranate) }
-.btn-cloud { @include custom-button($color-grey-blue, $color-cloud) }
-.btn-white-river { @include custom-button($color-river, #fff) }
-.btn-silver { @include custom-button(#fff, $color-silver) }
-.btn-concrete { @include custom-button(#fff, $color-concrete) }
-.btn-asbestos { @include custom-button(#fff, $color-asbestos) }
-.btn-pink { @include custom-button(#fff, $color-pink) }
-.btn-mustard { @include custom-button(#000, $color-mustard) }
-.btn-mustard2 { @include custom-button(#fff, $color-mustard) }
-.btn-blue { @include custom-button(#fff, $color-blue) }
-.btn-slack { @include custom-button(#fff, $color-slack) }
-.btn-slack2 { @include custom-button(#fff, $color-slack2) }
-.btn-slack3 { @include custom-button(#fff, $color-slack3) }
-.btn-slack4 { @include custom-button(#fff, $color-slack4) }
-.btn-slack5 { @include custom-button(#fff, $color-slack5) }
-.btn-primary { @include custom-button(#fff, $brand-primary) }
-.btn-danger { @include custom-button(#fff, $brand-danger) }
-.btn-beta { @include custom-button(#fff, $color-beta) }
-.btn-success { @include custom-button(#fff, $brand-success) }
-.btn-beige { @include custom-button(#fff, $color-beige) }
-.btn-sunflower { @include custom-button($color-slack, $color-sunflower) }
-.btn-peach { @include custom-button(#fff, $color-peach) }
-.btn-sunflower2 { @include custom-button($color-slack2, $color-sunflower) }
-
-.one-letter-btn-xs {
-    padding: 1px 7px;
-}
-
diff --git a/_scss/colors.scss b/_scss/colors.scss
deleted file mode 100644
index 4ac592d..0000000
--- a/_scss/colors.scss
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * Main colors.
- */
-$border-color: #ddd;
-$border-hor-color: #ddd;
-
-// From BS3.
-$brand-primary: #428bca;
-$brand-success: #5cb85c;
-$brand-info: #5bc0de;
-$brand-warning: #f0ad4e;
-$brand-danger: #d9534f;
-
-// Form control colors.
-$form-control-border-color: #eee;
-$form-control-addon-border-color: #e6e6e6;
-$form-control-addon-background-color: #e6e6e6;
-
-$color-table-sort: rgb(107, 164, 202);
-
-$color-slack: #4d394b;
-$color-slack2: #303e4c;
-$color-slack3: #544539;
-$color-slack4: #4d5250;
-$color-slack5: #187e82;
-$color-slack6: #f8f8fa;
-$color-border: #e7e7e7;
-$color-magnolia: #F9F7ED;
-$color-grey-blue: #6B7F99;
-
-$background-color: #fff;
-$foreground-color: #333;
-
-// Flat colors.
-$color-turquoise: #1abc9c;
-$color-emerald: #2ecc71;
-$color-river: #3498db;
-$color-amethyst: #9b59b6;
-$color-asphalt: #34495e;
-$color-sea: #16a085;
-$color-nephritis: #27ae60;
-$color-travis-passing: #00c800;
-$color-belize: #2980b9;
-$color-wisteria: #8e44ad;
-$color-midnight: #2C3E50;
-$color-sunflower: #ffd20f;
-$color-orange: #F39C12;
-$color-carrot: #E67E22;
-$color-pumpkin: #D35400;
-$color-alizarin: #E74C3C;
-$color-pomegranate: #C0392B;
-$color-cloud: #ECF0F1;
-$color-silver: #BDC3C7;
-$color-concrete: #95A5A6;
-$color-asbestos: #7F8C8D;
-$color-dream: #C5D5EE;
-$color-blue: #428BCA;
-$color-mustard: #CAC542;
-$color-pink: #CA428B;
-$color-beige:#CA8142;
-$color-beta: #FC664C;
-$color-peach: #ff6530;
-$color-blue2: #337ab7;
-$color-neon-green: #a4fb05;
-
-// Table border colors.
-$tbl-border-color: #eee;
-$tbl-border-hor-color: #eee;
-$tbl-hdr-bgcolor: lighten($color-river, 40%);
-
-.color-turquoise { color: $color-turquoise }
-.color-emerald { color: $color-emerald }
-.color-river { color: $color-river }
-.color-amethyst { color: $color-amethyst }
-.color-asphalt { color: $color-asphalt }
-.color-sea { color: $color-sea }
-.color-nephritis { color: $color-nephritis }
-.color-belize { color: $color-belize }
-.color-wisteria { color: $color-wisteria }
-.color-midnight { color: $color-midnight }
-.color-sunflower { color: $color-sunflower }
-.color-orange { color: $color-orange }
-.color-carrot { color: $color-carrot }
-.color-pumpkin { color: $color-pumpkin }
-.color-alizarin { color: $color-alizarin }
-.color-pomegranate { color: $color-pomegranate }
-.color-cloud { color: $color-cloud }
-.color-silver { color: $color-silver }
-.color-concrete { color: $color-concrete }
-.color-asbestos { color: $color-asbestos }
-.color-dream { color: $color-dream }
-
-.color-danger { color: $brand-danger }
-.color-info { color: $brand-info }
-.color-success { color: $brand-success }
-.color-primary { color: $brand-primary }
-.color-warning { color: $brand-warning }
-
-.bg-danger { background-color: $brand-danger }
-.bg-info { background-color: $brand-info }
-.bg-success { background-color: $brand-success }
-.bg-primary { background-color: $brand-primary }
-.bg-warning { background-color: $brand-warning }
-
-.color-000 { color: #000 }
-.color-111 { color: #111 }
-.color-222 { color: #222 }
-.color-333 { color: #333 }
-.color-444 { color: #444 }
-.color-555 { color: #555 }
-.color-666 { color: #666 }
-.color-777 { color: #777 }
-.color-888 { color: #888 }
-.color-999 { color: #999 }
-.color-aaa { color: #aaa }
-.color-bbb { color: #bbb }
-.color-ccc { color: #ccc }
-.color-ddd { color: #ddd }
-.color-eee { color: #eee }
-.color-fff { color: #fff }
-
-.bg-turquoise { background-color: $color-turquoise }
-.bg-emerald { background-color: $color-emerald }
-.bg-river { background-color: $color-river }
-.bg-amethyst { background-color: $color-amethyst }
-.bg-asphalt { background-color: $color-asphalt }
-.bg-sea { background-color: $color-sea }
-.bg-nephritis { background-color: $color-nephritis }
-.bg-belize { background-color: $color-belize }
-.bg-wisteria { background-color: $color-wisteria }
-.bg-midnight { background-color: $color-midnight }
-.bg-sunflower { background-color: $color-sunflower }
-.bg-orange { background-color: $color-orange }
-.bg-carrot { background-color: $color-carrot }
-.bg-pumpkin { background-color: $color-pumpkin }
-.bg-alizarin { background-color: $color-alizarin }
-.bg-pomegranate { background-color: $color-pomegranate }
-.bg-cloud { background-color: $color-cloud }
-.bg-silver { background-color: $color-silver }
-.bg-concrete { background-color: $color-concrete }
-.bg-asbestos { background-color: $color-asbestos }
-
diff --git a/_scss/community.scss b/_scss/community.scss
deleted file mode 100644
index a4b308e..0000000
--- a/_scss/community.scss
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#community {
-    table.checks {
-        i.fas {
-            &.fa-check, &.fa-check-double {
-                color: $color-turquoise;
-            }
-
-            &.fa-times {
-                color: $color-alizarin
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/_scss/download.scss b/_scss/download.scss
deleted file mode 100644
index a9872f6..0000000
--- a/_scss/download.scss
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#downloads {
-    .download-sigs > a {
-        border: 1px solid #bfe1ff;
-        padding: 1px 2px;
-    }
-
-    i.fa-bomb {
-        color: $color-pomegranate;
-        font-size: 90%;
-    }
-}
diff --git a/_scss/fonts.scss b/_scss/fonts.scss
deleted file mode 100644
index ba69e88..0000000
--- a/_scss/fonts.scss
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-@font-face {
-    font-family: 'CanaroBlack';
-    src: url('../../fonts/rene_bieder_-_canaro_black-webfont.eot');
-    src: url('../../fonts/rene_bieder_-_canaro_black-webfont.eot?#iefix') format('embedded-opentype'),
-        url('../../fonts/rene_bieder_-_canaro_black-webfont.woff') format('woff'),
-        url('../../fonts/rene_bieder_-_canaro_black-webfont.ttf') format('truetype'),
-        url('../../fonts/rene_bieder_-_canaro_black-webfont.svg#canaroblack') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'CanaroBold';
-    src: url('../../fonts/rene_bieder_-_canaro_bold-webfont.eot');
-    src: url('../../fonts/rene_bieder_-_canaro_bold-webfont.eot?#iefix') format('embedded-opentype'),
-        url('../../fonts/rene_bieder_-_canaro_bold-webfont.woff') format('woff'),
-        url('../../fonts/rene_bieder_-_canaro_bold-webfont.ttf') format('truetype'),
-        url('../../fonts/rene_bieder_-_canaro_bold-webfont.svg#canaro_bookbold') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'CanaroBook';
-    src: url('../../fonts/rene_bieder_-_canaro_book-webfont.eot');
-    src: url('../../fonts/rene_bieder_-_canaro_book-webfont.eot?#iefix') format('embedded-opentype'),
-        url('../../fonts/rene_bieder_-_canaro_book-webfont.woff') format('woff'),
-        url('../../fonts/rene_bieder_-_canaro_book-webfont.ttf') format('truetype'),
-        url('../../fonts/rene_bieder_-_canaro_book-webfont.svg#canarobook') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'CanaroExtraLight';
-    src: url('../../fonts/rene_bieder_-_canaro_extralight-webfont.eot');
-    src: url('../../fonts/rene_bieder_-_canaro_extralight-webfont.eot?#iefix') format('embedded-opentype'),
-        url('../../fonts/rene_bieder_-_canaro_extralight-webfont.woff') format('woff'),
-        url('../../fonts/rene_bieder_-_canaro_extralight-webfont.ttf') format('truetype'),
-        url('../../fonts/rene_bieder_-_canaro_extralight-webfont.svg#canaroextralight') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'CanaroMedium';
-    src: url('../../fonts/rene_bieder_-_canaro_medium-webfont.eot');
-    src: url('../../fonts/rene_bieder_-_canaro_medium-webfont.eot?#iefix') format('embedded-opentype'),
-        url('../../fonts/rene_bieder_-_canaro_medium-webfont.woff') format('woff'),
-        url('../../fonts/rene_bieder_-_canaro_medium-webfont.ttf') format('truetype'),
-        url('../../fonts/rene_bieder_-_canaro_medium-webfont.svg#canaromedium') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'StagSansLight';
-    src: url('../../fonts/stagsans-light-webfont.eot');
-    src: url('../../fonts/stagsans-light-webfont.eot?#iefix') format('embedded-opentype'),
-        url('../../fonts/stagsans-light-webfont.woff') format('woff'),
-        url('../../fonts/stagsans-light-webfont.ttf') format('truetype'),
-        url('../../fonts/stagsans-light-webfont.svg#stag_sanslight') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
\ No newline at end of file
diff --git a/_scss/footer.scss b/_scss/footer.scss
deleted file mode 100644
index af9812f..0000000
--- a/_scss/footer.scss
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Footer styling.
-#footer {
-    position: fixed;
-    bottom: 0;
-    width: 100%;
-    height: 50px; // Set the fixed height of the footer here.
-    background-image: linear-gradient(to bottom, #fafafa 0%, #ddd 100%);
-    white-space: nowrap;
-
-    & > .container {
-        padding: 8px 15px 0 15px;
-        font-size: 14px;
-
-        a.btn-link {
-            vertical-align: baseline;
-            font-size: 14px;
-            margin: 0;
-            padding: 6px 0;
-        }
-
-        a {
-            color: $color-blue2;
-
-            code {
-                background-color: #e47193;
-                color: #fff;
-                padding: 2px 4px;
-                -webkit-border-radius: 2px;
-                -moz-border-radius: 2px;
-                border-radius: 2px;
-                font-weight: 700;
-            }
-        }
-
-        .sep {
-            color: #cbcbcb;
-        }
-    }
-}
\ No newline at end of file
diff --git a/_scss/header.scss b/_scss/header.scss
deleted file mode 100644
index 1178748..0000000
--- a/_scss/header.scss
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#top-header {
-    display: flex;
-    background-image: linear-gradient(141deg, #6980fa 0%, #2cb5e8 51%, #4298fc 75%);
-
-    .nav-item > .nav-link {
-        color: #fff;
-    }
-    
-    .navbar-toggler {
-        border-color: #fff;
-        background: #fff;
-    }
-
-    i.fa-download {
-        color: $color-neon-green;
-        font-size: 80%;
-    }
-
-    .fork-link img {
-        vertical-align: sub;
-    }
-}
-
-.navbar-aligned {
-    margin: 12px 0 72px /* 60 + 12 */ 12px;
-
-    .breadcrumb {
-        background-color: transparent;
-        font-size: 90%;
-        color: $color-asbestos;
-        padding: 0;
-
-        a {
-            color: $color-river;
-        }
-    }
-
-    .breadcrumb > li + li:before {
-        content: "\f105";
-        padding: 0 5px;
-        color: $color-asbestos;
-        font-family: "Font Awesome\ 5 Free", serif;
-        font-style: normal;
-        font-weight: 700;
-        text-decoration: inherit;
-    }
-}
-
-.page-title, .page-title span {
-    font-weight: 700;
-    color: $color-slack;
-    margin-bottom: 30px;
-
-    & > i.fas {
-        //margin-left: -7px;
-        text-align: left;
-    }
-}
\ No newline at end of file
diff --git a/_scss/index.scss b/_scss/index.scss
deleted file mode 100644
index 0303b7d..0000000
--- a/_scss/index.scss
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#banner-box {
-    background: url(../../images/bg-mb-wrapper2.png) bottom center repeat-x #5483dd;
-
-    #inner-banner-box {
-        position: relative;
-        z-index: 9;
-        min-height: 300px;
-        max-height: 300px;
-        background: url(../../images/bg-main-box.jpg) bottom center no-repeat;
-
-        #banner {
-            min-height: 300px;
-            padding: 35px 0 0 40px;
-
-            a#get-started-btn {
-                border-color: #c17dac !important;
-                background-color: #fff !important;
-                color: #f67484 !important;
-                font-weight: 500;
-                margin-left: 2px;
-            }
-
-            #nat-lang-itf {
-                color: #fff;
-                font-size: 60px;
-                letter-spacing: 0.02em;
-                font-weight: 500;
-                font-family: CanaroBold, Helvetica, sans-serif;
-            }
-
-            #banner-sub-title {
-                color: #fff;
-                font-size: 22px;
-                font-weight: 200;
-                margin-top: -5px;
-                letter-spacing: 0.02em;
-            }
-        }
-    }
-}
-
-@media (max-width: 1000px) {
-    #banner-box #inner-banner-box #banner #nat-lang-itf {
-        font-size: 45px;
-    }
-    #banner-box #inner-banner-box #banner {
-        padding-top: 50px;
-    }
-}
-
-@media (max-width: $min-width) {
-    #banner-box #inner-banner-box #banner #nat-lang-itf {
-        font-size: 35px;
-    }
-    #banner-box #inner-banner-box #banner #sub-title {
-        font-size: 18px;
-    }
-    #banner-box #inner-banner-box #banner {
-        padding-top: 70px;
-    }
-}
-
-.bottom-arrow {
-    position: relative;
-
-    &:after {
-        position: absolute;
-        bottom: -16px;
-        left: 50%;
-        z-index: 10;
-        margin-left: -23px;
-        width: 0;
-        height: 0;
-        border-top: 16px solid;
-        border-right: 23px solid transparent;
-        border-left: 23px solid transparent;
-        content: "";
-        -moz-transform: scale(.9999);
-    }
-}
-
-.main-section {
-    padding: 0 30px 40px 30px;
-    letter-spacing: 0.02em;
-
-    .section-title {
-        margin: 40px 0 15px 0;
-        font-size: 35px;
-        letter-spacing: 0.02em;
-        font-weight: 200;
-        display: block;
-
-        span {
-            font-weight: 500;
-        }
-    }
-
-    .sub-section-title {
-        margin: 0 0 10px 0;
-        font-size: 25px;
-        letter-spacing: 0.02em;
-        font-weight: 200;
-        display: block;
-
-        span {
-            font-weight: 500;
-        }
-    }
-
-    &:last-child {
-        margin-bottom: 150px;
-    }
-
-    #integration-logos {
-        display: inline-block;
-
-        & > a {
-            margin: 5px 10px 0 0;
-        }
-    }
-}
-
-#banner-box:after {
-    border-top-color: #ed8964;
-}
-
-#about-nlpcraft {
-    background-color: #fff;
-
-    &:after {
-        border-top-color: #fff;
-    }
-
-    img#fig1 {
-        padding: 50px;
-    }
-}
-
-#features {
-    background-color: rgba(238,244,246,84);
-
-    &:after {
-        border-top-color: rgba(238,244,246,84);
-    }
-}
-
-#howitworks {
-    background-color: #fff;
-
-    &:after {
-        border-top-color: #fff;
-    }
-}
-
-.learn-more {
-    margin-top: 10px;
-}
-
-.read-more {
-    margin-top: 30px;
-
-    // Reset to the default link colors.
-    a, a:hover, a:active, i.fas {
-        color: rgb(0, 123, 255) !important;
-    }
-}
-
-#about {
-    padding-bottom: 100px;
-    background-color: #fff;
-
-    &:after {
-        border-top-color: transparent;
-    }
-
-    a, a:hover, a:active {
-        color: $color-blue2;
-    }
-
-    .about-project-name {
-        font-weight: 700;
-        font-size: 150%;
-        margin-bottom: 10px;
-        display: inline-block;
-    }
-}
-
-#news {
-    background-color: $color-magnolia;
-
-    &:after {
-        border-top-color: $color-magnolia;
-    }
-
-    a, a:hover, a:active, i.fas {
-        color: $color-asphalt;
-    }
-
-    #news-container {
-        .news-title {
-            font-size: 24px;
-            letter-spacing: 0.02em;
-            font-weight: 200;
-
-            i.fas {
-                color: $color-asphalt;
-            }
-        }
-
-        .news-excerpt {
-            font-size: 15px;
-            color: #666;
-            font-weight: 200;
-            letter-spacing: 0.05em;
-            margin-bottom: 20px;
-        }
-
-        .news-footer {
-            letter-spacing: 0.02em;
-
-            img {
-                height: 32px;
-                margin-right: 5px;
-                vertical-align: middle;
-            }
-
-            img.avatar-img {
-                -webkit-border-radius: 100%;
-                -moz-border-radius: 100%;
-                border-radius: 100%;
-            }
-
-            a, span {
-                vertical-align: middle;
-            }
-
-            a.news-author {
-                margin-right: 15px;
-                display: inline-block;
-            }
-        }
-    }
-}
-
-div.quick-link {
-    display: block;
-    padding: 8px 0 0 20px;
-    margin: 0 10px 20px 0;
-    height: 50px;
-    min-width: 350px;
-    max-width: 430px;
-    border: 1px solid #e0ded2;
-    -webkit-border-radius: 4px;
-    -moz-border-radius: 4px;
-    border-radius: 2px;
-    background-color: $color-magnolia;
-
-    img.quick-link-img {
-        height: 32px;
-        margin-right: 10px;
-        vertical-align: middle;
-    }
-
-    span {
-        vertical-align: middle;
-    }
-
-    i.fas {
-        vertical-align: middle;
-    }
-
-    a {
-        color: $color-asphalt;
-    }
-
-    div.gh-btn {
-        vertical-align: bottom;
-        display: inline-block;
-        margin-right: 10px;
-    }
-}
\ No newline at end of file
diff --git a/_scss/integrations.scss b/_scss/integrations.scss
deleted file mode 100644
index 93fb743..0000000
--- a/_scss/integrations.scss
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#integrations {
-    table.checks {
-        i.fas {
-            &.fa-check, &.fa-check-double {
-                color: $color-turquoise;
-            }
-
-            &.fa-times {
-                color: $color-alizarin
-            }
-        }
-    }
-
-    .img-title {
-        margin-top: 25px;
-        margin-bottom: 10px;
-    }
-}
\ No newline at end of file
diff --git a/_scss/metrics-and-tracing.scss b/_scss/metrics-and-tracing.scss
deleted file mode 100644
index 1879c9d..0000000
--- a/_scss/metrics-and-tracing.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#metrics-and-tracing {
-    div.exporter-name {
-        display: inline;
-        margin-left: 20px;
-    }
-}
\ No newline at end of file
diff --git a/_scss/misc.scss b/_scss/misc.scss
deleted file mode 100644
index c5fceb5..0000000
--- a/_scss/misc.scss
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-$min-width: 768px;
-
-/*
- * Miscellaneous CSS fixes.
- * ------------------------
- */
-
-html, body, div, span, applet, object, iframe,
-h1, h2, h3, h4, h5, h6, p, blockquote, pre,
-a, abbr, acronym, address, big, cite, code,
-del, dfn, em, img, ins, kbd, q, s, samp,
-small, strike, strong, sub, sup, tt, var,
-b, u, i, center,
-dl, dt, dd, ol, ul, li,
-fieldset, form, label, legend,
-table, caption, tbody, tfoot, thead, tr, th, td,
-article, aside, canvas, details, figcaption, figure,
-footer, header, hgroup, menu, nav, section, summary,
-time, mark, audio, video {
-    -webkit-font-smoothing: antialiased;
-    -moz-osx-font-smoothing: grayscale;
-}
-
-body {
-    min-width: $min-width;
-    font-family: "Helvetica Neue", Helvetica, sans-serif;
-}
-
-.amp {
-    font-family: baskerville, Helvetica, sans-serif;
-    font-weight: 400 !important;
-    font-style: italic;
-}
-
-label {
-    font-weight: 200;
-}
-
-.fill {
-    min-height: 100%;
-    height: 100%;
-}
-
-.clear-fix {
-    &:before,
-    &:after {
-        content: " ";
-        display: table;
-    }
-    &:after {
-        clear: both;
-    }
-}
-
-// Fix margins on fluid row.
-.row-fluid [class*="span"] {
-    margin-left: 0;
-}
-
-// Remove blue outline in Chrome when pressing buttons and links.
-.modal-open .modal, .btn:focus, a:focus {
-    outline: none !important;
-}
-
-// Make all FA icons in dropdown menus of slack color.
-ul.dropdown-menu > li > a > i.fa {
-    color: $color-slack;
-}
-
-@mixin color-badge($fg, $bg) {
-    color: $fg;
-    background-color: lighten($bg, 35%);
-    border: 1px solid $bg;
-    letter-spacing: 0.03em;
-    padding: 4px 6px;
-    font-weight: 400;
-    border-radius: 2px;
-}
-
-.badge-turquoise { @include color-badge(#fff, $color-turquoise); }
-.badge-emerald { @include color-badge(#fff, $color-emerald); }
-.badge-amethyst { @include color-badge($color-slack, $color-amethyst); }
-.badge-asphalt { @include color-badge(#fff, $color-asphalt); }
-.badge-sea { @include color-badge(#fff, $color-sea); }
-.badge-nephritis { @include color-badge(#fff, $color-nephritis); }
-.badge-belize { @include color-badge(#fff, $color-belize); }
-.badge-wisteria { @include color-badge(#fff, $color-wisteria); }
-.badge-midnight { @include color-badge(#fff, $color-midnight); }
-.badge-sunflower { @include color-badge($color-slack, $color-sunflower); }
-.badge-orange { @include color-badge(#fff, $color-orange); }
-.badge-carrot { @include color-badge(#fff, $color-carrot); }
-.badge-pumpkin { @include color-badge(#fff, $color-pumpkin); }
-.badge-alizarin { @include color-badge(#fff, $color-alizarin); }
-.badge-pomegranate { @include color-badge(#fff, $color-pomegranate); }
-.badge-concrete { @include color-badge(#fff, $color-concrete); }
-.badge-asbestos { @include color-badge(#fff, $color-asbestos); }
-
-.badge-river {
-    @include color-badge($color-grey-blue, $color-river);
-
-    // Custom overrides for better visibility.
-    border-color: lighten($color-river, 25%);
-}
-
-// BS3 compatible.
-.badge-red { @include color-badge($background-color, $brand-danger); }
-.badge-blue { @include color-badge($background-color, $brand-primary); }
-.badge-green { @include color-badge($background-color, $brand-success); }
-.badge-yellow { @include color-badge($foreground-color, $color-sunflower); }
-
-// Border-less table.
-.table-no-border > thead > tr> th,
-.table-no-border > tbody > tr> th,
-.table-no-border > tfoot > tr> th,
-.table-no-border > thead > tr> td,
-.table-no-border > tbody > tr> td,
-.table-no-border > tfoot > tr> td {
-    border-top: none;
-}
-
-.table-width-auto {
-    width: auto !important;
-}
-
-/*
- * Cross-browser support shortcuts.
- */
-@mixin x-browser-filter($val) {
-    -webkit-filter: $val;
-    -moz-filter: $val;
-    -o-filter: $val;
-    -ms-filter: $val;
-    filter: $val;
-}
-
-@mixin x-browser-border-radius($val) {
-    -webkit-border-radius: $val;
-    -moz-border-radius: $val;
-    border-radius: $val;
-}
-
-@mixin x-browser-transform($val) {
-    -webkit-transform: rotate($val);
-    -ms-transform: rotate($val);
-    -o-transform: rotate($val);
-    -moz-transform: rotate($val);
-    transform: rotate($val);
-}
-
-@mixin x-browser-animation($val) {
-    -webkit-animation: $val;
-    -moz-animation: $val;
-    -o-animation: $val;
-    animation: $val;
-}
-
-@mixin x-browser-background-clip($val) {
-    -webkit-background-clip: $val;
-    -moz-background-clip: $val;
-    -o-background-clip: $val;
-    -ms-background-clip: $val;
-    background-clip: $val;
-}
-
-@mixin x-browser-fill-color($val) {
-    -webkit-text-fill-color: $val;
-    -moz-text-fill-color: $val;
-    -o-text-fill-color: $val;
-    -ms-text-fill-color: $val;
-    text-fill-color: $val;
-}
-
-@mixin x-browser-box-shadow($val) {
-    -webkit-box-shadow: $val;
-    -moz-box-shadow: $val;
-    -o-box-shadow: $val;
-    box-shadow: $val;
-}
-
-.btn-group.open .dropdown-toggle,
-.btn-group.open .dropdown-toggle:hover,
-.btn-group.open .dropdown-toggle:visited,
-.btn-group.open .dropdown-toggle:active {
-    @include x-browser-box-shadow(none);
-}
-
-.btn,
-.btn:active,
-.btn.active,
-.btn:hover {
-    @include x-browser-box-shadow(none);
-}
-
-.btn-default,
-.btn-default:active,
-.btn-default.active,
-.btn-default:hover {
-    @include x-browser-box-shadow(none);
-}
-
-.btn-sm, .btn {
-    border-radius: 2px;
-}
-
-.btn-link:hover, .btn-link:focus, a:hover, a:focus {
-    text-decoration: inherit;
-}
-
-$bq-info-bg-color: #f4f8fa;
-$bq-info-border-color: #5bc0de;
-
-$bq-warn-bg-color: #faf8f0;
-$bq-warn-border-color: $color-sunflower;
-
-$bq-error-bg-color: #eed3d7;
-$bq-error-border-color: #fdf7f7;
-
-$bq-success-bg-color: #F5FDF2;
-$bq-success-border-color: $brand-success;
-
-.bq {
-    &.info {
-        color: $color-grey-blue;
-        background-color: $bq-info-bg-color;
-        border-color: darken($bq-info-bg-color, 5%);
-        border-left-color: $bq-info-border-color;
-    }
-
-    &.warn {
-        color: $color-slack;
-        background-color: $bq-warn-bg-color;
-        border-color: darken($bq-warn-bg-color, 5%);
-        border-left-color: $bq-warn-border-color;
-    }
-
-    &.error {
-        background-color: $bq-error-bg-color;
-        border-color: darken($bq-error-bg-color, 5%);
-        border-left-color: $bq-error-border-color;
-    }
-
-    &.success {
-        background-color: $bq-success-bg-color;
-        border-color: darken($bq-success-bg-color, 5%);
-        border-left-color: $bq-success-border-color;
-    }
-
-    margin: 20px 0;
-    padding: 15px 20px;
-    border-left: 3px solid #eee;
-
-    & > p,
-    & > ul {
-        margin: 0;
-    }
-
-    & > p:not(:nth-child(1)) {
-        margin-top: 10px;
-    }
-
-    & > p {
-        letter-spacing: 0.05em;
-    }
-
-    i.fas.fa-lightbulb {
-        padding-right: 5px;
-        color: $bq-success-border-color;
-    }
-}
-
-.gradient-table {
-    margin-top: 0;
-    border-collapse: collapse;
-    border-radius: 2px;
-    overflow: auto;
-    margin-bottom: 1rem;
-
-    & > thead {
-        background: linear-gradient(141deg, #6980fa 0%, #2cb5e8 51%, #4298fc 75%) fixed;
-        color: #fff;
-    }
-
-    & > thead > tr > th {
-        text-align: left;
-        border-bottom: 1px solid #eee;
-    }
-
-    & > thead > tr > th,
-    & > tbody > tr > th,
-    & > tfoot > tr > th {
-        padding: 8px;
-        font-size: 15px;
-        font-weight: 500;
-        color: #fff;
-    }
-
-    & > thead > tr > td,
-    & > tbody > tr > td,
-    & > tfoot > tr > td {
-        padding: 8px;
-        letter-spacing: 0.02em;
-        font-weight: 400;
-        border-bottom: 1px solid #eee;
-        vertical-align: top;
-    }
-
-    & > tbody > tr {
-        &:hover {
-            background-color: #fafafa;
-        }
-
-        td:last-child {
-            border-right: 1px solid #eee;
-        }
-
-        td:first-child {
-            border-left: 1px solid #eee;
-        }
-    }
-
-}
-
-.max-width {
-    width: 100%;
-}
-a[target=javadoc] {
-    font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
-    font-size: 87.5%;
-    word-break: keep-all;
-    white-space: nowrap !important;
-}
-
-pre.console {
-    border: 1px solid #dedede;
-    border-radius: 4px;
-    padding: 25px 30px 0 30px;
-}
-
-code {
-    white-space: nowrap !important;
-    color: #C0392B;
-
-    i {
-        font-style: normal;
-        border: 1px solid $color-sunflower;
-        padding: 0 2px;
-        color: #000;
-        background: $color-sunflower;
-    }
-
-    b {
-        color: $color-wisteria;
-    }
-}
-
-.side-nav {
-    a.active {
-        border-right: 3px solid $color-orange !important;
-        color: #369 !important;
-    }
-}
-
-.complexity-one-star {
-    i {
-        color: $color-nephritis;
-    }
-}
-.complexity-two-star {
-    i {
-        color: $color-river;
-    }
-}
-
-
-
diff --git a/_scss/server-and-probes.scss b/_scss/server-and-probes.scss
deleted file mode 100644
index 0cfbce6..0000000
--- a/_scss/server-and-probes.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#server-and-probes {
-    table.props-tbl {
-        td {
-            vertical-align: top;
-        }
-    }
-}
diff --git a/_scss/sh.scss b/_scss/sh.scss
deleted file mode 100644
index a9125be..0000000
--- a/_scss/sh.scss
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-.syntaxhighlighter {
-    padding: 15px 0;
-    font-size: 95% !important;
-    border-radius: 2px !important;
-    overflow-y: hidden !important;
-    overflow-x: auto !important;
-
-    .toolbar {
-        display: none;
-    }
-}
-
-.syntaxhighlighter table td.gutter .line {
-    text-align: right !important;
-    padding: 1px 0.5em 1px 1em !important;
-}
-.syntaxhighlighter table td.code .line {
-    padding: 1px 1em !important;
-}
-
-.syntaxhighlighter a,
-.syntaxhighlighter div,
-.syntaxhighlighter code,
-.syntaxhighlighter table,
-.syntaxhighlighter table td,
-.syntaxhighlighter table tr,
-.syntaxhighlighter table tbody,
-.syntaxhighlighter table thead,
-.syntaxhighlighter table caption,
-.syntaxhighlighter textarea {
-    vertical-align: bottom !important;
-}
\ No newline at end of file
diff --git a/_scss/three-cols.scss b/_scss/three-cols.scss
deleted file mode 100644
index 759d076..0000000
--- a/_scss/three-cols.scss
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-.first-column {
-    ul.side-nav {
-        list-style: none;
-        margin: 0 0 20px 0;
-        padding: 0;
-
-        li.side-nav-title {
-            margin-top: 5px;
-            display: block;
-            font-size: 1.1rem;
-            color: #303e4c;
-            font-weight: 500;
-
-            &:not(:first-child) {
-                margin-top: 25px !important;
-            }
-        }
-
-        li:not(.side-nav-title) {
-            margin-left: 10px;
-        }
-
-        li {
-            padding: 3px 10px 3px 0;
-            display: block;
-            text-align: left;
-
-            a {
-                color: #999;
-                text-align: left;
-                width: 100%;
-                padding-right: 20px;
-                border-right: 1px solid white;
-
-                &:hover {
-                    cursor: pointer;
-                    text-decoration: none;
-                    color: #369;
-                    border-right: 3px solid $color-beta;
-                }
-            }
-        }
-    }
-}
-
-.second-column {
-    padding-right: 40px;
-    
-    section {
-        .section-title {
-            color: $color-slack2;
-            font-weight: 500;
-            margin-top: 0;
-            border-bottom: 1px solid #dfdfdf;
-            display: inline-block;
-            margin-bottom: 20px;
-            font-size: 150%;
-        }
-
-        .section-sub-title {
-            color: $color-slack2;
-            font-weight: 700;
-            margin-top: 0;
-            display: block;
-            font-size: 110%;
-            margin-bottom: 5px;
-        }
-
-        figure {
-            margin: 15px 0;
-
-            img {
-                display: block;
-                border: 1px solid #dfdfdf;
-                border-radius: 4px;
-                padding: 30px;
-            }
-
-            figcaption {
-                font-size: 80%;
-                text-align: left;
-                margin-top: 5px;
-            }
-        }
-
-        figure.alt {
-            margin: 15px 0;
-
-            img {
-                display: block;
-                border-radius: 4px;
-                padding: 0;
-                border: none;
-            }
-
-            figcaption {
-                font-size: 80%;
-                text-align: left;
-                margin-top: 5px;
-            }
-        }
-
-        dl {
-            margin-top: 10px;
-            margin-left: 20px;
-
-            dd {
-                margin-bottom: 10px;
-                margin-left: 20px;
-            }
-        }
-
-        div.bq {
-
-            h4 {
-                margin: 0 0 10px 0 !important;
-            }
-
-            p, li {
-                width: 100% !important;
-            }
-        }
-
-        margin-bottom: 35px;
-
-        p, li {
-            letter-spacing: 0.02em;
-        }
-    }
-    
-    section:last-child {
-        margin-bottom: 60px;
-    }
-}
-
-.third-column {
-    ul.side-nav {
-        list-style: none;
-        margin: 0 0 20px 0;
-        padding: 0 0 0 10px;
-        border-left: 1px solid #dfdfdf;
-
-        li.side-nav-title {
-            margin-top: 5px;
-            display: block;
-            font-size: 1.1rem;
-            color: #303e4c;
-            font-weight: 500;
-
-            &:not(:first-child) {
-                margin-top: 25px !important;
-            }
-        }
-
-        li:not(.side-nav-title) {
-            margin-left: 10px;
-        }
-
-        li {
-            padding: 3px 10px 3px 0;
-            display: block;
-            text-align: left;
-
-            a {
-                color: #999;
-                text-align: left;
-                width: 100%;
-                padding-right: 20px;
-                border-right: 1px solid white;
-
-                &:hover {
-                    cursor: pointer;
-                    text-decoration: none;
-                    color: #369;
-                    border-right: 3px solid $color-beta;
-                }
-            }
-        }
-    }
-}
-
-ul.side-nav {
-    & img.quick-link-img {
-        height: 16px;
-        vertical-align: text-top;
-    }
-
-    i.fa-download {
-        font-size: 90%;
-        color: $color-turquoise;
-    }
-}
-
-li.side-nav-title:after {
-    font-size: 75%;
-    content: "\f105";
-    padding-left: 5px;
-    font-family: "Font Awesome\ 5 Free", serif;
-    font-style: normal;
-    font-weight: 700;
-}
-
-.three-cols-container {
-    margin: 12px 0 72px 0;
-    display: flex;
-}
diff --git a/_scss/use-cases.scss b/_scss/use-cases.scss
deleted file mode 100644
index cc7a9bb..0000000
--- a/_scss/use-cases.scss
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#use-cases {
-    .container-fluid {
-        padding: 0 !important;
-
-        .row {
-            margin-bottom: 30px;
-        }
-    }
-
-    .two-col-section {
-        padding: 0;
-        letter-spacing: 0.02em;
-
-        .sub-section-title {
-            margin: 0 0 10px 0;
-            font-size: 20px;
-            letter-spacing: 0.02em;
-            font-weight: 700;
-            display: block;
-            color: $color-slack2;
-        }
-
-        &:last-child {
-            margin-bottom: 60px;
-        }
-    }
-}
\ No newline at end of file
diff --git a/assets/css/style.css b/assets/css/style.css
new file mode 100644
index 0000000..d391b35
--- /dev/null
+++ b/assets/css/style.css
@@ -0,0 +1 @@
+@font-face{font-family:'CanaroBlack';src:url("../../fonts/rene_bieder_-_canaro_black-webfont.eot");src:url("../../fonts/rene_bieder_-_canaro_black-webfont.eot?#iefix") format("embedded-opentype"),url("../../fonts/rene_bieder_-_canaro_black-webfont.woff") format("woff"),url("../../fonts/rene_bieder_-_canaro_black-webfont.ttf") format("truetype"),url("../../fonts/rene_bieder_-_canaro_black-webfont.svg#canaroblack") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:' [...]
diff --git a/assets/css/style.scss b/assets/css/style.scss
deleted file mode 100644
index 70d8461..0000000
--- a/assets/css/style.scss
+++ /dev/null
@@ -1,67 +0,0 @@
----
----
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * Constants.
- * ----------
- */
-$font-size: 14px;
-$default-font: "Helvetica Neue";
-
-@import 'fonts';
-@import 'colors';
-@import 'misc';
-@import 'header';
-@import 'footer';
-@import 'sh';
-@import 'index';
-@import '404';
-@import 'buttons';
-@import 'download';
-@import 'three-cols';
-@import 'basic-concepts';
-@import 'use-cases';
-@import 'server-and-probes';
-@import 'metrics-and-tracing';
-@import 'integrations';
-@import 'community';
-
-html {
-    position: relative;
-    min-height: 100%;
-    height: 100%;
-}
-
-body {
-    background-color: $background-color;
-    color: $foreground-color;
-    min-height: 100%;
-    height: 100%;
-}
-
-em.high {
-    font-style: normal;
-    padding: 2px 4px 3px 4px;
-    background-color: #d36da6;
-    color: #fff;
-    border-radius: 1px;
-}
-
-
diff --git a/basic-concepts.html b/basic-concepts.html
index eef8e61..e78ed39 100644
--- a/basic-concepts.html
+++ b/basic-concepts.html
@@ -1,9 +1,3 @@
----
-active_crumb: Basic Concepts
-layout: documentation
-id: basic_concepts
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,240 +15,4 @@ id: basic_concepts
  limitations under the License.
 -->
 
-<div id="basic-concepts" class="col-md-8 second-column">
-    <section id="overview">
-        <h2 class="section-title">Basic Concepts</h2>
-        <p>
-            Below we’ll cover some of the key concepts that are important for NLPCraft:
-        </p>
-        <ul>
-            <li><a href="#model">Data Model</a></li>
-            <li><a href="#ne">Named Entities</a></li>
-            <li><a href="#intent">Intent Matching</a></li>
-            <li><a href="#stm">Conversation <span class="amp">&amp;</span> STM</a></li>
-        </ul>
-    </section>
-    <section id="model">
-        <h3 class="section-sub-title">Data Model</h3>
-        <p>
-            Data model is a central concept in NLPCraft. It defines natural language interface to your public or
-            private data sources like on-premise database or a cloud SaaS application.
-            NLPCraft employs <em>model-as-a-code</em> approach where entire data model is
-            an implementation of <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a>
-            interface which can be developed using any JVM programming language like Java, Scala, Kotlin, or Groovy.
-        </p>
-        <p>
-            A data model defines:
-        </p>
-        <ul>
-            <li>Set of model <a href="data-model.html">elements</a> (a.k.a. <em>named entities</em>) to be detected in the user input.</li>
-            <li>How to query a particular data source based on detected named entities.</li>
-            <li>Common model configuration and <a href="data-model.html">life-cycle</a> callbacks.</li>
-        </ul>
-        <p>
-            Note that model-as-a-code approach allows you to use any software lifecycle tools and
-            frameworks like various build tools, CI/SCM tools, IDEs, etc. to develop and maintain your data model.
-            You don't have to use additional web-based tools to manage some aspects of your
-            data models - your entire model and all of its components are part of your project source code.
-        </p>
-        <p>
-            Read more about data models <a href="data-model.html">here</a>.
-        </p>
-    </section>
-    <section id="ne">
-        <h3 class="section-sub-title">Named Entities</h3>
-        <p>
-            Named entity, also known as a model element or a token, is main a component defined by the NLPCraft data model. A named
-            entity is one or more individual words that have a consistent semantic meaning and typically denote a
-            real-world object, such as persons, locations, number, date and time, organizations, products, etc. Such
-            object can be abstract or have a physical existence.
-        </p>
-        <p>
-            For example, in the following sentence:
-        </p>
-        <p>
-            <i class="fa fa-fw fa-angle-right"></i><code>Meeting is set for 12pm today in San Francisco.</code>
-        </p>
-        <p>
-            the following named entities can be detected:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Words</th>
-                <th>Type</th>
-                <th>Normalized Value</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code>Meeting</code></td>
-                <td>CUSTOM_OBJ</td>
-                <td>meeting</td>
-            </tr>
-            <tr>
-                <td><code>set</code></td>
-                <td>CUSTOM_ACT</td>
-                <td>set</td>
-            </tr>
-            <tr>
-                <td><code>12pm today</code></td>
-                <td>DATE_TIME</td>
-                <td>12:00 September 1, 2019 GMT</td>
-            </tr>
-            <tr>
-                <td><code>San Francisco</code></td>
-                <td>GEO_CITY</td>
-                <td>San Francisco, CA USA</td>
-            </tr>
-            </tbody>
-        </table>
-        <p>
-            In most cases named entities will have associated <em>normalized value</em>. It is especially important for named entities that have many
-            different notational forms such as time and date, currency, geographical locations, etc. For example, <code>New York</code>,
-            <code>New York City</code> and <code>NYC</code> all refer to the same "New York City, NY USA" location which is a valid normalized form.
-        </p>
-        <p>
-            The process of detecting named entities is called Named Entity Recognition (NER). There are many
-            different ways of how a certain named entity can be detected: through list of synonyms, by name, rule-based or by using
-            statistical techniques like neural networks with large corpus of predefined data. NLPCraft allows you define
-            named entities through powerful DSL and also supports named entities that can be composed from other named entities
-            including named entities from external projects such OpenNLP, spaCy or Stanford CoreNLP.
-        </p>
-        <p>
-            Named entities allow you to abstract from basic linguistic forms like nouns and verbs to deal with the higher level semantic
-            abstractions like geographical location or time when you are trying to understand the meaning of the sentence.
-            One of the main goals of named entities is to act as an input ingredients for intent matching.
-        </p>
-        <p>
-            Read more in-depth about named entities <a href="data-model.html">here</a>.
-        </p>
-    </section>
-    <section id="intent">
-        <h3 class="section-sub-title">Intent Matching</h3>
-        <p>
-            You can think of intent matching as regular expression matching where instead of characters you deal with detected named entities.
-            Intent defines a pattern in terms of detected named entities (or tokens) and a callback to call when submitted sentence
-            matches that pattern.
-        </p>
-        <p>
-            Intents can also match on the <em>dialog flow</em> additionally to the matching on the current user sentence.
-            Dialog flow matching means matching an intent based on what intents were matched previously for the same user
-            and data model, i.e. the flow of the dialog. Note that you should not confuse dialog flow intent matching with
-            conversational STM that is used to fill in missing tokens from memory.
-        </p>
-        <div class="bq success">
-            <p>
-                You can think of NLPCraft data model as a mechanism to define named entities and intents that use
-                these named entities to pattern match the user input.
-            </p>
-        </div>
-        <p>
-            Learn more details about intent matching <a href="intent-matching.html">here</a>.
-        </p>
-    </section>
-    <section id="stm">
-        <h3 class="section-sub-title">Conversation <span class="amp">&amp;</span> STM</h3>
-        <p>
-            NLPCraft provides automatic conversation management right out of the box.
-            Conversation management is based on the idea of short-term-memory (STM). STM is automatically
-            maintained by NLPCraft per each user and data model. Essentially, NLPCraft "remembers"
-            the context of the conversation and can supply the currently missing elements from its memory (i.e. from STM).
-            STM implementation is also fully integrated with intent matching.
-        </p>
-        <p>
-            Maintaining conversation state is necessary for effective context resolution, so that users
-            could ask, for example, the following sequence of questions using example weather model:
-        </p>
-        <dl class="stm-example">
-            <dd><i class="fa fa-fw fa-angle-right"></i>What’s the weather in London today?</dd>
-            <dt>
-                <p>
-                    User gets the current London’s weather.
-                    STM is empty at this moment so NLPCraft expects to get all necessary information from
-                    the user sentence. Meaningful parts of the sentence get stored in STM.
-                </p>
-                <div class="stm-state">
-                    <div class="stm">
-                        <label>STM Before:</label>
-                        <span>&nbsp;</span>
-                    </div>
-                    <div class="stm">
-                        <label>STM After:</label>
-                        <span>weather</span>
-                        <span>London</span>
-                        <span>today</span>
-                    </div>
-                </div>
-            </dt>
-            <dd><i class="fa fa-fw fa-angle-right"></i>And what about Berlin?</dd>
-            <dt>
-                <p>
-                    User gets the current Berlin’s weather.
-                    The only useful data in the user sentence is name of the city <code>Berlin</code>. But since
-                    NLPCraft now has data from the previous question in its STM it can safely deduce that we
-                    are asking about <code>weather</code> for <code>today</code>.
-                    <code>Berlin</code> overrides <code>London</code> in STM.
-                </p>
-                <div class="stm-state">
-                    <div class="stm">
-                        <label>STM Before:</label>
-                        <span>weather</span>
-                        <span>London</span>
-                        <span>today</span>
-                    </div>
-                    <div class="stm">
-                        <label>STM After:</label>
-                        <span>weather</span>
-                        <span><b>Berlin</b></span>
-                        <span>today</span>
-                    </div>
-                </div>
-            </dt>
-            <dd><i class="fa fa-fw fa-angle-right"></i>Next week forecast?</dd>
-            <dt>
-                <p>
-                    User gets the next week forecast for Berlin.
-                    Again, the only useful data in the user sentence is <code>next week</code> and <code>forecast</code>.
-                    STM supplies <code>Berlin</code>. <code>Next week</code> override <code>today</code>, and
-                    <code>forecast</code> override <code>weather</code> in STM.
-                </p>
-                <div class="stm-state">
-                    <div class="stm">
-                        <label>STM Before:</label>
-                        <span>weather</span>
-                        <span>Berlin</span>
-                        <span>today</span>
-                    </div>
-                    <div class="stm">
-                        <label>STM After:</label>
-                        <span><b>forecast</b></span>
-                        <span>Berlin</span>
-                        <span><b>Next week</b></span>
-                    </div>
-                </div>
-            </dt>
-        </dl>
-        <p>
-            Note that STM is maintained per user and per data model.
-            Conversation management implementation is also smart enough to clear STM after certain
-            period of time, i.e. it “forgets” the conversational context after few minutes of inactivity.
-            Note also that conversational context can also be cleared explicitly
-            via <a href="https://nlpcraft.docs.apiary.io" target="apiary">REST API</a>.
-        </p>
-    </section>
-</div>
-<div class="col-md-2 third-column">
-    <ul class="side-nav">
-        <li class="side-nav-title">On This Page</li>
-        <li><a href="#model">Data Model</a></li>
-        <li><a href="#ne">Named Entities</a></li>
-        <li><a href="#intent">Intent Matching</a></li>
-        <li><a href="#stm">Conversation <span class="amp">&amp;</span> STM</a></li>
-        {% include quick-links.html %}
-    </ul>
-</div>
-
-
-
-
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
diff --git a/community.html b/community.html
index c8f67da..e2054ba 100644
--- a/community.html
+++ b/community.html
@@ -1,8 +1,3 @@
----
-active_crumb: Community
-layout: interior
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -20,137 +15,7 @@ layout: interior
  limitations under the License.
 -->
 
-<h1 class="page-title">
-    <span><i class="fas fa-fw fa-users"></i> {{ page.active_crumb }}</span>
-</h1>
-
-<div id="community" class="three-cols-container">
-    <div class="col-md-2 first-column">
-        <ul class="side-nav">
-            <li class="side-nav-title">Introduction</li>
-            <li><a href="/docs.html">Overview</a></li>
-            <li><a href="/installation.html">Installation</a></li>
-            <li><a href="/getting-started.html">Getting Started</a></li>
-        </ul>
-    </div>
-    <div class="col-md-8 second-column">
-        <section id="start">
-            <h2 class="section-title">Start Contributing</h2>
-            <p>
-                Before you get involved in Apache NLPCraft development, please sign up to the
-                dev mailing list by sending an empty email to <a href="mailto:dev-subscribe@nlpcraft.apache.org">dev-subscribe@nlpcraft.apache.org</a>
-                and follow simple instructions in the reply. Once subscribed, say "Hello" to everyone in the community.
-                Tell us as much as you can about your areas of expertise mentioning how exactly you would like to
-                contribute. We are a friendly and inclusive community and will try to simplify your "onboarding"
-                considering your strengths or areas of interest.
-            </p>
-            <p>
-                Also, make sure to share your JIRA ID in the same email (create
-                a <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT">new one</a> if you don't have an ASF JIRA account yet).
-                One of our community members will add you to the contributors' list and you will be able to
-                go ahead and book NLPCraft tasks you would like to work on.
-            </p>
-            <h3 class="section-sub-title">Dev List</h3>
-            <p>
-                This list is the primary and the default communication channel: <a href="mailto:dev@nlpcraft.apache.org">dev@nlpcraft.apache.org</a>
-            </p>
-            <p>
-                Send an email to <a href="mailto:dev-subscribe@nlpcraft.apache.org">dev-subscribe@nlpcraft.apache.org</a>
-                to subscribe to the list. If you are an ASF committer, then it's better to use your <code>@apache.org</code>
-                address for NLPCraft communications.
-            </p>
-            <p>
-                All the discussions related to contributions, changes, new ideas have to be started on the dev list
-                first. Remember the mantra - <b>"If it's not on the dev list, it didn't happen".</b> The project is
-                being developed and moved forward by individuals living across the globe and speaking different
-                languages. Thus, <a target="asf" href="https://www.apache.org/foundation/how-it-works.html#communication">asynchronous written communication</a>
-                is a preferred way of engagement at ASF as well as within the NLPCraft community.
-            </p>
-            <p>
-                For the sake of openness, speed and transparency, the community members are free to use Slack, Gitter, Skype or
-                meet via the tools like Google Meeting. But, as mentioned above, if any conversation took place between
-                contributors using channels like Slack, a summary of the discussion/decision has to be shared via the
-                dev list letting other contributors share their opinions. As a summary, final decisions are made only
-                on the dev list.
-            </p>
-            <h3 class="section-sub-title">Contribution Process</h3>
-            <p>
-                Before you start contributing, spend some time to get to know how <a target="asf" href="https://apache.org/foundation/how-it-works.html">Apache Software Foundation</a>
-                works and <a target="asf" href="http://www.apache.org/theapacheway/index.html">The Apache Way</a> that helps
-                us, as a group of professionals, drive the project forward in a respectful and inclusive way.
-            </p>
-            <h3 class="section-sub-title">JIRA Tickets</h3>
-            <p>
-                <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues">NLPCraft JIRA</a>
-                drives all activities in the project. Any tasks, of any complexity, for any component
-                in the main project or satellite projects has corresponding ticket in JIRA.
-            </p>
-            <p>
-                Before you can start contributing you need to pick an unassigned ticket and assign to yourself. Look
-                through all tickets paying attention to
-                <a target="jira" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20NLPCRAFT%20AND%20status%20%3D%20Open%20AND%20labels%20%3D%20newbie%20AND%20assignee%20in%20(EMPTY)">unassigned tickets with label <code>newbie</code></a>
-                suited for the quick start.
-                Still haven't found anything suitable? As always, check the latest discussions on <a target="asf" href="https://mail-archives.apache.org/mod_mbox/nlpcraft-dev/">dev@nlpcraft.apache.org</a>
-            </p>
-            <h3 class="section-sub-title">Git Workflow</h3>
-            <p>
-                NLPCraft project uses Git as its version control system. The same Git workflow rules apply to all
-                sub-projects.
-            </p>
-            <p>ASF GitBox repos (committers only):</p>
-            <ul>
-                <li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft">https://git.apache.org/repos/asf/incubator-nlpcraft</a></li>
-                <li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft-java-client">https://git.apache.org/repos/asf/incubator-nlpcraft-java-client</a></li>
-                <li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft-ui">https://git.apache.org/repos/asf/incubator-nlpcraft-ui</a></li>
-            </ul>
-            <p>
-                GitHub mirrors (contributors pull-requests):
-            </p>
-            <ul>
-                <li><a target="github" href="https://github.com/apache/incubator-nlpcraft">https://github.com/apache/incubator-nlpcraft</a></li>
-                <li><a target="github" href="https://github.com/apache/incubator-nlpcraft-java-client">https://github.com/apache/incubator-nlpcraft-java-client</a></li>
-                <li><a target="github" href="https://github.com/apache/incubator-nlpcraft-ui">https://github.com/apache/incubator-nlpcraft-ui</a></li>
-            </ul>
-            <p>General Git workflow rules:</p>
-            <ul>
-                <li>
-                    <code>master</code> branch represents latest released version (i.e. the latest release).
-                    <ul>
-                        <li>
-                            Each release has corresponding Git tag.
-                        </li>
-                    </ul>
-                </li>
-                <li>
-                    <code>release</code> branch represent a root branch for the current release that is under development.
-                    <ul>
-                        <li>
-                            During release the <code>release</code> branch gets merged to <code>master</code>, Git tag
-                            is created and work on the next release continues with <code>release</code> branch.
-                        </li>
-                        <li>
-                            <code>master</code> branch gets updated <b>only</b> during release process.
-                        </li>
-                    </ul>
-                </li>
-                <li>
-                    Committers use feature branches for their work, while contributors use pull-requests from GitHub mirror.
-                    <ul>
-                        <li>
-                            Feature branches should be named after their JIRA tickets, i.e. for ticket <code>NLPCRAFT-012</code>
-                            the branch should be named <code>NLPCRAFT-012</code>.
-                        </li>
-                    </ul>
-                </li>
-                <li>
-                    Committers create feature branches off the <code>release</code> branch.
-                </li>
-                <li>
-                    Merging should use Git <code>squashing</code> to minimize number of intermittent commits.
-                </li>
-            </ul>
-            <h3 class="section-sub-title">Creating GitHub Pull-Request</h3>
-            <pre>
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
 +------------+             +---------------+            +-----------------+
 |            |   replica   |               |    fork    |                 |
 | Apache Git | ==========> | GitHub Mirror | ---------> | John Doe's Fork |
@@ -166,228 +31,9 @@ layout: interior
        +------------------------------------------------|   Local clone   |
                                                         |                 |
                                                         +-----------------+
-            </pre>
-            <p>To start:</p>
-            <ul>
-                <li>
-                    Create a local fork of Apache NLPCraft mirror on GitHub.
-                    <ul>
-                        <li>
-                            Your remote origin will refer to
-                            <code>https://github.com/&lt;your_github_username&gt;/incubator-nlpcraft.git</code> (assuming the main project).
-                        </li>
-                    </ul>
-                </li>
-                <li>
-                    You will need to regularly update local <code>master</code> to merge up upstream changes:
-                    <ul>
-                        <li>
-                            Add remote for Apache NLPCraft mirror as a remote (you need to do it <b>once</b>):
-                            <pre class="brush: plain">
+            </pre><p>To start:</p><ul><li> Create a local fork of Apache NLPCraft mirror on GitHub.<ul><li> Your remote origin will refer to <code>https://github.com/&lt;your_github_username&gt;/incubator-nlpcraft.git</code> (assuming the main project).</ul><li> You will need to regularly update local <code>master</code> to merge up upstream changes:<ul><li> Add remote for Apache NLPCraft mirror as a remote (you need to do it <b>once</b>):<pre class="brush: plain">
                                 git remote add upstream https://github.com/apache/incubator-nlpcraft.git
-                            </pre>
-                        </li>
-                        <li>
-                            Each time when you want to update your local <code>master</code> do the following:
-                            <pre class="brush: plain">
+                            </pre><li> Each time when you want to update your local <code>master</code> do the following:<pre class="brush: plain">
                                 git pull upstream
                                 git checkout release
-                            </pre>
-                        </li>
-                    </ul>
-                    <div class="bq info">
-                        <p><b>Branch Naming in Forks</b></p>
-                        <p>
-                            Note that you can use any naming scheme for the branches in your local forks (i.e. you can work
-                            in <code>master</code> branch in your local fork). However, when you up-merge from the GitHub
-                            mirror you need to make sure to use <code>release</code> branch to get the latest work-in-progress
-                            from the upstream.
-                        </p>
-                    </div>
-                </li>
-            </ul>
-            <p>To make the contribution:</p>
-            <ul>
-                <li>
-                    Fix or implement JIRA ticket in your fork. Provide JavaDocs or ScalaDocs whenever required. If you
-                    add a new package make sure that <code>package-info.java</code> file in it is in place with a
-                    description. Double-check all publicly visible JavaDoc.
-                </li>
-                <li>
-                    Commit branch to your local fork.
-                </li>
-                <li>
-                    Create pull request from the new remote branch in your fork to <code>release</code> of
-                    Apache NLPCraft mirror. Please, start a title of the pull request from <code>NLPCRAFT-xxx</code>
-                    referring to the JIRA ticket this pull-request is related to. An email about the pull request
-                    will be send to dev-list and the same JIRA comment will be added to the NLPCRAFT-xxx ticket.
-                </li>
-                <li>
-                    Move a corresponding JIRA ticket to <code>Patch Available</code> state by clicking on
-                    <b>"Submit Patch"</b> button and let the community know that you're ready for review.
-                </li>
-            </ul>
-            <div class="bq info">
-                <p><b>Existing Pull-Requests</b></p>
-                <p>
-                    Existing pull request should be updated instead of creation of new one. Do not create more
-                    than one pull request for one issue.
-                </p>
-            </div>
-            <h3 class="section-sub-title">Become A Committer And PMC Member</h3>
-            <p>
-                We love contributions and gladly promote active contributors to committers and PMC members!
-                If you are new to Apache Software Foundation then NLPCraft will be an excellent starting point.
-            </p>
-            <p>
-                The most important point of becoming a committer for Apache projects is active participation
-                within the community. Being an active community member means participating in mailing list
-                discussions, helping to answer questions, being respectful towards others, and following the
-                meritocratic principles of community management.
-            </p>
-            <p>
-                Of course, code contributions are also important. Once you make a few code contributions, you will
-                become eligible to join NLPCraft committers, and possibly NLPCraft PMC. Candidates for new committers
-                or PMC members are suggested by the current committers, mentors, or PMC members, and then must be
-                approved by the PMC voting process.
-            </p>
-        </section>
-        <section id="pmc">
-            <h2 class="section-title">Committers <amp>&amp;</amp> PMC</h2>
-            <p>
-                Visit the <a target="github" href="https://github.com/apache/incubator-nlpcraft/graphs/contributors">Apache NLPCraft Contributors</a> page to
-                see a list of top contributors and committers for the main project.
-                The table below summarizes <a target="asf" href="http://people.apache.org/phonebook.html?podling=nlpcraft">committers and PMC members</a>
-                of Apache NLPCraft:
-            </p>
-            <table class="gradient-table checks">
-                <thead>
-                <tr>
-                    <th>Name</th>
-                    <th>Organization</th>
-                    <th>PMC Member?</th>
-                </tr>
-                </thead>
-                <tbody>
-                    <tr>
-                        <td>Aaron Radzinski</td>
-                        <td>DataLingvo</td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td>Dmitriy Monakhov</td>
-                        <td></td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td>Evans Ye</td>
-                        <td>Trend Micro</td>
-                        <td><center><i class="fas fa-check"></i></center></td>
-                    </tr>
-                    <tr>
-                        <td>Konstantin Boudnik</td>
-                        <td>Apache Software Foundation</td>
-                        <td><center><i class="fas fa-check-double"></i></center></td>
-                    </tr>
-                    <tr>
-                        <td>Dmitriy Monakhov</td>
-                        <td></td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td>Furkan Kamaci</td>
-                        <td></td>
-                        <td><center><i class="fas fa-check"></i></center></td>
-                    </tr>
-                    <tr>
-                        <td>Nikita Ivanov</td>
-                        <td>GridGain Systems, Apache Ignite</td>
-                        <td><center><i class="fas fa-check"></i></center></td>
-                    </tr>
-                    <tr>
-                        <td>Paul King</td>
-                        <td></td>
-                        <td><center><i class="fas fa-check"></i></center></td>
-                    </tr>
-                    <tr>
-                        <td>Roman Shaposhnik</td>
-                        <td>Pivotal</td>
-                        <td><center><i class="fas fa-check"></i></center></td>
-                    </tr>
-                    <tr>
-                        <td>Sergey Kamov</td>
-                        <td>DataLingvo</td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td>Sergey Makov</td>
-                        <td></td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td>Dave Fisher</td>
-                        <td></td>
-                        <td><center><i class="fas fa-check"></i></center></td>
-                    </tr>
-                </tbody>
-            </table>
-        </section>
-        <section id="resources">
-            <h2 class="section-title">Resources</h2>
-            <p>
-                There are many ways you can get help from Apache NLPCraft community. The mailing lists are the easiest
-                way to get answers or to get involved with the project.
-            </p>
-            <h3 class="section-title">Stack Overflow</h3>
-            <p>
-                NLPCraft community members watch Stack Overflow for the tag <code>nlpcraft</code> or "apachenlpcraft",
-                so you can post your questions there as well.
-            </p>
-            <h3 class="section-title">Mailing Lists</h3>
-            <ul>
-                <li>
-                    <a href="mailto:dev@nlpcraft.apache.org">dev@nlpcraft.apache.org</a> for contributor discussions
-                    (<a href="mailto:dev-subscribe@nlpcraft.apache.org">subscribe</a>,
-                    <a href="mailto:dev-unsubscribe@nlpcraft.apache.org">unsubscribe</a>,
-                    <a href="https://lists.apache.org/list.html?dev@nlpcraft.apache.org">archive</a>)
-                </li>
-                <li>
-                    <a href="mailto:commits@nlpcraft.apache.org">commits@nlpcraft.apache.org</a> for Git commits
-                    (<a href="mailto:commits-subscribe@nlpcraft.apache.org">subscribe</a>,
-                    <a href="mailto:commits-unsubscribe@nlpcraft.apache.org">unsubscribe</a>,
-                    <a href="https://lists.apache.org/list.html?commits@nlpcraft.apache.org">archive</a>)
-                </li>
-            </ul>
-            <h3 class="section-title">Git</h3>
-            <p>ASF GitBox repos (committers only):</p>
-            <ul>
-                <li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft">https://git.apache.org/repos/asf/incubator-nlpcraft</a></li>
-                <li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft-java-client">https://git.apache.org/repos/asf/incubator-nlpcraft-java-client</a></li>
-                <li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft-ui">https://git.apache.org/repos/asf/incubator-nlpcraft-ui</a></li>
-            </ul>
-            <p>
-                GitHub mirrors (contributors pull-requests):
-            </p>
-            <ul>
-                <li><a target="github" href="https://github.com/apache/incubator-nlpcraft">https://github.com/apache/incubator-nlpcraft</a></li>
-                <li><a target="github" href="https://github.com/apache/incubator-nlpcraft-java-client">https://github.com/apache/incubator-nlpcraft-java-client</a></li>
-                <li><a target="github" href="https://github.com/apache/incubator-nlpcraft-ui">https://github.com/apache/incubator-nlpcraft-ui</a></li>
-            </ul>
-            <h3 class="section-title">JIRA Issue Tracking</h3>
-            <p>
-                Visit <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues">NLPCraft Jira</a> if you would like to file a new issue or view existing
-                issues. If you would like to assign an issue to yourself and start contributing, please send an
-                email to the <a href="mailto:dev@nlpcraft.apache.org">dev list</a>, so you can be granted proper Jira permissions.
-            </p>
-        </section>
-    </div>
-    <div class="col-md-2 third-column">
-        <ul class="side-nav">
-            <li class="side-nav-title">On This Page</li>
-            <li><a href="#start">Start Contributing</a></li>
-            <li><a href="#pmc">Committers <amp>&amp;</amp> PMC</a></li>
-            <li><a href="#resources">Resources</a></li>
-            {% include quick-links.html %}
-        </ul>
-    </div>
-</div>
\ No newline at end of file
+                            </pre></ul><div class="bq info"><p><b>Branch Naming in Forks</b></p><p> Note that you can use any naming scheme for the branches in your local forks (i.e. you can work in <code>master</code> branch in your local fork). However, when you up-merge from the GitHub mirror you need to make sure to use <code>release</code> branch to get the latest work-in-progress from the upstream.</p></div></ul><p>To make the contribution:</p><ul><li> Fix or implement JIRA ticket  [...]
diff --git a/data-model.html b/data-model.html
index d2e3a56..2e80470 100644
--- a/data-model.html
+++ b/data-model.html
@@ -1,9 +1,3 @@
----
-active_crumb: Data Model
-layout: documentation
-id: data_model
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,246 +15,7 @@ id: data_model
  limitations under the License.
 -->
 
-<div class="col-md-8 second-column">
-    <section id="overview">
-        <h2 class="section-title">Model Overview</h2>
-        <p>
-            Data model is a central concept in NLPCraft defining interface to your data sources
-            like a database or a SaaS application.
-            NLPCraft employs <em>model-as-a-code</em> approach where entire data model is an implementation of
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a> interface which
-            can be developed using any JVM programming language like Java, Scala, Kotlin, or Groovy.
-        </p>
-        <p>
-            A data model defines:
-        </p>
-        <ul>
-            <li>Set of model <a href="#elements">elements</a> (a.k.a. named entities) to be detected in the user input.</li>
-            <li>Zero or more intent callbacks.</li>
-            <li>Common model configuration and various life-cycle callbacks.</li>
-        </ul>
-        <p>
-            Note that model-as-a-code approach natively supports any software life
-            cycle tools and frameworks like various build tools, CI/SCM tools, IDEs, etc.
-            You don't have to use additional web-based tools to manage some aspects of your
-            data models - your entire model and all of its components are part of your project source code.
-        </p>
-    </section>
-    <section id="dataflow">
-        <h2 class="section-title">Model Dataflow</h2>
-        <figure>
-            <img alt="data model dataflow" class="img-fluid" src="/images/homepage-fig1.1.png">
-            <figcaption><b>Fig 1.</b> NLPCraft Architecture</figcaption>
-        </figure>
-        <p>
-            User request starts with the user application (like a chatbot or NLI-based system) making a
-            REST call using <a href="/using-rest.html">NLPCraft REST API</a>. That REST call carries among
-            other things the input text and data model ID, and it arrives first to the REST server.
-        </p>
-        <p>
-            Upon receiving the user request, the REST server performs NLP pre-processing converting the input
-            text into a sequence of tokens and enriching them with additional information.
-        </p>
-        <p>
-            Once finished, the encrypted sequence of tokens is sent further down to the probe where the requested data model
-            is deployed.
-        </p>
-        <p>
-            Upon receiving that sequence of tokens, the data probe further
-            enriches it based on the user data model and matches it against declared intents. When a matching
-            intent is found its callback method is called and its result travels back from the data probe to the
-            REST server and eventually to the user that made the REST call.
-        </p>
-        <div class="bq info">
-            <p>
-                <b>Security <span class="amp">&</span> Isolation</b>
-            </p>
-            <p>
-                Note that in this architecture the user-defined data model is fully isolated from the REST server accepting
-                user calls. Users never access data probes and hence user data models directly. Typically REST server
-                should be deployed in DMZ and only ingress connectivity is necessary between REST server and the data probes.
-            </p>
-        </div>
-    </section>
-    <section id="lifecycle">
-        <h2 class="section-title">Model Lifecycle</h2>
-        <p>
-            Data model is an implementation of <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a> interface.
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a> interface has
-            defaults for most of its methods. These are the only methods that need to be implemented by its sub-class:
-        </p>
-        <ul>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getId--">getId()</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getName--">getName()</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getVersion--">getVersion()</a></li>
-        </ul>
-        <p>
-            You can either implement <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a>
-            interface directly or use one of the adapters (recommended in most cases):
-        </p>
-        <ul>
-            <li>
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelAdapter.html">NCModelAdapter</a> - when
-                entire model definition is in sub-class source code.
-            </li>
-            <li>
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelFileAdapter.html">NCModelFileAdapter</a> - when
-                using external JSON/YAML declaration for model definition.
-            </li>
-        </ul>
-        <p>
-            Note that you can also use 3rd party IoC frameworks like <a target=_ href="https://spring.io">Spring</a> to construct your data models. See
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelFactory.html">NCModelFactory</a> for more information.
-        </p>
-        <div class="bq success">
-            <p>
-                <b>Using Adapters</b>
-            </p>
-            <p>
-                It is recommended to use one of the adapter classes when defining your
-                own data model in the most uses cases.
-            </p>
-        </div>
-        <h3 class="section-title">Deployment</h3>
-        <p>
-            Data models get <a href="/server-and-probe.html">deployed</a> to and hosted by the data probes - a lightweight
-            container whose job is to host data models and securely transfer requests between REST server and the data
-            models. When a data probe starts it reads its <a href="/server-and-probe.html">configuration</a>
-            to see which models to deploy.
-        </p>
-        <p>
-            Note that data probes don't support hot-redeployment. To redeploy the data model you need to restart
-            the data probe. Note also that data probe can be started in embedded mode, i.e. it can be started
-            from within an existing JVM process like user application.
-        </p>
-        <h3 class="section-title">Callbacks</h3>
-        <p>
-            There are two callbacks on
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a> interface
-            (by way of extending <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCLifecycle.html">NCLifecycle</a> interface) that you can optionally override to affect the the default lifecycle behavior:
-        </p>
-        <ul>
-            <li>
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCLifecycle.html#onInit--">onInit()</a> - called
-                right after the model was loaded and deployed.
-            </li>
-            <li>
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCLifecycle.html#onDiscard--">onDiscard()</a> - called to
-                discard the data model when and only when data probe is orderly shutting down.
-            </li>
-        </ul>
-        <p>
-            Note that there are also several callbacks that you can override to affect model behavior
-            to perform logging, debugging, statistic or usage collection, explicit update or initialization of
-            conversation context, security audit or validation:
-        </p>
-        <ul>
-            <li>
-                <a target="javadoc"
-                   href="/apis/latest/org/apache/nlpcraft/model/NCModel.html#onParsedVariant-org.apache.nlpcraft.model.NCVariant-">onParsedVariant(...)</a>
-            </li>
-            <li>
-                <a target="javadoc"
-                   href="/apis/latest/org/apache/nlpcraft/model/NCModel.html#onContext-org.apache.nlpcraft.model.NCContext-">onContext(...)</a>
-            </li>
-            <li>
-                <a target="javadoc"
-                   href="/apis/latest/org/apache/nlpcraft/model/NCModel.html#onMatchedIntent-org.apache.nlpcraft.model.NCIntentMatch-">onMatchedIntent(...)</a>
-            </li>
-            <li>
-                <a target="javadoc"
-                   href="/apis/latest/org/apache/nlpcraft/model/NCModel.html#onResult-org.apache.nlpcraft.model.NCIntentMatch-org.apache.nlpcraft.model.NCResult-">onResult(...)</a>
-            </li>
-            <li>
-                <a target="javadoc"
-                   href="/apis/latest/org/apache/nlpcraft/model/NCModel.html#onError-org.apache.nlpcraft.model.NCContext-java.lang.Throwable-">onError(...)</a>
-            </li>
-            <li>
-                <a target="javadoc"
-                   href="/apis/latest/org/apache/nlpcraft/model/NCModel.html#onRejection-org.apache.nlpcraft.model.NCIntentMatch-org.apache.nlpcraft.model.NCRejection-">onRejection(...)</a>
-            </li>
-        </ul>
-        <div class="bq info">
-            <b>Conversation Reset</b>
-            <p>
-                Callbacks
-                <a target="javadoc"
-                   href="/apis/latest/org/apache/nlpcraft/model/NCModel.html#onContext-org.apache.nlpcraft.model.NCContext-">onContext(...)</a> and
-                <a target="javadoc"
-                   href="/apis/latest/org/apache/nlpcraft/model/NCModel.html#onMatchedIntent-org.apache.nlpcraft.model.NCIntentMatch-">onMatchedIntent(...)</a>
-                are especially handy to perform a soft reset on the conversation context. Read their Javadoc documentation
-                to understand these callbacks protocol.
-            </p>
-        </div>
-
-        <div class="bq info">
-            <b>Lifecycle Components</b>
-            <p>
-                Note that both the server and the probe provide their own lifecycle components support. When registered in
-                the probe or server configuration the lifecycle components will be called
-                during various stages of the probe or server startup or shutdown procedures. These callbacks can be used
-                to control lifecycle of external libraries and systems that the data probe or the server rely on, i.e.
-                <a href="metrics-and-tracing.html">OpenCensus exporters</a>,
-                security environment, devops hooks, etc.
-            </p>
-            <p>
-                See server and probe <a href="">configuration</a> as well as <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCProbeLifecycle.html">NCProbeLifecycle</a>
-                interface for more details.
-            </p>
-        </div>
-    </section>
-    <section id="config">
-        <h2 class="section-title">Model Configuration</h2>
-        <p>
-            Apart from mandatory model <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getId--">ID</a>,
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getName--">name</a> and
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getVersion--">version</a>
-            there is a number of static model configurations that you can set. All of these properties have sensible
-            defaults that you can override, when required, in either sub-classes or via external JSON/YAML declaration:
-        </p>
-        <ul>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getAdditionalStopWords--">getAdditionalStopWords</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getEnabledBuiltInTokens--">getEnabledBuiltInTokens</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getExamples--">getExamples</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getExcludedStopWords--">getExcludedStopWords</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getJiggleFactor--">getJiggleFactor</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMaxFreeWords--">getMaxFreeWords</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMaxSuspiciousWords--">getMaxSuspiciousWords</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMaxTokens--">getMaxTokens</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMaxTotalSynonyms--">getMaxTotalSynonyms</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMaxUnknownWords--">getMaxUnknownWords</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMaxWords--">getMaxWords</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMetadata--">getMetadata</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMinNonStopwords--">getMinNonStopwords</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMinTokens--">getMinTokens</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMinWords--">getMinWords</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getSuspiciousWords--">getSuspiciousWords</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#isDupSynonymsAllowed--">isDupSynonymsAllowed</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#isNonEnglishAllowed--">isNonEnglishAllowed</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#isNoNounsAllowed--">isNoNounsAllowed</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#isNotLatinCharsetAllowed--">isNotLatinCharsetAllowed</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#isNoUserTokensAllowed--">isNoUserTokensAllowed</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#isPermutateSynonyms--">isPermutateSynonyms</a></li>
-            <li><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#isSwearWordsAllowed--">isSwearWordsAllowed</a></li>
-        </ul>
-        <h3 class="section-title">External JSON/YAML Declaration</h3>
-        <p>
-            You can move out all the static model configuration into an external JSON or YAML file. To load that
-            configuration you need to use <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelFileAdapter.html">NCModelFileAdapter</a>
-            adapter when creating your data model. Here are JSON and YAML templates and you can find more details in
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a> Javadoc and in
-            <a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples">examples</a>.
-        </p>
-
-        <nav>
-            <div class="nav nav-tabs" role="tablist">
-                <a class="nav-item nav-link active" data-toggle="tab" href="#model-json" role="tab" aria-controls="nav-home" aria-selected="true">JSON</a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#model-yaml" role="tab" aria-controls="nav-home" aria-selected="true">YAML</a>
-            </div>
-        </nav>
-        <div class="tab-content">
-            <div class="tab-pane fade show active" id="model-json" role="tabpanel">
-                <pre class="brush: js">
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
 {
      "id": "user.defined.id",
      "name": "User Defined Name",
@@ -284,10 +39,7 @@ id: data_model
      ...
      "intents": []
 }
-                </pre>
-            </div>
-            <div class="tab-pane fade show" id="model-yaml" role="tabpanel">
-                <pre class="brush: js">
+                </pre></div><div class="tab-pane fade show" id="model-yaml" role="tabpanel"><pre class="brush: js">
 id: "user.defined.id"
 name: "User Defined Name"
 version: "1.0"
@@ -305,129 +57,7 @@ elements:
     metadata:
 ...
 intents:
-                </pre>
-            </div>
-        </div>
-        <div class="bq success">
-            <p>
-                Note that using JSON/YAML-based configuration is a <b>canonical way</b> for
-                creating data models in NLPCraft as it allows to cleanly separate static configuration from model's
-                programmable logic.
-            </p>
-        </div>
-    </section>
-    <section id="elements">
-        <h2 class="section-title">Model Elements</h2>
-        <p>
-            Data model element defines a semantic entity that will be detected in the user input.
-            A model element typically is one or more individual words that have a consistent semantic meaning and typically denote a
-            real-world object, such as persons, locations, number, date and time, organizations, products, etc. Such
-            object can be abstract or have a physical existence.
-        </p>
-        <p>
-            Model element is an implementation of <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCElement.html">NCElement</a>
-            interface. <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a> provides
-            its elements via <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getElements--">getElements()</a> method.
-            Typically, you create model elements by either:
-        </p>
-        <ul>
-            <li>
-                Implementing <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCElement.html">NCElement</a> interface directly, or
-            </li>
-            <li>
-                <U></U>sing JSON or YAML static model configuration (the preferred way in most cases).
-            </li>
-        </ul>
-        <p>
-            Note that when you use external static model configuration with JSON or YAML you can still modify it after it was loaded
-            using <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelFileAdapter.html">NCModelFileAdapter</a>
-            adapter. It is particular convenient when synonyms or values are loaded separately from, or in
-            addition to, the model elements themselves, i.e. from a database or another file.
-        </p>
-        <div class="bq info">
-            <p>
-                <b>Model Element <span class="amp">&</span> Named Entity <span class="amp">&</span> Token</b>
-            </p>
-            <p>
-                Terms 'model element', 'named entity' and 'token' are used throughout this documentation relatively interchangeably:
-            </p>
-            <dl>
-                <dt>Model Element</dt>
-                <dd>
-                    Denotes a named entity <em>declared</em> in NLPCraft model.
-                </dd>
-                <dt>Token</dt>
-                <dd>
-                    Denotes a named entity that was <em>detected</em> by NLPCraft in the user input.
-                </dd>
-                <dt>Named Entity</dt>
-                <dd>
-                    Denotes a classic term, i.e. one or more individual words that have a
-                    consistent semantic meaning and typically define a real-world object.
-                </dd>
-            </dl>
-        </div>
-        <p>
-            Although model element and named entity describe a similar concept, the NLPCraft model
-            elements provide a much more powerful instrument. Unlike named entities support in other projects
-            NLPCraft model elements have number of unique capabilities:
-        </p>
-        <ul>
-            <li>
-                New model elements can be added declaratively via token DSL, regex and macro expansion.
-            </li>
-            <li>
-                New model elements can be also added programmatically for ultimate flexibility.
-            </li>
-            <li>
-                Model elements can have many-to-many group memberships.
-            </li>
-            <li>
-                Model elements can form a hierarchical structure.
-            </li>
-            <li>
-                Model elements are composable, i.e. a model element can use other model elements in its definition.
-            </li>
-            <li>
-                Model elements can be declared with user defined metadata.
-            </li>
-            <li>
-                Model elements provide normalized values and can define their own "proper nouns".
-            </li>
-            <li>
-                Model elements can compose named entities from many <a href="integrations.html#nlp">3rd party libraries</a>.
-            </li>
-            <li>
-                All properties of model elements (id, groups, parent & ancestors, values, and metadata) can be used in token and intent DSLs.
-            </li>
-        </ul>
-        <h3 class="section-title">User vs. Built-In Elements</h3>
-        <p>
-            Additionally to the model elements that are defined by the user in the data model (i.e. <em>user model elements</em>)
-            NLPCraft provides <a href="#builtin">its own named entities</a> as well as the integration with number of <a href="integrations.html#nlp">3rd party projects</a>. You can think of these built-in elements as if they were implicitly defined in your model - you
-            can use them in exactly the same way as if you defined them yourself.
-            You can find more information on how to configure external token providers
-            in <a href="/integrations.html#nlp">Integrations</a> section.
-        </p>
-        <p>
-            Note that you can't directly change group membership, parent-child relationship or metadata of the
-            built-in elements. You can, however, "wrap" built-in entity into your own one using <code>^^id == 'external.id'^^</code>
-            token DSL expression where you can define all necessary additional configuration properties (more on that below).
-        </p>
-        <span id="synonyms" class="section-sub-title">Synonyms</span>
-        <p>
-            NLPCraft uses fully deterministic named entity recognition and is not based on statistical approaches that
-            would require pre-existing marked up data sets and extensive training. For each model element you can either provide a
-            set of synonyms to match on or specify a piece of code that would be responsible for detecting that named
-            entity (discussed below). A synonym can have one or more individual words. Note that element's ID is its
-            implicit synonym so that even if no additional synonyms are defined at least one synonym always exists. Note
-            also that synonym matching is performed on <em>normalized</em> and <em>stemmatized</em> forms of both
-            a synonym and user input.
-        </p>
-        <p>
-            Here's an example of a simple model element definition in JSON:
-        </p>
-        <pre class="brush: js, highlight: [6,7,8,9,10,11,12]">
+                </pre></div></div><div class="bq success"><p> Note that using JSON/YAML-based configuration is a <b>canonical way</b> for creating data models in NLPCraft as it allows to cleanly separate static configuration from model's programmable logic.</p></div></section><section id="elements"><h2 class="section-title">Model Elements</h2><p> Data model element defines a semantic entity that will be detected in the user input. A model element typically is one or more individual words [...]
             ...
             "elements": [
                 {
@@ -444,61 +74,7 @@ intents:
                 }
             ]
             ...
-        </pre>
-        <p>
-            During synonym matching NLPCraft uses <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getJiggleFactor--">jiggle factor</a> to rearrange (or "jiggle")
-            the individual words in the user input in attempt to match a given synonym. Jiggle factor is a measure of
-            how much sparsity is allowed when user input words are reordered in attempt to match the multi-word
-            synonyms. Zero means no reordering is allowed. One means that a word can move only one
-            position left or right, and so on. Empirically the value of 2 proved to be a good default value in
-            most cases. Note that larger values mean that synonym words can be almost in any random place in the user
-            input which makes synonym matching less meaningful.
-        </p>
-        <p>
-            While adding multi-word synonyms looks somewhat
-            trivial - in real models, the naive approach can lead to thousands and even tens of thousands of
-            possible synonyms due to words, grammar, and linguistic permutations - which quickly becomes untenable if
-            performed manually.
-        </p>
-        <p>
-            NLPCraft provides an effective tool for a compact synonyms representation. Instead of listing all possible
-            multi-word synonyms one by one you can use combination of following expressions:
-        </p>
-        <ul>
-            <li><a href="#macros">Macros</a></li>
-            <li><a href="#regex">Regular expressions</a></li>
-            <li><a href="#option-groups">Option Groups</a></li>
-            <li><a href="#dsl">Token DSL</a></li>
-        </ul>
-        <p>
-            Each whitespace separated string in the synonym can be either a regular word (like in the above transportation example
-            where it will be matched on using its normalized and stemmatized form) or one of the above expression.
-        </p>
-        <p>
-            Note that this universal synonyms definition is used in the following
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCElement.html">NCElement</a> methods:
-        </p>
-        <ul>
-            <li><code>getSynonyms()</code> - gets synonyms to match on.</li>
-            <li><code>getValues()</code> - get values to match on (see <a href="#values">below</a>).</li>
-        </ul>
-        <span id="macros" class="section-sub-title">Macros</span>
-        <p>
-            Listing all possible multi-word synonyms for a given element can be a time-consuming task. Macros
-            together with option groups allow for significant simplification of this process.
-            Macros let you give a name to an often used set of words or option groups and reuse it without
-            repeating those words or option groups again and again. A model provides a list of macros via
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getMacros--">getMacros()</a> method on
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html">NCModelView</a> interface. Each macro
-            has a name in a form of <code>&lt;X&gt;</code> where <code>X</code>
-            is just any string, and a string value. Note that macros can be nested (but not recursive), i.e. macro value can include
-            references to other macros. When macro name <code>X</code> is encountered in the synonym it gets recursively
-            replaced with its value.
-        </p>
-        <p>
-            Here's a code snippet of macro definitions using JSON definition:
-        </p>
-        <pre class="brush: js">
+        </pre><p> During synonym matching NLPCraft uses <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getJiggleFactor--">jiggle factor</a> to rearrange (or "jiggle") the individual words in the user input in attempt to match a given synonym. Jiggle factor is a measure of how much sparsity is allowed when user input words are reordered in attempt to match the multi-word synonyms. Zero means no reordering is allowed. One means that a word can move only o [...]
             "macros": [
                 {
                     "name": "&lt;A&gt;",
@@ -513,132 +89,7 @@ intents:
                     "macro": "&lt;A&gt; bbb {z|w}"
                 }
              ]
-        </pre>
-        <span id="option-groups" class="section-sub-title">Option Groups</span>
-        <p>
-            Option groups are similar to wildcard patterns that operates on a single word base. One line of
-            option group expands into one or more individual synonyms. Option groups is the key mechanism for shortened
-            synonyms notation. The following examples demonstrate how to use option groups.
-        </p>
-        <p>
-            Consider the following macros defined below (note that macros <code>&lt;B&gt;</code> and <code>&lt;C&gt;</code>
-            are nested):
-        </p>
-        <table class="gradient-table">
-            <thead>
-                <tr>
-                    <th>Name</th>
-                    <th>Value</th>
-                </tr>
-            </thead>
-            <tbody>
-                <tr>
-                    <td><code>&lt;A&gt;</code></td>
-                    <td><code>aaa</code></td>
-                </tr>
-                <tr>
-                    <td><code>&lt;B&gt;</code></td>
-                    <td><code>&lt;A&gt; bbb</code></td>
-                </tr>
-                <tr>
-                    <td><code>&lt;C&gt;</code></td>
-                    <td><code>&lt;A&gt; bbb {z|w}</code></td>
-                </tr>
-            </tbody>
-        </table>
-        <p>
-            Then the following option group expansions will occur in these examples:
-        </p>
-        <table class="gradient-table">
-            <thead>
-               <tr>
-                   <th>Synonym</th>
-                   <th>Synonym Expansions</th>
-               </tr>
-            </thead>
-            <tbody>
-               <tr>
-                   <td><code>&lt;A&gt; {b|*} c</code></td>
-                   <td>
-                       <code>"aaa b c"</code><br>
-                       <code>"aaa c"</code>
-                   </td>
-               </tr>
-               <tr>
-                   <td><code>&lt;B&gt; {b|*} c</code></td>
-                   <td>
-                        <code>"aaa bbb b c"</code><br>
-                        <code>"aaa bbb c"</code>
-                   </td>
-               </tr>
-               <tr>
-                   <td><code>{b|\{\*\}}</code></td>
-                   <td>
-                        <code>"b"</code><br>
-                        <code>"b {*}"</code>
-                   </td>
-               </tr>
-               <tr>
-                   <td><code>a {b|*}. c</code></td>
-                   <td>
-                        <code>"a b. c"</code><br>
-                        <code>"a . c"</code>
-                   </td>
-               </tr>
-               <tr>
-                   <td><code>a .{b,  |*}. c</code></td>
-                   <td>
-                        <code>"a .b, . c"</code><br>
-                        <code>"a .. c"</code>
-                   </td>
-               </tr>
-               <tr>
-                   <td><code>
-                       {% raw %}a {{b|c}|*}.{% endraw %}</code></td>
-                   <td>
-                        <code>"a ."</code><br>
-                        <code>"a b."</code><br>
-                        <code>"a c."</code>
-                   </td>
-               </tr>
-               <tr>
-                   <td><code>a {% raw %}{{{&lt;C&gt;}}|{*}}{% endraw %} c</code></td>
-                   <td>
-                        <code>"a aaa bbb z c"</code><br>
-                        <code>"a aaa bbb w c"</code><br>
-                        <code>"a c"</code>
-                   </td>
-               </tr>
-               <tr>
-                   <td><code>{% raw %}{{{a}}} {b||*|{{*}}||*}{% endraw %}</code></td>
-                   <td>
-                        <code>"a b"</code><br>
-                        <code>"a"</code>
-                   </td>
-               </tr>
-            </tbody>
-        </table>
-        <p>
-           Specifically:
-        </p>
-        <ul>
-            <li><code>{A|B}</code>  denotes either <code>A</code> or <code>B</code>.</li>
-            <li><code>{A|B|*}</code>  denotes either <code>A</code> or <code>B</code> or nothing.</li>
-            <li>Excessive curly brackets are ignored, when safe to do so.</li>
-            <li>Macros cannot be recursive but can be nested.</li>
-            <li>Option groups can be nested.</li>
-            <li>
-                <code>'\'</code> (backslash) can be used to escape <code>'{'</code>, <code>'}'</code>, <code>'|'</code> and
-                <code>'*'</code> special symbols used by the option groups.
-            </li>
-            <li>Excessive whitespaces are trimmed when expanding option groups.</li>
-        </ul>
-        <p>
-            We can rewrite our transportation model element in a bit more efficient way using macros and option groups.
-            Even though the actual length of definition hasn't changed much it now auto-generates many dozens of synonyms
-            we would have to write out manually otherwise:
-        </p>
-        <pre class="brush: js, highlight: [4,5,14]">
+        </pre><span id="option-groups" class="section-sub-title">Option Groups</span><p> Option groups are similar to wildcard patterns that operates on a single word base. One line of option group expands into one or more individual synonyms. Option groups is the key mechanism for shortened synonyms notation. The following examples demonstrate how to use option groups.</p><p> Consider the following macros defined below (note that macros <code>&lt;B&gt;</code> and <code>&lt;C&gt;</code>  [...]
             ...
             "macros": [
                 {
@@ -659,57 +110,11 @@ intents:
                 }
             ]
             ...
-        </pre>
-        <span id="regex" class="section-sub-title">Regular Expressions</span>
-        <p>
-            Any individual synonym word that starts and ends with <code>//</code> (two forward slashes) is
-            considered to be Java regular expression as defined in <code>java.util.regex.Pattern</code>. Note that
-            regular expression can only span a single word, i.e. only individual words from the user input will be
-            matched against given regular expression and no whitespaces are allowed within regular expression. Note
-            also that option group special symbols <code>{</code>, <code>}</code>,
-            <code>|</code> and <code>*</code> have to be escaped in the regular expression using <code>\</code>
-            (backslash).
-        </p>
-        <p>
-            For example, the following synonym: 
-        </p>
-        <pre class="brush: js">
+        </pre><span id="regex" class="section-sub-title">Regular Expressions</span><p> Any individual synonym word that starts and ends with <code>//</code> (two forward slashes) is considered to be Java regular expression as defined in <code>java.util.regex.Pattern</code>. Note that regular expression can only span a single word, i.e. only individual words from the user input will be matched against given regular expression and no whitespaces are allowed within regular expression. Note  [...]
         "synonyms": [
             "{foo|//[bar].+//}}"
         ]
-        </pre>
-        <p>
-            will match word <code>foo</code> or any other strings that start with <code>bar</code> as long as
-            this string doesn't contain whitespaces.
-        </p>
-        <div class="bq info">
-            <b>Regular Expressions Performance</b>
-            <p>
-                It's important to note that regular expressions can significantly affect the performance of the
-                underlying NLPCraft implementation if used uncontrolled. Use it with caution and test the performance
-                of your model to ensure it meets your expectations.
-            </p>
-        </div>
-        <span id="values" class="section-sub-title">Element Values</span>
-        <p>
-            Model element can have an optional set of special synonyms called <em>values</em> or proper nouns for this element.
-            Unlike basic synonyms, each value is a pair of a name and a set of standard synonyms by which that value,
-            and ultimately its element, can be recognized in the user input. Note that the value name itself acts as an
-            implicit synonym even when no additional synonyms added for that value.
-        </p>
-        <p>
-            When a model element is recognized it is made available to the model's matching logic as an instance of
-            the <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html">NCToken</a> interface.
-            This interface has a method
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getValue--">getValue()</a> which
-            returns the name of the value, if any, by which
-            that model element was recognized. That value name can be further used in intent matching.
-        </p>
-        <p>
-            To understand the importance of the values consider the following changes to our transportation
-            example model:
-        </p>
-        <pre class="brush: js, highlight: [19,20,21,22,23,24,25,26,27,28,29,30]">
+        </pre><p> will match word <code>foo</code> or any other strings that start with <code>bar</code> as long as this string doesn't contain whitespaces.</p><div class="bq info"> <b>Regular Expressions Performance</b><p> It's important to note that regular expressions can significantly affect the performance of the underlying NLPCraft implementation if used uncontrolled. Use it with caution and test the performance of your model to ensure it meets your expectations.</p></div><span id= [...]
             ...
             "macros": [
                 {
@@ -744,59 +149,7 @@ intents:
                 }
             ]
             ...
-        </pre>
-        <p>
-            With that setup <code>transport.vehicle</code> element will be recognized by any of the following input string:
-        </p>
-        <ul>
-            <li><code>car</code></li>
-            <li><code>benz</code> (with value <code>mercedes</code>)</li>
-            <li><code>3/4 ton pickup truck</code></li>
-            <li><code>light duty truck</code></li>
-            <li><code>chevy</code> (with value <code>chevrolet</code>)</li>
-            <li><code>bimmer</code> (with value <code>bmw</code>)</li>
-            <li><code>transport.vehicle</code></li>
-        </ul>
-        <p>
-            Note that element value can be used in token and intent DSLs.
-        </p>
-        <span id="groups" class="section-sub-title">Element Groups</span>
-        <p>
-            Each model element belongs to one or more groups. Model element provides its groups via
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelElement.html#getGroups--">getGroups()</a> method.
-            By default, if element group is not specified, the element ID will act as its default group ID.
-        </p>
-        <p>
-            Group membership is a quick and easy way to organise similar model elements together and use this
-            categorization in token and intent DSL.
-        </p>
-        <p>
-            Note that the proper grouping of the elements is also necessary for the correct operation of
-            Short-Term-Memory (STM) in the conversational context
-            when using intent-based matching. See
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCConversation.html">NCConversation</a>
-            for mode details.
-        </p>
-        <p>
-            Consider a <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html">NCToken</a> that
-            represents a previously found model element that is stored in the conversation. Such token
-            will be overridden in the conversation by the more <b>recent token</b>
-            from the <b>same group</b> - a critical rule of maintaining the proper conversational context.
-        </p>
-        <p>
-            Note that token's groups can be used in token and intent DSLs.
-        </p>
-        <span id="parent" class="section-sub-title">Element Parent</span>
-        <p>
-            Each model element can form an optional hierarchical relationship with other element by specifying its
-            parent element ID via <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelElement.html#getParnetId--">getParentID()</a> method. The main idea here is that sometimes model elements can act not only individually but
-            their place in the hierarchy can be important too for token and intent DSL.
-        </p>
-        <p>
-            For example, we could have designed our transportation example model in a different way by using
-            multiple model elements linked with this hierarchy:
-        </p>
-        <pre>
+        </pre><p> With that setup <code>transport.vehicle</code> element will be recognized by any of the following input string:</p><ul><li><code>car</code><li><code>benz</code> (with value <code>mercedes</code>)<li><code>3/4 ton pickup truck</code><li><code>light duty truck</code><li><code>chevy</code> (with value <code>chevrolet</code>)<li><code>bimmer</code> (with value <code>bmw</code>)<li><code>transport.vehicle</code></ul><p> Note that element value can be used in token and intent [...]
 +-- vehicle
 |     +--truck
 |     |    |-- light.duty.truck
@@ -807,33 +160,11 @@ intents:
 |     |   |-- sedan
 |     |   |-- hatchback
 |     |   +-- wagon
-        </pre>
-        <p>
-            Then in our intent DSL, for example, we could look for any token with root parent ID <code>vehicle</code>
-            or immediate parent ID <code>truck</code> or <code>car</code> without a need to match on all current and
-            future individual sub-IDs:
-        </p>
-        <pre class="brush: plain">
+        </pre><p> Then in our intent DSL, for example, we could look for any token with root parent ID <code>vehicle</code> or immediate parent ID <code>truck</code> or <code>car</code> without a need to match on all current and future individual sub-IDs:</p><pre class="brush: plain">
             "intent=vehicle.intent term={ancestors @@ 'vehicle'}"
             "intent=truck.intent term={parent == 'truck'}"
             "intent=car.intent term={parent == 'car'}"
-        </pre>
-    </section>
-    <section id="dsl" >
-        <h2 class="section-title">Token DSL</h2>
-        <p>
-            Any individual synonym word that that starts and ends with <code>^^</code> is a token DSL expression. A token
-            DSL expression inside of <code>^^ ... ^^</code> markers allows you to define a predicate on already parsed and detected token. It is very important to
-            note that unlike all other synonyms the token DSL predicate operates on a already detected <em>token</em>, not on an
-            individual unparsed <em>word</em>.
-        </p>
-        <p>
-            Token DSL allows you to <em>compose</em> named entities, i.e. use one name entity when defining another one. For example,
-            we could define a model element for the race car using our previous transportation example (note how synonym on
-            <b>line 18</b>
-            references the element defined on <b>line 4</b>):
-        </p>
-        <pre class="brush: js, highlight: [4, 18]">
+        </pre></section><section id="dsl" ><h2 class="section-title">Token DSL</h2><p> Any individual synonym word that that starts and ends with <code>^^</code> is a token DSL expression. A token DSL expression inside of <code>^^ ... ^^</code> markers allows you to define a predicate on already parsed and detected token. It is very important to note that unlike all other synonyms the token DSL predicate operates on a already detected <em>token</em>, not on an individual unparsed <em>wor [...]
             ...
             "elements": [
                 {
@@ -857,25 +188,7 @@ intents:
 
             ]
             ...
-        </pre>
-        <div class="bq warn">
-            <p>
-                <b>Greedy NERs <span class="amp">&</span> Synonyms Conflicts</b>
-            </p>
-            <p>
-                Note that in the above example you need to ensure that words <code>race</code>,
-                <code>speed</code> or <code>track</code> are not part of the <code>transport.vehicle</code>
-                token. It is particular important for the 3rd party NERs where specific rules about what
-                words can or cannot be part of the token are unclear or undefined. In such cases the only remedy is
-                to extensively test with 3rd party NERs and verify the synonyms recognition in data probe logs.
-            </p>
-        </div>
-        <p>
-            Another often used use case is to wrap 3rd party named entities to add group membership, metadata or hierarchical
-            relationship to the externally detected named entity. For example, you can wrap <code>google:location</code>
-            token and add group membership for <code>my_group</code> group:
-        </p>
-        <pre class="brush: js, highlight: [6,8]">
+        </pre><div class="bq warn"><p> <b>Greedy NERs <span class="amp">&</span> Synonyms Conflicts</b></p><p> Note that in the above example you need to ensure that words <code>race</code>, <code>speed</code> or <code>track</code> are not part of the <code>transport.vehicle</code> token. It is particular important for the 3rd party NERs where specific rules about what words can or cannot be part of the token are unclear or undefined. In such cases the only remedy is to extensively test  [...]
             ...
             "elements": [
                 {
@@ -889,2364 +202,11 @@ intents:
 
             ]
             ...
-        </pre>
-        <span id="dsl-syntax" class="section-sub-title">Token DSL Syntax</span>
-        <p>
-            Token DSL is a simple expression language for defining a single predicate over a token - a detected model
-            element. Remember that unlike token DSL all other types of synonyms work with simple words (vs. tokens).
-            Here's a full <a target="github" href="https://github.com/apache/incubator-nlpcraft/blob/master/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDsl.g4">ANTLR4 grammar</a> for token DSL.
-            Note that this is exactly the same syntax as
-            used by <a href="intent-matching.html#syntax">intent DSL</a> for token predicates in intents - except for
-            aliases which we will explain below.
-        </p>
-        <p>
-            Here's an example of token DSL defining a synonym for the population of any city in France:
-        </p>
-        <pre class="brush: js">
+        </pre><span id="dsl-syntax" class="section-sub-title">Token DSL Syntax</span><p> Token DSL is a simple expression language for defining a single predicate over a token - a detected model element. Remember that unlike token DSL all other types of synonyms work with simple words (vs. tokens). Here's a full <a target="github" href="https://github.com/apache/incubator-nlpcraft/blob/master/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDsl.g4">ANTLR4 grammar</a> f [...]
             "synonyms": [
                 "population {of|for} ^^[city](id == 'nlpcraft:city' && lowercase(~city:country) == 'france')^^"
             ]
-        </pre>
-        <p>
-            Few notes on token DSL syntax:
-        </p>
-        <ul>
-            <li>
-                This synonym defines a composed named entity, i.e. named entity that consists of other named entities.
-                In our example, we utilize token <code>nlpcraft:city</code> along with other basic synonym.
-            </li>
-            <li>
-                Token DSL expression always results in one and only one token when matched, however, the synonym can have multiple
-                token DSL expressions.
-            </li>
-            <li>
-                Token DSL expression can have optional alias (<code>[city]</code>) that can be used in other token DSL
-                expressions when referencing the token matched by that expression.
-            </li>
-            <li>
-                You can get all participant nested tokens, if required, using <code>NCToken#getPartTokens()</code> method call chain.
-                You can also reference participant tokens in the token DSL expression itself by using dot-notation (see below)
-                with either token IDs or aliases.
-            </li>
-            <li>
-                All string values should be places in single quotes, as in <code>'some string'</code>.
-                For numeric literals you can use underscores to help readability, i.e. <code>~list:size >= <b>1_000_000</b></code>
-            </li>
-            <li>
-                You can use <code>null</code>, <code>true</code> and <code>false</code> literals as a values.
-            </li>
-            <li>
-                Individual token expressions can be combined with <code>&&</code>, <code>||</code> and <code>!</code>
-                logical combinators and <code>(</code> <code>)</code> brackets that obey standard precedence rules.
-            </li>
-        </ul>
-        <p>
-            The individual token DSL expression can be one of the following forms:
-        </p>
-        <pre class="brush: js">
+        </pre><p> Few notes on token DSL syntax:</p><ul><li> This synonym defines a composed named entity, i.e. named entity that consists of other named entities. In our example, we utilize token <code>nlpcraft:city</code> along with other basic synonym.<li> Token DSL expression always results in one and only one token when matched, however, the synonym can have multiple token DSL expressions.<li> Token DSL expression can have optional alias (<code>[city]</code>) that can be used in oth [...]
             {qual}param op value
             func({qual}param) op value
-        </pre>
-        <p>
-            The <code>{qual}param</code> is the left side parameter and it can have optional qualifier (<code>qual</code>).
-            Qualifier allows to reference participant tokens either by their ID or their DSL expression's alias using
-            dot-notation. For example:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Qualifier</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-                <tr>
-                    <td>
-                        <code><b>partId.</b>groups @@ 'my_grp'</code>
-                    </td>
-                    <td>
-                        There must be a participant token (i.e. constituent token) with either token ID or alias
-                        of <code>partId</code>. That participant token should belong to group <code>my_grp</code>.
-                    </td>
-                </tr>
-                <tr>
-                    <td>
-                        <code><b>alias1.alias2.</b>~meta['key'] >= 10</code>
-                    </td>
-                    <td>
-                        There must be two nested participant tokens with either token ID or alias
-                        of <code>alias1</code> and <code>alias2</code>. That second (inner-most <code>alias2</code>) participant token
-                        should have metadata property <code>meta</code> of type map with key <code>key</code> which value
-                        should be greater or equal to 10.
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-        <div class="bq warn">
-            <p>
-                <b>NOTE:</b> If qualifier is present it <b>must</b> be valid and found, i.e. the participant tokens this qualifier
-                is referencing must be present. If qualifier is present but referenced participant tokens cannot be
-                found - the processing will abort with an exception rather than simply rejecting given synonym. In other
-                words, if specified - qualifiers are not optional.
-            </p>
-        </div>
-        <p>
-            The <code>param</code> itself can be one of the following literals:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Parameter</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code>id</code></td>
-                <td>
-                    <p>
-                        Token <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getId--">ID</a> as
-                        a <code>java.lang.String</code> object.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>id</b> == 'nlpcraft:city'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>groups</code></td>
-                <td>
-                    <p>
-                        Token <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getGroups--">groups</a>
-                        as <code>java.util.Collection</code> of token IDs.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>groups</b> @@ 'my_group'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>aliases</code></td>
-                <td>
-                    <p>
-                        Token <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getAliases--">aliases</a>
-                        as <code>java.util.Collection</code> of token aliases.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>aliases</b> @@ 'my_alias'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>startidx</code></td>
-                <td>
-                    <p>
-                        Token start character <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getStartCharIndex--">index</a> in the original text.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>startidx</b> > 5^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>endidx</code></td>
-                <td>
-                    <p>
-                        Token end character <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getStartCharIndex--">index</a> in the original text.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>endidx</b> < 15^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>parent</code></td>
-                <td>
-                    <p>
-                        <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getParentId--">ID</a> of
-                        the parent token as a <code>java.lang.String</code> object.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>parent</b> == 'root'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>ancestors</code></td>
-                <td>
-                    <p>
-                        <code>java.util.List</code> of all token <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getParentId--">parent ID</a>
-                        from the current one to the root. List can be empty if current token has no parent ID.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>ancestors</b> @@ 'tok:id'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>value</code></td>
-                <td>
-                    <p>
-                        Token <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getValue--">value</a>
-                        as a <code>java.lang.String</code> object.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>value</b> == 'brand_name'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>~propName</code></td>
-                <td>
-                    <p>
-                        Token <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getMetadata--">metadata</a>
-                        property for given <code>propName</code>.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^~<b>city:country</b> == 'france'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>~propName[key]</code></td>
-                <td>
-                    <p>
-                        Token <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getMetadata--">metadata</a>
-                        property for given <code>propName</code>
-                        of type <code>java.util.List</code> or <code>java.util.Map</code>.
-                        Returns indexed or keyed value. Note that <code>key</code> should be integer
-                        for <code>java.util.List</code> and string for <code>java.util.Map</code>.
-                        Nested indexing is not allowed.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^~<b>my:list[0]</b> >= 1_000_000^^</code><br>
-                        <code>^^~<b>my:map['key']</b> >= 1_000_000^^</code>
-                    </p>
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <p>
-            The optional <code>func</code> function can alter the value of the left-side parameter. Only one function call is allowed, i.e.
-            function calls cannot be nested. The primary use case for functions is dealing with 3rd party metadata where you
-            don't have a direct control on the values supplied from 3rd party named entity providers. The following functions are
-            supported:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Function Name</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code>keys</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.util.Map#keySet()</code> function on given parameter to a collection of
-                        map keys. Applicable to <code>java.util.Map</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>keys</b>(~my:map) @@ 'my_key'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>values</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.util.Map#values()</code> function on given parameter to get a collection
-                        of map values. Applicable to <code>java.util.Map</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>values</b>(~my:map) @@ (200_000, 100_000)^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>trim</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.lang.String#trim()</code> function on given parameter.
-                        Applicable to <code>java.lang.String</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>trim</b>(~nlp:origtext) == '//^[Pp]aris$//'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>isalpha</code></td>
-                <td>
-                    <p>
-                        Checks that given string parameter contains only Unicode letters.
-                        Applicable to <code>java.lang.String</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>isalpha</b>(~nlp:origtext) == true^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>isalphanum</code></td>
-                <td>
-                    <p>
-                        Checks that given string parameter contains only Unicode letters or digits.
-                        Applicable to <code>java.lang.String</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>isalphanum</b>(~nlp:origtext) == true^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>isnumeric</code></td>
-                <td>
-                    <p>
-                        Checks that given string parameter contains only Unicode digits.
-                        Applicable to <code>java.lang.String</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>isnumeric</b>(~zipcode) == true^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>iswhitespace</code></td>
-                <td>
-                    <p>
-                        Checks that given string parameter contains only whitespaces.
-                        Applicable to <code>java.lang.String</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>iswhitespace</b>(~my_txt) == false^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>uppercase</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.lang.String#toUpperCase()</code> function on given parameter.
-                        Applicable to <code>java.lang.String</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>uppercase</b>(~nlp:origtext) == 'PARIS'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>lowercase</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.lang.String#toLowerCase()</code> function on given parameter.
-                        Applicable to <code>java.lang.String</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>lowercase</b>(~nlp:origtext) == 'paris'^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>ceil</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.lang.Math#ceil()</code> function on given parameter.
-                        Applicable to <code>java.lang.Double</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>ceil</b>(~custom:double) > 1.0^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>floor</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.lang.Math#floor()</code> function on given parameter.
-                        Applicable to <code>java.lang.Double</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>floor</b>(~custom:double) > 1.0^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>rint</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.lang.Math#rint()</code> function on given parameter.
-                        Applicable to <code>java.lang.Double</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>rint</b>(~custom:double) > 1.0^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>round</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.lang.Map#round()</code> function on given parameter.
-                        Applicable to <code>java.lang.Double</code> and <code>java.lang.Float</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>round</b>(~custom:double) > 1.0^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>size</code>, <code>count</code> or <code>length</code></td>
-                <td>
-                    <p>
-                        Getting size of the <code>java.util.Collection</code> or <code>java.util.Map</code>, or number
-                        of characters for <code>java.lang.String</code> parameter.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>size</b>(~custom:coll) > 0^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>signum</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.lang.Math#signum()</code> function on given parameter.
-                        Applicable to <code>java.lang.Double</code> and <code>java.lang.Float</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>signum</b>(~custom:double) == -1^^</code>
-                    </p>
-                </td>
-            </tr>
-            <tr>
-                <td><code>abs</code></td>
-                <td>
-                    <p>
-                        Calling <code>java.lang.Math#abs()</code> function on given parameter.
-                        Applicable to <code>java.lang.Double</code>, <code>java.lang.Float</code>,
-                        <code>java.lang.Long</code> and <code>java.lang.Integer</code> parameters only.
-                    </p>
-                    <p>
-                        <b>Example:</b><br/>
-                        <code>^^<b>abs</b>(~custom:int) > 10_000^^</code>
-                    </p>
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <p>
-            The <code>op</code> (operation) can be one of the following:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Operation</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td>
-                    <code>==</code><br/>
-                    <code>!=</code>
-                </td>
-                <td>
-                    <p>
-                        Both operators perform equality check and work differently depending on the type of the left
-                        and right parameter:
-                    </p>
-                    <ul>
-                        <li>
-                            <p>
-                                If both left and right parameters are of type <code>java.util.Collection</code> then
-                                it checks that both collections contain (do not contain)
-                                exactly the same elements with exactly the same cardinalities.
-                            </p>
-                            <b>Example:</b>
-                            <dl>
-                                <dt><code>^^~col <b>==</b> (1, 2, 3)^^</code></dt>
-                                <dd>'col' metadata collection should contain only three elements: 1, 2, and 3.</dd>
-                                <dt><code>^^groups <b>!=</b> ('null', 'void')^^</code></dt>
-                                <dd>Token cannot belong to the exact two groups 'null' and 'void'.</dd>
-                                <dt><code>^^keys(~map) <b>==</b> ('key1', 'key2')^^</code></dt>
-                                <dd>'map' metadata map should contain only two keys: 'key1' and 'key2'.</dd>
-                            </dl>
-                        </li>
-                        <li>
-                            <p>
-                                If only right parameters is of type <code>java.util.Collection</code> and the left
-                                parameter is a single value then it checks that given single value is (is not) present
-                                in the right side collection.
-                            </p>
-                            <b>Example:</b>
-                            <dl>
-                                <dt><code>^^id <b>==</b> ('id1', 'id2')^^</code></dt>
-                                <dd>'id' should be either 'id1' or 'id2'.</dd>
-                                <dt><code>^^~index <b>!=</b> (-1, 0)^^</code></dt>
-                                <dd>
-                                    'index' metadata should NOT be either -1 or 0.
-                                </dd>
-                            </dl>
-                        </li>
-                        <li>
-                            <p>
-                                If both left and right parameters are of type <code>java.lang.Number</code>
-                                then method <code>java.lang.Double.compare()</code> is used to compare two numbers.
-                            </p>
-                            <b>Example:</b>
-                            <dl>
-                                <dt><code>^^~score <b>==</b> 100_000^^</code></dt>
-                                <dd>
-                                    'score' metadata (of any numeric type) should be equal to 100,000 when compared using
-                                    double values.
-                                </dd>
-                            </dl>
-                        </li>
-                        <li>
-                            <p>
-                                If both left and right parameters are of type <code>java.lang.String</code>
-                                and either one is a regular expression written using <code>//</code> prefix and suffix
-                                syntax then that regular expression is used to perform equality check.
-                            </p>
-                            <b>Example:</b>
-                            <dl>
-                                <dt><code>^^~txt <b>==</b> '//^[tT]ext$//'^^</code></dt>
-                                <dd>'txt' metadata matches given regex.</dd>
-                                <dt><code>^^~my_regex <b>!=</b> 'test'^^</code></dt>
-                                <dd>
-                                    'my_regex' metadata regex string matches 'test' value. Note that 'my_regex' metadata string
-                                    should use <code>//</code>...<code>//</code> syntax for regular expression.
-                                </dd>
-                            </dl>
-                        </li>
-                        <li>
-                            <p>
-                                In all other cases the standard Java <code>java.lang.Object.equal()</code> equality check
-                                is used.
-                            </p>
-                            <b>Example:</b>
-                            <dl>
-                                <dt><code>^^~value <b>==</b> null^^</code></dt>
-                                <dd>Token does not have a value.</dd>
-                                <dt><code>^^parentId <b>!=</b> null^^</code></dt>
-                                <dd>Token's parent ID is not null.</dd>
-                                <dt><code>^^~flag <b>==</b> true^^</code></dt>
-                                <dd>'flag' metadata is true.</dd>
-                            </dl>
-                        </li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td>
-                    <code>@@</code><br/>
-                    <code>!@</code>
-                </td>
-                <td>
-                    <p>
-                        Both operators perform collection containment check and work differently depending on the type of the left
-                        and right parameter:
-                    </p>
-                    <ul>
-                        <li>
-                            <p>
-                                If left parameter is of type <code>java.util.Collection</code> and the right side
-                                parameter is a single value then it checks that given collection contains (does not
-                                contain) given single value.
-                            </p>
-                            <b>Example:</b>
-                            <dl>
-                                <dt><code>^^~col <b>@@</b> 100_000^^</code></dt>
-                                <dd>'col' metadata collection should contain 100,000 value.</dd>
-                                <dt><code>^^groups <b>!@</b> 'null'^^</code></dt>
-                                <dd>Token should not belong to 'null' group.</dd>
-                            </dl>
-                        </li>
-                        <li>
-                            <p>
-                                If both left and right parameters are of type <code>java.util.Collection</code> then
-                                it checks that a left side collection contains (does not contain) <b>all elements</b>
-                                from the right side collection.
-                            </p>
-                            <b>Example:</b>
-                            <dl>
-                                <dt><code>^^~col <b>@@</b> (1, 2, 3)^^</code></dt>
-                                <dd>'col' metadata collection should contain all three elements: 1, 2, and 3.</dd>
-                                <dt><code>^^groups <b>!@</b> ('null', 'void')^^</code></dt>
-                                <dd>
-                                    Token should not belong to both 'null' and 'void' groups in the same time.
-                                    Note that it can belong to other groups.
-                                </dd>
-                            </dl>
-                        </li>
-                        <li>
-                            <p>
-                                If both left and right parameters are of type <code>java.lang.String</code> then
-                                it checks that a left side string contains (does not contain) the right side string as
-                                its sub-string.
-                            </p>
-                            <b>Example:</b>
-                            <dl>
-                                <dt><code>^^id <b>@@</b> 'sub'^^</code></dt>
-                                <dd>Token ID should contain 'sub' sub-string.</dd>
-                                <dt><code>^^~name <b>!@</b> 'nlp'^^</code></dt>
-                                <dd>
-                                    Metadata 'name' should not contain 'nlp' substring.
-                                </dd>
-                            </dl>
-                        </li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td>
-                    <code>&gt;</code><br/>
-                    <code><=</code><br/>
-                    <code><=</code><br/>
-                    <code>&lt;</code>
-                </td>
-                <td>
-                    <p>
-                        Standard relational operators that are applicable to <code>java.lang.Number</code> left and
-                        right side values only.
-                    </p>
-                    <b>Example:</b>
-                    <dl>
-                        <dt><code>^^startidx <b>>=</b> 10^^</code></dt>
-                        <dd>Token start index should be greater or equal to 10.</dd>
-                        <dt><code>^^~score <b><</b> 100_000^^</code></dt>
-                        <dd>
-                            Metadata 'score' should be less then 100,000.
-                        </dd>
-                    </dl>
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <span id="combinators" class="section-sub-title">Logical Combinators</span>
-        <p>
-            Individual token expressions can be combined with <code>&&</code>, <code>||</code> and <code>!</code>
-            logical combinators and <code>( )</code> brackets that obey standard precedence rules as well as short-cut
-            processing of logical <code>&&</code> and <code>||</code> combinators. For example:
-        </p>
-        <p>
-            <code>^^[alias](my:list[0] >= 1_000_000 <b>&&</b> alias1.groups @@ 'clients')^^</code><br>
-            <code>^^<b>(</b>id == 'myid' && ~score > 10<b>)</b> <b>||</b> <b>(</b>alias1.groups @@ 'clients' && ~score <= 10<b>)</b>^^</code><br>
-        </p>
-        <span id="custom" class="section-sub-title">Custom Parsers</span>
-        <p>
-            In cases when declarative synonyms (macros, option groups, regexp and token DSL) are not expressive enough
-            you create your model element recognizer programmatically:
-        </p>
-        <ul>
-            <li>
-                Model provides its custom parsers via <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getParsers--">getParsers()</a> method.
-            </li>
-            <li>
-                Custom parser is defined by the following classes:
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCCustomElement.html">NCCustomElement</a>,
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCCustomParser.html">NCCustomParser</a> and
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCCustomWord.html">NCCustomWord</a>.
-            </li>
-        </ul>
-    </section>
-    <section id="logic">
-        <h2 class="section-title">Model Logic</h2>
-        <p>
-            When a user sends its request via REST API it is received by the REST server. Upon receipt,
-            the REST server does the basic NLP processing and enriching. Once finished, the REST server
-            sends the enriched request down to a specific data probe selected based on the requested data model.
-        </p>
-        <p>
-            The model logic is defined in <a href="intent-matching.html">intents</a>, specifically in the intent callbacks that get called when
-            their intent is chosen as a winning match against the user request.
-            Below we will quickly discuss the key APIs that are essential for developing intent callbacks.
-            Note that this does now replace a more detailed <a target=_ href="/apis/latest/index.html">Javadoc</a>
-            documentation that you are encouraged to read through as well:
-        </p>
-        <ul>
-            <li>Interface <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html">NCModelView</a></li>
-            <li>Interface <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCIntentMatch.html">NCIntentMatch</a></li>
-            <li>Interface <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCContext.html">NCContext</a></li>
-            <li>Interface <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCRequest.html">NCRequest</a></li>
-            <li>Interface <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html">NCToken</a></li>
-            <li>Class <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCResult.html">NCResult</a></li>
-        </ul>
-        <h3 class="section-title">Interface <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html">NCModelView</a></h3>
-        <p>
-            This interface provides read-only view on data model. Model view defines a declarative, or configurable, part of the model.
-            All properties in this interface can be defined or overridden in JSON/YAML external
-            presentation when used with <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelFileAdapter.html">NCModelFileAdapter</a> adapter.
-        </p>
-        <h3 class="section-title">Interface <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCIntentMatch.html">NCIntentMatch</a></h3>
-        <p>
-            This interface defines a context of a particular intent match. It can be passed into the callback of the matched intent
-            and provides the following:
-        </p>
-        <ul>
-            <li>ID of the matched intent.</li>
-            <li>Specific parsing variant that was matched against this intent.</li>
-            <li>Access to the original query context (<a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCContext.html">NCContext</a>).</li>
-            <li>Various access APIs for intent tokens.</li>
-        </ul>
-        <h3 class="section-title">Interface <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCContext.html">NCContext</a></h3>
-        <p>
-            This interface provides all available data about the parsed user input and all its
-            supplemental information. It's accessible from <code>NCIntentMatch</code> interface and
-            provide large amount of information to the intent callback logic:
-        </p>
-        <ul>
-            <li>
-                Server request ID. Server request is defined as a processing of one user input sentence.
-            </li>
-            <li>
-                Reference to <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCConversation.html">NCConversation</a>
-                for controlling STM of conversation manager and dialog flow.
-            </li>
-            <li>
-                Reference to <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html">NCModelView</a>
-                instance that the intent callback method belongs to giving access to entire static model configuration.
-            </li>
-            <li>
-                Reference to <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCRequest.html">NCRequest</a> that
-                provides detailed information about the user input.
-            </li>
-            <li>
-                List of parsing variants provided
-                by <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCContext.html#getVariants--">getVariants()</a>
-                method. When the user sentence gets parsed into individual tokens (i.e. detected model elements) there is generally
-                more than one way to do it. This ambiguity is perfectly fine because only the data model has all the
-                necessary information to select one parsing variant that fits that model the best. Without the data model
-                there isn't enough context to determine which variant is the best fitting.
-                Method <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCContext.html#getVariants--">getVariants()</a>
-                returns list of all parsing variants for a given user input.
-            </li>
-        </ul>
-        <h3 class="section-title">Interface <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCRequest.html">NCRequest</a></h3>
-        <p>
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCSentence.html">NCRequest</a> interface
-            is one of the several important entities in Data Model API that you as a model developer will be working with. You
-            should review its <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCRequest.html">Javadoc</a> but
-            here is an outline of the information it provides:
-        </p>
-        <ul>
-            <li>
-                Information about the user that issued the request.
-            </li>
-            <li>
-                User agent and remote address, if any available, of the user's application that made the initial REST call.
-            </li>
-            <li>
-                Original request text, timestamp of its receipt, and server request ID.
-            </li>
-        </ul>
-        <h3 class="section-title">Interface <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html">NCToken</a></h3>
-        <p>
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html">NCToken</a> object is another
-            key abstraction in Data Model API. A token is a detected model element and is a part of a fully parsed user input.
-            Sequence of tokens represents parsed user input. A single token corresponds to a one or more words, sequential
-            or not, in the user sentence.
-        </p>
-        <p>
-            Most of the token's information is stored in map-based metadata accessible via
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#getMetadata--">getMetadata()</a> method.
-            Depending on the token ID each token will have different set of <a href="#meta">metadata properties</a>. Some common NLP properties
-            are always present for tokens of all types.
-        </p>
-        <h3 class="section-title">Class <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCResult.html">NCResult</a></h3>
-        <p>
-            This class defines data model result returned from model's intent callbacks. Result consists of the
-            text body and the type. The type is similar in notion to MIME types. Intent callbacks must use this class
-            to provide their results.
-        </p>
-    </section>
-    <section id="builtin">
-        <h2 class="section-title">Built-In Tokens</h2>
-        <p>
-            NLPCraft provides a number of built-in model elements (i.e. tokens) including the
-            <a href="integrations.html">integration</a> with several popular 3rd party NER frameworks. Table
-            below provides information about these built-in tokens. Section about <a href="#meta">token metadata</a> provides
-            further information about metadata that each type of token carries.
-        </p>
-        <p>
-            Built-in tokens have to be explicitly enabled on both the REST server and in the model. See
-            <code>nlpcraft.server.tokenProviders</code> configuration property and
-            <a target="javadoc" href="apis/latest/org/apache/nlpcraft/model/NCModelView.html#getEnabledBuiltInTokens--">NCModelView#getEnabledBuiltInTokens()</a>
-            method for more details. By default, only NLPCraft tokens are enabled (token ID
-            starting with <code>nlpcraft</code>).
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Token ID</th>
-                <th>Description</th>
-                <th>Example</th>
-            </tr>
-            </thead>
-            <tbody>
-                <tr>
-                    <td><code>nlpcraft:nlp</code></td>
-                    <td>
-                        <p>
-                            This token denotes a word (always a single word) that is not a part of any other token. It's
-                            also call a free-word, i.e. a word that is not linked to any other detected model element.
-                        </p>
-                        <p>
-                            <b>NOTE:</b> the metadata from this token defines a common set of NLP properties and
-                            is present in every other token as well.
-                        </p>
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Jamie goes <code>home</code> (assuming that a word 'home' does not belong to any model element).</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:date</code></td>
-                    <td>
-                        This token denotes a date range. It recognizes dates from 1900 up to 2023. Note that it does not
-                        currently recognize time component.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Meeting <code>next tuesday</code>.</li>
-                            <li>Report for entire <code>2018 year</code>.</li>
-                            <li>Data <code>from 1/1/2017 to 12/31/2018</code>.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:num</code></td>
-                    <td>
-                        This token denotes a single numeric value or numeric condition.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Price <code>&gt; 100</code>.</li>
-                            <li>Price is <code>less than $100</code>.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:continent</code></td>
-                    <td>
-                        This token denotes a geographical continent.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Population of <code>Africa</code>.</li>
-                            <li>Surface area of <code>America</code>.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:subcontinent</code></td>
-                    <td>
-                        This token denotes a geographical subcontinent.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Population of <code>Alaskan peninsula</code>.</li>
-                            <li>Surface area of <code>South America</code>.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:region</code></td>
-                    <td>
-                        This token denotes a geographical region/state.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Population of <code>California</code>.</li>
-                            <li>Surface area of <code>South Dakota</code>.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:country</code></td>
-                    <td>
-                        This token denotes a country.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Population of <code>France</code>.</li>
-                            <li>Surface area of <code>USA</code>.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:city</code></td>
-                    <td>
-                        This token denotes a city.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Population of <code>Paris</code>.</li>
-                            <li>Surface area of <code>Washington DC</code>.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:metro</code></td>
-                    <td>
-                        This token denotes a metro area.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Population of <code>Cedar Rapids-Waterloo-Iowa City & Dubuque, IA</code> metro area.</li>
-                            <li>Surface area of <code>Norfolk-Portsmouth-Newport News, VA</code>.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:sort</code></td>
-                    <td>
-                        This token denotes a sorting or ordering.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Report <code>sorted from top to bottom</code>.</li>
-                            <li>Analysis <code>sorted in descending order</code>.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:limit</code></td>
-                    <td>
-                        This token denotes a numerical limit.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Show <code>top 5</code> brands.</li>
-                            <li>Show <code>several</code> brands.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:coordinate</code></td>
-                    <td>
-                        This token denotes a latitude and longitude coordinates.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>Route the path to <code>55.7558, 37.6173</code> location.</li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>nlpcraft:relation</code></td>
-                    <td>
-                        This token denotes a relation function:
-                        <code>compare</code> or
-                        <code>correlate</code>. Note this token always need another two tokens that it references.
-                    </td>
-                    <td>
-                        <ul>
-                            <li>
-                                What is the <code><b>correlation between</b></code> <code>price</code> <code><b>and</b></code> <code>location</code>
-                                (assuming that 'price' and 'location' are also detected tokens).
-                            </li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>google:xxx</code></td>
-                    <td>
-                        <p>
-                            These tokens denote <code>xxx</code> that is a lower case name of the named entity
-                            in <a target=_ href="https://cloud.google.com/natural-language/">Google APIs</a>, i.e.
-                            <code>google:person</code>, <code>google:location</code>, etc.
-                        </p>
-                        <p>
-                            See <a href="integrations.html#google">integration</a> section for more details on how
-                            to configure Google named entity provider.
-                        </p>
-                    </td>
-                    <td>
-                        <ul>
-                            <li>
-                                Articles by <code>Ken Thompson</code>.
-                            </li>
-                            <li>
-                                Best restaurants in <code>Paris</code>.
-                            </li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>opennlp:xxx</code></td>
-                    <td>
-                        <p>
-                            These tokens denote <code>xxx</code> that is a lower case name of the named entity
-                            in <a target=_ href="https://opennlp.apache.org/">Apache OpenNLP</a>, i.e.
-                            <code>opennlp:person</code>, <code>opennlp:money</code>, etc.
-                        </p>
-                        <p>
-                            See <a href="integrations.html#opennlp">integration</a> section for more details on how
-                            to configure Apache OpenNLP named entity provider.
-                        </p>
-                    </td>
-                    <td>
-                        <ul>
-                            <li>
-                                Articles by <code>Ken Thompson</code>.
-                            </li>
-                            <li>
-                                Best restaurants under <code>100$</code>.
-                            </li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>spacy:xxx</code></td>
-                    <td>
-                        <p>
-                            These tokens denote <code>xxx</code> that is a lower case name of the named entity
-                            in <a target=_ href="https://spacy.io/">spaCy</a>, i.e.
-                            <code>spacy:person</code>, <code>spacy:location</code>, etc.
-                        </p>
-                        <p>
-                            See <a href="integrations.html#spacy">integration</a> section for more details on how
-                            to configure spaCy named entity provider.
-                        </p>
-                    </td>
-                    <td>
-                        <ul>
-                            <li>
-                                Articles by <code>Ken Thompson</code>.
-                            </li>
-                            <li>
-                                Best restaurants in <code>Paris</code>.
-                            </li>
-                        </ul>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code>stanford:xxx</code></td>
-                    <td>
-                        <p>
-                            These tokens denote <code>xxx</code> that is a lower case name of the named entity
-                            in <a target=_ href="https://stanfordnlp.github.io/CoreNLP">Stanford CoreNLP</a>, i.e.
-                            <code>stanford:person</code>, <code>stanford:location</code>, etc.
-                        </p>
-                        <p>
-                            See <a href="integrations.html#stanford">integration</a> section for more details on how
-                            to configure Stanford CoreNLP named entity provider.
-                        </p>
-                    </td>
-                    <td>
-                        <ul>
-                            <li>
-                                Articles by <code>Ken Thompson</code>.
-                            </li>
-                            <li>
-                                Best restaurants in <code>Paris</code>.
-                            </li>
-                        </ul>
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-    </section>
-    <section id="meta">
-        <h2 class="section-title">Token Metadata</h2>
-        <p>
-            Each token has different set of metadata. Sections below describe metadata for each built-in token
-            supported by NLPCraft:
-        </p>
-        <ul>
-            <li><a href="#nlpcraft:nlp">Token ID <code>nlpcraft:nlp</code></a></li>
-            <li><a href="#nlpcraft:date">Token ID <code>nlpcraft:date</code></a></li>
-            <li><a href="#nlpcraft:num">Token ID <code>nlpcraft:num</code></a></li>
-            <li><a href="#nlpcraft:city">Token ID <code>nlpcraft:city</code></a></li>
-            <li><a href="#nlpcraft:continent">Token ID <code>nlpcraft:continent</code></a></li>
-            <li><a href="#nlpcraft:subcontinent">Token ID <code>nlpcraft:subcontinent</code></a></li>
-            <li><a href="#nlpcraft:region">Token ID <code>nlpcraft:region</code></a></li>
-            <li><a href="#nlpcraft:country">Token ID <code>nlpcraft:country</code></a></li>
-            <li><a href="#nlpcraft:metro">Token ID <code>nlpcraft:metro</code></a></li>
-            <li><a href="#nlpcraft:coordinate">Token ID <code>nlpcraft:coordinate</code></a></li>
-            <li><a href="#nlpcraft:sort">Token ID <code>nlpcraft:sort</code></a></li>
-            <li><a href="#nlpcraft:limit">Token ID <code>nlpcraft:limit</code></a></li>
-            <li><a href="#nlpcraft:relation">Token ID <code>nlpcraft:relation</code></a></li>
-            <li><a href="#stanford:xxx">Token ID <code>stanford:xxx</code></a></li>
-            <li><a href="#spacy:xxx">Token ID <code>spacy:xxx</code></a></li>
-            <li><a href="#google:xxx">Token ID <code>google:xxx</code></a></li>
-            <li><a href="#opennlp:xxx">Token ID <code>opennlp:xxx</code></a></li>
-        </ul>
-        <div class="bq info">
-            <p>
-                <b>Metadata Name Conflicts</b>
-            </p>
-            <p>
-                Note that model element metadata gets merged into the same map container as common NLP token metadata
-                (see <code>nlpcraft:nlp:xxx</code> properties below).
-                In other words, their share the same namespace. It is important to remember that and choose unique names
-                for user-defined metadata properties. One possible way that is used by NLPCraft internally is to prefix
-                metadata name with some unique prefix based on the token ID.
-            </p>
-        </div>
-        <span id="nlpcraft:nlp" class="section-sub-title">Token ID <code>nlpcraft:nlp</code></span>
-        <p>
-            This token's metadata provides common basic NLP properties that are part of any token.
-            <b>All tokens</b> without exception have these metadata properties. This metadata
-            represents a common set of NLP properties for a given token. All these metadata properties are <b>mandatory</b>.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:unid</b></code></td>
-                    <td><code>java.lang.String</code></td>
-                    <td>Internal globally unique system ID of the token.</td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:bracketed</b></code></td>
-                    <td><code>java.lang.Boolean</code></td>
-                    <td>Whether or not this token is surrounded by any of <code>'['</code>, <code>']'</code>, <code>'{'</code>, <code>'}'</code>, <code>'('</code>, <code>')'</code> brackets.</td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:freeword</b></code></td>
-                    <td><code>java.lang.Boolean</code></td>
-                    <td>Whether or not this token represents a free word. A free word is a token that was detected neither as a part of user defined or system tokens.</td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:direct</b></code></td>
-                    <td><code>java.lang.Boolean</code></td>
-                    <td>Whether or not this token was matched on direct (not permutated) synonym.</td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:english</b></code></td>
-                    <td><code>java.lang.Boolean</code></td>
-                    <td>
-                        Whether this token represents an English word. Note that this only checks that token's text
-                        consists of characters of English alphabet, i.e. the text doesn't have to be necessary a
-                        known valid English word. See <a href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#isNonEnglishAllowed--" target="javadoc">NCModelView.isNonEnglishAllowed()</a> method
-                        for corresponding model configuration.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:lemma</b></code></td>
-                    <td><code>java.lang.String</code></td>
-                    <td>
-                        Lemma of this token, i.e. a canonical form of this word. Note that stemming and
-                        lemmatization allow to reduce inflectional forms and sometimes derivationally related forms
-                        of a word to a common base form. Lemmatization refers to the use of a vocabulary and
-                        morphological analysis of words, normally aiming to remove inflectional endings only and to
-                        return the base or dictionary form of a word, which is known as the lemma.
-                        Learn more at <a target=_ href="https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html">https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html</a>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:stem</b></code></td>
-                    <td><code>java.lang.String</code></td>
-                    <td>
-                        Stem of this token. Note that stemming and lemmatization allow to reduce inflectional forms
-                        and sometimes derivationally related forms of a word to a common base form. Unlike lemma,
-                        stemming is a basic heuristic process that chops off the ends of words in the hope of
-                        achieving this goal correctly most of the time, and often includes the removal of derivational
-                        affixes.
-                        Learn more at <a target=_ href="https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html">https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html</a>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:pos</b></code></td>
-                    <td><code>java.lang.String</code></td>
-                    <td>
-                        Penn Treebank POS tag for this token. Note that additionally to standard Penn Treebank POS
-                        tags NLPCraft introduced '-&#45;&#45;' synthetic tag to indicate a POS tag for multiword tokens.
-                        Learn more at <a target=_ href="http://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html">http://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html</a>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:posdesc</b></code></td>
-                    <td><code>java.lang.String</code></td>
-                    <td>
-                        Description of Penn Treebank POS tag.
-                        Learn more at <a target=_ href="http://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html">http://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html</a>
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:swear</b></code></td>
-                    <td><code>java.lang.Boolean</code></td>
-                    <td>
-                        Whether or not this token is a swear word. NLPCraft has built-in list of common English swear words.
-                        See <a href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#isSwearWordsAllowed--" target="javadoc">NCModelView.isSwearWordsAllowed()</a> for corresponding model configuration
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:origtext</b></code></td>
-                    <td><code>java.lang.String</code></td>
-                    <td>
-                        Original user input text for this token.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:normtext</b></code></td>
-                    <td><code>java.lang.String</code></td>
-                    <td>
-                        Normalized user input text for this token.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:sparsity</b></code></td>
-                    <td><code>java.lang.Integer</code></td>
-                    <td>
-                        Numeric value of how sparse the token is. Sparsity zero means that all individual words in
-                        the token follow each other.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:minindex</b></code></td>
-                    <td><code>java.lang.Integer</code></td>
-                    <td>
-                        Index of the first word in this token. Note that token may not be contiguous.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:maxindex</b></code></td>
-                    <td><code>java.lang.Integer</code></td>
-                    <td>
-                        Index of the last word in this token. Note that token may not be contiguous.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:wordindexes</b></code></td>
-                    <td><code>java.util.List&lt;Integer&gt;</code></td>
-                    <td>
-                        List of original word indexes in this token. Note that a token can have words that are not
-                        contiguous in the original sentence. Always has at least one element in it.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:wordlength</b></code></td>
-                    <td><code>java.lang.Integer</code></td>
-                    <td>
-                        Number of individual words in this token. Equal to the size of <code>wordindexes</code> list.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:contiguous</b></code></td>
-                    <td><code>java.lang.Boolean</code></td>
-                    <td>
-                        Whether or not this token has zero sparsity, i.e. consists of contiguous words.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:start</b></code></td>
-                    <td><code>java.lang.Integer</code></td>
-                    <td>
-                        Start character index of this token.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:end</b></code></td>
-                    <td><code>java.lang.Integer</code></td>
-                    <td>
-                        End character index of this token.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:index</b></code></td>
-                    <td><code>java.lang.Integer</code></td>
-                    <td>
-                        Index of this token in the sentence.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:charlength</b></code></td>
-                    <td><code>java.lang.Integer</code></td>
-                    <td>
-                        Character length of this token.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:quoted</b></code></td>
-                    <td><code>java.lang.Boolean</code></td>
-                    <td>
-                        Whether or not this token is surrounded by single or double quotes.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:stopword</b></code></td>
-                    <td><code>java.lang.Boolean</code></td>
-                    <td>
-                        Whether or not this token is a stopword. Stopwords are some extremely common words which
-                        add little value in helping understanding user input and are excluded from the processing entirely.
-                        For example, words like a, the, can, of, about, over, etc. are typical stopwords in English.
-                        NLPCraft has built-in set of stopwords.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:nlp:dict</b></code></td>
-                    <td><code>java.lang.Boolean</code></td>
-                    <td>
-                        Whether or not this token is found in Princeton WordNet database.
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:date" class="section-sub-title">Token ID <code>nlpcraft:date</code></span>
-        <p>
-            This token denotes a date range including single days.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b>.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-                <tr>
-                    <td><code><b>nlpcraft:date:from</b></code></td>
-                    <td><code>java.lang.Long</code></td>
-                    <td>
-                       Start timestamp of the datetime range.
-                    </td>
-                </tr>
-                <tr>
-                    <td><code><b>nlpcraft:date:to</b></code></td>
-                    <td><code>java.lang.Long</code></td>
-                    <td>
-                        End timestamp of the datetime range.
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:num" class="section-sub-title">Token ID <code>nlpcraft:num</code></span>
-        <p>
-            This token denotes a single numerical value or a numeric condition.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>nlpcraft:num:from</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>
-                    Start of numeric range that satisfies the condition (exclusive). Note that if <code>from</code>
-                    and <code>to</code> are the same this token represent a single value (whole or fractional) in
-                    which case <code>isequalcondition</code>> will be <code>true</code>.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:to</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>
-                    Ed of numeric range that satisfies the condition (exclusive). Note that if <code>from</code>
-                    and <code>to</code> are the same this token represent a single value (whole or fractional) in
-                    which case <code>isequalcondition</code>> will be <code>true</code>.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:fromincl</b></code></td>
-                <td><code>java.lang.Boolean</code></td>
-                <td>
-                    Whether or not start of the numeric range is inclusive
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:toincl</b></code></td>
-                <td><code>java.lang.Boolean</code></td>
-                <td>
-                    Whether or not end of the numeric range is inclusive
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:isequalcondition</b></code></td>
-                <td><code>java.lang.Boolean</code></td>
-                <td>
-                    Whether this is an equality condition. Note that single numeric values also default to equality
-                    condition and this property will be <code>true</code>. Indeed, <code>A is equal to 2</code> and
-                    <code>A is 2</code> have the same meaning.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:isnotequalcondition</b></code></td>
-                <td><code>java.lang.Boolean</code></td>
-                <td>
-                    Whether this is a not-equality condition.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:isfromnegativeinfinity</b></code></td>
-                <td><code>java.lang.Boolean</code></td>
-                <td>
-                    Whether this range is from negative infinity.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:israngecondition</b></code></td>
-                <td><code>java.lang.Boolean</code></td>
-                <td>
-                    Whether this is a range condition.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:istopositiveinfinity</b></code></td>
-                <td><code>java.lang.Boolean</code></td>
-                <td>
-                    Whether this range is to positive infinity.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:isfractional</b></code></td>
-                <td><code>java.lang.Boolean</code></td>
-                <td>
-                    Whether this token's value (single numeric value of a range) is a whole or a fractional number.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:unit</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Optional numeric value unit name (see below).
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:num:unittype</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Optional numeric value unit type (see below).
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <p>
-            Following table provides possible values for <code><b>nlpcraft:num:unit</b></code> and <code><b>nlpcraft:num:unittype</b></code>
-            properties:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>num:unittype</th>
-                <th>num:unit <sub>possible values</sub></th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr><td><code>mass</code></td><td><code>feet per second</code><br/><code>grams</code><br/><code>kilogram</code><br/><code>grain</code><br/><code>dram</code><br/><code>ounce</code><br/><code>pound</code><br/><code>hundredweight</code><br/><code>ton</code><br/><code>tonne</code><br/><code>slug</code></td>
-                <tr><td><code>torque</code></td><td><code>newton meter</code></td>
-                <tr><td><code>area</code></td><td><code>square meter</code><br/><code>acre</code><br/><code>are</code><br/><code>hectare</code><br/><code>square inches</code><br/><code>square feet</code><br/><code>square yards</code><br/><code>square miles</code></td>
-                <tr><td><code>paper quantity</code></td><td><code>paper bale</code></td>
-                <tr><td><code>force</code></td><td><code>kilopond</code><br/><code>pond</code></td>
-                <tr><td><code>pressure</code></td><td><code>pounds per square inch</code></td>
-                <tr><td><code>solid angle</code></td><td><code>steradian</code></td>
-                <tr><td><code>pressure</code><br/><code>stress</code></td><td><code>pascal</code></td>
-                <tr><td><code>luminous</code></td><td><code>flux</code><br/><code>lumen</code></td>
-                <tr><td><code>amount of substance</code></td><td><code>mole</code></td>
-                <tr><td><code>luminance</code></td><td><code>candela per square metre</code></td>
-                <tr><td><code>angle</code></td><td><code>radian</code><br/><code>degree</code></td>
-                <tr><td><code>magnetic flux density</code><br/><code>magnetic field</code></td><td><code>tesla</code></td>
-                <tr><td><code>power</code><br/><code>radiant flux</code></td><td><code>watt</code></td>
-                <tr><td><code>datetime</code></td><td><code>second</code><br/><code>minute</code><br/><code>hour</code><br/><code>day</code><br/><code>week</code><br/><code>month</code><br/><code>year</code></td>
-                <tr><td><code>electrical inductance</code></td><td><code>henry</code></td>
-                <tr><td><code>electric charge</code></td><td><code>coulomb</code></td>
-                <tr><td><code>temperature</code></td><td><code>kelvin</code><br/><code>centigrade</code><br/><code>fahrenheit</code></td>
-                <tr><td><code>voltage</code><br/><code>electrical</code></td><td><code>volt</code></td>
-                <tr><td><code>momentum</code></td><td><code>kilogram meters per second</code></td>
-                <tr><td><code>amount of heat</code></td><td><code>calorie</code></td>
-                <tr><td><code>electrical capacitance</code></td><td><code>farad</code></td>
-                <tr><td><code>radioactive decay</code></td><td><code>becquerel</code></td>
-                <tr><td><code>electrical conductance</code></td><td><code>siemens</code></td>
-                <tr><td><code>luminous intensity</code></td><td><code>candela</code></td>
-                <tr><td><code>work</code><br/><code>energy</code></td><td><code>joule</code></td>
-                <tr><td><code>quantities</code></td><td><code>dozen</code></td>
-                <tr><td><code>density</code></td><td><code>density</code></td>
-                <tr><td><code>sound</code></td><td><code>decibel</code></td>
-                <tr><td><code>electrical resistance</code><br/><code>impedance</code></td><td><code>ohm</code></td>
-                <tr><td><code>force</code><br/><code>weight</code></td><td><code>newton</code></td>
-                <tr><td><code>light quantity</code></td><td><code>lumen seconds</code></td>
-                <tr><td><code>length</code></td><td><code>meter</code><br/><code>millimeter</code><br/><code>centimeter</code><br/><code>decimeter</code><br/><code>kilometer</code><br/><code>astronomical unit</code><br/><code>light year</code><br/><code>parsec</code><br/><code>inch</code><br/><code>foot</code><br/><code>yard</code><br/><code>mile</code><br/><code>nautical mile</code></td>
-                <tr><td><code>refractive index</code></td><td><code>diopter</code></td>
-                <tr><td><code>frequency</code></td><td><code>hertz</code><br/><code>angular frequency</code></td>
-                <tr><td><code>power</code></td><td><code>kilowatt</code><br/><code>horsepower</code><br/><code>bar</code></td>
-                <tr><td><code>magnetic flux</code></td><td><code>weber</code></td>
-                <tr><td><code>current</code></td><td><code>ampere</code></td>
-                <tr><td><code>acceleration of gravity</code></td><td><code>gravity imperial</code><br/><code>gravity metric</code></td>
-                <tr><td><code>volume</code></td><td><code>cubic meter</code><br/><code>liter</code><br/><code>milliliter</code><br/><code>centiliter</code><br/><code>deciliter</code><br/><code>hectoliter</code><br/><code>cubic inch</code><br/><code>cubic foot</code><br/><code>cubic yard</code><br/><code>acre-foot</code><br/><code>teaspoon</code><br/><code>tablespoon</code><br/><code>fluid ounce</code><br/><code>cup</code><br/><code>gill</code><br/><code>pint</code><br/><code>quart</code> [...]
-                <tr><td><code>speed</code></td><td><code>miles per hour</code><br/><code>meters per second</code></td>
-                <tr><td><code>illuminance</code></td><td><code>lux</code></td>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:city" class="section-sub-title">Token ID <code>nlpcraft:city</code></span>
-        <p>
-            This token denotes a city.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>nlpcraft:city:city</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Name of the city.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:city:continent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Continent name.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:city:subcontinent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Subcontinent name.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:city:subcontinent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Subcontinent name.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:city:countrymeta</b></code></td>
-                <td><code>java.util.Map</code></td>
-                <td>
-                    Supplemental metadata for city's country (see below).
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:city:citymeta</b></code></td>
-                <td><code>java.util.Map</code></td>
-                <td>
-                    Supplemental metadata for city (see below).
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <p>
-            Following tables provides possible values for <code><b>nlpcraft:city:countrymeta</b></code> map. The data is
-            obtained from <a href="http://unstats.un.org" target=_>The United Nations Statistics Division</a> datasets:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Key</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>iso</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>ISO country code.</td>
-            </tr>
-            <tr>
-                <td><code><b>iso3</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>ISO 3166 country code.</td>
-            </tr>
-            <tr>
-                <td><code><b>isocode</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>ISO country code.</td>
-            </tr>
-            <tr>
-                <td><code><b>capital</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country capital city name.</td>
-            </tr>
-            <tr>
-                <td><code><b>area</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.Double</code></td>
-                <td>Optional country surface area.</td>
-            </tr>
-            <tr>
-                <td><code><b>population</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.Long</code></td>
-                <td>Optional country population.</td>
-            </tr>
-            <tr>
-                <td><code><b>continent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country continent.</td>
-            </tr>
-            <tr>
-                <td><code><b>currencycode</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Country currency code.</td>
-            </tr>
-            <tr>
-                <td><code><b>currencyname</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Country currency name.</td>
-            </tr>
-            <tr>
-                <td><code><b>phone</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country phone code.</td>
-            </tr>
-            <tr>
-                <td><code><b>postalcodeformat</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country postal code format.</td>
-            </tr>
-            <tr>
-                <td><code><b>postalcoderegex</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country postal code regular expression.</td>
-            </tr>
-            <tr>
-                <td><code><b>languages</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country list of languages.</td>
-            </tr>
-            <tr>
-                <td><code><b>neighbours</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country list of neighbours.</td>
-            </tr>
-            </tbody>
-        </table>
-        <p>
-            Following tables provides possible values for <code><b>nlpcraft:city:citymeta</b></code> map. The data is
-            obtained from <a href="http://unstats.un.org" target=_>The United Nations Statistics Division</a> datasets:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Key</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>latitude</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>City latitude.</td>
-            </tr>
-            <tr>
-                <td><code><b>longitude</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>City longitude.</td>
-            </tr>
-            <tr>
-                <td><code><b>population</b></code></td>
-                <td><code>java.lang.Long</code></td>
-                <td>City population.</td>
-            </tr>
-            <tr>
-                <td><code><b>elevation</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.Integer</code></td>
-                <td>Optional city elevation in meters.</td>
-            </tr>
-            <tr>
-                <td><code><b>timezone</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>City timezone.</td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:continent" class="section-sub-title">Token ID <code>nlpcraft:continent</code></span>
-        <p>
-            This token denotes a continent.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>nlpcraft:continent:continent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Name of the continent.</td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:subcontinent" class="section-sub-title">Token ID <code>nlpcraft:subcontinent</code></span>
-        <p>
-            This token denotes a subcontinent.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>nlpcraft:subcontinent:continent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Name of the continent.</td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:subcontinent:subcontinent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Name of the subcontinent.</td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:metro" class="section-sub-title">Token ID <code>nlpcraft:metro</code></span>
-        <p>
-            This token denotes a metro area.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>nlpcraft:metro:metro</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Name of the metro area.</td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:region" class="section-sub-title">Token ID <code>nlpcraft:region</code></span>
-        <p>
-            This token denotes a geographical region.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            </tbody>
-            <tr>
-                <td><code><b>nlpcraft:region:region</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Name of the region.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:region:continent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Continent name.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:region:subcontinent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Subcontinent name.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:region:subcontinent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Subcontinent name.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:region:countrymeta</b></code></td>
-                <td><code>java.util.Map</code></td>
-                <td>
-                    Supplemental metadata for region's country (see below).
-                </td>
-            </tr>
-        </table>
-        <p>
-            Following tables provides possible values for <code><b>nlpcraft:region:countrymeta</b></code> map. The data is
-            obtained from <a href="http://unstats.un.org" target=_>The United Nations Statistics Division</a> datasets:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Key</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>iso</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>ISO country code.</td>
-            </tr>
-            <tr>
-                <td><code><b>iso3</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>ISO 3166 country code.</td>
-            </tr>
-            <tr>
-                <td><code><b>isocode</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>ISO country code.</td>
-            </tr>
-            <tr>
-                <td><code><b>capital</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country capital city name.</td>
-            </tr>
-            <tr>
-                <td><code><b>area</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.Double</code></td>
-                <td>Optional country surface area.</td>
-            </tr>
-            <tr>
-                <td><code><b>population</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.Long</code></td>
-                <td>Optional country population.</td>
-            </tr>
-            <tr>
-                <td><code><b>continent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country continent.</td>
-            </tr>
-            <tr>
-                <td><code><b>currencycode</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Country currency code.</td>
-            </tr>
-            <tr>
-                <td><code><b>currencyname</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Country currency name.</td>
-            </tr>
-            <tr>
-                <td><code><b>phone</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country phone code.</td>
-            </tr>
-            <tr>
-                <td><code><b>postalcodeformat</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country postal code format.</td>
-            </tr>
-            <tr>
-                <td><code><b>postalcoderegex</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country postal code regular expression.</td>
-            </tr>
-            <tr>
-                <td><code><b>languages</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country list of languages.</td>
-            </tr>
-            <tr>
-                <td><code><b>neighbours</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country list of neighbours.</td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:country" class="section-sub-title">Token ID <code>nlpcraft:country</code></span>
-        <p>
-            This token denotes a country.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            </tbody>
-            <tr>
-                <td><code><b>nlpcraft:country:country</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Name of the country.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:country:continent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Continent name.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:country:subcontinent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Subcontinent name.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:country:subcontinent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Subcontinent name.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:country:countrymeta</b></code></td>
-                <td><code>java.util.Map</code></td>
-                <td>
-                    Supplemental metadata for region's country (see below).
-                </td>
-            </tr>
-        </table>
-        <p>
-            Following tables provides possible values for <code><b>nlpcraft:country:countrymeta</b></code> map. The data is
-            obtained from <a href="http://unstats.un.org" target=_>The United Nations Statistics Division</a> datasets:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Key</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>iso</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>ISO country code.</td>
-            </tr>
-            <tr>
-                <td><code><b>iso3</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>ISO 3166 country code.</td>
-            </tr>
-            <tr>
-                <td><code><b>isocode</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>ISO country code.</td>
-            </tr>
-            <tr>
-                <td><code><b>capital</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country capital city name.</td>
-            </tr>
-            <tr>
-                <td><code><b>area</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.Double</code></td>
-                <td>Optional country surface area.</td>
-            </tr>
-            <tr>
-                <td><code><b>population</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.Long</code></td>
-                <td>Optional country population.</td>
-            </tr>
-            <tr>
-                <td><code><b>continent</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country continent.</td>
-            </tr>
-            <tr>
-                <td><code><b>currencycode</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Country currency code.</td>
-            </tr>
-            <tr>
-                <td><code><b>currencyname</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>Country currency name.</td>
-            </tr>
-            <tr>
-                <td><code><b>phone</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country phone code.</td>
-            </tr>
-            <tr>
-                <td><code><b>postalcodeformat</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country postal code format.</td>
-            </tr>
-            <tr>
-                <td><code><b>postalcoderegex</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country postal code regular expression.</td>
-            </tr>
-            <tr>
-                <td><code><b>languages</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country list of languages.</td>
-            </tr>
-            <tr>
-                <td><code><b>neighbours</b></code> <sub>opt.</sub></td>
-                <td><code>java.lang.String</code></td>
-                <td>Optional country list of neighbours.</td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:coordinate" class="section-sub-title">Token ID <code>nlpcraft:coordinate</code></span>
-        <p>
-            This token denotes a latitude and longitude coordinate.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>coordinate:latitude</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>Coordinate latitude.</td>
-            </tr>
-            <tr>
-                <td><code><b>coordinate:longitude</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>Coordinate longitude.</td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:sort" class="section-sub-title">Token ID <code>nlpcraft:sort</code></span>
-        <p>
-            This token denotes a sorting or ordering function.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>nlpcraft:sort:subjindexes</b></code></td>
-                <td><code>java.util.List&lt;Integer&gt;</code></td>
-                <td>One of more indexes of the target tokens (i.e. the token that being sorted).</td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:sort:byindexes</b></code></td>
-                <td><code>java.util.List&lt;Integer&gt;</code></td>
-                <td>Zero or more (i.e. optional) indexes of the reference token (i.e. the token being sorted by).</td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:sort:asc</b></code></td>
-                <td><code>java.lang.Boolean</code></td>
-                <td>
-                    Whether sorting is in ascending or descending order.
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:limit" class="section-sub-title">Token ID <code>nlpcraft:limit</code></span>
-        <p>
-            This token denotes a numeric limit value (like in "top 10" or "bottom five").
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>nlpcraft:limit:indexes</b></code></td>
-                <td><code>java.util.List&lt;Integer&gt;</code></td>
-                <td>Index (always only one) of the reference token (i.e. the token being limited).</td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:limit:asc</b></code></td>
-                <td><code>java.lang.Boolean</code></td>
-                <td>
-                    Whether limit order is ascending or descending.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:limit:limit</b></code></td>
-                <td><code>java.lang.Integer</code></td>
-                <td>
-                    Numeric value of the limit.
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="nlpcraft:relation" class="section-sub-title">Token ID <code>nlpcraft:relation</code></span>
-        <p>
-            This token denotes a numeric limit value (like in "top 10" or "bottom five").
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>nlpcraft:relation:indexes</b></code></td>
-                <td><code>java.util.List&lt;Integer&gt;</code></td>
-                <td>Index (always only one) of the reference token (i.e. the token being related to).</td>
-            </tr>
-            <tr>
-                <td><code><b>nlpcraft:relation:type</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Type of the relation. One of the following values:
-                    <ul>
-                        <li><code>compare</code></li>
-                        <li><code>correlate</code></li>
-                    </ul>
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="google:xxx" class="section-sub-title">Token ID <code>google:xxx</code></span>
-        <p>
-            These tokens denote <code>xxx</code> that is a lower case name of the named entity
-            in <a target=_ href="https://cloud.google.com/natural-language/">Google APIs</a>, i.e.
-            <code>google:person</code>, <code>google:location</code>, etc.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>google:salience</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>Correctness probability of this token by Google Natural Language.</td>
-            </tr>
-            <tr>
-                <td><code><b>google:meta</b></code></td>
-                <td><code>java.util.Map&lt;String&gt;</code></td>
-                <td>
-                    Map-based container for Google Natural Language specific properties.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>google:mentionsbeginoffsets</b></code></td>
-                <td><code>java.util.List&lt;String&gt;</code></td>
-                <td>
-                    List of the mention begin offsets in the original normalized text.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>google:mentionscontents</b></code></td>
-                <td><code>java.util.List&lt;String&gt;</code></td>
-                <td>
-                    List of the mentions.
-                </td>
-            </tr>
-            <tr>
-                <td><code><b>google:mentionstypes</b></code></td>
-                <td><code>java.util.List&lt;String&gt;</code></td>
-                <td>
-                    List of the mention types.
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="stanford:xxx" class="section-sub-title">Token ID <code>stanford:xxx</code></span>
-        <p>
-            These tokens denote <code>xxx</code> that is a lower case name of the named entity
-            in <a target=_ href="https://stanfordnlp.github.io/CoreNLP">Stanford CoreNLP</a>, i.e.
-            <code>stanford:person</code>, <code>stanford:location</code>, etc.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>stanford:confidence</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>Correctness probability of this token by Stanford CoreNLP.</td>
-            </tr>
-            <tr>
-                <td><code><b>stanford:nne</b></code></td>
-                <td><code>java.lang.String</code></td>
-                <td>
-                    Normalized Named Entity (NNE) text.
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="spacy:xxx" class="section-sub-title">Token ID <code>spacy:xxx</code></span>
-        <p>
-            These tokens denote <code>xxx</code> that is a lower case name of the named entity
-            in <a target=_ href="https://spacy.io/">spaCy</a>, i.e.
-            <code>spacy:person</code>, <code>spacy:location</code>, etc.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>spacy:vector</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>spaCy span vector. </td>
-            </tr>
-            <tr>
-                <td><code><b>spacy:sentiment</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>
-                    A scalar value indicating the positivity or negativity of the token.
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <br/>
-        <span id="opennlp:xxx" class="section-sub-title">Token ID <code>opennlp:xxx</code></span>
-        <p>
-            These tokens denote <code>xxx</code> that is a lower case name of the named entity
-            in <a target=_ href="https://opennlp.apache.org/">Apache OpenNLP</a>, i.e.
-            <code>opennlp:person</code>, <code>opennlp:money</code>, etc.
-            Additionally to <code><b>nlpcraft:nlp:xxx</b></code> properties this type of token will have the following
-            metadata properties all of which are <b>mandatory</b> unless otherwise noted.
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Property</th>
-                <th>Java Type</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code><b>opennlp:probability</b></code></td>
-                <td><code>java.lang.Double</code></td>
-                <td>Correctness probability of this token by OpenNLP.</td>
-            </tr>
-            </tbody>
-        </table>
-    </section>
-</div>
-<div class="col-md-2 third-column">
-    <ul class="side-nav">
-        <li class="side-nav-title">On This Page</li>
-        <li><a href="#overview">Model Overview</a></li>
-        <li><a href="#dataflow">Model Dataflow</a></li>
-        <li><a href="#lifecycle">Model Lifecycle</a></li>
-        <li><a href="#config">Model Configuration</a></li>
-        <li><a href="#elements">Model Elements</a></li>
-        <li><a href="#dsl">Token DSL</a></li>
-        <li><a href="#logic">Model Logic</a></li>
-        <li><a href="#builtin">Built-In Tokens</a></li>
-        <li><a href="#meta">Token Metadata</a></li>
-        {% include quick-links.html %}
-    </ul>
-</div>
-
-
-
-
-
-
+        </pre><p> The <code>{qual}param</code> is the left side parameter and it can have optional qualifier (<code>qual</code>). Qualifier allows to reference participant tokens either by their ID or their DSL expression's alias using dot-notation. For example:</p><table class="gradient-table"><thead><tr><th>Qualifier<th>Description<tbody><tr><td> <code><b>partId.</b>groups @@ 'my_grp'</code><td> There must be a participant token (i.e. constituent token) with either token ID or alias of [...]
diff --git a/docs.html b/docs.html
index d0440d0..0308a77 100644
--- a/docs.html
+++ b/docs.html
@@ -1,9 +1,3 @@
----
-active_crumb: Docs
-layout: documentation
-id: overview
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,102 +15,4 @@ id: overview
  limitations under the License.
 -->
 
-<div class="col-md-8 second-column">
-    <section id="overview">
-        <h2 class="section-title">Overview</h2>
-        <p>
-            NLPCraft is a Java-based <a href="/legal.html">open source</a> library for adding a natural language
-            interface to any applications. It can work with
-            any private or public data source, and has no hardware or software lock-in.
-            You can build models and intents for NLPCraft using any JVM-based languages like Java, Scala, Kotlin, Groovy, etc. NLPCraft
-            exposes REST APIs for integration with user applications that can be written in any language or system.
-        </p>
-        <p>
-            One of the key features of NLPCraft is its use of advance semantic modelling that is tailor made for
-            domain-specific natural language interface. It doesn't require traditional ML
-            approach involving model training or corpora development leading to much <em>simpler</em>
-            implementation and shorter development time. 
-        </p>
-        <p>
-            How does it work in a nutshell?
-        </p>
-        <p>
-            When using NLPCraft you will be dealing with three main components:
-        </p>
-        <ul>
-            <li><a href="#data-model">Data model</a></li>
-            <li><a href="#data-probe">Data probe</a></li>
-            <li><a href="#server">REST Server</a></li>
-        </ul>
-        <figure>
-            <img class="img-fluid" src="/images/homepage-fig1.1.png" alt="">
-            <figcaption><b>Fig 1.</b> NLPCraft Architecture</figcaption>
-        </figure>
-    </section>
-    <section id="data-model">
-        <h3 class="section-title">Data Model</h3>
-        <p>
-            NLPCraft employs model-as-a-code approach where entire data model is an implementation of
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a> Java interface that
-            can be developed using any JVM programming language like Java, Scala, Kotlin or Groovy.
-            Data model implementation defines how to interpret user input, and how to query or control a particular
-            data source. Model-as-a-code natively supports any software lifecycle tools and frameworks in Java eco-system.
-        </p>
-        <p>
-            Typically, declarative portion of the model will be stored in a separate JSON or YAML file
-            for simpler modifications. There are no practical limitation on how complex or simple a model
-            can be, or what other tools it can use. Most data models will also use <a href="/intent-matching.html">intent-based matching</a>
-            provided by NLPCraft out-of-the-box.
-        </p>
-        <p>
-            To use data model it has to be deployed into data probe.
-        </p>
-    </section>
-    <section id="data-probe">
-        <h3 class="section-title">Data Probe</h3>
-        <p>
-            Data probe is an application designed to securely deploy and manage data models.
-            Each probe can deploy and manage multiple models and many probes can be connected to the REST server (or a cluster of REST servers).
-            The main purpose of the data probe is to separate data model hosting from managing REST calls from the clients.
-            While you would typically have just one REST server, you may have multiple data probes deployed
-            in different geo-locations and configured differently.
-        </p>
-        <p>
-            Data probes can be deployed and run anywhere as long as there is an outbound connectivity to the REST server, and are
-            typically deployed in DMZ or close to your target data sources: on-premise, in the cloud, etc. Data
-            probe uses strong 256-bit encryption and ingress only connectivity for communicating with the REST server.
-        </p>
-    </section>
-    <section id="server">
-        <h3 class="section-title">REST Server</h3>
-        <p>
-            REST server (or a cluster of REST servers behind a load balancer) provides URL endpoint for user applications
-            to securely query data sources using NLI via data models deployed in data probes. Its main purpose is to
-            accept REST-over-HTTP calls from user applications, manage connected data probes, and route user requests
-            to and from requested data probes.
-        </p>
-        <p>
-            Unlike data probe that gets restarted every time the model is changed, i.e. during development, the
-            REST server is a "start-and-forget" component that can be launched once while various data probes can
-            continuously reconnect to it. It can typically run as a Docker image locally on premise or on the cloud.
-        </p>
-        <p>
-            Learn more about <a href="data-model.html">data model</a>,
-            <a href="server-and-probe.html#probe">data probe</a> and <a href="server-and-probe.html#server">REST server</a>.
-        </p>
-    </section>
-</div>
-<div class="col-md-2 third-column">
-    <ul class="side-nav">
-        <li class="side-nav-title">On This Page</li>
-        <li><a href="#overview">Overview</a></li>
-        <li><a href="#data-model">Data Model</a></li>
-        <li><a href="#data-probe">Data Probe</a></li>
-        <li><a href="#server">REST Server</a></li>
-        {% include quick-links.html %}
-    </ul>
-</div>
-
-
-
-
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
diff --git a/download.html b/download.html
index ae68e36..608f142 100644
--- a/download.html
+++ b/download.html
@@ -1,8 +1,3 @@
----
-active_crumb: Download
-layout: interior
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -20,401 +15,65 @@ layout: interior
  limitations under the License.
 -->
 
-<h1 class="page-title">
-    <span><i class="fas fa-fw fa-download"></i> {{ page.active_crumb }}</span>
-</h1>
-
-<div id="downloads" class="three-cols-container">
-    <div class="col-md-2 first-column">
-        <ul class="side-nav">
-            <li class="side-nav-title">Introduction</li>
-            <li><a href="/docs.html">Overview</a></li>
-            <li><a href="/installation.html">Installation</a></li>
-            <li><a href="/getting-started.html">Getting Started</a></li>
-        </ul>
-    </div>
-    <div class="col-md-8 second-column">
-        <section id="prerequisites">
-            <h2 class="section-title">Support</h2>
-            <p>
-                Here's the list of tools you will need to get started with NLPCraft:
-            </p>
-            <ul>
-                <li>
-                    <a target=_new href="https://www.oracle.com/technetwork/java/javase/downloads/index.html">Java SE Runtime Environment</a>
-                    (JRE) or <a target=_new href="https://openjdk.java.net/">OpenJDK</a> ver. 8 or later installed.
-                </li>
-                <li>
-                    Latest versions of <a target=_ href="https://git-scm.com/downloads">Git</a> and
-                    <a target=_ href="https://maven.apache.org/install.html">Maven</a>.
-                </li>
-            </ul>
-            <p>
-                For any questions, feedback or suggestions:
-            </p>
-            <ul>
-                <li>
-                    File a bug or improvement in <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT">NLPCraft JIRA</a>
-                </li>
-                <li>
-                    Post a question at <i class="fab fa-stack-overflow"></i>&nbsp;<a href="https://stackoverflow.com/questions/ask">Stack Overflow</a> using <code>nlpcraft</code> tag
-                </li>
-                <li>
-                    Access <a target="github" href="https://github.com/apache/incubator-nlpcraft">GitHub</a> mirror repository.
-                </li>
-                <li>
-                    Join project developers on <a href="mailto:dev@nlpcraft.apache.org">dev@nlpcraft.apache.org</a>
-                </li>
-            </ul>
-            <p>
-                By downloading NLPCraft you are agreeing to <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a> terms <span class="amp">&amp;</span> conditions.
-            </p>
-        </section>
-        <section id="src">
-            <h2 class="section-title">Source Release</h2>
-            <p>
-                Download the NLPCraft release - <code><b>{{site.latest_version}}</b></code> is the latest version:
-            </p>
-            <table class="gradient-table max-width">
-                <thead>
-                <tr>
-                    <th>File Name</th>
-                    <th>Version</th>
-                    <th>Release Date</th>
-                    <th>Signatures</th>
-                    <th></th>
-                </tr>
-                </thead>
-                <tbody>
-                {% for rel in site.data.src-releases %}
-                <tr>
-                    <td>
-                        <i class="fa fa-fw fa-download"></i> <a href="{{rel.zip_url}}">{{rel.zip_name}}</a>
-                        {% unless rel.backward_compatible %}<i class="fas fa-fw fa-bomb"></i>{% endunless %}
-                    </td>
-                    <td>{{rel.version}}</td>
-                    <td>{{rel.date}}</td>
-                    <td class="download-sigs">
-                        <a href="{{rel.sha256_url}}">SHA256</a>
-                        <a href="{{rel.pgp_url}}">PGP</a>
-                    </td>
-                    <td>
-                        <a href="/release-notes-{{rel.version}}.html"><i class="fas fa-fw fa-file-alt"></i></a>
-                        <a target=_ href="/apis/javadoc-{{rel.version}}/index.html"><i class="fab fa-fw fa-java"></i></a>
-                        <a target="github" href="{{rel.github_link}}"><i class="fab fa-fw fa-github"></i></a>
-                    </td>
-                </tr>
-                {% endfor %}
-                </tbody>
-            </table>
-            <div class="bq info">
-                <p>
-                    Releases marked with <i class="fas fa-fw fa-bomb"></i> are <b>NOT</b> backward compatible.
-                </p>
-            </div>
-        </section>
-        <section id="zip">
-            <h2 class="section-title">Binary Release / Docker</h2>
-            <p>
-                Download the NLPCraft binary release - <code><b>{{site.latest_version}}</b></code> is the latest version:
-            </p>
-            <table class="gradient-table max-width">
-                <thead>
-                <tr>
-                    <th>File Name</th>
-                    <th>Version</th>
-                    <th>Release Date</th>
-                    <th>Signatures</th>
-                    <th></th>
-                </tr>
-                </thead>
-                <tbody>
-                {% for rel in site.data.bin-releases %}
-                <tr>
-                    <td>
-                        <i class="fa fa-fw fa-download"></i> <a href="{{rel.zip_url}}">{{rel.zip_name}}</a>
-                        {% unless rel.backward_compatible %}<i class="fas fa-fw fa-bomb"></i>{% endunless %}
-                    </td>
-                    <td>{{rel.version}}</td>
-                    <td>{{rel.date}}</td>
-                    <td class="download-sigs">
-                        <a href="{{rel.sha256_url}}">SHA256</a>
-                        <a href="{{rel.pgp_url}}">PGP</a>
-                    </td>
-                    <td>
-                        <a href="/release-notes-{{rel.version}}.html"><i class="fas fa-fw fa-file-alt"></i></a>
-                        <a target=_ href="/apis/javadoc-{{rel.version}}/index.html"><i class="fab fa-fw fa-java"></i></a>
-                        <a target="github" href="{{rel.github_link}}"><i class="fab fa-fw fa-github"></i></a>
-                        {% if rel.dockerhub_link %}<a target="docker" href="{{rel.dockerhub_link}}"><i class="fab fa-fw fa-docker"></i></a>{% endif %}
-                    </td>
-                </tr>
-                {% endfor %}
-                </tbody>
-            </table>
-            <div class="bq warn">
-                <p>
-                    <b>Apache Release Policy</b>
-                </p>
-                <p>
-                    Binary downloads are provided for the convenience of our users and are not official Apache NLPCraft
-                    releases. In order to verify the release, we recommend that you download the official source
-                    distribution and <a href="#verification">verify</a> the signatures of the downloaded files before opening them.
-                </p>
-                <p>
-                    See <a target="asf" href="http://www.apache.org/dev/release.html#what">more</a> information about
-                    Apache release policy.
-                </p>
-            </div>
-            <div class="bq info">
-                <p>
-                    Releases marked with <i class="fas fa-fw fa-bomb"></i> are <b>NOT</b> backward compatible.
-                </p>
-            </div>
-        </section>
-        <section id="build">
-            <h2 class="section-title">Building Binaries</h2>
-            <p>
-                To build binaries from the source release download the <a href="#src">source release</a> and run
-                the following commands:
-            </p>
-            <pre class="brush: plain, highlight: [2,3,6]">
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
                 # Unpack the source package.
-                $ unzip -q apache-nlpcraft-{{site.latest_version}}-src.zip
-                $ cd apache-nlpcraft-{{site.latest_version}}-src
+                $ unzip -q apache-nlpcraft-0.5.0-src.zip
+                $ cd apache-nlpcraft-0.5.0-src
 
                 # Build NLPCraft.
                 $ mvn clean package -DskipTests
-            </pre>
-        </section>
-        <section id="verification">
-            <h2 class="section-title">Release Verification</h2>
-            <p>
-                We highly recommend to verify the integrity and authenticity of the ZIP archive by comparing cryptographic
-                signatures.
-            </p>
-            <div class="bq warn">
-                <p>
-                    <b>NOTE:</b> <code>MD5</code> and <code>SHA1</code> signatures provided only for
-                    rare backward compatibility as they are not cryptographically strong and generally
-                    not recommended. In most cases you should only trust to <code>PGP</code> or <code>SHA256</code>
-                    signatures.
-                </p>
-            </div>
-            <p>
-                Following instructions assume binary release on Mac OS/Linux environment but the verification steps are
-                similar for Windows. Note that you can also verify signatures online at
-                <a target=_ href="https://md5file.com/calculator">File Hash Online Calculator</a> or
-                <a target=_ href="http://onlinemd5.com/">Online MD5</a>.
-            </p>
-            <h3 class="section-title">Mac OS</h3>
-            <nav>
-                <div class="nav nav-tabs" role="tablist">
-                    <a class="nav-item nav-link active" data-toggle="tab" href="#nav-macos-md5" role="tab" aria-controls="nav-home" aria-selected="true">MD5</a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-macos-sha1" role="tab" aria-controls="nav-home" aria-selected="true">SHA1</a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-macos-sha256" role="tab" aria-controls="nav-home" aria-selected="true">SHA256</a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-macos-pgp" role="tab" aria-controls="nav-home" aria-selected="true">PGP</a>
-                </div>
-            </nav>
-            <div class="tab-content">
-                <div class="tab-pane fade show active" id="nav-macos-md5" role="tabpanel">
-                <pre class="brush: plain">
+            </pre></section><section id="verification"><h2 class="section-title">Release Verification</h2><p> We highly recommend to verify the integrity and authenticity of the ZIP archive by comparing cryptographic signatures.</p><div class="bq warn"><p> <b>NOTE:</b> <code>MD5</code> and <code>SHA1</code> signatures provided only for rare backward compatibility as they are not cryptographically strong and generally not recommended. In most cases you should only trust to <code>PGP</code [...]
                     # Run these two commands and compare generated hashes:
-                    $ openssl dgst -md5 apache-nlpcraft-{{site.latest_version}}.zip
-                    $ cat apache-nlpcraft-{{site.latest_version}}.zip.md5
-                </pre>
-                </div>
-                <div class="tab-pane fade show" id="nav-macos-sha256" role="tabpanel">
-                <pre class="brush: plain">
+                    $ openssl dgst -md5 apache-nlpcraft-0.5.0.zip
+                    $ cat apache-nlpcraft-0.5.0.zip.md5
+                </pre></div><div class="tab-pane fade show" id="nav-macos-sha256" role="tabpanel"><pre class="brush: plain">
                     # Run these two commands and compare generated hashes:
-                    $ openssl dgst -sha256 apache-nlpcraft-{{site.latest_version}}.zip
-                    $ cat apache-nlpcraft-{{site.latest_version}}.zip.sha256
-                </pre>
-                </div>
-                <div class="tab-pane fade show" id="nav-macos-sha1" role="tabpanel">
-                <pre class="brush: plain">
+                    $ openssl dgst -sha256 apache-nlpcraft-0.5.0.zip
+                    $ cat apache-nlpcraft-0.5.0.zip.sha256
+                </pre></div><div class="tab-pane fade show" id="nav-macos-sha1" role="tabpanel"><pre class="brush: plain">
                     # Run these two commands and compare generated hashes:
-                    $ openssl dgst -sha1 apache-nlpcraft-{{site.latest_version}}.zip
-                    $ cat apache-nlpcraft-{{site.latest_version}}.zip.sha1
-                </pre>
-                </div>
-                <div class="tab-pane fade show" id="nav-macos-pgp" role="tabpanel">
-                <pre class="brush: plain">
+                    $ openssl dgst -sha1 apache-nlpcraft-0.5.0.zip
+                    $ cat apache-nlpcraft-0.5.0.zip.sha1
+                </pre></div><div class="tab-pane fade show" id="nav-macos-pgp" role="tabpanel"><pre class="brush: plain">
                     # NOTE: make sure to have GPGTools (gpgtools.org) installed.
-                    $ gpg --verify apache-nlpcraft-{{site.latest_version}}.zip.sig apache-nlpcraft-{{site.latest_version}}.zip
-                </pre>
-                </div>
-            </div>
-            <h3 class="section-title">Linux</h3>
-            <nav>
-                <div class="nav nav-tabs" role="tablist">
-                    <a class="nav-item nav-link active" data-toggle="tab" href="#nav-linux-md5" role="tab" aria-controls="nav-home" aria-selected="true">MD5</a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-linux-sha1" role="tab" aria-controls="nav-home" aria-selected="true">SHA1</a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-linux-sha256" role="tab" aria-controls="nav-home" aria-selected="true">SHA256</a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-linux-pgp" role="tab" aria-controls="nav-home" aria-selected="true">PGP</a>
-                </div>
-            </nav>
-            <div class="tab-content">
-                <div class="tab-pane fade show active" id="nav-linux-md5" role="tabpanel">
-                <pre class="brush: plain">
-                    $ md5sum --check apache-nlpcraft-{{site.latest_version}}.zip.md5
-                </pre>
-                </div>
-                <div class="tab-pane fade show" id="nav-linux-sha256" role="tabpanel">
-                <pre class="brush: plain">
-                    $ sha256sum --check apache-nlpcraft-{{site.latest_version}}.zip.sha256
-                </pre>
-                </div>
-                <div class="tab-pane fade show" id="nav-linux-sha1" role="tabpanel">
-                <pre class="brush: plain">
-                    $ sha1sum --check apache-nlpcraft-{{site.latest_version}}.zip.sha1
-                </pre>
-                </div>
-                <div class="tab-pane fade show" id="nav-linux-pgp" role="tabpanel">
-                <pre class="brush: plain">
-                    $ gpg --verify apache-nlpcraft-{{site.latest_version}}.zip.sig apache-nlpcraft-{{site.latest_version}}.zip
-                </pre>
-                </div>
-            </div>
-        </section>
-        <section id="maven">
-            <h2 class="section-title">Maven/Grape/SBT</h2>
-            <p>
-                The easiest way to start using NLPCraft is to add Maven dependency (Grape, SBT, etc.) to your
-                project. NLPCraft project consists of a single module.
-            </p>
-            <nav>
-                <div class="nav nav-tabs" role="tablist">
-                    <a class="nav-item nav-link active" data-toggle="tab" href="#nav-maven" role="tab" aria-controls="nav-home" aria-selected="true">Maven <sup>Java</sup></a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-grape" role="tab" aria-controls="nav-profile" aria-selected="false">Grape <sup>Groovy</sup></a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-gradle" role="tab" aria-controls="nav-profile" aria-selected="false">Gradle <sup>Kotlin</sup></a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-sbt" role="tab" aria-controls="nav-contact" aria-selected="false">SBT <sup>Scala</sup></a>
-                </div>
-            </nav>
-            <div class="tab-content">
-                <div class="tab-pane fade show active" id="nav-maven" role="tabpanel">
-                    <pre class="brush: xml">
+                    $ gpg --verify apache-nlpcraft-0.5.0.zip.sig apache-nlpcraft-0.5.0.zip
+                </pre></div></div><h3 class="section-title">Linux</h3><nav><div class="nav nav-tabs" role="tablist"> <a class="nav-item nav-link active" data-toggle="tab" href="#nav-linux-md5" role="tab" aria-controls="nav-home" aria-selected="true">MD5</a> <a class="nav-item nav-link" data-toggle="tab" href="#nav-linux-sha1" role="tab" aria-controls="nav-home" aria-selected="true">SHA1</a> <a class="nav-item nav-link" data-toggle="tab" href="#nav-linux-sha256" role="tab" aria-controls=" [...]
+                    $ md5sum --check apache-nlpcraft-0.5.0.zip.md5
+                </pre></div><div class="tab-pane fade show" id="nav-linux-sha256" role="tabpanel"><pre class="brush: plain">
+                    $ sha256sum --check apache-nlpcraft-0.5.0.zip.sha256
+                </pre></div><div class="tab-pane fade show" id="nav-linux-sha1" role="tabpanel"><pre class="brush: plain">
+                    $ sha1sum --check apache-nlpcraft-0.5.0.zip.sha1
+                </pre></div><div class="tab-pane fade show" id="nav-linux-pgp" role="tabpanel"><pre class="brush: plain">
+                    $ gpg --verify apache-nlpcraft-0.5.0.zip.sig apache-nlpcraft-0.5.0.zip
+                </pre></div></div></section><section id="maven"><h2 class="section-title">Maven/Grape/SBT</h2><p> The easiest way to start using NLPCraft is to add Maven dependency (Grape, SBT, etc.) to your project. NLPCraft project consists of a single module.</p><nav><div class="nav nav-tabs" role="tablist"> <a class="nav-item nav-link active" data-toggle="tab" href="#nav-maven" role="tab" aria-controls="nav-home" aria-selected="true">Maven <sup>Java</sup></a> <a class="nav-item nav-l [...]
                     &lt;dependency&gt;
                         &lt;groupId&gt;org.apache.nlpcraft&lt;/groupId&gt;
                         &lt;artifactId&gt;nlpcraft&lt;/artifactId&gt;
-                        &lt;version&gt;{{site.latest_version}}&lt;/version&gt;
+                        &lt;version&gt;0.5.0&lt;/version&gt;
                     &lt;/dependency&gt;
-                    </pre>
-                </div>
-                <div class="tab-pane fade" id="nav-grape" role="tabpanel">
-                    <pre class="brush: java">
-                    @Grab ('org.apache.nlpcraft:nlpcraft:{{site.latest_version}}')
-                    </pre>
-                </div>
-                <div class="tab-pane fade" id="nav-gradle" role="tabpanel">
-                    <pre class="brush: java">
+                    </pre></div><div class="tab-pane fade" id="nav-grape" role="tabpanel"><pre class="brush: java">
+                    @Grab ('org.apache.nlpcraft:nlpcraft:0.5.0')
+                    </pre></div><div class="tab-pane fade" id="nav-gradle" role="tabpanel"><pre class="brush: java">
                     dependencies {
-                        runtime group: 'org.apache.nlpcraft', name: 'nlpcraft', version: '{{site.latest_version}}'
+                        runtime group: 'org.apache.nlpcraft', name: 'nlpcraft', version: '0.5.0'
                     }
-                    </pre>
-                </div>
-                <div class="tab-pane fade" id="nav-sbt" role="tabpanel">
-                    <pre class="brush: scala">
-                    libraryDependencies += "org.apache.nlpcraft" % "nlpcraft" % "{{site.latest_version}}"
-                    </pre>
-                </div>
-            </div>
-            <div class="bq info">
-                <p>
-                    <b>Latest Version</b>
-                </p>
-                <p>
-                    <code>{{site.latest_version}}</code> is the latest version. You can replace it
-                    with a desired version.
-                </p>
-            </div>
-        </section>
-        <section id="github">
-            <h2 class="section-title">GitHub</h2>
-            <p>
-                If you want to contribute to the project or build it form the source
-                you need to get the full developer snapshot from <a target="github" href="https://github.com/apache/incubator-nlpcraft">GitHub</a>:
-            </p>
-            <pre class="brush: plain">
+                    </pre></div><div class="tab-pane fade" id="nav-sbt" role="tabpanel"><pre class="brush: scala">
+                    libraryDependencies += "org.apache.nlpcraft" % "nlpcraft" % "0.5.0"
+                    </pre></div></div><div class="bq info"><p> <b>Latest Version</b></p><p> <code>0.5.0</code> is the latest version. You can replace it with a desired version.</p></div></section><section id="github"><h2 class="section-title">GitHub</h2><p> If you want to contribute to the project or build it form the source you need to get the full developer snapshot from <a target="github" href="https://github.com/apache/incubator-nlpcraft">GitHub</a>:</p><pre class="brush: plain">
             $ git clone https://github.com/apache/incubator-nlpcraft.git
             $ mvn clean package
-            </pre>
-            <div class="bq info">
-                <p>
-                    <b>GitHub vs. ZIP vs. Maven</b>
-                </p>
-                <p>
-                    Use GitHub clone if you want to contribute to the project or build it from source.
-                    To build your own models and integrate into your own application it is recommended to
-                    download ZIP archive or use build tools and add build dependency.
-                </p>
-            </div>
-        </section>
-        <section id="java-client">
-            <h2 class="section-title">Java Client <i class="fab fa-java"></i></h2>
-            <p>
-                NLPCraft provides native Java Client for <a href="using-rest.html">REST APIs</a>. Java Client is hosted as a separate
-                <a target="github" href="https://github.com/apache/incubator-nlpcraft-java-client">GitHub project</a> and you
-                can add Maven dependency (Grape, SBT, etc.) to your project to start using it:
-            </p>
-            <nav>
-                <div class="nav nav-tabs" role="tablist">
-                    <a class="nav-item nav-link active" data-toggle="tab" href="#nav-java-client-maven" role="tab" aria-controls="nav-home" aria-selected="true">Maven <sup>Java</sup></a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-java-client-grape" role="tab" aria-controls="nav-profile" aria-selected="false">Grape <sup>Groovy</sup></a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-java-client-gradle" role="tab" aria-controls="nav-profile" aria-selected="false">Gradle <sup>Kotlin</sup></a>
-                    <a class="nav-item nav-link" data-toggle="tab" href="#nav-java-client-sbt" role="tab" aria-controls="nav-contact" aria-selected="false">SBT <sup>Scala</sup></a>
-                </div>
-            </nav>
-            <div class="tab-content">
-                <div class="tab-pane fade show active" id="nav-java-client-maven" role="tabpanel">
-                    <pre class="brush: xml">
+            </pre><div class="bq info"><p> <b>GitHub vs. ZIP vs. Maven</b></p><p> Use GitHub clone if you want to contribute to the project or build it from source. To build your own models and integrate into your own application it is recommended to download ZIP archive or use build tools and add build dependency.</p></div></section><section id="java-client"><h2 class="section-title">Java Client <i class="fab fa-java"></i></h2><p> NLPCraft provides native Java Client for <a href="using- [...]
                     &lt;dependency&gt;
                         &lt;groupId&gt;org.apache.nlpcraft&lt;/groupId&gt;
                         &lt;artifactId&gt;nlpcraft-java-client&lt;/artifactId&gt;
-                        &lt;version&gt;{{site.java_client_latest_version}}&lt;/version&gt;
+                        &lt;version&gt;0.5.0&lt;/version&gt;
                     &lt;/dependency&gt;
-                    </pre>
-                </div>
-                <div class="tab-pane fade" id="nav-java-client-grape" role="tabpanel">
-                    <pre class="brush: java">
-                    @Grab ('org.apache.nlpcraft:nlpcraft-java-client:{{site.java_client_latest_version}}')
-                    </pre>
-                </div>
-                <div class="tab-pane fade" id="nav-java-client-gradle" role="tabpanel">
-                    <pre class="brush: java">
+                    </pre></div><div class="tab-pane fade" id="nav-java-client-grape" role="tabpanel"><pre class="brush: java">
+                    @Grab ('org.apache.nlpcraft:nlpcraft-java-client:0.5.0')
+                    </pre></div><div class="tab-pane fade" id="nav-java-client-gradle" role="tabpanel"><pre class="brush: java">
                     dependencies {
-                        runtime group: 'org.apache.nlpcraft', name: 'nlpcraft-java-client', version: '{{site.java_client_latest_version}}'
+                        runtime group: 'org.apache.nlpcraft', name: 'nlpcraft-java-client', version: '0.5.0'
                     }
-                    </pre>
-                </div>
-                <div class="tab-pane fade" id="nav-java-client-sbt" role="tabpanel">
-                    <pre class="brush: scala">
-                    libraryDependencies += "org.apache.nlpcraft" % "nlpcraft-java-client" % "{{site.java_client_latest_version}}"
-                    </pre>
-                </div>
-            </div>
-            <div class="bq info">
-                <p>
-                    <b>Latest Version</b>
-                </p>
-                <p>
-                    <code>{{site.java_client_latest_version}}</code> is the latest Java Client version. You can replace it
-                    with a desired version.
-                </p>
-            </div>
-        </section>
-    </div>
-    <div class="col-md-2 third-column">
-        <ul class="side-nav">
-            <li class="side-nav-title">On This Page</li>
-            <li><a href="#src">Source Release</a></li>
-            <li><a href="#zip">Binary Release</a></li>
-            <li><a href="#build">Building Binaries</a></li>
-            <li><a href="#verification">Verification</a></li>
-            <li><a href="#maven">Maven/Grape/SBT</a></li>
-            <li><a href="#github">GitHub</a></li>
-            <li><a href="#java-client">Java Client</a></li>
-            {% include quick-links.html %}
-        </ul>
-    </div>
-</div>
-
+                    </pre></div><div class="tab-pane fade" id="nav-java-client-sbt" role="tabpanel"><pre class="brush: scala">
+                    libraryDependencies += "org.apache.nlpcraft" % "nlpcraft-java-client" % "0.5.0"
+                    </pre></div></div><div class="bq info"><p> <b>Latest Version</b></p><p> <code>0.5.0</code> is the latest Java Client version. You can replace it with a desired version.</p></div></section></div><div class="col-md-2 third-column"><ul class="side-nav"><li class="side-nav-title">On This Page<li><a href="#src">Source Release</a><li><a href="#zip">Binary Release</a><li><a href="#build">Building Binaries</a><li><a href="#verification">Verification</a><li><a href="#maven">Ma [...]
diff --git a/examples/alarm_clock.html b/examples/alarm_clock.html
index aa5064d..6b6f8b9 100644
--- a/examples/alarm_clock.html
+++ b/examples/alarm_clock.html
@@ -1,9 +1,3 @@
----
-active_crumb: Alarm Clock <code><sub>ex</sub></code>
-layout: documentation
-id: alarm_clock
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,33 +15,9 @@ id: alarm_clock
  limitations under the License.
 -->
 
-<div class="col-md-8 second-column">
-    <section id="overview">
-        <h2 class="section-title">Overview</h2>
-        <p>
-            This simple example provides a "alarm clock" implementation where you can ask to set the timer
-            for a specific duration from now expressed in hours, minutes and/or seconds. You can say "ping me in 3 minutes",
-            "buzz me in an hour and 15 minutes", or "set my alarm for 30 secs". When the timers is up it will
-            simply print out "BEEP BEEP BEEP" in the data probe console.
-        </p>
-        <p>
-            Complexity: <span class="complexity-one-star"><i class="fas fa-star"></i><i class="far fa-star"></i><i class="far fa-star"></i></span><br/>
-            Source code: <a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples/alarm">GitHub</a>
-        </p>
-    </section>
-    <section id="new_project">
-        <h3 class="section-title">Create New Project</h3>
-        <p>
-            You can create new Java project in many different ways - we'll use Maven archetype generation
-            for that. In your home folder run the following command:
-        </p>
-        <pre class="brush: text">
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
             mvn archetype:generate -DgroupId=examples -DartifactId=my-app -DarchetypeVersion=1.4 -DinteractiveMode=false
-        </pre>
-        <p>
-            This will create <code>my-app</code> folder with the following default maven project structure:
-        </p>
-        <pre class="console">
+        </pre><p> This will create <code>my-app</code> folder with the following default maven project structure:</p><pre class="console">
 ├── <b>pom.xml</b>
 └── src
     ├── main
@@ -58,57 +28,21 @@ id: alarm_clock
         └── java
             └── examples
                 └── AppTest.java
-        </pre>
-        <div class="bq info">
-            <p>
-                Note that this setup is same for all examples. Note also that you can use any other tools for
-                creating and managing Java project with or without Maven.
-            </p>
-        </div>
-        <p>
-            For our example we'll use JetBrain's <a target=_new href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a>.
-            Create new IDEA project from this source folder (make sure to pick JDK 8 or later JDK and language support).
-            Let's also delete auto-generated files <code>App.java</code> and <code>AppTest.java</code> from our
-            project as we won't be using them.
-        </p>
-    </section>
-    <section id="add_nlpcraft">
-        <h3 class="section-title">Add NLPCraft</h3>
-        <p>
-            Next we need to add NLPCraft dependency to our new project. Open <code>pom.xml</code> file and replace
-            <code>dependencies</code> section with the following code:
-        </p>
-        <pre class="brush: xml, highlight: [3, 4, 5]">
+        </pre><div class="bq info"><p> Note that this setup is same for all examples. Note also that you can use any other tools for creating and managing Java project with or without Maven.</p></div><p> For our example we'll use JetBrain's <a target=_new href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a>. Create new IDEA project from this source folder (make sure to pick JDK 8 or later JDK and language support). Let's also delete auto-generated files <code>App.java</code> and <cod [...]
             &lt;dependencies&gt;
                 &lt;dependency&gt;
                     &lt;groupId&gt;org.apache.nlpcraft&lt;/groupId&gt;
                     &lt;artifactId&gt;nlpcraft&lt;/artifactId&gt;
-                    &lt;version&gt;{{site.latest_version}}&lt;/version&gt;
+                    &lt;version&gt;0.5.0&lt;/version&gt;
                 &lt;/dependency&gt;
             &lt;/dependencies&gt;
-        </pre>
-        <p>
-            Also make sure that you have correct JDK version (1.8 or above) for the maven compiler plugin:
-        </p>
-        <pre class="brush: xml, highlight: [3, 4]">
+        </pre><p> Also make sure that you have correct JDK version (1.8 or above) for the maven compiler plugin:</p><pre class="brush: xml, highlight: [3, 4]">
             &lt;properties&gt;
                 &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
                 &lt;maven.compiler.source&gt;1.8&lt;/maven.compiler.source&gt;
                 &lt;maven.compiler.target&gt;1.8&lt;/maven.compiler.target&gt;
             &lt;/properties&gt;
-        </pre>
-        <p>
-            IDEA should automatically reload the project with newly updated <code>pom.xml</code> file and
-            we should be ready now to develop our data model.
-        </p>
-    </section>
-    <section id="model">
-        <h3 class="section-title">Data Model</h3>
-        <p>
-            We are going to start with declaring our semantic model using JSON. Create new <code>alarm_model.json</code>
-            file and add the following model declaration into it:
-        </p>
-        <pre class="brush: js, highlight: [7, 16, 25]">
+        </pre><p> IDEA should automatically reload the project with newly updated <code>pom.xml</code> file and we should be ready now to develop our data model.</p></section><section id="model"><h3 class="section-title">Data Model</h3><p> We are going to start with declaring our semantic model using JSON. Create new <code>alarm_model.json</code> file and add the following model declaration into it:</p><pre class="brush: js, highlight: [7, 16, 25]">
 {
     "id": "nlpcraft.alarm.ex",
     "name": "Alarm Example Model",
@@ -136,34 +70,7 @@ id: alarm_clock
         "intent=alarm term={id=='x:alarm'} term(nums)={id=='nlpcraft:num' && ~nlpcraft:num:unittype=='datetime' && ~nlpcraft:num:isequalcondition==true}[0,7]"
     ]
 }
-        </pre>
-        <p>There are number of important points here:</p>
-        <ul>
-            <li>
-                <code>Line 7</code> indicates that we'll be using built-in token <code>nlpcraft:num</code> (and therefore
-                it needs to be explicitly enabled).
-            </li>
-            <li>
-                <code>Line 16</code> defines the only custom model element we'll need. It's ID is <code>x:alarm</code> and
-                it is defined through synonyms. It basically means a verb to set up an alarm clock.
-            </li>
-            <li>
-                On <code>line 25</code> we define an intent <code>alarm</code> that we are going to be looking for in the user input that
-                consists of two terms: one for <code>x:alarm</code> element (defined above) and another one for up to 7 numeric values
-                of unit type <code>datetime</code> (minutes, seconds, hours, etc.).
-            </li>
-        </ul>
-        <p>
-            Now that our model is ready let's create a Java class that would load this model and provide the actual
-            callback for when the intent <code>alarm</code> is detected in the user input.
-        </p>
-    </section>
-    <section id="code">
-        <h3 class="section-title">Model Class</h3>
-        <p>
-            Let's create new Java class in <code>AlarmModel.java</code> with the following code:
-        </p>
-        <pre class="brush: java, highlight: [9, 18, 21, 22, 23, 24, 68, 81]">
+        </pre><p>There are number of important points here:</p><ul><li> <code>Line 7</code> indicates that we'll be using built-in token <code>nlpcraft:num</code> (and therefore it needs to be explicitly enabled).<li> <code>Line 16</code> defines the only custom model element we'll need. It's ID is <code>x:alarm</code> and it is defined through synonyms. It basically means a verb to set up an alarm clock.<li> On <code>line 25</code> we define an intent <code>alarm</code> that we are goin [...]
 import org.apache.nlpcraft.model.*;
 
 import java.time.*;
@@ -247,111 +154,7 @@ public class AlarmModel extends NCModelFileAdapter {
         return NCResult.text("Timer set for: " + FMT.format(dt));
     }
 }
-        </pre>
-        <p>
-            There's a bit of a logic here that deals mostly with taking multiple numeric values and converting them into
-            a single number of milliseconds that the alarm clock needs to be set up for. Let's review it step by step:
-        </p>
-        <ul>
-            <li>
-                On <code>line 1</code> our class extends <code>NCModelFileAdapter</code> that allows us to load most
-                of the model declaration from the external JSON or YAML file (<code>line 10</code>) and only provide functionality that we
-                couldn't express in declarative portion in JSON.
-            </li>
-            <li>
-                <code>Lines 13-16</code> define method <code>onMatch</code> as a callback for intent <code>alarm</code>
-                when it is detected in the user input. Method parameter <code>numToks</code> will get up to 7 tokens
-                of type <code>nlpcraft:num</code> (see intent definition above).
-            </li>
-            <li>
-                The rest of the method <code>onMatch</code> implementation is a relatively straight forward Java code
-                that calculates timer delay from multiple numeric units and their types. In the end (<code>line 60</code>)
-                it schedules a timer to print "BEEP BEEP BEEP" at calculated time. For simplicity, this message will
-                be printed right in the data probe console.
-            </li>
-            <li>
-                On the <code>line 73</code> the intent callback simply returns a confirmation message telling
-                for what actual time the alarm clock was set.
-            </li>
-        </ul>
-    </section>
-    <section>
-        <h3 class="section-title">Start Data Probe</h3>
-        <p>
-            NLPCraft data models get deployed into data probe. Let's start data probe with our newly
-            created data model. To start data probe we need to configure Run Configuration in IDEA with
-            the following parameters:
-        </p>
-        <ul>
-            <li>
-                <b>Main class:</b> <code>org.apache.nlpcraft.NCStart</code>
-            </li>
-            <li>
-                <b>VM arguments:</b> <code>-Dconfig.override_with_env_vars=true</code>
-            </li>
-            <li>
-                <b>Environment variable:</b> <code>CONFIG_FORCE_nlpcraft_probe_models.0=path.to.AlarmModel</code>
-            </li>
-            <li>
-                <b>Program arguments: </b> <code>-probe</code>
-            </li>
-        </ul>
-        <div class="bq info">
-            <p>
-                <b>NOTE:</b> instead of supplying a <a href="/server-and-probe.html">full configuration file</a> we just
-                set one configuration property using configuration override via environment variables.
-            </p>
-        </div>
-        <p>
-            Start this run configuration and make sure you have positive console output indicating that our model
-            has been successfully loaded and probe started.
-        </p>
-    </section>
-    <section>
-        <h3 class="section-title">Start REST Server</h3>
-        <p>
-            REST server listens for requests from client applications and routes them to the requested data models
-            via connected data probes. REST server starts the same way as the data probe. Configure new
-            Run Configuration in IDEA with the following parameters:
-        </p>
-        <ul>
-            <li>
-                <b>Main class:</b> <code>org.apache.nlpcraft.NCStart</code>
-            </li>
-            <li>
-                <b>Program arguments: </b> <code>-server</code>
-            </li>
-        </ul>
-        <p>
-            Once started ensure that your REST server console output shows that data probe is connected and the
-            REST server is listening on the default <code>localhost:8081</code> endpoint.
-        </p>
-        <p>
-            At this point we've developed our data model, deployed it into the data probe, and started the REST server.
-            To test it, we'll use the built-in <a href="/testing-data-model.html">test framework</a>
-            that allows you to write convenient unit tests against your data model.
-        </p>
-    </section>
-    <section>
-        <h3 class="section-title">Testing</h3>
-        <p>
-            NLPCraft comes with easy to use <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/test/package-summary.html">test framework</a> for
-            data models that can be used with
-            any unit testing framework like JUnit or ScalaTest. It is essentially a simplified
-            version of Java REST client that is custom designed for data model testing.
-        </p>
-        <p>
-            We would like to test with following user requests:
-        </p>
-        <ul>
-            <li><code>"Ping me in 3 minutes"</code></li>
-            <li><code>"Buzz me in an hour and 15mins"</code></li>
-            <li><code>"Set my alarm for 30s"</code></li>
-        </ul>
-        <p>
-            Let's create new Java class <code>AlarmTest.java</code> with the following code:
-        </p>
-        <pre class="brush: java, highlight: [16, 26, 27, 28]">
+        </pre><p> There's a bit of a logic here that deals mostly with taking multiple numeric values and converting them into a single number of milliseconds that the alarm clock needs to be set up for. Let's review it step by step:</p><ul><li> On <code>line 1</code> our class extends <code>NCModelFileAdapter</code> that allows us to load most of the model declaration from the external JSON or YAML file (<code>line 10</code>) and only provide functionality that we couldn't express in de [...]
 import org.junit.jupiter.api.*;
 import org.apache.nlpcraft.common.NCException;
 import org.apache.nlpcraft.model.tools.test.*;
@@ -381,79 +184,4 @@ class AlarmTest {
         assertTrue(cli.ask("Buzz me in an hour and 15mins").isOk());
         assertTrue(cli.ask("Set my alarm for 30s").isOk());
     }
-}        </pre>
-        <p>
-            This test is pretty straight forward:
-        </p>
-        <ul>
-            <li>
-                On <code>line 16</code> we open the test client with the model ID (see <code>alarm_model.json</code>
-                file for where we declared it).
-            </li>
-            <li>
-                <code>Line 26, 27, and 28</code> is where we issue our test sentences and we should see
-                the confirmation messages and eventually "BEEP BEEP BEEP" print outs in the data probe
-                console.
-            </li>
-        </ul>
-        <p>
-            Right click on this class in the project view and run it. You should be getting standard output in
-            JUnit panel as well as the output in the data probe console.
-        </p>
-    </section>
-    <section>
-        <h2 class="section-title">Done! 👌</h2>
-        <p>
-            You've created alarm clock data model, deployed it into the data probe, started the
-            REST server and tested this model using JUnit 5 and the built-in test framework.
-        </p>
-    </section>
-</div>
-<div class="col-md-2 third-column">
-    <ul class="side-nav">
-        <li class="side-nav-title">On This Page</li>
-        <li><a href="#overview">Overview</a></li>
-        <li class="side-nav-title">Quick Links</li>
-        <li>
-            <img alt=github" class="quick-link-img mr-2" src="/images/github_logo.png"><a
-            target="github"
-            href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples">Examples</a>
-        </li>
-        <li>
-            <i class="fab fa-java mr-2"></i><a target="_" href="/apis/latest/index.html">Javadoc</a>
-        </li>
-        <li>
-            <img alt="Apiary" class="quick-link-img mr-2" src="/images/apiary.svg"><a
-            href="https://nlpcraft.docs.apiary.io"
-            target="apiary">REST API</a>
-        </li>
-        <li>
-            <i class="fas fa-download mr-2"></i><a href="/download.html">Download</a>
-        </li>
-        <li>
-            <i class="fas fa-blog mr-2"></i><a href="/blogs.html">Blogs</a>
-        </li>
-        <li class="side-nav-title">Support</li>
-        <li>
-            <nobr>
-                <i class="far fa-fw fa-envelope mr-2"></i><a href="mailto:dev@nlpcraft.apache.org">Dev List</a>
-            </nobr>
-        </li>
-        <li>
-            <nobr>
-                <i class="fab fa-fw fa-stack-overflow mr-2"></i><a target="so" href="https://stackoverflow.com/questions/ask">Stack Overflow</a>
-            </nobr>
-        </li>
-        <li>
-            <nobr>
-                <i class="fab fa-fw fa-github mr-2"></i><a target="github" href="https://github.com/apache/incubator-nlpcraft">GitHub</a>
-            </nobr>
-        </li>
-    </ul>
-</div>
-
-
-
-
-
-
+}        </pre><p> This test is pretty straight forward:</p><ul><li> On <code>line 16</code> we open the test client with the model ID (see <code>alarm_model.json</code> file for where we declared it).<li> <code>Line 26, 27, and 28</code> is where we issue our test sentences and we should see the confirmation messages and eventually "BEEP BEEP BEEP" print outs in the data probe console.</ul><p> Right click on this class in the project view and run it. You should be getting standard outpu [...]
diff --git a/examples/light_switch.html b/examples/light_switch.html
index 408eb89..3bc6df7 100644
--- a/examples/light_switch.html
+++ b/examples/light_switch.html
@@ -1,9 +1,3 @@
----
-active_crumb: Light Switch <code><sub>ex</sub></code>
-layout: documentation
-id: light_switch
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,33 +15,9 @@ id: light_switch
  limitations under the License.
 -->
 
-<div class="col-md-8 second-column">
-    <section id="overview">
-        <h2 class="section-title">Overview</h2>
-        <p>
-            This example provides very simple implementation for NLI-powered light switch. You can say something like
-            "Turn the lights off in the entire house" or "Switch on the illumination in the master bedroom closet".
-            You can easily modify intent callbacks to perform the actual light switching using HomeKit or Arduino-based
-            controllers.
-        </p>
-        <p>
-            Complexity: <span class="complexity-one-star"><i class="fas fa-star"></i><i class="far fa-star"></i><i class="far fa-star"></i></span><br/>
-            Source code: <a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples/lightswitch">GitHub</a>
-        </p>
-    </section>
-    <section id="new_project">
-        <h3 class="section-title">Create New Project</h3>
-        <p>
-            You can create new Java project in many different ways - we'll use Maven archetype generation
-            for that. In your home folder run the following command:
-        </p>
-        <pre class="brush: text">
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
             mvn archetype:generate -DgroupId=examples -DartifactId=my-app -DarchetypeVersion=1.4 -DinteractiveMode=false
-        </pre>
-        <p>
-            This will create <code>my-app</code> folder with the following default maven project structure:
-        </p>
-        <pre class="console">
+        </pre><p> This will create <code>my-app</code> folder with the following default maven project structure:</p><pre class="console">
 ├── <b>pom.xml</b>
 └── src
     ├── main
@@ -58,57 +28,21 @@ id: light_switch
         └── java
             └── examples
                 └── AppTest.java
-        </pre>
-        <div class="bq info">
-            <p>
-                Note that this setup is same for all examples. Note also that you can use any other tools for
-                creating and managing Java project with or without Maven.
-            </p>
-        </div>
-        <p>
-            For our example we'll use JetBrain's <a target=_new href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a>.
-            Create new IDEA project from this source folder (make sure to pick JDK 8 or later JDK and language support).
-            Let's also delete auto-generated files <code>App.java</code> and <code>AppTest.java</code> from our
-            project as we won't be using them.
-        </p>
-    </section>
-    <section id="add_nlpcraft">
-        <h3 class="section-title">Add NLPCraft</h3>
-        <p>
-            Next we need to add NLPCraft dependency to our new project. Open <code>pom.xml</code> file and replace
-            <code>dependencies</code> section with the following code:
-        </p>
-        <pre class="brush: xml, highlight: [3, 4, 5]">
+        </pre><div class="bq info"><p> Note that this setup is same for all examples. Note also that you can use any other tools for creating and managing Java project with or without Maven.</p></div><p> For our example we'll use JetBrain's <a target=_new href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a>. Create new IDEA project from this source folder (make sure to pick JDK 8 or later JDK and language support). Let's also delete auto-generated files <code>App.java</code> and <cod [...]
             &lt;dependencies&gt;
                 &lt;dependency&gt;
                     &lt;groupId&gt;org.apache.nlpcraft&lt;/groupId&gt;
                     &lt;artifactId&gt;nlpcraft&lt;/artifactId&gt;
-                    &lt;version&gt;{{site.latest_version}}&lt;/version&gt;
+                    &lt;version&gt;0.5.0&lt;/version&gt;
                 &lt;/dependency&gt;
             &lt;/dependencies&gt;
-        </pre>
-        <p>
-            Also make sure that you have correct JDK version (1.8 or above) for the maven compiler plugin:
-        </p>
-        <pre class="brush: xml, highlight: [3, 4]">
+        </pre><p> Also make sure that you have correct JDK version (1.8 or above) for the maven compiler plugin:</p><pre class="brush: xml, highlight: [3, 4]">
             &lt;properties&gt;
                 &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
                 &lt;maven.compiler.source&gt;1.8&lt;/maven.compiler.source&gt;
                 &lt;maven.compiler.target&gt;1.8&lt;/maven.compiler.target&gt;
             &lt;/properties&gt;
-        </pre>
-        <p>
-            IDEA should automatically reload the project with newly updated <code>pom.xml</code> file and
-            we should be ready now to develop our data model.
-        </p>
-    </section>
-    <section id="model">
-        <h3 class="section-title">Data Model</h3>
-        <p>
-            We are going to start with declaring our semantic model using YAML. Create new <code>lightswitch_model.yaml</code>
-            file and add the following model declaration into it:
-        </p>
-        <pre class="brush: js, highlight: [10, 19, 26, 34, 42]">
+        </pre><p> IDEA should automatically reload the project with newly updated <code>pom.xml</code> file and we should be ready now to develop our data model.</p></section><section id="model"><h3 class="section-title">Data Model</h3><p> We are going to start with declaring our semantic model using YAML. Create new <code>lightswitch_model.yaml</code> file and add the following model declaration into it:</p><pre class="brush: js, highlight: [10, 19, 26, 34, 42]">
 id: "nlpcraft.lightswitch.ex"
 name: "Light Switch Example Model"
 version: "1.0"
@@ -152,36 +86,7 @@ elements:
       - "no &lt;LIGHT&gt;"
 intents:
   - "intent=ls conv=false term(act)={groups @@ 'act'} term(loc)={id == 'ls:loc'}*"
-        </pre>
-        <p>There are number of important points here:</p>
-        <ul>
-            <li>
-                <code>Line 10</code> defines several macros that are used later on throughout the model's elements
-                to shorten the synonym declarations. Note how macros coupled with option groups  
-                shorten overall synonym declarations 1000:1 vs. manually listing all possible word permutations.
-            </li>
-            <li>
-                <code>Lines 19, 26, 34</code> define three model elements: the location of the light, and actions to turn
-                the light on and off. Note that action elements belong to the same group <code>act</code> which
-                will be used in our intent (<code>line 42</code>).
-            </li>
-            <li>
-                On <code>line 42</code> we define a non-conversational intent <code>ls</code> that requires
-                one action (a token belonging to the group <code>act</code>) and optional light location - we assume
-                all lights by default.
-            </li>
-        </ul>
-        <p>
-            Now that our model is ready let's create a Java class that would load this model and provide the actual
-            callback for when the intent <code>ls</code> is detected in the user input.
-        </p>
-    </section>
-    <section id="code">
-        <h3 class="section-title">Model Class</h3>
-        <p>
-            Let's create new Scala class in <code>LightSwitchModel.scala</code> with the following code:
-        </p>
-        <pre class="brush: java, highlight: [4, 5, 6, 7, 8, 20]">
+        </pre><p>There are number of important points here:</p><ul><li> <code>Line 10</code> defines several macros that are used later on throughout the model's elements to shorten the synonym declarations. Note how macros coupled with option groups shorten overall synonym declarations 1000:1 vs. manually listing all possible word permutations.<li> <code>Lines 19, 26, 34</code> define three model elements: the location of the light, and actions to turn the light on and off. Note that ac [...]
 import org.apache.nlpcraft.model._
 import org.apache.nlpcraft.model.NCIntentTerm
 
@@ -204,117 +109,7 @@ class LightSwitchModel extends NCModelFileAdapter("org/apache/nlpcraft/examples/
         NCResult.text(s"Lights '$status' in '${locations.toLowerCase}'.")
     }
 }
-        </pre>
-        <p>
-            The intent callback logic is very simple - we simply return a descriptive confirmation message
-            back (explaining what lights were changed). With action and location detected - you can easily add
-            the actual light switching using HomeKit or Arduino devices. Let's review this implementation step by step:
-        </p>
-        <ul>
-            <li>
-                On <code>line 4</code> our class extends <code>NCModelFileAdapter</code> that allows us to load most
-                of the model declaration from the external YAML file and only provide functionality that we
-                couldn't express in declarative portion in JSON.
-            </li>
-            <li>
-                <code>Line 5</code> annotates method <code>onMatch</code> as a callback for the intent <code>ls</code>
-                when it is detected in the user input.
-            </li>
-            <li>
-                <code>Lines 7 and 8</code> map terms from detected intent to the formal method parameters of the
-                <code>onMatch</code> method.
-            </li>
-            <li>
-                On the <code>line 20</code> the intent callback simply returns a confirmation message.
-            </li>
-        </ul>
-    </section>
-    <section>
-        <h3 class="section-title">Start Data Probe</h3>
-        <p>
-            NLPCraft data models get deployed into data probe. Let's start data probe with our newly
-            created data model. To start data probe we need to configure Run Configuration in IDEA with
-            the following parameters:
-        </p>
-        <ul>
-            <li>
-                <b>Main class:</b> <code>org.apache.nlpcraft.NCStart</code>
-            </li>
-            <li>
-                <b>VM arguments:</b> <code>-Dconfig.override_with_env_vars=true</code>
-            </li>
-            <li>
-                <b>Environment variable:</b> <code>CONFIG_FORCE_nlpcraft_probe_models.0=path.to.LightSwitchModel</code>
-            </li>
-            <li>
-                <b>Program arguments: </b> <code>-probe</code>
-            </li>
-        </ul>
-        <div class="bq info">
-            <p>
-                <b>NOTE:</b> instead of supplying a <a href="/server-and-probe.html">full configuration file</a> we just
-                use the default configuration and override one configuration property using
-                configuration override via environment variables.
-            </p>
-        </div>
-        <p>
-            Start this run configuration and make sure you have positive console output indicating that our model
-            has been successfully loaded and probe started.
-        </p>
-    </section>
-    <section>
-        <h3 class="section-title">Start REST Server</h3>
-        <p>
-            REST server listens for requests from client applications and routes them to the requested data models
-            via connected data probes. REST server starts the same way as the data probe. Configure new
-            Run Configuration in IDEA with the following parameters:
-        </p>
-        <ul>
-            <li>
-                <b>Main class:</b> <code>org.apache.nlpcraft.NCStart</code>
-            </li>
-            <li>
-                <b>Program arguments: </b> <code>-server</code>
-            </li>
-        </ul>
-        <p>
-            Once started ensure that your REST server console output shows that data probe is connected and the
-            REST server is listening on the default <code>localhost:8081</code> endpoint.
-        </p>
-        <p>
-            At this point we've developed our data model, deployed it into the data probe, and started the REST server.
-            To test it, we'll use the built-in <a href="/testing-data-model.html">test framework</a>
-            that allows you to write convenient unit tests against your data model.
-        </p>
-    </section>
-    <section>
-        <h3 class="section-title">Testing</h3>
-        <p>
-            NLPCraft comes with easy to use <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/test/package-summary.html">test framework</a> for
-            data models that can be used with
-            any unit testing framework like JUnit or ScalaTest. It is essentially a simplified
-            version of Java REST client that is custom designed for data model testing.
-        </p>
-        <p>
-            We would like to test with following user requests:
-        </p>
-        <ul>
-            <li><code>"Turn the lights off in the entire house."</code></li>
-            <li><code>"Switch on the illumination in the master bedroom closet."</code></li>
-            <li><code>"Get the lights on."</code></li>
-            <li><code>"Please, put the light out in the upstairs bedroom."</code></li>
-            <li><code>"Set the lights on in the entire house."</code></li>
-            <li><code>"Turn the lights off in the guest bedroom."</code></li>
-            <li><code>"Could you please switch off all the lights?"</code></li>
-            <li><code>"Dial off illumination on the 2nd floor."</code></li>
-            <li><code>"Please, no lights!"</code></li>
-            <li><code>"Kill off all the lights now!"</code></li>
-            <li><code>"No lights in the bedroom, please."</code></li>
-        </ul>
-        <p>
-            Let's create new Java class <code>LightSwitchTest.java</code> with the following code:
-        </p>
-        <pre class="brush: java, highlight: [15, 24]">
+        </pre><p> The intent callback logic is very simple - we simply return a descriptive confirmation message back (explaining what lights were changed). With action and location detected - you can easily add the actual light switching using HomeKit or Arduino devices. Let's review this implementation step by step:</p><ul><li> On <code>line 4</code> our class extends <code>NCModelFileAdapter</code> that allows us to load most of the model declaration from the external YAML file and on [...]
 import org.junit.jupiter.api.*;
 import org.apache.nlpcraft.common.*;
 import org.apache.nlpcraft.model.tools.test.*;
@@ -352,78 +147,4 @@ class LightSwitchTest {
         assertTrue(cli.ask("No lights in the bedroom, please.").isOk());
     }
 }
-        </pre>
-        <p>
-            This test is pretty straight forward:
-        </p>
-        <ul>
-            <li>
-                On <code>line 15</code> we open the test client with the model ID (see <code>lightswitch_model.yaml</code>
-                file for where we declared it).
-            </li>
-            <li>
-                Test on <code>line 24</code> is where we issue our test sentences and we should see
-                the confirmation messages in our test console output.
-            </li>
-        </ul>
-        <p>
-            Right click on this class in the project view and run it. You should be getting standard output in
-            JUnit panel as well as the output in the data probe console.
-        </p>
-    </section>
-    <section>
-        <h2 class="section-title">Done! 👌</h2>
-        <p>
-            You've created NLI-power light switch data model, deployed it into the data probe, started the
-            REST server and tested this model using JUnit 5 and the built-in test framework.
-        </p>
-    </section>
-</div>
-<div class="col-md-2 third-column">
-    <ul class="side-nav">
-        <li class="side-nav-title">On This Page</li>
-        <li><a href="#overview">Overview</a></li>
-        <li class="side-nav-title">Quick Links</li>
-        <li>
-            <img alt=github" class="quick-link-img mr-2" src="/images/github_logo.png"><a
-            target="github"
-            href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples">Examples</a>
-        </li>
-        <li>
-            <i class="fab fa-java mr-2"></i><a target="_" href="/apis/latest/index.html">Javadoc</a>
-        </li>
-        <li>
-            <img alt="Apiary" class="quick-link-img mr-2" src="/images/apiary.svg"><a
-            href="https://nlpcraft.docs.apiary.io"
-            target="apiary">REST API</a>
-        </li>
-        <li>
-            <i class="fas fa-download mr-2"></i><a href="/download.html">Download</a>
-        </li>
-        <li>
-            <i class="fas fa-blog mr-2"></i><a href="/blogs.html">Blogs</a>
-        </li>
-        <li class="side-nav-title">Support</li>
-        <li>
-            <nobr>
-                <i class="far fa-fw fa-envelope mr-2"></i><a href="mailto:dev@nlpcraft.apache.org">Dev List</a>
-            </nobr>
-        </li>
-        <li>
-            <nobr>
-                <i class="fab fa-fw fa-stack-overflow mr-2"></i><a target="so" href="https://stackoverflow.com/questions/ask">Stack Overflow</a>
-            </nobr>
-        </li>
-        <li>
-            <nobr>
-                <i class="fab fa-fw fa-github mr-2"></i><a target="github" href="https://github.com/apache/incubator-nlpcraft">GitHub</a>
-            </nobr>
-        </li>
-    </ul>
-</div>
-
-
-
-
-
-
+        </pre><p> This test is pretty straight forward:</p><ul><li> On <code>line 15</code> we open the test client with the model ID (see <code>lightswitch_model.yaml</code> file for where we declared it).<li> Test on <code>line 24</code> is where we issue our test sentences and we should see the confirmation messages in our test console output.</ul><p> Right click on this class in the project view and run it. You should be getting standard output in JUnit panel as well as the output in [...]
diff --git a/examples/weather_bot.html b/examples/weather_bot.html
index ec2a335..96f609b 100644
--- a/examples/weather_bot.html
+++ b/examples/weather_bot.html
@@ -1,9 +1,3 @@
----
-active_crumb: Weather Bot <code><sub>ex</sub></code>
-layout: documentation
-id: weather_bot
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,65 +15,4 @@ id: weather_bot
  limitations under the License.
 -->
 
-<div class="col-md-8 second-column">
-    <section id="overview">
-        <h2 class="section-title">Overview</h2>
-        <p>
-            This example demonstrates relatively complete NLI-based weather service with JSON output and a non-trivial
-            intent matching logic. It uses <a target="new" href="https://www.apixu.com">https://www.apixu.com</a>
-            REST service for the actual weather information.
-        </p>
-        <p>
-            Complexity: <span class="complexity-two-star"><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="far fa-star"></i></span><br/>
-            Source code: <a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples/weather">GitHub</a>
-        </p>
-    </section>
-</div>
-<div class="col-md-2 third-column">
-    <ul class="side-nav">
-        <li class="side-nav-title">On This Page</li>
-        <li><a href="#overview">Overview</a></li>
-        <li class="side-nav-title">Quick Links</li>
-        <li>
-            <img alt=github" class="quick-link-img mr-2" src="/images/github_logo.png"><a
-            target="github"
-            href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples">Examples</a>
-        </li>
-        <li>
-            <i class="fab fa-java mr-2"></i><a target="_" href="/apis/latest/index.html">Javadoc</a>
-        </li>
-        <li>
-            <img alt="Apiary" class="quick-link-img mr-2" src="/images/apiary.svg"><a
-            href="https://nlpcraft.docs.apiary.io"
-            target="apiary">REST API</a>
-        </li>
-        <li>
-            <i class="fas fa-download mr-2"></i><a href="/download.html">Download</a>
-        </li>
-        <li>
-            <i class="fas fa-blog mr-2"></i><a href="/blogs.html">Blogs</a>
-        </li>
-        <li class="side-nav-title">Support</li>
-        <li>
-            <nobr>
-                <i class="far fa-fw fa-envelope mr-2"></i><a href="mailto:dev@nlpcraft.apache.org">Dev List</a>
-            </nobr>
-        </li>
-        <li>
-            <nobr>
-                <i class="fab fa-fw fa-stack-overflow mr-2"></i><a target="so" href="https://stackoverflow.com/questions/ask">Stack Overflow</a>
-            </nobr>
-        </li>
-        <li>
-            <nobr>
-                <i class="fab fa-fw fa-github mr-2"></i><a target="github" href="https://github.com/apache/incubator-nlpcraft">GitHub</a>
-            </nobr>
-        </li>
-    </ul>
-</div>
-
-
-
-
-
-
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
diff --git a/feed.xml b/feed.xml
new file mode 100644
index 0000000..bd6f33c
--- /dev/null
+++ b/feed.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.5">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2020-04-18T16:48:48-07:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">Apache NLPCraft</title></feed>
\ No newline at end of file
diff --git a/first-example.html b/first-example.html
index fad60d3..f13447e 100644
--- a/first-example.html
+++ b/first-example.html
@@ -1,9 +1,3 @@
----
-active_crumb: First Example
-layout: documentation
-id: first_example
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,32 +15,9 @@ id: first_example
  limitations under the License.
 -->
 
-<div class="col-md-8 second-column">
-    <section id="setup">
-        <h2 class="section-title">Project Setup</h2>
-        <p>
-            Let's setup a project for our first example with the following assumptions:
-        </p>
-        <ul>
-            <li>We'll use Mac OS/Linux environment</li>
-            <li>We'll use Scala to implement our model</li>
-            <li>We'll use <a target=_ href="https://maven.apache.org/install.html">Maven</a> to create and build our project</li>
-            <li>We'll use <a target=_ href="https://www.jetbrains.com/idea/">JetBrains IDEA</a> as our Scala/Java IDE</li>
-        </ul>
-    </section>
-    <section id="new_project">
-        <h3 class="section-title">Create New Project</h3>
-        <p>
-            You can create new Maven-based project in many different ways - we'll use maven archetype generation
-            for that. In your home folder run the following command:
-        </p>
-        <pre class="brush: text">
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
             mvn archetype:generate -DgroupId=examples -DartifactId=my-app -DarchetypeVersion=1.4 -DinteractiveMode=false
-        </pre>
-        <p>
-            This will create <code>my-app</code> folder with the following default maven project structure:
-        </p>
-        <pre class="console">
+        </pre><p> This will create <code>my-app</code> folder with the following default maven project structure:</p><pre class="console">
 ├── <b>pom.xml</b>
 └── src
     ├── main
@@ -57,65 +28,21 @@ id: first_example
         └── java
             └── examples
                 └── AppTest.java
-        </pre>
-        <p>
-            Create new IDEA project from this source folder (make sure to pick JDK 8 or later JDK and language support).
-            Let's also delete auto-generated files <code>App.java</code> and <code>AppTest.java</code> from our
-            project as we won't be using them.
-        </p>
-    </section>
-    <section id="add_nlpcraft">
-        <h3 class="section-title">Add NLPCraft</h3>
-        <p>
-            We also need to add NLPCraft dependency to our new project. Open <code>pom.xml</code> file and replace
-            <code>dependencies</code> section with the following code:
-        </p>
-        <pre class="brush: xml, highlight: [3, 4, 5]">
+        </pre><p> Create new IDEA project from this source folder (make sure to pick JDK 8 or later JDK and language support). Let's also delete auto-generated files <code>App.java</code> and <code>AppTest.java</code> from our project as we won't be using them.</p></section><section id="add_nlpcraft"><h3 class="section-title">Add NLPCraft</h3><p> We also need to add NLPCraft dependency to our new project. Open <code>pom.xml</code> file and replace <code>dependencies</code> section with t [...]
             &lt;dependencies&gt;
                 &lt;dependency&gt;
                     &lt;groupId&gt;org.apache.nlpcraft&lt;/groupId&gt;
                     &lt;artifactId&gt;nlpcraft&lt;/artifactId&gt;
-                    &lt;version&gt;{{site.latest_version}}&lt;/version&gt;
+                    &lt;version&gt;0.5.0&lt;/version&gt;
                 &lt;/dependency&gt;
             &lt;/dependencies&gt;
-        </pre>
-        <p>
-            Also make sure that you have correct JDK version (1.8 or above) for the maven compiler plugin:
-        </p>
-        <pre class="brush: xml, highlight: [3, 4]">
+        </pre><p> Also make sure that you have correct JDK version (1.8 or above) for the maven compiler plugin:</p><pre class="brush: xml, highlight: [3, 4]">
             &lt;properties&gt;
                 &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
                 &lt;maven.compiler.source&gt;1.8&lt;/maven.compiler.source&gt;
                 &lt;maven.compiler.target&gt;1.8&lt;/maven.compiler.target&gt;
             &lt;/properties&gt;
-        </pre>
-        <p>
-            IDEA should automatically reload the project with newly updated <code>pom.xml</code> file and
-            we should be ready now to develop our new first data model.
-        </p>
-    </section>
-    <section id="data_model">
-        <h2 class="section-title">Data Model</h2>
-        <p>
-            For our example we'll develop a prototypical light switch that can be controlled through the natural language.
-            We'll keep <a target=_ href="https://cloud.google.com/speech-to-text/">speech-to-text conversion</a> and integration
-            with <a target=_    href="https://developer.apple.com/homekit/">HomeKit</a> or
-            <a href="https://www.arduino.cc/" target=_>Ardunio</a> outside of this example - and concentrate only on understanding the natural
-            language commands. At the end, we should be able to say <code>"Turn the lights off in the guest bedroom"</code>
-            or <code>"Could you please switch off all the lights?"</code>
-        </p>
-        <p>
-            In NLPCraft a data model is simply an implementation of <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModel.html">NCModel</a>
-            interface. You can move most of the model configuration out to an external JSON or YAML file and use
-            <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelFileAdapter.html">NCModelFileAdapter</a> to
-            load this external configuration when creating a new model. Note that this is a canonical pattern to build
-            models in NLPCraft and it allows you cleanly separate the logic of the model from its declarative configuration.
-        </p>
-        <p>
-            Let's add new <code>lightswitch_model.yml</code> file containing our model's static configuration in YAML
-            into <code>src/main/java/examples</code> folder with the following content:
-        </p>
-        <pre class="brush: js, highlight: [1, 14, 21, 28]">
+        </pre><p> IDEA should automatically reload the project with newly updated <code>pom.xml</code> file and we should be ready now to develop our new first data model.</p></section><section id="data_model"><h2 class="section-title">Data Model</h2><p> For our example we'll develop a prototypical light switch that can be controlled through the natural language. We'll keep <a target=_ href="https://cloud.google.com/speech-to-text/">speech-to-text conversion</a> and integration with <a t [...]
             id: "nlpcraft.lightswitch.ex"
             name: "Light Switch Example Model"
             version: "1.0"
@@ -150,26 +77,7 @@ id: first_example
                   - "&lt;ACTION&gt; &lt;LIGHT&gt; {off|out}"
                   - "{&lt;ACTION&gt;|shut|kill|stop|eliminate} {off|out} &lt;LIGHT&gt;"
                   - "no &lt;LIGHT&gt;"
-        </pre>
-        <p>
-            Notice the model ID <code>nlpcraft.lightswitch.ex</code> as well as semantic model elements
-            that we'll use later:
-        </p>
-        <ul>
-            <li><code>ls:loc</code></li>
-            <li><code>ls:on</code></li>
-            <li><code>ls:off</code></li>
-        </ul>
-        <p>
-            Model element <code>ls:loc</code> defines a location where we want to control the lights. Model
-            elements <code>ls:on</code> and <code>ls:off</code> defines corresponding "on" and "off" lights
-            actions. We'll use these elements in our model's intent-based matching logic.
-        </p>
-        <p>
-            Next let's go ahead and add model's logic. Create new <code>LightSwitchModel.scala</code> file along side
-            <code>lightswitch_model.json</code> configuration file and copy the following model code into it:
-        </p>
-        <pre class="brush: java, highlight: [7,9,10]">
+        </pre><p> Notice the model ID <code>nlpcraft.lightswitch.ex</code> as well as semantic model elements that we'll use later:</p><ul><li><code>ls:loc</code><li><code>ls:on</code><li><code>ls:off</code></ul><p> Model element <code>ls:loc</code> defines a location where we want to control the lights. Model elements <code>ls:on</code> and <code>ls:off</code> defines corresponding "on" and "off" lights actions. We'll use these elements in our model's intent-based matching logic.</p><p> [...]
 package examples;
 
 import org.apache.nlpcraft.model._
@@ -193,125 +101,7 @@ class LightSwitchModel extends NCModelFileAdapter("org/apache/nlpcraft/examples/
         NCResult.text(s"Lights '$status' in '${locations.toLowerCase}'.")
     }
 }
-        </pre>
-        <p>
-            Chapter <a href="/data-model.html">Data Model</a> will provide detailed explanation on how
-            data models work. Here are few comments as to what this code does and how it is organized:
-        </p>
-        <ul>
-            <li>
-                On line 6 we use <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelFileAdapter.html">NCModelFileAdapter</a>
-                adapter and load model static configuration from <code>lightswitch_model.yml</code> file.
-            </li>
-            <li>
-                Our data model uses intent-based matching of the user input. Intent is a template and a callback for when
-                a template is matched.
-                Lines 7, 9 and 10 show the usage of
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/inteint/NCIntent.html">@NCIntent</a> and
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/inteint/NCIntent.html">@NCIntentTerm</a>
-                annotations that are used to connect the matching logic with a callback method.
-            </li>
-            <li>
-                The intent defined through <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/inteint/NCIntent.html">@NCIntent</a> annotation matches
-                two parts: first should be any token belonging to <code>act</code> group (i.e. "on" or "off" action),
-                and the second should be a zero or more tokens with ID equal to <code>ls:loc</code> (i.e. optional list of locations).
-            </li>
-            <li>
-                If and when our intent is matched the method <code>onMatch(...)</code> on line 8 is invoked. It simply
-                returns a text response that indicates the light status at a requested location. That's where you can
-                also add <a target=_    href="https://developer.apple.com/homekit/">HomeKit</a>,
-                <a href="https://www.arduino.cc/" target=_>Ardunio</a> or other integrations to make a real
-                lightswitch in your home.
-            </li>
-        </ul>
-    </section>
-    <section>
-        <h3 class="section-title">Start Data Probe</h3>
-        <p>
-            NLPCraft data models get deployed into data probe. Let's start data probe to deploy our newly
-            created light switch data model. To start data probe we need to configure Run Configuration in IDEA with
-            the following parameters:
-        </p>
-        <ul>
-            <li>
-                <b>Main class:</b> <code>org.apache.nlpcraft.NCStart</code>
-            </li>
-            <li>
-                <b>VM arguments:</b> <code>-Dconfig.override_with_env_vars=true</code>
-            </li>
-            <li>
-                <b>Environment variable:</b> <code>CONFIG_FORCE_nlpcraft_probe_models.0=org.apache.nlpcraft.examples.lightswitch.LightSwitchModel</code>
-            </li>
-            <li>
-                <b>Program arguments: </b> <code>-probe</code>
-            </li>
-        </ul>
-        <div class="bq info">
-            <p>
-                <b>NOTE:</b> instead of supplying a <a href="server-and-probe.html">full configuration file</a> we
-                just use the default configuration and override one configuration property using
-                configuration override via environment variables.
-            </p>
-        </div>
-        <p>
-            Start this run configuration and make sure you have positive console output indicating that our model
-            has been successfully loaded and probe started.
-        </p>
-    </section>
-    <section>
-        <h3 class="section-title">Start REST Server</h3>
-        <p>
-            REST server listens for requests from client applications and routes them to the requested data models
-            via connected data probes. REST server starts the same way as the data probe. Configure new
-            Run Configuration in IDEA with the following parameters:
-        </p>
-        <ul>
-            <li>
-                <b>Main class:</b> <code>org.apache.nlpcraft.NCStart</code>
-            </li>
-            <li>
-                <b>Program arguments: </b> <code>-server</code>
-            </li>
-        </ul>
-        <p>
-            Once started ensure that your REST server console output shows that data probe is connected and the
-            REST server is listening on the default <code>localhost:8081</code> endpoint.
-        </p>
-        <p>
-            At this point we've developed our data model, deployed it into the data probe, and started the REST server.
-            Our NLI-based light switch is ready to accept user requests. Instead of using direct REST calls we'll
-            demonstrate the built-in <a href="/testing-data-model.html">test framework</a> that allows you to write
-            convenient unit tests against your data model.
-        </p>
-    </section>
-    <section>
-        <h3 class="section-title">Testing</h3>
-        <p>
-            NLPCraft comes with easy to use <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/test/package-summary.html">test framework</a> for data models that can be used with
-            any unit testing framework like JUnit or ScalaTest. It is essentially a simplified
-            version of Java REST client that is custom designed for data model testing.
-        </p>
-        <p>
-            We would like to test the following user requests:
-        </p>
-        <ul>
-            <li><code>"Turn the lights off in the entire house."</code></li>
-            <li><code>"Switch on the illumination in the master bedroom closet."</code></li>
-            <li><code>"Get the lights on."</code></li>
-            <li><code>"Please, put the light out in the upstairs bedroom."</code></li>
-            <li><code>"Set the lights on in the entire house."</code></li>
-            <li><code>"Turn the lights off in the guest bedroom."</code></li>
-            <li><code>"Could you please switch off all the lights?"</code></li>
-            <li><code>"Dial off illumination on the 2nd floor."</code></li>
-            <li><code>"Please, no lights!"</code></li>
-            <li><code>"Kill off all the lights now!"</code></li>
-            <li><code>"No lights in the bedroom, please."</code></li>
-        </ul>
-        <p>
-            Let's create new Java class <code>LightSwitchTest.java</code> in <code>src/<b>test</b>/java/examples</code>
-            folder with the following code:
-        </p>
-        <pre class="brush: java, highlight: [17]">
+        </pre><p> Chapter <a href="/data-model.html">Data Model</a> will provide detailed explanation on how data models work. Here are few comments as to what this code does and how it is organized:</p><ul><li> On line 6 we use <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelFileAdapter.html">NCModelFileAdapter</a> adapter and load model static configuration from <code>lightswitch_model.yml</code> file.<li> Our data model uses intent-based matching of the user in [...]
 package examples;
 
 import org.junit.jupiter.api.*;
@@ -351,29 +141,4 @@ public class LightSwitchTest {
         assertTrue(cli.ask("No lights in the bedroom, please.").isOk());
     }
 }
-        </pre>
-        <p>
-            Right click on this class in the project view and run it. You should be getting standard output in
-            JUnit panel as well as the lights status based on the above requests.
-        </p>
-    </section>
-    <section>
-        <h2 class="section-title">Congratulation! 👌</h2>
-        <p>
-            You've created your first data model, deployed it into the data probe, started the
-            REST server and tested the model using JUnit 5 and the built-in test framework.
-        </p>
-    </section>
-</div>
-<div class="col-md-2 third-column">
-    <ul class="side-nav">
-        <li class="side-nav-title">On This Page</li>
-        <li><a href="#setup">Project Setup</a></li>
-        <li><a href="#data_model">Data Model</a></li>
-        {% include quick-links.html %}
-    </ul>
-</div>
-
-
-
-
+        </pre><p> Right click on this class in the project view and run it. You should be getting standard output in JUnit panel as well as the lights status based on the above requests.</p></section><section><h2 class="section-title">Congratulation! 👌</h2><p> You've created your first data model, deployed it into the data probe, started the REST server and tested the model using JUnit 5 and the built-in test framework.</p></section></div><div class="col-md-2 third-column"><ul class="sid [...]
diff --git a/getting-started.html b/getting-started.html
index a5501e3..345ba22 100644
--- a/getting-started.html
+++ b/getting-started.html
@@ -1,9 +1,3 @@
----
-active_crumb: Docs
-layout: documentation
-id: getting_started
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,56 +15,12 @@ id: getting_started
  limitations under the License.
 -->
 
-<div class="col-md-8 second-column">
-    <section id="getting-started">
-        <h2 class="section-title">Getting Started</h2>
-        <p>
-            In this section we'll take a quick 10 minutes look at running and
-            testing <a href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples" target="github">examples</a>
-            shipped with NLPCraft along with
-            running the main components of NLPCraft - data probe and REST server. We assume the following:
-        </p>
-        <ul>
-            <li>You <a href="/download.html">downloaded</a> NLPCraft {{site.latest_version}} as a ZIP archive.</li>
-            <li>You followed <a href="/installation.html">installation</a> instructions.</li>
-            <li>You are using Mac OS/Linux environment.</li>
-        </ul>
-    </section>
-    <section id="probe-server">
-        <h2 class="section-title">Data Probe <span class="amp">&amp;</span> REST Server</h2>
-        <p>
-            Data probes are used to deploy and host data model, while REST server (or a
-            cluster of servers) is used to accept client REST calls and route them to the data model deployed on data probes.
-        </p>
-        <p>
-            Both data probe and the REST server start the same way. NLPCraft ships with all-inclusive
-            single executable JAR file. We'll use command line to start the both.
-            Open two console windows and start server first and then data probe by typing these commands:
-        </p>
-        <nav>
-            <div class="nav nav-tabs" role="tablist">
-                <a class="nav-item nav-link active" data-toggle="tab" href="#nav-srv-start" role="tab" aria-controls="nav-home" aria-selected="true">REST Server</a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-probe-start" role="tab" aria-controls="nav-home" aria-selected="true">Data Probe</a>
-            </div>
-        </nav>
-        <div class="tab-content">
-            <div class="tab-pane fade show active" id="nav-srv-start" role="tabpanel">
-                <pre class="brush: plain">
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
                     $ cd build
-                    $ java -jar apache-nlpcraft-{{site.latest_version}}-all-deps.jar -server
-                </pre>
-                <p>
-                    You can can also start it via Docker:
-                </p>
-                <pre class="brush: plain">
-                    $ docker run -m 8G -p 8081:8081 -p 8201:8201 -p 8202:8202 nlpcraftserver/server:{{site.latest_version}}
-                </pre>
-                <p>
-                    REST server starts with default configuration (<code>nlpcraft.conf</code> and
-                    <code>ignite.xml</code> files located in the same folder as <code>apache-nlpcraft-{{site.latest_version}}-all-deps.jar</code>
-                    file). You should see the output similar to this:
-                </p>
-                <pre class="brush: plain">
+                    $ java -jar apache-nlpcraft-0.5.0-all-deps.jar -server
+                </pre><p> You can can also start it via Docker:</p><pre class="brush: plain">
+                    $ docker run -m 8G -p 8081:8081 -p 8201:8201 -p 8202:8202 nlpcraftserver/server:0.5.0
+                </pre><p> REST server starts with default configuration (<code>nlpcraft.conf</code> and <code>ignite.xml</code> files located in the same folder as <code>apache-nlpcraft-0.5.0-all-deps.jar</code> file). You should see the output similar to this:</p><pre class="brush: plain">
                         _   ____      ______           ______
                        / | / / /___  / ____/________ _/ __/ /_
                       /  |/ / / __ \/ /   / ___/ __ `/ /_/ __/
@@ -79,7 +29,7 @@ id: getting_started
                            /_/
 
                     Server
-                    Version: {{site.latest_version}}
+                    Version: 0.5.0
                     Copyright (C) 2020 Apache Software Foundation.
 
                     ...
@@ -90,19 +40,10 @@ id: getting_started
 
 
                     Mar-11 23:21:04 [INFO ] REST server is listening on 'localhost:8081'.
-                </pre>
-            </div>
-            <div class="tab-pane fade show" id="nav-probe-start" role="tabpanel">
-                <pre class="brush: plain">
+                </pre></div><div class="tab-pane fade show" id="nav-probe-start" role="tabpanel"><pre class="brush: plain">
                     $ cd build
-                    $ java -jar apache-nlpcraft-{{site.latest_version}}-all-deps.jar -probe
-                </pre>
-                <p>
-                    Data probe starts with default configuration (file <code>nlpcraft.conf</code> located in the same folder
-                    as <code>apache-nlpcraft-{{site.latest_version}}-all-deps.jar</code> file) that deploys
-                    all example models shipped with NLPCraft. You should see the output similar to this:
-                </p>
-                <pre class="brush: plain">
+                    $ java -jar apache-nlpcraft-0.5.0-all-deps.jar -probe
+                </pre><p> Data probe starts with default configuration (file <code>nlpcraft.conf</code> located in the same folder as <code>apache-nlpcraft-0.5.0-all-deps.jar</code> file) that deploys all example models shipped with NLPCraft. You should see the output similar to this:</p><pre class="brush: plain">
                     _   ____      ______           ______
                    / | / / /___  / ____/________ _/ __/ /_
                   /  |/ / / __ \/ /   / ___/ __ `/ /_/ __/
@@ -111,14 +52,14 @@ id: getting_started
                        /_/
 
                 Data Probe
-                Version: {{site.latest_version}}
+                Version: 0.5.0
                 Copyright (C) 2020 Apache Software Foundation.
 
                 Mar-11 23:25:52 [INFO ] Probe Configuration:
                 +----------------------------------------------------------------------+
                 | Probe ID        | all.examples                                       |
                 | Probe Token     | 3141592653589793                                   |
-                | API Version     | {{site.latest_version}}, 2019-04-16                                  |
+                | API Version     | 0.5.0, 2019-04-16                                  |
                 | Down-Link       | localhost:8202                                     |
                 | Up-Link         | localhost:8201                                     |
                 +-----------------+----------------------------------------------------+
@@ -156,65 +97,15 @@ id: getting_started
                 ...
 
                 Mar-11 23:25:58 [INFO ] Server connection established.
-                </pre>
-            </div>
-        </div>
-        <p>
-            At this point you have both the data probe and the REST server started and connected to each other.
-            We are ready to start calling REST API to use natural language to query our example models.
-        </p>
-    </section>
-    <section id="querying">
-        <h2 class="section-title">Weather Forecast</h2>
-        <p>
-            We'll be testing <a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples/weather">Weather Example</a>
-            to ask questions about weather forecast using REST APIs. This example returns a comprehensive JSON weather
-            data for variety of different inquiries about the past, present or future weather conditions.
-        </p>
-        <p>
-            There are <a target=_ href="https://medium.com/@alicealdaine/top-10-api-testing-tools-rest-soap-services-5395cb03cfa9">many ways</a> to issue
-            and test REST calls - for our examples we'll use standard
-            <a target="wiki" href="https://en.wikipedia.org/wiki/CURL">cURL</a> utility which you can simply use from the
-            command line in any OS.
-            NLPCraft comes with a convenient wrapper script <code>bin/nccurl.sh</code> that shortens
-            command line of the standard <code>cURL</code>. Note also that we'll be using Python to pretty format
-            cURL JSON responses.
-        </p>
-        <h3 class="section-title">Sign In</h3>
-        <p>
-            First, we need to sign in and obtain <b>access token</b>. We'll use <code>/signin</code>
-            REST call for that. When REST server starts
-            for the first time it creates a default user with email <code>admin@admin.com</code> and
-            <code>admin</code> password. Open new command line terminal and let's use these default credentials for sing in:
-        </p>
-        <pre class="brush: js; highlight: [3]">
+                </pre></div></div><p> At this point you have both the data probe and the REST server started and connected to each other. We are ready to start calling REST API to use natural language to query our example models.</p></section><section id="querying"><h2 class="section-title">Weather Forecast</h2><p> We'll be testing <a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples/weather">Weather Example</a> to  [...]
             $ nccurl.sh signin '{"email": "admin@admin.com", "passwd": "admin"}' | python -m json.tool
             {
                 "acsTok": "KMGWMQJ44",
                 "status": "API_OK"
             }
-        </pre>
-        <p>
-            Note the returned access token <code>KMGWMQJ44</code> which we'll use in subsequent operations. Keep in mind that you
-            will get different access tokens and IDs when you are performing these steps by yourself.
-        </p>
-        <h3 class="section-title"><b>Query</b></h3>
-        <p>
-            Now that we have signed in (access token <code>KMGWMQJ44</code>) we can go ahead and start asking natural language
-            questions against our data model (<code>nlpcraft.weather.ex</code>). For this example we'll use
-            <a target=apiary href="https://nlpcraft.docs.apiary.io/#reference/asking"><code>/ask/sync</code></a> REST call - a
-            call that submit the request and waits for its completion before returning the result.
-        </p>
-        <p>
-            <b>Q: What is the current forecast for Chicago?</b>
-        </p>
-        <pre class="brush: js highlight: [2, 3, 4, 5]">
+        </pre><p> Note the returned access token <code>KMGWMQJ44</code> which we'll use in subsequent operations. Keep in mind that you will get different access tokens and IDs when you are performing these steps by yourself.</p><h3 class="section-title"><b>Query</b></h3><p> Now that we have signed in (access token <code>KMGWMQJ44</code>) we can go ahead and start asking natural language questions against our data model (<code>nlpcraft.weather.ex</code>). For this example we'll use <a ta [...]
             $ nccurl.sh ask/sync '{"acsTok": "KMGWMQJ44", "txt": "What is the current forecast for Chicago?", "mdlId": "nlpcraft.weather.ex"}' | python -m json.tool
-        </pre>
-        <p>
-            And we get a full 5-day forecast for Chicago:
-        </p>
-        <pre class="brush: js">
+        </pre><p> And we get a full 5-day forecast for Chicago:</p><pre class="brush: js">
         {
             "state": [
                 {
@@ -256,17 +147,9 @@ id: getting_started
             ],
             "status": "API_OK"
         }
-        </pre>
-        <p>
-            <b>Q: Any chance of snow today in Moscow?</b>
-        </p>
-        <pre class="brush: js highlight: [2, 3, 4, 5]">
+        </pre><p> <b>Q: Any chance of snow today in Moscow?</b></p><pre class="brush: js highlight: [2, 3, 4, 5]">
             $ nccurl.sh ask/sync '{"acsTok": "KMGWMQJ44", "txt": "Any chance of snow today in Moscow?", "mdlId": "nlpcraft.weather.ex"}' | python -m json.tool
-        </pre>
-        <p>
-            And we get today's Moscow weather report:
-        </p>
-        <pre class="brush: js">
+        </pre><p> And we get today's Moscow weather report:</p><pre class="brush: js">
             {
                 "states": [
                     {
@@ -330,28 +213,9 @@ id: getting_started
                 ],
                 "status": "API_OK"
             }
-        </pre>
-        <h3 class="section-title">Sign Out</h3>
-        <p>
-            Once we enjoyed our conversation about the weather we sign out:
-        </p>
-        <pre class="brush: js highlight: [3]">
+        </pre><h3 class="section-title">Sign Out</h3><p> Once we enjoyed our conversation about the weather we sign out:</p><pre class="brush: js highlight: [3]">
             $ nccurl.sh signout '{"acsTok": "KMGWMQJ44"}' | python -m json.tool
             {
                 "status": "API_OK"
             }
-        </pre>
-    </section>
-</div>
-<div class="col-md-2 third-column">
-    <ul class="side-nav">
-        <li class="side-nav-title">On This Page</li>
-        <li><a href="#getting-started">Getting Started</a></li>
-        <li><a href="#probe-server">Data Probe <span class="amp">&amp;</span> Server</a></li>
-        <li><a href="#querying">Using REST API</a></li>
-        {% include quick-links.html %}
-    </ul>
-</div>
-
-
-
+        </pre></section></div><div class="col-md-2 third-column"><ul class="side-nav"><li class="side-nav-title">On This Page<li><a href="#getting-started">Getting Started</a><li><a href="#probe-server">Data Probe <span class="amp">&amp;</span> Server</a><li><a href="#querying">Using REST API</a><li class="side-nav-title">Quick Links<li> <i class="fab fa-fw fa-github mr-2"></i><a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpc [...]
diff --git a/index.html b/index.html
index d5db18e..76d030e 100644
--- a/index.html
+++ b/index.html
@@ -1,7 +1,3 @@
----
-layout: default
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -19,267 +15,4 @@ layout: default
  limitations under the License.
 -->
 
-<div id="banner-box" class="bottom-arrow">
-    <div id="inner-banner-box">
-        <div id="banner">
-            <div id="nat-lang-itf">Apache NLPCraft</div>
-            <h1 id="banner-sub-title">An API to convert natural language into actions</h1>
-            <div>
-                <a id="get-started-btn" role="button" href="docs.html" class="btn mt-5">GET STARTED <i class="ml-2 fas fa-angle-right"></i></a>
-            </div>
-        </div>
-    </div>
-</div>
-
-<div id="about-nlpcraft" class="bottom-arrow main-section">
-    <div class="container-fluid">
-        <div class="row">
-            <div class="col-4">
-                <h2 class="section-title">What Is <span>NLPCraft</span></h2>
-                <section>
-                    <p>
-                        Apache NLPCraft is an open source library for adding natural language Interface
-                        to any applications. Based on semantic modelling it allows rapid implementation and
-                        requires no deep learning model training or pre-existing text corpora.
-                    </p>
-                    <p>
-                        Apache NLPCraft is simple to use: define a semantic model and intents to interpret
-                        user input. Securely deploy this model and use REST API to explore the data using natural language from
-                        your applications.
-                    </p>
-                    <div class="learn-more">
-                        <a href="docs.html">Learn more <i class="align-text-bottom fas fa-angle-right"></i></a>
-                    </div>
-                </section>
-            </div>
-            <div class="col-4">
-                <h2 class="section-title">Natural <span>Language</span></h2>
-                <section>
-                    <p>
-                        Natural Language Interface (NLI) enables users to explore any type of data
-                        sources using natural language augmenting existing UI/UX with fidelity
-                        and simplicity of conversational AI.
-                    </p>
-                    <p>
-                        There is no learning curve, no special rules or applications to master, no cumbersome syntax or terms to remember -
-                        just a natural language that your users already speak.
-                    </p>
-                </section>
-            </div>
-            <div class="col-4">
-                <h2 class="section-title">Quick <span>Links</span></h2>
-                <section>
-                    <div class="quick-link" >
-                        <a href="https://github.com/apache/incubator-nlpcraft" target="github">
-                            <img
-                                class="quick-link-img"
-                                src="{{ 'images/github_logo.png' | relative_url }}" alt="">
-                        </a>
-                        <div class="gh-btn">
-                            <a
-                                class="github-button"
-                                href="https://github.com/apache/incubator-nlpcraft/subscription"
-                                data-icon="octicon-eye"
-                                aria-label="Watch on GitHub">Watch</a>
-                        </div>
-                        <div class="gh-btn">
-                            <a
-                                class="github-button"
-                                href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples"
-                                aria-label="NLPCraft examples on GitHub">Examples</a>
-                        </div>
-                        <a target=_ href="https://gitter.im/apache-nlpcraft/community"><img alt="Gitter" src="https://badges.gitter.im/apache-nlpcraft/community.svg"></a>
-                    </div>
-                    <div class="quick-link" >
-                        <a href="/apis/latest/index.html" target="_">
-                            <img alt="" class="quick-link-img" src="{{ 'images/java.png' | relative_url }}">
-                            <span>Latest&nbsp;</span>
-                            <!-- TODO: fix package name for javadoc.io image. -->
-                            <a target="_" href="https://javadoc.io/doc/org.apache.nlpcraft/nlpcraft"><img src="https://javadoc.io/badge/org.nlpcraft/nlpcraft.svg" alt="Javadocs"></a>
-                        </a>
-                    </div>
-                    <div class="quick-link">
-                        <a href="https://nlpcraft.docs.apiary.io" target="apiary">
-                            <img alt="" class="quick-link-img" src="{{ 'images/apiary.svg' | relative_url }}">
-                            <span>REST API</span>
-                        </a>
-                    </div>
-                </section>
-            </div>
-        </div>
-    </div>
-</div>
-
-<div id="features" class="bottom-arrow main-section">
-    <div class="container-fluid">
-        <div class="row">
-            <div class="col-12">
-                <h2 class="section-title">Key <span>Features</span></h2>
-            </div>
-        </div>
-        <div class="row">
-            <div class="col-4">
-                <h3 class="sub-section-title">Semantic Modeling</h3>
-                <section>
-                    <p>
-                        Advanced semantic modelling and intent-based matching enables
-                        deterministic natural language understanding without
-                        requiring deep learning training or pre-existing text corpora.
-                    </p>
-                </section>
-            </div>
-            <div class="col-4">
-                <h3 class="sub-section-title">Any Data Source</h3>
-                <section>
-                    <p>
-                        Any data source, device, or service - public or private. From databases and SaaS systems,
-                        to smart home devices, voice assistants and chatbots.
-                    </p>
-                </section>
-            </div>
-            <div class="col-4">
-                <h3 class="sub-section-title">Java-First</h3>
-                <section>
-                    <p>
-                        REST API and Java-based implementation natively
-                        support world's largest ecosystem of development tools, programming languages and services.
-                    </p>
-                </section>
-            </div>
-        </div>
-        <div class="row mt-4">
-            <div class="col-4">
-                <h3 class="sub-section-title">Strong Security</h3>
-                <section>
-                    <p>
-                        HTTPs, model deployment isolation, 256-bit encryption and ingress-only connectivity are
-                        among the key security features in NLPCraft.
-                    </p>
-                </section>
-            </div>
-            <div class="col-4">
-                <h3 class="sub-section-title">Model-As-A-Code</h3>
-                <section>
-                    <p>
-                        Model-as-a-code convention natively
-                        supports any system development life cycle tools and frameworks in Java eco-system.
-                    </p>
-                </section>
-            </div>
-            <div class="col-4">
-                <h3 class="sub-section-title">Out-Of-The-Box Integration</h3>
-                <section>
-                    <p>
-                        NLPCraft natively <a href="/integrations.html">integrates</a> with 3rd party libraries for base NLP processing
-                        and named entity recognition:
-                    </p>
-                    <div id="integration-logos">
-                        <a target=_ href="https://opennlp.apache.org"><img src="/images/opennlp-logo.png" height="32px" alt=""></a>
-                        <a target=_ href="https://cloud.google.com/natural-language/"><img src="/images/google-cloud-logo-small.png" height="32px" alt=""></a>
-                        <a target=_ href="https://stanfordnlp.github.io/CoreNLP"><img src="/images/corenlp-logo.gif" height="48px" alt=""></a>
-                        <a target=_ href="https://spacy.io"><img src="/images/spacy-logo.png" height="32px" alt=""></a>
-                    </div>
-                </section>
-            </div>
-        </div>
-        <div class="learn-more">
-            <a href="docs.html">Learn more <i class="align-text-bottom fas fa-angle-right"></i></a>
-        </div>
-    </div>
-</div>
-
-<div id="howitworks" class="bottom-arrow main-section">
-    <div class="container-fluid">
-        <div class="row">
-            <div class="col-12">
-                <h2 class="section-title">How <span>It Works</span></h2>
-            </div>
-        </div>
-        <div class="row d-flex flex-wrap align-items-center">
-            <div class="col-6">
-                <section>
-                    <p>
-                        There are three main software components:
-                        <p>
-                        <b>Data model</b> specifies how to interpret user input, how to query a data
-                        source, and how to format the result back. Developers use model-as-a-code approach
-                        to build models using any JVM language like Java or Scala.
-                        <p>
-                        <b>Data probe</b> is a DMZ-deployed application designed to securely
-                        deploy and manage data models. Each probe can manage multiple models and you can
-                        have many probes.
-                        <p>
-                        <b>REST server</b> provides REST endpoint for user applications to securely query data
-                        sources using NLI via data models deployed in data probes.
-                    </p>
-                </section>
-            </div>
-            <div class="col-6">
-                <center>
-                    <img class="img-fluid" src="{{ 'images/homepage-fig1.1.png' | relative_url}}" alt="">
-                </center>
-            </div>
-        </div>
-        <div class="learn-more">
-            <a href="docs.html">Learn more <i class="align-text-bottom fas fa-angle-right"></i></a>
-        </div>
-    </div>
-</div>
-
-<div id="news" class="bottom-arrow main-section">
-    <div class="container-fluid">
-        <div class="row">
-            <div class="col-12">
-                <h2 class="section-title">Latest <span>News</span></h2>
-            </div>
-        </div>
-        <div id="news-container" class="row">
-            {% for news in site.data.news %}
-            <div class="col-4">
-                <div class="news-title">
-                    <a href="{{ news.url }}" target=_>
-                        {{ news.title }}
-                    </a>
-                </div>
-                <div class="news-excerpt">
-                    {{ news.excerpt}}&nbsp;<a target=_ href="{{ news.url }}"><i class="fas fa-angle-double-right"></i></a>
-                </div>
-                <div class="news-footer">
-                    {% if news.avatar_url %}<img class="avatar-img" src="{{ news.avatar_url | relative_url}}" alt="">{% endif %}
-                    {% if news.pub_logo_url %}<img class="pub-logo-img" src="{{ news.pub_logo_url | relative_url}}" alt="">{% endif %}
-                    {% if news.medium_id %}<a class="news-author text-nowrap " target="news" href="https://medium.com/@{{ news.medium_id}}">{{ news.author }}</a>{% endif %}
-                    {% if news.linkedin_id %}<a target="linkedin" href="https://www.linkedin.com/in/{{ news.linkedin_id}}/"><i class="fab fa-fw fa-linkedin"></i></a>{% endif %}
-                    {% if news.medium_id %}<a target="medium" href="https://medium.com/@{{ news.medium_id}}"><i class="fab fa-fw fa-medium"></i></a>{% endif %}
-                    {% if news.twitter_id %}<a target="twitter" href="https://twitter.com/{{ news.twitter_id}}"><i class="fab fa-fw fa-twitter"></i></a>{% endif %}
-                    <span class="text-nowrap news-date">{{ news.publish_date }}</span>
-                </div>
-            </div>
-            {% endfor %}
-        </div>
-    </div>
-</div>
-
-<div id="about" class="bottom-arrow main-section">
-    <div class="container-fluid">
-        <div id="about-container" class="row">
-            <div class="col-12" style="margin-top: 50px;">
-<!--                <p align="center">-->
-<!--                    <a href="https://www.apache.org/licenses/LICENSE-2.0" target=_><img src="{{ 'images/asf20.jpg' | relative_url}}" height="64px" alt=""></a>-->
-<!--                </p>-->
-                <p align="center">
-                    <a href="https://incubator.apache.org/" target=_><img src="{{ 'images/apache_incubator.png' | relative_url}}" height="64px" alt=""></a>
-                </p>
-                <p align="center" style="font-size: 100%; margin: 0 20%">
-                    Apache NLPCraft licensed under <a target=_ href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, version 2.0</a> is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by
-                    the <a href="https://incubator.apache.org/" target=_>Apache Incubator</a>. Incubation is required of all newly accepted projects until a further review indicates
-                    that the infrastructure, communications, and decision making process have stabilized in a manner consistent
-                    with other successful ASF projects. While incubation status is not necessarily a reflection of the
-                    completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
-                </p>
-            </div>
-        </div>
-    </div>
-</div>
-
-
-
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
diff --git a/installation.html b/installation.html
index 67be156..2dce34a 100644
--- a/installation.html
+++ b/installation.html
@@ -1,9 +1,3 @@
----
-active_crumb: Docs
-layout: documentation
-id: installation
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,42 +15,4 @@ id: installation
  limitations under the License.
 -->
 
-<div class="col-md-8 second-column">
-    <section id="installation">
-        <h2 class="section-title">Installation</h2>
-        <p>
-            NLPCraft requires <b>no special installation</b> operations:
-        </p>
-        <ul>
-            <li>If you <a href="/download.html">downloaded</a> binary ZIP archive - verify it and unzip it</li>
-            <li>If you <a href="/download.html">cloned</a> GitHub repository or downloaded source archive - use <code>mvn clean install</code> to build it</li>
-            <li>If you <a href="/download.html">used</a> Maven/Gradle/SBT - you know what you are doing 👍</li>
-        </ul>
-    </section>
-    <section id="ignite">
-        <h2 class="section-title">Apache Ignite 2.7 <span class="amp">&amp;</span> Java 9+</h2>
-        <p>
-            By default NLPCraft uses <a target=_ href="https://ignite.apache.org/">Apache Ignite</a> project as its
-            underlying in-memory distributed storage and cluster computing framework. If running with Apache Ignite 2.7 or
-            earlier on Java 9/10/11 you need to follow these
-            <a target=_ href="https://apacheignite.readme.io/docs/getting-started#section-running-ignite-with-java-9-10-11">instructions.</a>
-            For Java 8 no additional parameters are required.
-        </p>
-        <div class="bq info">
-            <p>
-                <b>NOTE:</b> It is NOT recommended to change the version of Apache Ignite inside NLPCraft project.
-            </p>
-        </div>
-    </section>
-</div>
-<div class="col-md-2 third-column">
-    <ul class="side-nav">
-        <li class="side-nav-title">On This Page</li>
-        <li><a href="#installation">Installation</a></li>
-        <li><a href="#ignite">Apache Ignite</a></li>
-        {% include quick-links.html %}
-    </ul>
-</div>
-
-
-
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
diff --git a/integrations.html b/integrations.html
index 61d7c8b..18f01d6 100644
--- a/integrations.html
+++ b/integrations.html
@@ -1,9 +1,3 @@
----
-active_crumb: Integrations
-layout: documentation
-id: integrations
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,608 +15,35 @@ id: integrations
  limitations under the License.
 -->
 
-<div id="integrations" class="col-md-8 second-column">
-    <section>
-        <span id="overview" class="section-title">Overview</span>
-        <p>
-            NLPCraft provides several integration points for a underlying <a href="">SQL storage</a> and
-            <a href="#nlp">NLP functionality</a>.
-        </p>
-        <span id="nlp" class="section-title">NLP Functionality</span>
-        <p>
-            NLPCraft comes with integrations for several 3rd party NLP libraries and projects. External
-            integrations can be used for two distinct purposes inside of NLPCraft:
-        </p>
-        <ul>
-            <li>
-                <b>Base NLP Engine</b>
-                <p>
-                    As a base NLP engine the external project is responsible for all basic NLP pre-processing
-                    such as tokenization, lemmatization, stemmatization, PoS tagging, etc. Base NLP engine
-                    has significant performance requirement and therefore cannot be based on a APIs that
-                    requires a network trip.
-                </p>
-            </li>
-            <li>
-                <b>Token Provider</b>
-                <p>
-                    As a token provider the external project will be used for detection of the named entities.
-                </p>
-            </li>
-        </ul>
-        <p>
-            Note that the same external project can be used for both roles, and projects can be mixed and matched
-            together through NLPCraft configuration. You can only have one base NLP engine but you can configure
-            multiple token providers. The following table shows supported 3rd party integrations and
-            their roles:
-        </p>
-        <table class="gradient-table checks">
-            <thead>
-            <tr>
-                <th>Project</th>
-                <th>Base NLP Engine</th>
-                <th>Token Provider</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td>NLPCraft</td>
-                <td><center><i class="fas fa-times"></i></center></td>
-                <td><center><i class="fas fa-check-double"></i></center></td>
-            </tr>
-            <tr>
-                <td><a href="#opennlp">OpenNLP</a></td>
-                <td><center><i class="fas fa-check-double"></i></center></td>
-                <td><center><i class="fas fa-check"></i></center></td>
-            </tr>
-            <tr>
-                <td><a href="#google">Google Natural Language</a></td>
-                <td><center><i class="fas fa-times"></i></center></td>
-                <td><center><i class="fas fa-check"></i></center></td>
-            </tr>
-            <tr>
-                <td><a href="#stanford">Stanford CoreNLP</a></td>
-                <td><center><i class="fas fa-check"></i></center></td>
-                <td><center><i class="fas fa-check"></i></center></td>
-            </tr>
-            <tr>
-                <td><a href="#spacy">spaCy</a></td>
-                <td><center><i class="fas fa-times"></i></center></td>
-                <td><center><i class="fas fa-check"></i></center></td>
-            </tr>
-            </tbody>
-        </table>
-
-        <div class="bq warn">
-            <h3 class="section-title">Configuring Token Providers</h3>
-            <p>
-                REST server configuration support zero or more token providers. Data models also have to specify
-                the specific tokens they are expecting the REST server and probe to detect. This is done to limit the
-                unnecessary processing since implicit enabling of all token providers and all tokens can lead to
-                a significant slow down of processing.
-            </p>
-            <p>
-                REST server configuration property <code>tokenProvides</code> provides the list of enabled token providers. See its
-                <a href="/server-and-probe.html">documentation</a> for more details. Data model provides its required tokens via
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getEnabledBuiltInTokens--">NCModelView.getEnabledBuiltInTokens()</a> method.
-            </p>
-        </div>
-    </section>
-    <section>
-        <img id="nlpcraft" class="img-title" src="/images/nlpcraft_logo_black.gif" height="48px" alt="">
-        <p>
-            NLPCraft is an open source library for adding natural language Interface to any applications.
-        </p>
-        <h3 class="section-title">Base NLP Engine</h3>
-        <p>
-            N/A
-        </p>
-        <h3 class="section-title">Token Provider</h3>
-        <p>
-            NLPCraft provides its own set of built-in elements. NLPCraft token IDs start with <code>nlpcraft</code>. Note
-            also that all NLPCraft built-in tokens are normalized named entities (NNE), i.e. they provide normalized
-            information and not just their IDs:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Token ID</th>
-                <th>Description</th>
-                <th>Example</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr>
-                <td><code>nlpcraft:nlp</code></td>
-                <td>
-                    <p>
-                        This token denotes a word (always a single word) that is not a part of any other token. It's
-                        also call a free-word, i.e. a word that is not linked to any other detected model element.
-                    </p>
-                    <p>
-                        <b>NOTE:</b> the metadata from this token defines a common set of NLP properties and
-                        is present in every other token as well.
-                    </p>
-                </td>
-                <td>
-                    <ul>
-                        <li>Jamie goes <code>home</code> (assuming that a word 'home' does not belong to any model element).</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:date</code></td>
-                <td>
-                    This token denotes a date range. It recognizes dates from 1900 up to 2023. Note that it does not
-                    currently recognize time component.
-                </td>
-                <td>
-                    <ul>
-                        <li>Meeting <code>next tuesday</code>.</li>
-                        <li>Report for entire <code>2018 year</code>.</li>
-                        <li>Data <code>from 1/1/2017 to 12/31/2018</code>.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:num</code></td>
-                <td>
-                    This token denotes a single numeric value or numeric condition.
-                </td>
-                <td>
-                    <ul>
-                        <li>Price <code>&gt; 100</code>.</li>
-                        <li>Price is <code>less than $100</code>.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:continent</code></td>
-                <td>
-                    This token denotes a geographical continent.
-                </td>
-                <td>
-                    <ul>
-                        <li>Population of <code>Africa</code>.</li>
-                        <li>Surface area of <code>America</code>.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:subcontinent</code></td>
-                <td>
-                    This token denotes a geographical subcontinent.
-                </td>
-                <td>
-                    <ul>
-                        <li>Population of <code>Alaskan peninsula</code>.</li>
-                        <li>Surface area of <code>South America</code>.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:region</code></td>
-                <td>
-                    This token denotes a geographical region/state.
-                </td>
-                <td>
-                    <ul>
-                        <li>Population of <code>California</code>.</li>
-                        <li>Surface area of <code>South Dakota</code>.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:country</code></td>
-                <td>
-                    This token denotes a country.
-                </td>
-                <td>
-                    <ul>
-                        <li>Population of <code>France</code>.</li>
-                        <li>Surface area of <code>USA</code>.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:city</code></td>
-                <td>
-                    This token denotes a city.
-                </td>
-                <td>
-                    <ul>
-                        <li>Population of <code>Paris</code>.</li>
-                        <li>Surface area of <code>Washington DC</code>.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:metro</code></td>
-                <td>
-                    This token denotes a metro area.
-                </td>
-                <td>
-                    <ul>
-                        <li>Population of <code>Cedar Rapids-Waterloo-Iowa City & Dubuque, IA</code> metro area.</li>
-                        <li>Surface area of <code>Norfolk-Portsmouth-Newport News, VA</code>.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:sort</code></td>
-                <td>
-                    This token denotes a sorting or ordering.
-                </td>
-                <td>
-                    <ul>
-                        <li>Report <code>sorted from top to bottom</code>.</li>
-                        <li>Analysis <code>sorted in descending order</code>.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:limit</code></td>
-                <td>
-                    This token denotes a numerical limit.
-                </td>
-                <td>
-                    <ul>
-                        <li>Show <code>top 5</code> brands.</li>
-                        <li>Show <code>several</code> brands.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:coordinate</code></td>
-                <td>
-                    This token denotes a latitude and longitude coordinates.
-                </td>
-                <td>
-                    <ul>
-                        <li>Route the path to <code>55.7558, 37.6173</code> location.</li>
-                    </ul>
-                </td>
-            </tr>
-            <tr>
-                <td><code>nlpcraft:relation</code></td>
-                <td>
-                    This token denotes a relation function:
-                    <code>compare</code> or
-                    <code>correlate</code>. Note this token always need another two tokens that it references.
-                </td>
-                <td>
-                    <ul>
-                        <li>
-                            What is the <code><b>correlation between</b></code> <code>price</code> <code><b>and</b></code> <code>location</code>
-                            (assuming that 'price' and 'location' are also detected tokens).
-                        </li>
-                    </ul>
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <p>Notes:</p>
-        <ul>
-            <li>
-                See <a href="data-model.html#meta">token metadata</a> documentation for detailed information
-                for token metadata properties.
-            </li>
-            <li>
-                Make sure to enable this token provider <code>nlpcraft</code> in REST server configuration
-                using <code>nlpcraft.server.tokenProviders</code> property.
-            </li>
-            <li>
-                Make sure to also properly configure required tokens in you model configuration via
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getEnabledBuiltInTokens--">NCModelView.getEnabledBuiltInTokens()</a> method.
-            </li>
-        </ul>
-    </section>
-    <section>
-        <img id="opennlp" class="img-title" src="/images/opennlp-logo.png" height="48px" alt="">
-        <p>
-            <a href="https://opennlp.apache.org">Apache OpenNLP</a> is an open-source library for a machine learning based
-            processing of natural language text.
-        </p>
-        <h3 class="section-title">Base NLP Engine</h3>
-        <p>
-            <a href="https://opennlp.apache.org">Apache OpenNLP</a> is used by NLPCraft as a default base NLP engine. You can also set
-            it explicitly on REST server and probe via configuration property: <code>nlpcraft.nlpEngine=opennlp</code>
-        </p>
-        <h3 class="section-title">Token Provider</h3>
-        <p>
-            OpenNLP can be used independently as a token provider (even if other library is used as a base NLP engine).
-            OpenNLP provides its own set of built-in tokens supported by NLPCraft.
-            OpenNLP token IDs have a form of <code>opennlp:xxx</code>, where <code>xxx</code> is a lower case
-            name of the named entity in OpenNLP.
-        </p>
-        <p>
-            Configuration notes:
-        </p>
-        <ul>
-            <li>
-                <p>
-                    OpenNLP integration is configured with the following pre-train English OpenNLP
-                    <a target="opennlp" href="http://opennlp.sourceforge.net/models-1.5/">models</a> version 1.5:
-                </p>
-                <table class="gradient-table">
-                    <thead>
-                    <tr>
-                        <th>Named Entity</th>
-                        <th>OpenNLP Model</th>
-                        <th>Token ID</th>
-                    </tr>
-                    </thead>
-                    <tbody>
-                        <tr>
-                            <td>Location</td>
-                            <td><a target="opennlp" href="http://opennlp.sourceforge.net/models-1.5/">en-ner-location.bin</a></td>
-                            <td><code>opennlp:location</code></td>
-                        </tr>
-                        <tr>
-                            <td>Money</td>
-                            <td><a target="opennlp" href="http://opennlp.sourceforge.net/models-1.5/">en-ner-money.bin</a></td>
-                            <td><code>opennlp:money</code></td>
-                        </tr>
-                        <tr>
-                            <td>Person</td>
-                            <td><a target="opennlp" href="http://opennlp.sourceforge.net/models-1.5/">en-ner-person.bin</a></td>
-                            <td><code>opennlp:person</code></td>
-                        </tr>
-                        <tr>
-                            <td>Organization</td>
-                            <td><a target="opennlp" href="http://opennlp.sourceforge.net/models-1.5/">en-ner-organization.bin</a></td>
-                            <td><code>opennlp:organization</code></td>
-                        </tr>
-                        <tr>
-                            <td>Date</td>
-                            <td><a target="opennlp" href="http://opennlp.sourceforge.net/models-1.5/">en-ner-date.bin</a></td>
-                            <td><code>opennlp:date</code></td>
-                        </tr>
-                        <tr>
-                            <td>Time</td>
-                            <td><a target="opennlp" href="http://opennlp.sourceforge.net/models-1.5/">en-ner-time.bin</a></td>
-                            <td><code>opennlp:time</code></td>
-                        </tr>
-                        <tr>
-                            <td>Percentage</td>
-                            <td><a target="opennlp" href="http://opennlp.sourceforge.net/models-1.5/">en-ner-percentage.bin</a></td>
-                            <td><code>opennlp:percentage</code></td>
-                        </tr>
-                    </tbody>
-                </table>
-            </li>
-            <li>
-                See <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#opennlp">NCToken</a>
-                documentation for token properties.
-            </li>
-            <li>
-                Make sure to enable this token provider <code>opennlp</code> in REST server configuration
-                using <code>nlpcraft.server.tokenProviders</code> property.
-            </li>
-            <li>
-                Make sure to properly configure required tokens in you model configuration via
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getEnabledBuiltInTokens--">NCModelView.getEnabledBuiltInTokens()</a> method.
-            </li>
-        </ul>
-    </section>
-    <section>
-        <img id="google" class="img-title" src="/images/google-cloud-logo-small.png" height="56px" alt="">
-        <p>
-            <a href="https://cloud.google.com/natural-language/">Google Natural Language</a> uses machine learning
-            to reveal the structure and meaning of text.
-        </p>
-        <h3 class="section-title">Base NLP Engine</h3>
-        <p>
-            N/A
-        </p>
-        <h3 class="section-title">Token Provider</h3>
-        <p>
-            Google Natural Language provides its own set of built-in elements.
-            To use Google token provider the environment variable <code>GOOGLE_APPLICATION_CREDENTIALS</code>
-            should be configured to point to proper Google JSON credential file (see
-            <a href="https://cloud.google.com/docs/authentication/production">Google documentation</a> for more details).
-            Google Natural Language token IDs have a form of <code>google:xxx</code>, where <code>xxx</code> is a lower
-            case name of the Named Entity in Google APIs, i.e. <code>google:person</code>, <code>google:location</code>,
-            etc.
-        </p>
-        <p>Configuration notes:</p>
-        <ul>
-            <li>
-                See Google Natural Language
-                <a target="google" href="https://cloud.google.com/natural-language/docs/reference/rest/v1/Entity#Type">documentation</a>
-                for more details on supported tokens.
-            </li>
-            <li>
-                See <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#google">NCToken</a> documentation for token properties.
-            </li>
-            <li>
-                Make sure to enable this token provider <code>google</code> in REST server configuration
-                using <code>nlpcraft.server.tokenProviders</code> property.
-            </li>
-            <li>
-                Make sure to also properly configure required tokens in you model configuration via
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getEnabledBuiltInTokens--">NCModelView.getEnabledBuiltInTokens()</a> method.
-            </li>
-        </ul>
-    </section>
-    <section>
-        <img id="stanford" class="img-title" src="/images/corenlp-logo.png" height="64px" alt="">
-        <p>
-            <a href="https://stanfordnlp.github.io/CoreNLP">Stanford CoreNLP</a> is a set of human language technology tools.
-        </p>
-        <h3 class="section-title">Base NLP Engine</h3>
-        <p>
-            You can set Stanford CoreNLP as a base NLP engine. Note that due to licensing you need to add Stanford CoreNLP
-            dependencies separately and make it available to NLPCraft:
-        </p>
-        <nav>
-            <div class="nav nav-tabs" role="tablist">
-                <a class="nav-item nav-link active" data-toggle="tab" href="#nav-stanfordnlp-maven" role="tab" aria-controls="nav-home" aria-selected="true">Maven <sup>Java</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-stanfordnlp-grape" role="tab" aria-controls="nav-profile" aria-selected="false">Grape <sup>Groovy</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-stanfordnlp-gradle" role="tab" aria-controls="nav-profile" aria-selected="false">Gradle <sup>Kotlin</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-stanfordnlp-sbt" role="tab" aria-controls="nav-contact" aria-selected="false">SBT <sup>Scala</sup></a>
-            </div>
-        </nav>
-        <div class="tab-content">
-            <div class="tab-pane fade show active" id="nav-stanfordnlp-maven" role="tabpanel">
-                    <pre class="brush: xml, highlight: 4">
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
                     &lt;dependency&gt;
                         &lt;groupId&gt;edu.stanford.nlp&lt;/groupId&gt;
                         &lt;artifactId&gt;stanford-corenlp&lt;/artifactId&gt;
                         &lt;version&gt;3.9.2&lt;/version&gt;
                     &lt;/dependency&gt;
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-stanfordnlp-grape" role="tabpanel">
-                    <pre class="brush: java">
+                    </pre></div><div class="tab-pane fade" id="nav-stanfordnlp-grape" role="tabpanel"><pre class="brush: java">
                     @Grab ('edu.stanford.nlp:stanford-corenlp:3.9.2')
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-stanfordnlp-gradle" role="tabpanel">
-                    <pre class="brush: java">
+                    </pre></div><div class="tab-pane fade" id="nav-stanfordnlp-gradle" role="tabpanel"><pre class="brush: java">
                     dependencies {
                         runtime group: 'edu.stanford.nlp', name: 'stanford-corenlp', version: '3.9.2'
                     }
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-stanfordnlp-sbt" role="tabpanel">
-                    <pre class="brush: scala">
+                    </pre></div><div class="tab-pane fade" id="nav-stanfordnlp-sbt" role="tabpanel"><pre class="brush: scala">
                     libraryDependencies += "mysql" % "stanford-corenlp" % "3.9.2"
-                    </pre>
-            </div>
-        </div>
-        <p>
-            Comments:
-        </p>
-        <ul>
-            <li>
-                Stanford CoreNLP is licensed under
-                <a target=_ href="https://www.gnu.org/licenses/gpl-3.0.en.html">GNU General Public License v3</a> - make
-                sure your usage is compliant with this license.
-            </li>
-            <li>
-                Stanford CoreNLP library must be available <b>on both</b> the REST server and the data probe.
-            </li>
-            <li>
-                Make sure to change <code>3.9.2</code> version to the latest or required one.
-            </li>
-            <li>
-                Set configuration property <code>nlpcraft.nlpEngine=stanford</code>
-            </li>
-            <li>
-                Note that you can also <a target=_ href="https://stanfordnlp.github.io/CoreNLP/">download</a>
-                Stanford CoreNLP as a separate JAR file and add it to your
-                project classpath if you are not using, or instead of, build tools.
-            </li>
-        </ul>
-        <h3 class="section-title">Token Provider</h3>
-        <p>
-            Stanford CoreNLP can be used as a token provider independently from base NLP engine.
-            Due to licensing you need to add Stanford CoreNLP dependencies separately and make it available to NLPCraft:
-        </p>
-        <nav>
-            <div class="nav nav-tabs" role="tablist">
-                <a class="nav-item nav-link active" data-toggle="tab" href="#nav-stanfordnlp-maven2" role="tab" aria-controls="nav-home" aria-selected="true">Maven <sup>Java</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-stanfordnlp-grape2" role="tab" aria-controls="nav-profile" aria-selected="false">Grape <sup>Groovy</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-stanfordnlp-gradle2" role="tab" aria-controls="nav-profile" aria-selected="false">Gradle <sup>Kotlin</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-stanfordnlp-sbt2" role="tab" aria-controls="nav-contact" aria-selected="false">SBT <sup>Scala</sup></a>
-            </div>
-        </nav>
-        <div class="tab-content">
-            <div class="tab-pane fade show active" id="nav-stanfordnlp-maven2" role="tabpanel">
-                    <pre class="brush: xml, highlight: 4">
+                    </pre></div></div><p> Comments:</p><ul><li> Stanford CoreNLP is licensed under <a target=_ href="https://www.gnu.org/licenses/gpl-3.0.en.html">GNU General Public License v3</a> - make sure your usage is compliant with this license.<li> Stanford CoreNLP library must be available <b>on both</b> the REST server and the data probe.<li> Make sure to change <code>3.9.2</code> version to the latest or required one.<li> Set configuration property <code>nlpcraft.nlpEngine=stan [...]
                     &lt;dependency&gt;
                         &lt;groupId&gt;edu.stanford.nlp&lt;/groupId&gt;
                         &lt;artifactId&gt;stanford-corenlp&lt;/artifactId&gt;
                         &lt;version&gt;3.9.2&lt;/version&gt;
                     &lt;/dependency&gt;
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-stanfordnlp-grape2" role="tabpanel">
-                    <pre class="brush: java">
+                    </pre></div><div class="tab-pane fade" id="nav-stanfordnlp-grape2" role="tabpanel"><pre class="brush: java">
                     @Grab ('edu.stanford.nlp:stanford-corenlp:3.9.2')
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-stanfordnlp-gradle2" role="tabpanel">
-                    <pre class="brush: java">
+                    </pre></div><div class="tab-pane fade" id="nav-stanfordnlp-gradle2" role="tabpanel"><pre class="brush: java">
                     dependencies {
                         runtime group: 'edu.stanford.nlp', name: 'stanford-corenlp', version: '3.9.2'
                     }
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-stanfordnlp-sbt2" role="tabpanel">
-                    <pre class="brush: scala">
+                    </pre></div><div class="tab-pane fade" id="nav-stanfordnlp-sbt2" role="tabpanel"><pre class="brush: scala">
                     libraryDependencies += "mysql" % "stanford-corenlp" % "3.9.2"
-                    </pre>
-            </div>
-        </div>
-        <p>
-            Comments:
-        </p>
-        <ul>
-            <li>
-                Stanford CoreNLP is licensed under
-                <a target=_ href="https://www.gnu.org/licenses/gpl-3.0.en.html">GNU General Public License v3</a> - make
-                sure your usage is compliant with this license.
-            </li>
-            <li>
-                Stanford CoreNLP library should <b>only</b> be available on the data probe.
-            </li>
-            <li>
-                Make sure to change <code>3.9.2</code> version to the latest or required one.
-            </li>
-            <li>
-                Note that you can also <a target=_ href="https://stanfordnlp.github.io/CoreNLP/">download</a>
-                Stanford CoreNLP as a separate JAR file and add it to your
-                project classpath if you are not using, or instead of, build tools.
-            </li>
-        </ul>
-        <p>
-            Stanford CoreNLP provides its own set of built-in elements.
-            Stanford CoreNLP token IDs have a form of <code>stanford:xxx</code>, where <code>xxx</code> is a lower
-            case name of the Named Entity in Stanford CoreNLP, i.e. <code>stanford:person</code>, <code>stanford:location</code>,
-            etc.
-        </p>
-        <p>Configuration notes:</p>
-        <ul>
-            <li>
-                See Stanford CoreNLP Named Entity Recognition
-                <a target="google" href="https://stanfordnlp.github.io/CoreNLP/ner.html">documentation</a>
-                for more details on supported token types.
-            </li>
-            <li>
-                See <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#stanford">NCToken</a>
-                documentation for token properties.
-            </li>
-            <li>
-                Make sure to enable this token provider <code>stanford</code> in REST server configuration
-                using <code>nlpcraft.server.tokenProviders</code> property.
-            </li>
-            <li>
-                Make sure to also properly configure required tokens in you model configuration via
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getEnabledBuiltInTokens--">NCModelView.getEnabledBuiltInTokens()</a> method.
-            </li>
-        </ul>
-    </section>
-    <section>
-        <img id="spacy" class="img-title" src="/images/spacy-logo.png" height="48px" alt="">
-        <p>
-            <a href="https://spacy.io">spaCy</a> is a free open-source library for Natural Language Processing in Python.
-        </p>
-        <h3 class="section-title">Base NLP Engine</h3>
-        <p>
-            N/A
-        </p>
-        <h3 class="section-title">Token Provider</h3>
-        <p>
-            spaCy provides its own set of built-in elements. NLPCraft integrates with spaCy via local Python-based
-            REST server <code>/src/main/python/spacy_proxy.py</code>. It is a very simple Flask-based implementation
-            that you can freely modify to change the spaCy models or their external attributes that are made available.
-        </p>
-        <p>
-            This is entire source code for this local REST server:
-        </p>
-        <pre class="brush: python, highlight: [11, 29, 30, 58, 59]">
+                    </pre></div></div><p> Comments:</p><ul><li> Stanford CoreNLP is licensed under <a target=_ href="https://www.gnu.org/licenses/gpl-3.0.en.html">GNU General Public License v3</a> - make sure your usage is compliant with this license.<li> Stanford CoreNLP library should <b>only</b> be available on the data probe.<li> Make sure to change <code>3.9.2</code> version to the latest or required one.<li> Note that you can also <a target=_ href="https://stanfordnlp.github.io/Cor [...]
 import urllib.parse
 
 import spacy
@@ -683,198 +104,32 @@ if __name__ == '__main__':
         host="localhost",
         port='5002'
     )
-        </pre>
-        <p>
-            You need to start this REST server before you can use spaCy integration in NLPCraft. Note that for
-            production environment it is recommended to use
-            <a target=_ href="https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface">WSGI-based server</a> instead.
-        </p>
-        <p>
-            Comments:
-        </p>
-        <ul>
-            <li>
-                On line 11 you can add or change spaCy models to be loaded.
-            </li>
-            <li>
-                On lines 29-30 you can change how spans' external attributes are collected.
-            </li>
-            <li>
-                On lines 58-59 you can change the endpoint on which this REST server starts. Note that you
-                need to change the same endpoint on REST server via configuration property <code>nlpcraft.server.spacy.proxy.url</code>,
-                e.g. <code>nlpcraft.server.spacy.proxy.url=myhost:1234</code>.
-            </li>
-        </ul>
-        <p>
-            spaCy token IDs have a form of <code>spacy:xxx</code>, where <code>xxx</code> is a lower case name of the Named Entity
-            in spaCy APIs, i.e. <code>spacy:person</code>, <code>spacy:location</code>, etc.
-        </p>
-        <p>
-            Configuration notes:
-        </p>
-        <ul>
-            <li>
-                See spaCy Named Entity Recognition
-                <a target="spacy" href="https://spacy.io/usage/linguistic-features#named-entities">documentation</a>
-                for more details on supported token types.
-            </li>
-            <li>
-                See <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCToken.html#stanford">NCToken</a>
-                documentation for token properties.
-            </li>
-            <li>
-                Make sure to enable this token provider <code>spacy</code> in REST server configuration
-                using <code>nlpcraft.server.tokenProviders</code> property.
-            </li>
-            <li>
-                Make sure to also properly configure required tokens in you model configuration via
-                <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/NCModelView.html#getEnabledBuiltInTokens--">NCModelView.getEnabledBuiltInTokens()</a> method.
-            </li>
-        </ul>
-    </section>
-    <section>
-        <img id="mysql" class="img-title" src="/images/mysql-logo.png" height="80px" alt="">
-        <p>
-            You can install and use MySQL as a system database in the REST server instead of the built-in
-            distributed SQL storage
-            from Apache Ignite that is used by default. Add the following dependency to your project:
-        </p>
-        <nav>
-            <div class="nav nav-tabs" role="tablist">
-                <a class="nav-item nav-link active" data-toggle="tab" href="#nav-mysql-maven" role="tab" aria-controls="nav-home" aria-selected="true">Maven <sup>Java</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-mysql-grape" role="tab" aria-controls="nav-profile" aria-selected="false">Grape <sup>Groovy</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-mysql-gradle" role="tab" aria-controls="nav-profile" aria-selected="false">Gradle <sup>Kotlin</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-mysql-sbt" role="tab" aria-controls="nav-contact" aria-selected="false">SBT <sup>Scala</sup></a>
-            </div>
-        </nav>
-        <div class="tab-content">
-            <div class="tab-pane fade show active" id="nav-mysql-maven" role="tabpanel">
-                    <pre class="brush: xml, highlight: 4">
+        </pre><p> You need to start this REST server before you can use spaCy integration in NLPCraft. Note that for production environment it is recommended to use <a target=_ href="https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface">WSGI-based server</a> instead.</p><p> Comments:</p><ul><li> On line 11 you can add or change spaCy models to be loaded.<li> On lines 29-30 you can change how spans' external attributes are collected.<li> On lines 58-59 you can change the endpoint on [...]
                     &lt;dependency&gt;
                         &lt;groupId&gt;mysql&lt;/groupId&gt;
                         &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
                         &lt;version&gt;8.0.15&lt;/version&gt;
                     &lt;/dependency&gt;
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-mysql-grape" role="tabpanel">
-                    <pre class="brush: java">
+                    </pre></div><div class="tab-pane fade" id="nav-mysql-grape" role="tabpanel"><pre class="brush: java">
                     @Grab ('mysql:mysql-connector-java:8.0.15')
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-mysql-gradle" role="tabpanel">
-                    <pre class="brush: java">
+                    </pre></div><div class="tab-pane fade" id="nav-mysql-gradle" role="tabpanel"><pre class="brush: java">
                     dependencies {
                         runtime group: 'mysql', name: 'mysql-connector-java', version: '8.0.15'
                     }
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-mysql-sbt" role="tabpanel">
-                    <pre class="brush: scala">
+                    </pre></div><div class="tab-pane fade" id="nav-mysql-sbt" role="tabpanel"><pre class="brush: scala">
                     libraryDependencies += "mysql" % "mysql-connector-java" % "8.0.15"
-                    </pre>
-            </div>
-        </div>
-        <p>
-            Comments:
-        </p>
-        <ul>
-            <li>
-                Make sure to change <code>8.0.15</code> version to the latest or required one.
-            </li>
-            <li>
-                Update configuration property <code>nlpcraft.server.database.jdbc</code>
-                with required JDBC driver class and JDBC URL.
-            </li>
-            <li>
-                Use scripts from <code>sql/mysql</code> folder to create database and initialize DB schema.
-            </li>
-            <li>
-                Note that you can also <a target=_ href="https://dev.mysql.com/downloads/connector/j">download</a> MySQL
-                JDBC driver as a separate JAR file and add it to your
-                project classpath if you are not using, or instead of, build tools.
-            </li>
-        </ul>
-    </section>
-    <section>
-        <img id="postgres" class="img-title" src="/images/postgresql-logo.png" height="80px" alt="">
-        <p>
-            You can install and use PostgreSQL as a system database in the REST server instead of the built-in
-            distributed SQL storage
-            from Apache Ignite that is used by default. Add the following dependency to your project:
-        </p>
-        <nav>
-            <div class="nav nav-tabs" role="tablist">
-                <a class="nav-item nav-link active" data-toggle="tab" href="#nav-postgres-maven" role="tab" aria-controls="nav-home" aria-selected="true">Maven <sup>Java</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-postgres-grape" role="tab" aria-controls="nav-profile" aria-selected="false">Grape <sup>Groovy</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-postgres-gradle" role="tab" aria-controls="nav-profile" aria-selected="false">Gradle <sup>Kotlin</sup></a>
-                <a class="nav-item nav-link" data-toggle="tab" href="#nav-postgres-sbt" role="tab" aria-controls="nav-contact" aria-selected="false">SBT <sup>Scala</sup></a>
-            </div>
-        </nav>
-        <div class="tab-content">
-            <div class="tab-pane fade show active" id="nav-postgres-maven" role="tabpanel">
-                    <pre class="brush: xml, highlight: 4">
+                    </pre></div></div><p> Comments:</p><ul><li> Make sure to change <code>8.0.15</code> version to the latest or required one.<li> Update configuration property <code>nlpcraft.server.database.jdbc</code> with required JDBC driver class and JDBC URL.<li> Use scripts from <code>sql/mysql</code> folder to create database and initialize DB schema.<li> Note that you can also <a target=_ href="https://dev.mysql.com/downloads/connector/j">download</a> MySQL JDBC driver as a sepa [...]
                     &lt;dependency&gt;
                         &lt;groupId&gt;org.postgresql&lt;/groupId&gt;
                         &lt;artifactId&gt;postgresql&lt;/artifactId&gt;
                         &lt;version&gt;42.2.5&lt;/version&gt;
                     &lt;/dependency&gt;
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-postgres-grape" role="tabpanel">
-                    <pre class="brush: java">
+                    </pre></div><div class="tab-pane fade" id="nav-postgres-grape" role="tabpanel"><pre class="brush: java">
                     @Grab ('org.postgresql:postgresql:42.2.5')
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-postgres-gradle" role="tabpanel">
-                    <pre class="brush: java">
+                    </pre></div><div class="tab-pane fade" id="nav-postgres-gradle" role="tabpanel"><pre class="brush: java">
                     dependencies {
                         runtime group: 'org.postgresql', name: 'postgresql', version: '42.2.5'
                     }
-                    </pre>
-            </div>
-            <div class="tab-pane fade" id="nav-postgres-sbt" role="tabpanel">
-                    <pre class="brush: scala">
+                    </pre></div><div class="tab-pane fade" id="nav-postgres-sbt" role="tabpanel"><pre class="brush: scala">
                     libraryDependencies += "org.postgresql" % "postgresql" % "42.2.5"
-                    </pre>
-            </div>
-        </div>
-        <p>
-            Comments:
-        </p>
-        <ul>
-            <li>
-                Make sure to change <code>42.2.5</code> version to the latest or required one.
-            </li>
-            <li>
-                Update configuration property <code>nlpcraft.server.database.jdbc</code> 
-                with required JDBC driver class and JDBC URL.
-            </li>
-            <li>
-                Use scripts from <code>sql/postgres</code> folder to create database and initialize DB schema.
-            </li>
-            <li>
-                Note that you can also <a target=_ href="https://jdbc.postgresql.org/">download</a> PostgreSQL
-                JDBC driver as a separate JAR file and add it to your
-                project classpath if you are not using, or instead of, build tools.
-            </li>
-        </ul>
-    </section>
-</div>
-<div class="col-md-2 third-column">
-    <ul class="side-nav">
-        <li class="side-nav-title">On This Page</li>
-        <li><a href="#nlpcraft">NLPCraft</a></li>
-        <li><a href="#opennlp">OpenNLP</a></li>
-        <li><a href="#google">Google</a></li>
-        <li><a href="#stanford">Stanford CoreNLP</a></li>
-        <li><a href="#spacy">spaCy</a></li>
-        <li><a href="#mysql">MySQL</a></li>
-        <li><a href="#postgres">PostgreSQL</a></li>
-        {% include quick-links.html %}
-    </ul>
-</div>
-
-
-
-
+                    </pre></div></div><p> Comments:</p><ul><li> Make sure to change <code>42.2.5</code> version to the latest or required one.<li> Update configuration property <code>nlpcraft.server.database.jdbc</code> with required JDBC driver class and JDBC URL.<li> Use scripts from <code>sql/postgres</code> folder to create database and initialize DB schema.<li> Note that you can also <a target=_ href="https://jdbc.postgresql.org/">download</a> PostgreSQL JDBC driver as a separate JA [...]
diff --git a/intent-matching.html b/intent-matching.html
index 07a0238..909eb8f 100644
--- a/intent-matching.html
+++ b/intent-matching.html
@@ -1,9 +1,3 @@
----
-active_crumb: Intent Matching
-layout: documentation
-id: intent_matching
----
-
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -21,67 +15,7 @@ id: intent_matching
  limitations under the License.
 -->
 
-<div class="col-md-8 second-column">
-    <section id="overview">
-        <h2 class="section-title">Overview</h2>
-        <p>
-            As we discussed in <a href="/data-model.html#logic">Data Model</a> section the processing logic of the data model is
-            encoded in intents and their callbacks. Sections below will explain how to declare an intent and how to develop
-            a callback method when its intent is matched.
-        </p>
-    </section>
-    <section id="matching">
-        <h2 class="section-title">Intent-Based Matching</h2>
-        <p>
-            The intent matching is based on an idea of defining one or more templates for user input and let the
-            algorithm choose the best matching one given the user input. Such template is called an <em>intent</em>.
-            Each intent defines a pattern of the user input and associated action to take when that pattern is detected
-            and selected as a best match. While selecting the best matching intent the algorithm uses sophisticated
-            NLP algorithms. When more than one intent matches the user input - the system selects the
-            most specific one as its best match.
-        </p>
-        <p>
-            In NLPCraft intents are specified using three Java annotations:
-        </p>
-        <table class="gradient-table">
-            <thead>
-            <tr>
-                <th>Annotation</th>
-                <th>Description</th>
-            </tr>
-            </thead>
-            <tbody>
-                <tr>
-                    <td><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/intent/NCIntent.html">@NCIntent</a></td>
-                    <td>
-                        This annotation defines an intent in-place on the method serving as its callback. It takes a string value
-                        that specifies an intent using intent <a href="#syntax">DSL syntax</a>.
-                    </td>
-                </tr>
-                <tr>
-                    <td><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/intent/NCIntentRed.html">@NCIntentRef</a></td>
-                    <td>
-                        This annotation allows to reference an intent defined in external JSON or YAML model definition.
-                        Similarly to <a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/intent/NCIntent.html">@NCIntent</a>
-                        annotation the intent should be defined using <a href="#syntax">DSL syntax</a>.
-                    </td>
-                </tr>
-                <tr>
-                    <td><a target="javadoc" href="/apis/latest/org/apache/nlpcraft/model/intent/NCIntentTerm.html">@NCIntentTerm</a></td>
-                    <td>
-                        This annotation annotation marks a formal callback method parameter to receive term's tokens.
-                    </td>
-                </tr>
-            </tbody>
-        </table>
-        <p>
-            Here's a couple of examples of intent declarations to illustrate the basics of intent declaration and usage.
-        </p>
-        <p>
-             An intent from
-            <a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples/lightswitch">Light Switch</a> Scala example:
-        </p>
-        <pre class="brush: java">
+<!doctype html><html lang="en"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content="An open source API to convert natural language into actions."><meta name="author" content="NLPCraft."><title>Apache NLPCraft - Natural Language Interface</title><link href="//netdna.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"><link href= [...]
             &#64;NCIntent("intent=act conv=false term(act)={groups @@ 'act'} term(loc)={trim(id) == 'ls:loc'}*")
             def onMatch(
                 &#64;NCIntentTerm("act") actTok: NCToken,
@@ -89,65 +23,7 @@ id: intent_matching
             ): NCResult = {
                 ...
             }
-        </pre>
-        <p>
-            <b>NOTES:</b>
-        </p>
-        <ul>
-            <li>
-                The intent is defined in-place using <code>@NCIntent</code> annotation.
-            </li>
-            <li>
-                A term match is defined as one or more tokens. Term can be optional if its min quantifier is zero.
-            </li>
-            <li>
-                A non-conversational intent <code>act</code> has one mandatory term and another
-                that can match zero or more tokens with method <code>onMatch(...)</code> as its callback.
-            </li>
-            <li>
-                Method <code>onMatch(...)</code> will be called when this intent is selected as the best match.
-            </li>
-            <li>
-                Note that terms have <code>min=1, max=1</code> quantifiers by default, i.e. one and only one.
-            </li>
-            <li>
-                First term defines any single token that belongs to the group <code>act</code>. Note that model elements
-                can belong to multiple groups.
-            </li>
-            <li>
-                Second term would match zero or more tokens with ID <code>ls:loc</code>. Note that we use function <code>trim</code>
-                on the token ID.
-            </li>
-            <li>
-                Note that both terms have IDs (<code>act</code> and <code>loc</code>) that are used in <code>onMatch(...)</code>
-                method parameters to automatically assign terms' tokens to the formal method parameters using <code>@NCIntentTerm</code>
-                annotations.
-            </li>
-            <li>
-                Given the <a target="github" href="https://github.com/apache/incubator-nlpcraft/blob/master/src/main/scala/org/apache/nlpcraft/examples/lightswitch/lightswitch_model.yaml">data model</a>
-                from this <a target="github" href="https://github.com/apache/incubator-nlpcraft/blob/master/src/main/scala/org/apache/nlpcraft/examples/lightswitch/lightswitch_model.yaml">example</a> the following sentences will be matched by this intent:
-                <ul>
-                    <li><code>Turn the lights off in the entire house.</code></li>
-                    <li><code>Switch on the illumination in the master bedroom closet.</code></li>
-                    <li><code>Get the lights on.</code></li>
-                    <li><code>Please, put the light out in the upstairs bedroom.</code></li>
-                    <li><code>Set the lights on in the entire house.</code></li>
-                    <li><code>Turn the lights off in the guest bedroom.</code></li>
-                    <li><code>Could you please switch off all the lights?</code></li>
-                    <li><code>Dial off illumination on the 2nd floor.</code></li>
-                    <li><code>Please, no lights!</code></li>
-                    <li><code>Kill off all the lights now!</code></li>
-                    <li><code>No lights in the bedroom, please.</code></li>
-                </ul>
-            </li>
-        </ul>
-        <br/>
-        <p>
-            In the following <a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples/alarm">Alarm Clock</a> Java example
-            the intent is defined in JSON model definition and referenced in Java code using <code>@NCIntentTerm</code>
-            annotation:
-        </p>
-        <pre class="brush: js, highlight: [19]">
+        </pre><p> <b>NOTES:</b></p><ul><li> The intent is defined in-place using <code>@NCIntent</code> annotation.<li> A term match is defined as one or more tokens. Term can be optional if its min quantifier is zero.<li> A non-conversational intent <code>act</code> has one mandatory term and another that can match zero or more tokens with method <code>onMatch(...)</code> as its callback.<li> Method <code>onMatch(...)</code> will be called when this intent is selected as the best match. [...]
             {
                 "id": "nlpcraft.alarm.ex",
                 "name": "Alarm Example Model",
@@ -169,8 +45,7 @@ id: intent_matching
                     "intent=alarm term={id=='x:alarm'} term(nums)={id=='nlpcraft:num' && ~nlpcraft:num:unittype=='datetime' && ~nlpcraft:num:isequalcondition==true}[0,7]"
                 ]
             }
-        </pre>
-        <pre class="brush: java, highlight: [1]">
+        </pre><pre class="brush: java, highlight: [1]">
             &#64;NCIntentRef("alarm")
             private NCResult onMatch(
                NCIntentMatch ctx,
@@ -178,422 +53,28 @@ id: intent_matching
             ) {
                ...
             }
-        </pre>
-        <p>
-            <b>NOTES:</b>
-        </p>
-        <ul>
-            <li>
-                Intent is defined in the external JSON model declaration (see line 19 in JSON file).
-            </li>
-            <li>
-                This intent is referenced by annotation <code>@NCIntentRef("alarm")</code> with method <code>onMatch(...)</code>
-                as its callback.
-            </li>
-            <li>
-                This example defines a non-conversational intent with two terms both of which have to found for the
-                intent to match.
-            </li>
-            <li>
-                Method <code>onMatch(...)</code> will be called when this intent is the best match detected.
-            </li>
-            <li>
-                Note that terms have <code>min=1, max=1</code> quantifiers by default.
-            </li>
-            <li>
-                First term is defined as a single mandatory (<code>min=1, max=1</code>) user token with ID <code>x:alarm</code>
-                whose element is defined in the model.
-            </li>
-            <li>
-                Second term is defined as a zero or up to seven numeric built-in <code>nlpcraft:num</code> tokens that
-                have unit type of <code>datetime</code> and are single numbers. Note that <a target="github" href="https://github.com/apache/incubator-nlpcraft/tree/master/src/main/scala/org/apache/nlpcraft/examples/alarm">Alarm Clock</a>
-                model allows zero tokens in this term which would mean the current time.
-            </li>
-            <li>
-                Given data model definition above the following sentences will be matched by this intent:
-                <ul>
-                    <li><code>Ping me in 3 minutes</code></li>
-                    <li><code>Buzz me in an hour and 15mins</code></li>
-                    <li><code>Set my alarm for 30s</code></li>
-                </ul>
-            </li>
-        </ul>
-    </section>
-    <section id="syntax">
-        <h2 class="section-title">Intent DSL</h2>
-        <p>
-            Regardless of how intent is defined - directly in <code>@NCIntent</code> annotation or in external model
-            declaration - it follow the exactly the same syntax (here's a full <a target=github href="https://github.com/apache/incubator-nlpcraft/blob/master/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4">ANTRL4 grammar</a>).
-        </p>
-        <p>
-            Intent DSL grammar can be informally described using the following example (order of individual declarations is important):
-        </p>
-        <pre class="brush: js">
+        </pre><p> <b>NOTES:</b></p><ul><li> Intent is defined in the external JSON model declaration (see line 19 in JSON file).<li> This intent is referenced by annotation <code>@NCIntentRef("alarm")</code> with method <code>onMatch(...)</code> as its callback.<li> This example defines a non-conversational intent with two terms both of which have to found for the intent to match.<li> Method <code>onMatch(...)</code> will be called when this intent is the best match detected.<li> Note th [...]
              intent=my_intent
                 conv=true
                 order=true
                 flow='id* >> (id2|id3)[2,3]'
                 term(term1)={group @@ 'my_group'}?
                 term(term2)={trim(partId.partAlias.id) == 'token1:id'}[1,3]
-        </pre>
-        <dl>
-            <dt><code>intent=my_intent</code></dt>
-            <dd>
-                Mandatory intent ID. Any arbitrary unique string matching the following template: <code>(UNDERSCORE|[a-z]|[A-Z])+([a-z]|[A-Z]|[0-9]|COLON|MINUS|UNDERSCORE)*</code>
-            </dd>
-            <dt><code>conv=true</code></dt>
-            <dd>
-                <em>Optional.</em> Whether or not this intent supports
-                <a href="basic-concepts.html#stm">conversation</a>. Default is <code>true</code>.
-            </dd>
-            <dt><code>ordered=true</code></dt>
-            <dd>
-                <em>Optional.</em>
-                Whether or not this intent is ordered. Default is <code>false</code>.
-                For ordered intent the specified order of terms is important for matching this intent.
-                If intent is unordered its terms can be found anywhere in the input text and in any order.
-                Note that ordered intent significantly limits the user input it can match. In most cases
-                the ordered intent is only applicable to processing formal strict grammar (like a programming language)
-                and unsuitable for  natural language processing.
-            </dd>
-            <dt><code>flow='id* >> (id2|id3)[2,3]'</code></dt>
-            <dd>
-                <p>
-                    <em>Optional.</em> Dialog flow is a history of previously matched intents to match on. If provided,
-                    the intent will match not only on the current user input but also on the history of the previously matched
-                    intents.
-                </p>
-                <p>
-                    Dialog flow pattern consists of one of multiple intent IDs separated by <code>&gt;&gt;</code> symbol ordered from
-                    most recent to the oldest.
-                    Multiple IDs should be placed in <code>(</code> <code>)</code> brackets and separated by <code>|</code>
-                    symbol. Each group of IDs can have an optional quantifier (e.g. <code>[2,3]</code>) for how many times this intent should appear
-                    in matching history:
-                </p>
-                <ul>
-                    <li><code>[n,m]</code> - intent should appear at least <code>n</code> times and at most <code>m</code> times.</li>
-                    <li><code>*</code> is equal to <code>[0,∞]</code></li>
-                    <li><code>+</code> is equal to <code>[1,∞]</code></li>
-                    <li><code>?</code> is equal to <code>[0,1]</code></li>
-                    <li>No quantifier defaults to <code>[1,1]</code></li>
-                </ul>
-                <p>
-                    For the dialog flow to match the history of the matched intents (for given user and the data model) should
-                    match the dialog flow pattern. Note that if dialog flow is defined and it doesn't match the history the terms
-                    of the intent won't be tested at all.
-                </p>
-            </dd>
-            <dt>
-                <code>term(term1)={group @@ 'my_group'}?</code><br>
-                <code>term(term2)={trim(partId.partAlias.id) == 'token1:id'}[1,3]</code>
-            </dt>
-            <dd>
... 1648 lines suppressed ...