diff --git a/specification/README.md b/specification/README.md
index f15176c..74cbdfb 100644
--- a/specification/README.md
+++ b/specification/README.md
@@ -54,15 +54,17 @@
 - [Package processing](html/spec_package_processing.md#package-processing) - describes how the developers can use Package Manifests and Deployment files with the ```wskdeploy``` utility.
 - [Grammar](html/spec_grammar.md#grammar) - describes the YAML grammar the specification builds upon.
 
-#### Schema
+#### [Schema](html/spec_schema.md#schema)
 - [Parameter Types](html/spec_parameter_types.md#parameter-types) - supported YAML and OpenWhisk Types.
 - [Parameters](html/spec_parameters.md#parameters) - grammar, schema and examples for input and output parameters.
+- [Maps](html/spec_maps.md#map-schema) - schema for using the Map parameter type.
 - [Entity Schema](html/spec_shared_entity_schema.md#shared-entity-schema) - keys that are common to all entities in the programming model.
-- [Entity Naming & Namespacing](html/spec_entity_naming_and_namespacing.md#naming-and-namespacing) - describes what characters can be used to name Packages, Actions, Triggers and Rules and how to manage them with namespaces.
 - [Packages](html/spec_packages.md#packages) - grammar, schema and examples for Packages.
 - [Actions](html/spec_actions.md#actions) - grammar, schema and examples for Actions.
-- [Triggers and Rules](html/spec_trigger_rule.md#triggers-and-rules) - grammar, schema and examples for Triggers and Rules.
-- [Sequences](html/spec_sequences.md#sequences) - shema to compose multiple Actions into a sequence.
+- [Triggers](html/spec_trigger.md#triggers) - grammar, schema and examples for Triggers.
+- [Rules](html/spec_rule.md#rules) - grammar, schema and examples for Rules.
+- [Sequences](html/spec_sequences.md#sequences) - schema to compose multiple Actions into a single, named Action sequence.
+- [Entity Naming & Namespacing](html/spec_entity_naming_and_namespacing.md#naming-and-namespacing) - describes what characters can be used to name Packages, Actions, Triggers and Rules and how to manage them with namespaces.
 
 #### References
 - [Normative & Non-normative References](html/spec_normative_refs.md)
diff --git a/specification/html/spec_actions.md b/specification/html/spec_actions.md
index a08f577..bc74dd9 100644
--- a/specification/html/spec_actions.md
+++ b/specification/html/spec_actions.md
@@ -19,87 +19,37 @@
 
 ## Actions
 
+#### Subsections
+- [Fields](#fields)
+- [Requirements](#requirements)
+- [Notes](#notes)
+- [Grammar](#grammar)
+- [Example](#example)
+- [Valid Runtime names](#valid-runtime-names)
+- [Recognized File extensions](#recognized-file-extensions)
+- [Valid Limit keys](#valid-limit-keys)
+
 The Action entity schema contains the necessary information to deploy an OpenWhisk function and define its deployment configurations, inputs and outputs.
 
 ### Fields
-<html>
-<table>
-  <tr>
-   <th width="80">Key Name</th>
-   <th>Required</th>
-   <th>Value Type</th>
-   <th>Default</th>
-   <th>Description</th>
-  </tr>
- <tr>
-  <td>version</td>
-  <td>no</td>
-  <td>version</td>
-  <td>N/A</td>
-  <td>The optional user-controlled version for the Action.</td>
- </tr>
- <tr>
-  <td>function</td>
-  <td>yes</td>
-  <td>string</td>
-  <td>N/A</td>
-  <td>Required source location (path inclusive) of the Action code either:
-    <ul>
-      <li>Relative to the Package manifest file.</li>
-      <li>Relative to the specified Repository.</li>
-    </ul>
-  </td>
- </tr>
- <tr>
-  <td>runtime</td>
-  <td>no</td>
-  <td>string</td>
-  <td>N/A</td>
-  <td>The required runtime name (and optional version) that the Action code requires for an execution environment.
-  <p><i>Note: May be optional if tooling allowed to make assumptions about file extensions.</i></p>
-  </td>
- </tr>
- <tr>
-  <td>inputs</td>
-  <td>no</td>
-  <td>list of parameter</td>
-  <td>N/A</td>
-  <td>The optional ordered list inputs to the Action.</td>
- </tr>
- <tr>
-  <td>outputs</td>
-  <td>no</td>
-  <td>list of parameter</td>
-  <td>N/A</td>
-  <td>The optional outputs from the Action.</td>
- </tr>
- <tr>
-  <td>limits</td>
-  <td>no</td>
-  <td>map of limit keys and values</a></td>
-  <td>N/A</td>
-  <td>Optional map of limit keys and their values.
-  <p><i>See section '</i><a href="#TABLE_LIMIT_KEYS"><i>Valid limit keys</i></a><i>' below for a listing of recognized keys and values.</i></p>
-  </td>
- </tr>
- <tr>
-  <td>feed</td>
-  <td>no</td>
-  <td>boolean</td>
-  <td>false</td>
-  <td>Optional indicator that the Action supports the required parameters (and operations) to be run as a Feed Action.</td>
- </tr>
- <tr>
-  <td>web-export</td>
-  <td>no</td>
-  <td>boolean</td>
-  <td>false</td>
-  <td>Optionally, turns the Action into a <a href="https://github.com/apache/incubator-openwhisk/blob/master/docs/webactions.md">&quot;<em><u>web actions</u></em>&quot;</a>
-  causing it to return HTTP content without use of an API Gateway.
-  </td>
- </tr>
-</table>
-</html>
+| Key Name | Required | Value Type | Default | Description |
+|:---|:---|:---|:---|:---|
+| version | no | [version](spec_parameter_types.md#openwhisk-types) | N/A | The optional user-controlled version for the Action. |
+| function | yes | string | N/A | Required source location (path inclusive) of the Action code either:<ul><li>Relative to the Package manifest file.</li><li>Relative to the specified Repository.</li></ul> |
+| code | no | string | N/A | This optional field is now replaced by the <em>“function”</em> field. |
+| runtime | maybe | string | N/A | he required runtime name (and optional version) that the Action code requires for an execution environment.<p><i>Note: May be optional if tooling is allowed to make assumptions about file extensions or infer from functional code.</i></p> |
+| inputs | no | list of [parameter](spec_parameters.md) | N/A | The optional ordered list inputs to the Action. |
+| outputs | no | list of [parameter](spec_parameters.md) | N/A | The optional outputs from the Action. |
+| limits | no | map of [limit keys and values](#valid-limit-keys) | N/A | Optional map of limit keys and their values.</br>See section "[Valid limit keys](#valid-limit-keys)" (below) for a listing of recognized keys and values. |
+| feed | no | boolen | false | Optional indicator that the Action supports the required parameters (and operations) to be run as a Feed Action. |
+| web \| web-export | no | boolean | yes \| no \| raw \| false | The optional flag (annotation) that makes the action accessible to REST calls without authentication.<p>For details on all types of Web Actions, see: [Web Actions](https://github.com/apache/incubator-openwhisk/blob/master/docs/webactions.md).</p>|
+| raw-http | no | boolean | false | The optional flag (annotation) to indicate if a Web Action is able to consume the raw contents within the body of an HTTP request.<p><b>Note</b>: this option is ONLY valid if <em>"web"</em> or <em>"web-export"</em> is set to <em>‘true’</em>.<p> |
+| docker | no | string | N/A | The optional key that references a Docker image (e.g., openwhisk/skeleton). |
+| native | no | boolean | false | The optional key (flag) that indicates the Action is should use the Docker skeleton image for OpenWhisk (i.e., short-form for docker: openwhisk/skeleton). |
+| final | no | boolean | false | The optional flag (annotation) which makes all of the action parameters that are already defined immutable.<p><b>Note</b>: this option is ONLY valid if <em>"web"</em> or <em>"web-export"</em> is set to <em>‘true’</em>.<p> |
+| web-custom-options | no | boolean | false | The optional flag (annotation) enables a web action to respond to OPTIONS requests with customized headers, otherwise a [default CORS response](https://github.com/apache/openwhisk/blob/master/docs/webactions.md#options-requests) applies. |
+| require-whisk-auth | no | boolean | false | The optional flag (annotation) protects the web action so that it is only accessible to an authenticated subject. |
+| main | no | string | N/A | The optional name of the function to be aliased as a function named “main”.<p><em><b>Note</b>: by convention, Action functions are required to be called “main”; this field allows existing functions not named “main” to be aliased and accessed as if they were named “main”.</em></p>|
 
 ### Requirements
 
@@ -114,6 +64,9 @@
 'delete', 'pause', etc.).
   - **triggerName**: the fully-qualified name of the trigger which contains events produced from this feed.
   - **authKey**: the Basic auth. credentials of the OpenWhisk user who owns the trigger.
+- The keyname ‘kind’ is currently supported as a synonym for the key named ‘runtime’; in the future it MAY be deprecated.
+- When a code is specified, runtime SHALL be a required field.
+
 
 ### Notes
 
@@ -130,6 +83,7 @@
   <Entity schema>
   version: <version>
   function: <string>
+  code: <string>
   runtime: <name>[@<[range of ]version>]
   inputs:
     <list of parameter>
@@ -138,7 +92,14 @@
   limits:
     <list of limit key-values>
   feed: <boolean> # default: false
-  web-export: <boolean>
+  web | web-export: <boolean> | yes | no | raw
+  raw-http: <boolean>
+  docker: <string>
+  native: <boolean>
+  final: <boolean>
+  web-custom-options: <boolean>
+  require-whisk-auth: <boolean>
+  main: <string>
 ```
 _**Note**: the optional [.<type>] grammar is used for naming Web Actions._
 
@@ -171,78 +132,19 @@
 
 These packages may vary by OpenWhisk release; examples of supported runtimes as of this specification version include:
 
-<html>
-<table>
-
-  <tr>
-   <th>Runtime value</th>
-   <th>OpenWhisk kind</th>
-   <th>image name</th>
-   <th>Description</th>
-  </tr>
-
- <tr>
-  <td>nodejs</td>
-  <td>nodejs</td>
-  <td>nodejsaction:latest</td>
-  <td>Latest NodeJS runtime</td>
- </tr>
- <tr>
-  <td>nodejs@6</td>
-  <td>nodejs:6</td>
-  <td>nodejs6action:latest</td>
-  <td>Latest NodeJS 6 runtime</td>
- </tr>
- <tr>
-  <td>java, java@8</td>
-  <td>java</td>
-  <td>java8action:latest</td>
-  <td>Latest Java language runtime</td>
- </tr>
- <tr>
-  <td>python, python@2</td>
-  <td>python:2</td>
-  <td>python2action:latest</td>
-  <td>Latest Python 2 language runtime</td>
- </tr>
- <tr>
-  <td>python@3</td>
-  <td>python:3</td>
-  <td>python3action:latest</td>
-  <td>Latest Python 3 language runtime</td>
- </tr>
- <tr>
-  <td>swift, swift@2</td>
-  <td>swift</td>
-  <td>swiftaction:latest</td>
-  <td>Latest Swift 2 language runtime</td>
- </tr>
- <tr>
-  <td>swift@3</td>
-  <td>swift:3</td>
-  <td>swift3action:latest</td>
-  <td>Latest Swift 3 language runtime</td>
- </tr>
- <tr>
-  <td>swift@3.1.1</td>
-  <td>swift:3.1.1</td>
-  <td>action-swift-v3.1.1:latest</td>
-  <td>Latest Swift 3.1.1 language runtime</td>
- </tr>
- <tr>
-  <td>php</td>
-  <td>php:7.1</td>
-  <td>action-php-v7.1:latest</td>
-  <td>Latest PHP language runtime</td>
- </tr>
- <tr>
-  <td>language:default</td>
-  <td>N/A</td>
-  <td>N/A</td>
-  <td>Permit the OpenWhisk platform to select the correct default language runtime.</td>
- </tr>
-</table>
-</html>
+| Runtime value | OpenWhisk kind | Docker image name | Description |
+|:---|:---|:---|:---|
+| nodejs | nodejs | openwhisk/nodejsaction:latest | Latest NodeJS runtime |
+| nodejs@6 | nodejs:6 | openwhisk/nodejs6action:latest | Latest NodeJS 6 runtime |
+| nodejs@8 | nodejs:8 | openwhisk/action-nodejs-v8:latest | Latest NodeJS 8 runtime |
+| java, java@8 | java | openwhisk/java8action:latest | Latest Java (8) language runtime |
+| php, php@7.1 | php:7.1 | openwhisk/action-php-v7.1:latest | Latest PHP (7.1) language runtime |
+| python, python@2 | python:2 | openwhisk/python2action:latest | Latest Python 2 language runtime |
+| python@3 | python:3 | openwhisk/python3action:latest | Latest Python 3 language runtime |
+| swift | swift | openwhisk/swiftaction:latest | Latest Swift language runtime |
+| swift@3 | swift | openwhisk/swift3action:latest | Latest Swift 3 language runtime |
+| swift@3.1.1 | swift | openwhisk/action-swift-v3.1.1:latest | Latest Swift 3.1.1 language runtime |
+| language:default | N/A | N/A | Permit the OpenWhisk platform to select the correct default language runtime. |
 
 #### Notes
 - If no value for runtime is supplied, the value 'language:default' will be assumed.
@@ -259,7 +161,6 @@
    <th>Runtime used</th>
    <th>Description</th>
   </tr>
-
  <tr>
   <td>.js</td>
   <td>nodejs</td>
@@ -299,7 +200,6 @@
    <th>Valid Range</th>
    <th>Description</th>
   </tr>
-
  <tr>
   <td>timeout</td>
   <td>scalar-unit.time</td>
@@ -373,12 +273,6 @@
 ---
 <html>
 <div align="center">
-<table align="center">
-  <tr>
-    <!-- <td><a href="">&lt;&lt;&nbsp;previous</a></td> -->
-    <td><a href="spec_index.md#openwhisk-package-specification-html">Specification Index</a></td>
-    <!-- <td><a href="">next&nbsp;&gt;&gt;</a></td> -->
-  </tr>
-</table>
+<a href="../README.md#index">Index</a>
 </div>
 </html>
diff --git a/specification/html/spec_definitions.md b/specification/html/spec_definitions.md
index 0e3236c..2fdaa58 100644
--- a/specification/html/spec_definitions.md
+++ b/specification/html/spec_definitions.md
@@ -45,3 +45,13 @@
 Any resource, including a functional task, that is provided over the
 Internet. This includes delivery models such as *Platform as a Service*
 (PaaS), *Infrastructure as a* Service (IaaS), as well as *Serverless*.
+
+<!--
+ Bottom Navigation
+-->
+---
+<html>
+<div align="center">
+<a href="../README.md#index">Index</a>
+</div>
+</html>
diff --git a/specification/html/spec_entity_naming_and_namespacing.md b/specification/html/spec_entity_naming_and_namespacing.md
index 6c7c8f3..1e37fc7 100644
--- a/specification/html/spec_entity_naming_and_namespacing.md
+++ b/specification/html/spec_entity_naming_and_namespacing.md
@@ -26,17 +26,15 @@
 
 The fully qualified name of any entity has the format:
 
-  -------------------------------------------------------------------
-  /&lt;namespaceName&gt;\[/&lt;packageName&gt;\]/&lt;entityName&gt;
-  -------------------------------------------------------------------
+```
+/<namespaceName>[/<packageName>]/<entityName>
+```
 
-The namespace is typically provided at bind-time by the user deploying
-the package to their chosen OpenWhisk platform provider.
+The namespace is typically provided at bind-time by the user deploying the package to their chosen OpenWhisk platform provider.
 
 #### Requirements
 
--   The “/whisk.system“ namespace is reserved for entities that are
-    distributed with the OpenWhisk system.
+-   The “/whisk.system“ namespace is reserved for entities that are distributed with the OpenWhisk system.
 
 ### Entity Names
 
@@ -44,22 +42,26 @@
 and namespaces, are a sequence of characters that follow the following
 format:
 
--   The first character SHALL be an alphanumeric character, a digit, or
-    an underscore.
+-   The first character SHALL be an alphanumeric character, a digit, or an underscore.
+-   The subsequent characters MAY be alphanumeric, digits, spaces, or any of the following:
+```
+_, @, ., -
+```
+- The last character SHALL NOT be a space.
+- The maximum name length of any entity name is 256 characters (i.e., ENTITY_NAME_MAX_LENGTH = 256).
 
--   The subsequent characters MAY be alphanumeric, digits, spaces, or
-    any of the following:
+Valid entity names are described with the following regular expression (Java metacharacter syntax):
 
-> \_, @, ., -
+```
+"\A([\w]|[\w][\w@ .-]{0,${ENTITY_NAME_MAX_LENGTH - 2}}[\w@.-])\z"
+```
 
--   The last character SHALL NOT be a space.
-
--   The maximum name length of any entity name is 256 characters (i.e.,
-    ENTITY\_NAME\_MAX\_LENGTH = 256).
-
-Valid entity names are described with the following regular expression
-(Java metacharacter syntax):
-
-  -------------------------------------------------------------------------------------
-  "\\A(\[\\w\]|\[\\w\]\[\\w@ .-\]{0,\${ENTITY\_NAME\_MAX\_LENGTH - 2}}\[\\w@.-\])\\z"
-  -------------------------------------------------------------------------------------
+<!--
+ Bottom Navigation
+-->
+---
+<html>
+<div align="center">
+<a href="../README.md#index">Index</a>
+</div>
+</html>
diff --git a/specification/html/spec_grammar.md b/specification/html/spec_grammar.md
index c17bff9..52f87bf 100644
--- a/specification/html/spec_grammar.md
+++ b/specification/html/spec_grammar.md
@@ -20,3 +20,13 @@
 ## Grammar
 
 This specification utilizes the [YAML language](#REF_YAML_1_2), a superset of JSON, which supports key features for packaging descriptors and configuration information such as built-in data types, complex data types, anchors (relational information), files, comments and can embed other data formats such as JSON and XML easily.
+
+<!--
+ Bottom Navigation
+-->
+---
+<html>
+<div align="center">
+<a href="../README.md#index">Index</a>
+</div>
+</html>
diff --git a/specification/html/spec_history.md b/specification/html/spec_history.md
index a1dd8d2..01b5b3f 100644
--- a/specification/html/spec_history.md
+++ b/specification/html/spec_history.md
@@ -19,112 +19,30 @@
 
 ## Revision History
 
-  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-  Version   Date          Notes
-  --------- ------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-  0.8.1     2016-11-03    Initial public point draft, Working Draft 01
+| Version | Date | Notes |
+|:---|:---|:---|
+| 0.8.1 | 2016-11-03 | <ul><li>Initial public point draft</ul> |
+| 0.8.2 | 2016-12-12 | <ul><li>Begin adding use cases, examples to all sections.</ul> |
+| 0.8.3 | 2017-02-02 | <ul><li>Add more use cases, examples<li> Add description of "$" (dollar) notation</ul> |
+| 0.8.4 | 2017-04-18 | <ul><li>Support JSON parameter type;</br>Clarify use of Parameter single-line grammar and inferred types.<li>Add support for API Gateway mappings.<li>Add support for Web Actions</ul> |
+| 0.8.5 | 2017-04-21 | <ul><li>Add support for “dependencies”, that is allow automatic deployment of other OpenWhisk packages (from GitHub) that the current package declares as a dependency.</ul> |
+| 0.8.6 | 2017-07-25 | <ul><li>Clarified requirements for \$ dollar notation.<li>Updated conceptual Manifest/Deployment File processing images. |
+| 0.8.7 | 2017-08-24 | <ul><li>Added explicit Application entity and grammar.<li>Added API listing to Package entity.<li>Cleaned up pseudo-grammar which contained various uses of credentials in places not intended.<li>Fixed Polygon Tracking example (indentation incorrect).</ul> |
+| 0.8.8 | 2017-08-29 | <ul><li>Created a simplified API entity (i.e., “api”) grammar that allows multiple sets of named APIs for the same basepath.<li>Acknowledge PHP as supported runtime (kind).<li>Added “sequences” entity as a convenient way to declare action sequences in the manifest. Updated supported runtime values.</ul> |
+| 0.8.9 | 2017-09-22 | <ul><li>Clarified “version” key requirements for Package (required) and Action (optional); removed from shared entity schema.</ul> |
+| 0.8.9.1 | 2017-09-29 | <ul><li>Made “license” key optional for package.<li>keyword “package” (singular) and “packages” (plural) both allowed.<li>Adjusted use case examples to reflect these changes.<li>Rework of schema use cases into full, step-by-step examples.<li>Spellcheck, fixed bugs, update examples to match web-based version.</ul> |
+| 0.8.9.1 | 2017-10-06 | <ul><li>Added grammar and example for concatenating string values on input parameters using environment variables.</ul> |
+| 0.9.0 | 2017-11-23 | <ul><li>Identified new user scenarios including: clean, refresh, sync, pre/post processing</ul> |
+| 0.9.1 | 2017-11-30 | <ul><li>Clarified “runtime” field on Action is equivalent to “kind” parameter used on the Apache OpenWhisk CLI for Actions.<li>Added “project” key as an synonym name for “application”.” key, moving application to become deprecated. Project name made required.<li>Support “public” (i.e., publish) key on Package.<li>Documented support for the “raw-http” annotation under Action.<li>Documented support for the “final” annotation under Action.<li>Documented support for the “main” field under Action.<li>Dollar Notation section becomes Interpolation / updates:<ul><li>Supported beyond Parameter values<li>Package names can be interpolated<li>Annotations values can be interpolated<li>Multiple replacements supported in same value</ul><li>Usage scenarios 6-8 added, i.e., Clean, Project Sync, Tool chain support. |
+| 0.9.2 | 2018-02-05 | <ul><li>Fixed and clarified the allowed values for “web-export” on Action.<li>Clarified use of “final” on Action.<li>Added support (planned) for “web-custom-options” and “require-whisk-auth.” flags on Actions (annotations)<li>Deprecate ‘application’ and ‘package’ completely (no longer supported)</ul> |
+| 0.9.2.2 | 2018-04-04 | <ul><li>Allow “web” key as an overload for “web-export” key for to indicate Web Actions.<li>Added Web Sequences, specify a sequence is a Web Action.<li>Added support for Conductor Actions, to align with OpenWhisk CLI support.<li>Added “docker” and “native” binary support under Action.<li>Added in-line “code” support under Action.<li>Support \$\$, double-dollar notation for string literals on parameter values.<li>Added support for “default” package (allowing all entities to be assigned directly under the user’s default namespace), that is not requiring a package name to be created.</ul> |
 
-  0.8.2     2016-12-12    Working Draft 02, Add. Use cases, examples
-
-  0.8.3     2017-02-02    Working Draft 03, Add use cases, examples, \$ notation
-
-  0.8.4     2017-04-18    Working Draft 04,
-
-                          Support JSON parameter type;
-
-                          Clarify use of Parameter single-line grammar and inferred types.
-
-                          Add support for API Gateway mappings.
-
-                          Add support for Web Actions
-
-  0.8.5     2017-04-21    Add support for “dependencies”, that is allow automatic deployment of other OpenWhisk packages (from GitHub) that the current package declares as a dependency.
-
-  0.8.6     2017-07-25    -   Clarified requirements for \$ dollar notation.
-
-                          -   Updated conceptual Manifest/Deployment File processing images.
-
-
-  0.8.7     2017-08-24    -   Added explicit Application entity and grammar.
-
-                          -   Added API listing to Package entity.
-
-                          -   Cleaned up pseudo-grammar which contained various uses of credentials in places not intended.
-
-                          -   Fixed Polygon Tracking example (indentation incorrect).
-
-
-  0.8.8     2017-08-29    -   Created a simplified API entity (i.e., “api”) grammar that allows multiple sets of named APIs for the same basepath.
-
-                          -   Acknowledge PHP as supported runtime (kind).
-
-                          -   Added “sequences” entity as a convenient way to declare action sequences in the manifest. Updated supported runtime values.
-
-
-  0.8.9,    2017-09-22    -   Clarified “version” key requirements for Package (required) and Action (optional); removed from shared entity schema.
-
-  0.8.9.1   2017-09-29    -   Made “license” key optional for package.
-
-                          -   keyword “package” (singular) and “packages” (plural) both allowed.
-
-                          -   Adjusted use case examples to reflect these changes.
-
-                          -   Rework of schema use cases into full, step-by-step examples.
-
-                          -   Spellcheck, fixed bugs, update examples to match web-based version.
-
-
-  0.8.9.1   2017-10-06    -   Added grammar and example for concatenating string values on input parameters using environment variables.
-
-
-  0.9.0,    2017-11-23,   -   Identified new user scenarios including: clean, refresh, sync, pre/post processing
-
-  0.9.1     2017-11-30    -   Clarified “runtime” field on Action is equivalent to “kind” parameter used on the Apache OpenWhisk CLI for Actions.
-
-                          -   Added “project” key as an synonym name for “application”.” key, moving application to become deprecated. Project name made required.
-
-                          -   Support “public” (i.e., publish) key on Package.
-
-                          -   Documented support for the “raw-http” annotation under Action.
-
-                          -   Documented support for the “final” annotation under Action.
-
-                          -   Documented support for the “main” field under Action.
-
-                          -   Dollar Notation section becomes Interpolation / updates
-
-                              -   Supported beyond Parameter values
-
-                              -   Package names can be interpolated
-
-                              -   Annotations values can be interpolated
-
-                              -   Multiple replacements supported in same value
-
-                          -   Usage scenarios 6-8 added, i.e., Clean, Project Sync, Tool chain support.
-
-
-  0.9.2     2018-02-05    -   Fixed and clarified the allowed values for “web-export” on Action.
-
-                          -   Clarified use of “final” on Action.
-
-                          -   Added support (planned) for “web-custom-options” and “require-whisk-auth. ” flags on Actions (annotations)
-
-                          -   Deprecate ‘application’ and ‘package’ completely (no longer supported).
-
-
-  0.9.2.2   2018-04-04    -   Allow “web” key as an overload for “web-export” key for to indicate Web Actions.
-
-                          -   Added Web Sequences, specify a sequence is a Web Action.
-
-                          -   Added support for Conductor Actions, to align with OpenWhisk CLI support.
-
-                          -   Added “docker” and “native” binary support under Action.
-
-                          -   Added in-line “code” support under Action.
-
-                          -   Support \$\$, double-dollar notation for string literals on parameter values.
-
-                          -   Added support for “default” package (allowing all entities to be assigned directly under the user’s default namespace), that is not requiring a package name to be created.
-
-  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+<!--
+ Bottom Navigation
+-->
+---
+<html>
+<div align="center">
+<a href="../README.md#index">Index</a>
+</div>
+</html>
diff --git a/specification/html/spec_index.md b/specification/html/spec_index.md
deleted file mode 100644
index 702539a..0000000
--- a/specification/html/spec_index.md
+++ /dev/null
@@ -1,37 +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.
-#
--->
-
-# OpenWhisk Package Specification (HTML)
-
-Portions of the OpenWhisk Packaging Specification, for convenience, are made available here in HTML format. The canonical source for the specification is in PDF format and can be found within this repository:
-- [https://github.com/apache/incubator-openwhisk-wskdeploy/tree/master/specification](https://github.com/apache/incubator-openwhisk-wskdeploy/tree/master/specification)
-
-# Programming Guide
-If you want to learn how to write Packages and Applications using the specification and deploy them using the ```wskdeploy``` utility, please read the step-by-step guide:
-- "[wskdeploy utility by example](../../docs/programming_guide.md#wskdeploy-utility-by-example)"
-
-## Index
-- [Parameters](spec_parameters.md#parameters) - grammar, schema and examples for input and output parameters.
-- [Parameter Types](spec_types.md#parameter-types) - supported YAML and OpenWhisk Types.
-- [Shared Entity Schema](spec_shared_entity_schema.md#shared-entity-schema) - fields that are common among entities in the programming model.
-- [Packages](spec_packages.md#packages) - grammar, schema and examples for Packages.
-- [Actions](spec_actions.md#actions) - grammar, schema and examples for Actions.
-- [Triggers and Rules](spec_trigger_rule.md#triggers-and-rules) - grammar, schema and examples for Triggers and Rules.
-- [Sequences](spec_sequences.md#sequences) - schema to compose multiple Actions into a sequence.
-- [Normative & Non-normative References](spec_normative_refs.md)
diff --git a/specification/html/spec_intro.md b/specification/html/spec_intro.md
index 9b1b2ff..ac6b8e5 100644
--- a/specification/html/spec_intro.md
+++ b/specification/html/spec_intro.md
@@ -19,40 +19,34 @@
 
 # Introduction
 
-Apache OpenWhisk™ is an open source, distributed Serverless computing
-project.
+Apache OpenWhisk™ is an open source, distributed Serverless computing project.
 
-Specifically, it is able to execute application logic (*Actions*) in
-response to events (*Triggers*) from external sources (*Feeds*) governed
-by simple conditional logic (*Rules*) around the event data.
+Specifically, it is able to execute application logic (*Actions*) in response to events (*Triggers*) from external sources (*Feeds*) governed by simple conditional logic (*Rules*) around the event data.
 
-It provides a programming model for registering and managing *Actions*,
-*Triggers* and *Rules* supported by a REST-based Command Line Interface
-(CLI) along with tooling to support packaging and catalog services.
+It provides a programming model for registering and managing *Actions*, *Triggers* and *Rules* supported by a REST-based Command Line Interface (CLI) along with tooling to support packaging and catalog services.
 
-The project includes a catalog of built-in system and utility *Actions*
-and *Feeds*, along with a robust set of samples that demonstrate how to
-integrate OpenWhisk with various external service providers (e.g.,
-GitHub, Slack, etc.) along with several platform and run-time Software
+The project includes a catalog of built-in system and utility *Actions* and *Feeds*, along with a robust set of samples that demonstrate how to integrate OpenWhisk with various external service providers (e.g., GitHub, Slack, etc.) along with several platform and run-time Software
 Development Kits (SDKs).
 
-The code for the Actions, along with any support services implementing
-*Feeds*, are packaged according to this specification to be compatible
-with the OpenWhisk catalog and its tooling. It also serves as a means
-for architects and developers to model OpenWhisk package Actions as part
-of full, event-driven services and applications providing the necessary
-information for artifact and data type validation along with package
-management operations.
+The code for the Actions, along with any support services implementing *Feeds*, are packaged according to this specification to be compatible with the OpenWhisk catalog and its tooling. It also serves as a means for architects and developers to model OpenWhisk package Actions as part
+of full, event-driven services and applications providing the necessary information for artifact and data type validation along with package management operations.
 
 ### Compatibility
 
-This specification is intended to be compatible with the following
-specifications:
+This specification is intended to be compatible with the following specifications:
 
 -   *OpenWhisk API which is defined as an OpenAPI document: *
-
-    -   <https://raw.githubusercontent.com/openwhisk/openwhisk/master/core/controller/src/main/resources/whiskswagger.json>
+    -   <https://github.com/apache/openwhisk/blob/master/core/controller/src/main/resources/apiv1swagger.json>
 
 -   *OpenAPI Specification when defining REST APIs and parameters:*
-
     -   <https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md>
+
+<!--
+ Bottom Navigation
+-->
+---
+<html>
+<div align="center">
+<a href="../README.md#index">Index</a>
+</div>
+</html>
diff --git a/specification/html/spec_maps.md b/specification/html/spec_maps.md
new file mode 100644
index 0000000..438e457
--- /dev/null
+++ b/specification/html/spec_maps.md
@@ -0,0 +1,65 @@
+<!--
+#
+# 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.
+#
+-->
+
+#### Map schema
+
+The Map schema is used to define maps of key values within OpenWhisk
+entities.
+
+##### Single-line grammar
+
+```yaml
+{ <key_1>: <value_1>, ..., <key_n>: <value_n> }
+```
+
+##### Multi-line grammar
+```yaml
+# Where ‘key_n’ is a type <string> and ‘value_n’ is type <any>.
+<key_1>: <value_1>
+...
+<key_n>: <value_n>
+
+```
+
+##### Examples
+
+###### Single-line
+
+```yaml
+alert_levels: { “high”: “red”, “medium”: “yellow”, “low”: green }
+```
+
+###### Multi-line
+
+```yaml
+alert_levels:
+  “high”: “red”
+  “medium”: “yellow”
+  “low”: green
+```
+
+<!--
+ Bottom Navigation
+-->
+---
+<html>
+<div align="center">
+<a href="../README.md#index">Index</a>
+</div>
+</html>
diff --git a/specification/html/spec_normative_refs.md b/specification/html/spec_normative_refs.md
index 379cfc4..f9f5587 100644
--- a/specification/html/spec_normative_refs.md
+++ b/specification/html/spec_normative_refs.md
@@ -172,12 +172,6 @@
 ---
 <html>
 <div align="center">
-<table align="center">
-  <tr>
-    <!-- <td><a href="">&lt;&lt;&nbsp;previous</a></td> -->
-    <td><a href="spec_index.md#openwhisk-package-specification-html">Specification Index</a></td>
-    <!-- <td><a href="">next&nbsp;&gt;&gt;</a></td> -->
-  </tr>
-</table>
+<a href="../README.md#index">Index</a>
 </div>
 </html>
diff --git a/specification/html/spec_package_processing.md b/specification/html/spec_package_processing.md
index 26b7bdb..29a501f 100644
--- a/specification/html/spec_package_processing.md
+++ b/specification/html/spec_package_processing.md
@@ -53,3 +53,13 @@
 by developer tooling to integrate OpenWhisk Serverless functions.
 
 ![Manifest file deployment](images/conceptual_manifest_file_deployment.png "image showing manifest deployment")
+
+<!--
+ Bottom Navigation
+-->
+---
+<html>
+<div align="center">
+<a href="../README.md#index">Index</a>
+</div>
+</html>
diff --git a/specification/html/spec_packages.md b/specification/html/spec_packages.md
index 5da4b5d..5bc3297 100644
--- a/specification/html/spec_packages.md
+++ b/specification/html/spec_packages.md
@@ -192,12 +192,6 @@
 ---
 <html>
 <div align="center">
-<table align="center">
-  <tr>
-    <!-- <td><a href="">&lt;&lt;&nbsp;previous</a></td> -->
-    <td><a href="spec_index.md#openwhisk-package-specification-html">Specification Index</a></td>
-    <!-- <td><a href="">next&nbsp;&gt;&gt;</a></td> -->
-  </tr>
-</table>
+<a href="../README.md#index">Index</a>
 </div>
 </html>
diff --git a/specification/html/spec_parameter_types.md b/specification/html/spec_parameter_types.md
index b1e86e8..68df2b7 100644
--- a/specification/html/spec_parameter_types.md
+++ b/specification/html/spec_parameter_types.md
@@ -154,12 +154,6 @@
 ---
 <html>
 <div align="center">
-<table align="center">
-  <tr>
-    <!-- <td><a href="">&lt;&lt;&nbsp;previous</a></td> -->
-    <td><a href="spec_index.md#openwhisk-package-specification-html">Specification Index</a></td>
-    <!-- <td><a href="">next&nbsp;&gt;&gt;</a></td> -->
-  </tr>
-</table>
+<a href="../README.md#index">Index</a>
 </div>
 </html>
diff --git a/specification/html/spec_parameters.md b/specification/html/spec_parameters.md
index 799f5be..fc94369 100644
--- a/specification/html/spec_parameters.md
+++ b/specification/html/spec_parameters.md
@@ -19,160 +19,23 @@
 
 # Parameters
 
+- [Parameter schema](#parameter-schema)
 - [Dollar Notation ($)](#dollar-notation--schema-for-values)
 
 ## Parameter schema
 The Parameter schema is used to define input and/or output data to be used by OpenWhisk entities for the purposes of validation.
 
 ### Fields
-<html>
-<table width="100%">
-  <tr>
-   <th>Key Name</th>
-   <th>Required</th>
-   <th>Value Type</th>
-   <th>Default</th>
-   <th>Description</th>
-  </tr>
- <tr>
-  <td>
-  <p>type</p>
-  </td>
-  <td>
-  <p>no</p>
-  </td>
-  <td>
-  <p>&lt;any&gt;</p>
-  </td>
-  <td>
-  <p>string</p>
-  </td>
-  <td>
-  <p>Optional valid type name or the parameter's value for validation purposes. By default, the type is string.</p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>description</p>
-  </td>
-  <td>
-  <p>no</p>
-  </td>
-  <td>
-  <p>string256</p>
-  </td>
-  <td>
-  <p>N/A</p>
-  </td>
-  <td>
-  <p>Optional description of the Parameter.</p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>value</p>
-  </td>
-  <td>
-  <p>no </p>
-  </td>
-  <td>
-  <p>&lt;any&gt;</p>
-  </td>
-  <td>
-  <p>N/A</p>
-  </td>
-  <td>
-  <p>The optional user supplied value for the parameter.</p>
-  <p>Note: this is not the default value, but an explicit declaration which allows simple usage of the Manifest file without a Deployment file.</p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>required</p>
-  </td>
-  <td>
-  <p>no</p>
-  </td>
-  <td>
-  <p>boolean</p>
-  </td>
-  <td>
-  <p>true</p>
-  </td>
-  <td>
-  <p>Optional indicator to declare the parameter as required (i.e., ```true```) or optional (i.e., ```false```).</p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>default</p>
-  </td>
-  <td>
-  <p>no</p>
-  </td>
-  <td>
-  <p>&lt;any&gt;</p>
-  </td>
-  <td>
-  <p>N/A</p>
-  </td>
-  <td>
-  <p>Optional default value for the optional parameters. This value <b>MUST</b> be type compatible with the value declared on the parameter's type field.</p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>status</p>
-  </td>
-  <td>
-  <p>no</p>
-  </td>
-  <td>
-  <p>string</p>
-  </td>
-  <td>
-  <p>supported</p>
-  </td>
-  <td>
-  <p>Optional status of the parameter (e.g., deprecated, experimental). By default a parameter is without a declared status is considered supported.</p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>schema</p>
-  </td>
-  <td>
-  <p>no</p>
-  </td>
-  <td>
-  <p>&lt;schema&gt;</p>
-  </td>
-  <td>
-  <p>N/A</p>
-  </td>
-  <td>
-  <p>The optional schema if the 'type' key has the value 'schema'. The value would include a <b>Schema</b> <b>Object</b> (in YAML) as defined by the <a href="See%20https:/github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#schemaObject">OpenAPI Specifcation v2.0</a>. This object is based upon the href="http://json-schema.org/">JSON Schema Specification.</a></p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>properties</p>
-  </td>
-  <td>
-  <p>no</p>
-  </td>
-  <td>
-  <p>&lt;list of parameter&gt;</p>
-  </td>
-  <td>
-  <p>N/A</p>
-  </td>
-  <td>
-  <p>The optional properties if the 'type' key has the value 'object'. Its value is a listing of Parameter schema from this specification.</p>
-  </td>
- </tr>
-</table>
-</html>
+| Key Name | Required | Value Type | Default | Description |
+|:---|:---|:---|:---|:---|
+| type       | no | _&lt;any&gt;_ | string | Optional valid type name or the parameter’s value for alidation purposes. By default, the type is string. |
+| description | no | string256 | N/A | Optional description of the Parameter. |
+| value      | no | _&lt;any&gt;_ | N/A | The optional user supplied value for the parameter.</br> Note: this is not the default value, but an explicit declaration which allows simple usage of the Manifest file without a Deployment file. |
+| required   | no | boolean    | true | Optional indicator to declare the parameter as required (i.e., true) or optional (i.e., false). |
+|  default   | no | _&lt;any&gt;_ | N/A | Optional default value for the optional parameters. This value **MUST** be type compatible with the value declared on the parameter’s type field. |
+| status     | no | string     | supported | Optional status of the parameter (e.g., deprecated, experimental). By default a parameter is without a declared status is considered supported. |
+| schema     | no | _&lt;schema&gt;_ | N/A | The optional schema if the ‘type‘ key has the value ‘schema‘. The value would include a **Schema** **Object** (in YAML) as defined by the [OpenAPI Specification v2.0](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#schemaObject). This object is based upon the [JSON Schema Specification.](http://json-schema.org/) |
+| properties | no |  _&lt;list of parameter&gt;_ | N/A | The optional properties if the ‘type‘ key has the value ‘object‘. Its value is a listing of Parameter schema from this specification. |
 
 ### Requirements
 
@@ -198,44 +61,46 @@
 
 ### Status values
 
-<table width="100%">
-  <tr>
-   <td>
-   <p>Status Value</p>
-   </td>
-   <td>
-   <p>Description</p>
-   </td>
-  </tr>
+| Status Value | Description |
+|:---|:---|
+| supported (default) | Indicates the parameter is supported. This is the implied default status value for all parameters. |
+| experimental | Indicates the parameter MAY be removed or changed in future versions. |
+| deprecated | Indicates the parameter is no longer supported in the current version and MAY be ignored. |
 
- <tr>
-  <td>
-  <p>supported (default)</p>
-  </td>
-  <td>
-  <p>Indicates the parameter is supported.&nbsp; This is the
-  implied default status value for all parameters.</p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>experimental</p>
-  </td>
-  <td>
-  <p>Indicates the parameter MAY be removed or changed in
-  future versions.</p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>deprecated</p>
-  </td>
-  <td>
-  <p>Indicates the parameter is no longer supported in the
-  current version and MAY be ignored.</p>
-  </td>
- </tr>
-</table>
+#### Shared Entity Schema
+
+The Entity Schema contains fields that are common (shared) to all
+OpenWhisk entities (e.g., Actions, Triggers, Rules, etc.).
+
+##### Fields
+
+|  Key Name | Required | Value Type | Default | Description
+|:---|:---|:---|:---|:---|
+| description | no | string256 | N/A | The optional description for the Entity. |
+| displayName | no | string16 | N/A | This is the optional name that will be displayed on small form-factor devices. |
+| annotations | no | map of _&lt;string>&gt;_ | N/A | he optional annotations for the Entity. |
+
+##### Grammar
+
+```yaml
+description: <string256>
+displayName: <string16>
+annotations: <map of <string>>
+```
+
+##### Requirements
+
+- Non-required fields MAY be stored as “annotations” within the OpenWhisk framework after they have been used for processing.
+- "description" string values SHALL be limited to 256 characters.
+- "displayName" string values SHALL be limited to 16 characters.
+- "annotations" MAY be ignored by target consumers of the Manifest file as they are considered data non-essential to the deployment of management of OpenWhisk entities themselves.
+    - Target consumers MAY preserve (persist) these values, but are not required to.
+- For any OpenWhisk Entity, the maximum size of all "annotations" (values) SHALL be 256 characters.
+
+##### Notes
+
+- Several, non-normative "annotations" keynames and allowed values (principally for User Interface (UI) design and tooling information) may be defined in this specification or optional usage.
+
 
 ## Dollar Notation ($) schema for values
 
@@ -260,7 +125,7 @@
 ### Notes
 
 - Processors or tooling that encounter ($) Dollar notation for values should attempt to locate the corresponding named variables set into the local execution environment (e.g., where the tool was invoked) and assign its value to the named input parameter for the OpenWhisk entity.
-- This specification does not currently consider using this notation for other than simple data types (i.e., we support this mechanism for values such as strings, integers, floats, etc.) at this time.
+- This specification does not currently consider using this notation for other than simple data types (i.e., we support this mechanism for values such as `strings`, `integers`, `floats`, etc.) at this time.
 
 
 <!--
@@ -269,12 +134,6 @@
 ---
 <html>
 <div align="center">
-<table align="center">
-  <tr>
-    <!-- <td><a href="">&lt;&lt;&nbsp;previous</a></td> -->
-    <td><a href="spec_index.md#openwhisk-package-specification-html">Specification Index</a></td>
-    <!-- <td><a href="">next&nbsp;&gt;&gt;</a></td> -->
-  </tr>
-</table>
+<a href="../README.md#index">Index</a>
 </div>
 </html>
diff --git a/specification/html/spec_programming_model.md b/specification/html/spec_programming_model.md
index 2476357..e02b4d8 100644
--- a/specification/html/spec_programming_model.md
+++ b/specification/html/spec_programming_model.md
@@ -19,6 +19,10 @@
 
 ## Programming model
 
+- [OpenWhisk Entities](#openWhisk-entities)
+- [Action Composition](#action-composition)
+- [Cardinality](#cardinality)
+
 ### OpenWhisk Entities
 
 OpenWhisk uses the following entities to describe its programming model:
@@ -90,3 +94,13 @@
 ### Conceptual representation
 
 ![Conceptual representation of the OpenWhisk programming model](images/conceptual_programming_model.png "image showing conceptual programming model")
+
+<!--
+ Bottom Navigation
+-->
+---
+<html>
+<div align="center">
+<a href="../README.md#index">Index</a>
+</div>
+</html>
diff --git a/specification/html/spec_rule.md b/specification/html/spec_rule.md
new file mode 100644
index 0000000..263389e
--- /dev/null
+++ b/specification/html/spec_rule.md
@@ -0,0 +1,131 @@
+<!--
+#
+# 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.
+#
+-->
+
+## Rules
+
+The Rule entity schema contains the information necessary to associates one trigger with one action, with every firing of the trigger causing the corresponding action to be invoked with the trigger event as input. For more information, see the document "[Creating Triggers and Rules](https://github.com/apache/incubator-openwhisk/blob/master/docs/triggers_rules.md)".
+
+#### Subsections
+- [Fields](#fields)
+- [Requirements](#requirements)
+- [Notes](#notes)
+- [Grammar](#grammar)
+- [Example](#example)
+
+### Fields
+<html>
+<table>
+  <tr>
+   <th>Key Name</th>
+   <th>Required</th>
+   <th>Value Type</th>
+   <th>Default</th>
+   <th>Description</th>
+  </tr>
+
+ <tr>
+  <td>
+  <p>trigger</p>
+  </td>
+  <td>
+  <p>yes</p>
+  </td>
+  <td>
+  <p>string</p>
+  </td>
+  <td>
+  <p>N/A</p>
+  </td>
+  <td>
+  <p>Required name of the Trigger the Rule applies to.</p>
+  </td>
+ </tr>
+ <tr>
+  <td>
+  <p>action</p>
+  </td>
+  <td>
+  <p>yes</p>
+  </td>
+  <td>
+  <p>string</p>
+  </td>
+  <td>
+  <p>N/A</p>
+  </td>
+  <td>
+  <p>Required name of the Action the Rule applies to.</p>
+  </td>
+ </tr>
+ <tr>
+  <td>
+  <p>rule</p>
+  </td>
+  <td>
+  <p>no</p>
+  </td>
+  <td>
+  <p>regex</p>
+  </td>
+  <td>
+  <p>true</p>
+  </td>
+  <td>
+  <p>The optional regular expression that determines if the Action is fired.</p>
+  <p><i>Note: In this version of the specification, only the expression 'true' is currently supported.</i></p>
+  </td>
+ </tr>
+</table>
+</html>
+
+### Requirements
+- The Rule name (i.e., <ruleName>) MUST be less than or equal to 256 characters.
+- The Rule entity schema includes all general [Entity Schem](#TBD) fields in addition to any fields
+declared above.
+
+### Notes
+- OpenWhisk only supports a value of '```true```' for the '```rule```' key's value at this time.
+
+### Grammar
+```yaml
+<ruleName>:
+  description: <string>
+  trigger: <string>
+  action: <string>
+  rule: <regex>
+```
+
+### Example
+
+```yaml
+my_rule:
+  description: Enable events for my Action
+  trigger: my_trigger
+  action: my_action
+```
+
+<!--
+ Bottom Navigation
+-->
+---
+<html>
+<div align="center">
+<a href="../README.md#index">Index</a>
+</div>
+</html>
diff --git a/specification/html/spec_schema.md b/specification/html/spec_schema.md
new file mode 100644
index 0000000..d7eb418
--- /dev/null
+++ b/specification/html/spec_schema.md
@@ -0,0 +1,36 @@
+<!--
+#
+# 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.
+#
+-->
+
+# Schema
+
+This section defines all the essential schema used to describe OpenWhisk packages and programming model entities within a manifest.
+
+### General Requirements
+
+- All key and field names in this specification SHALL be case sensitive.
+
+<!--
+ Bottom Navigation
+-->
+---
+<html>
+<div align="center">
+<a href="../README.md#index">Index</a>
+</div>
+</html>
diff --git a/specification/html/spec_sequences.md b/specification/html/spec_sequences.md
index dcc6d74..146ec83 100644
--- a/specification/html/spec_sequences.md
+++ b/specification/html/spec_sequences.md
@@ -83,12 +83,6 @@
 ---
 <html>
 <div align="center">
-<table align="center">
-  <tr>
-    <!-- <td><a href="">&lt;&lt;&nbsp;previous</a></td> -->
-    <td><a href="spec_index.md#openwhisk-package-specification-html">Specification Index</a></td>
-    <!-- <td><a href="">next&nbsp;&gt;&gt;</a></td> -->
-  </tr>
-</table>
+<a href="../README.md#index">Index</a>
 </div>
 </html>
diff --git a/specification/html/spec_shared_entity_schema.md b/specification/html/spec_shared_entity_schema.md
index 59e2131..34798a8 100644
--- a/specification/html/spec_shared_entity_schema.md
+++ b/specification/html/spec_shared_entity_schema.md
@@ -113,12 +113,6 @@
 ---
 <html>
 <div align="center">
-<table align="center">
-  <tr>
-    <!-- <td><a href="">&lt;&lt;&nbsp;previous</a></td> -->
-    <td><a href="spec_index.md#openwhisk-package-specification-html">Specification Index</a></td>
-    <!-- <td><a href="">next&nbsp;&gt;&gt;</a></td> -->
-  </tr>
-</table>
+<a href="../README.md#index">Index</a>
 </div>
 </html>
diff --git a/specification/html/spec_trigger_rule.md b/specification/html/spec_trigger.md
similarity index 61%
rename from specification/html/spec_trigger_rule.md
rename to specification/html/spec_trigger.md
index 6e646a5..7e8b111 100644
--- a/specification/html/spec_trigger_rule.md
+++ b/specification/html/spec_trigger.md
@@ -17,15 +17,17 @@
 #
 -->
 
-## Triggers and Rules
-
-- [Triggers](#triggers)
-- [Rules](#rules)
-
 ## Triggers
 
 The Trigger entity schema contains the necessary information to describe the stream of events that it represents. For more information, see the document "[Creating Triggers and Rules](https://github.com/apache/incubator-openwhisk/blob/master/docs/triggers_rules.md)".
 
+#### Subsections
+- [Fields](#fields)
+- [Requirements](#requirements)
+- [Notes](#notes)
+- [Grammar](#grammar)
+- [Example](#example)
+
 ### Fields
 <html>
 <table>
@@ -142,116 +144,12 @@
     feed: /whisk.system/alarms/alarm
 ```
 
----
-
-## Rules
-
-The Rule entity schema contains the information necessary to associates one trigger with one action, with every firing of the trigger causing the corresponding action to be invoked with the trigger event as input. For more information, see the document "[Creating Triggers and Rules](https://github.com/apache/incubator-openwhisk/blob/master/docs/triggers_rules.md)".
-
-### Fields
-<html>
-<table>
-  <tr>
-   <th>Key Name</th>
-   <th>Required</th>
-   <th>Value Type</th>
-   <th>Default</th>
-   <th>Description</th>
-  </tr>
-
- <tr>
-  <td>
-  <p>trigger</p>
-  </td>
-  <td>
-  <p>yes</p>
-  </td>
-  <td>
-  <p>string</p>
-  </td>
-  <td>
-  <p>N/A</p>
-  </td>
-  <td>
-  <p>Required name of the Trigger the Rule applies to.</p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>action</p>
-  </td>
-  <td>
-  <p>yes</p>
-  </td>
-  <td>
-  <p>string</p>
-  </td>
-  <td>
-  <p>N/A</p>
-  </td>
-  <td>
-  <p>Required name of the Action the Rule applies to.</p>
-  </td>
- </tr>
- <tr>
-  <td>
-  <p>rule</p>
-  </td>
-  <td>
-  <p>no</p>
-  </td>
-  <td>
-  <p>regex</p>
-  </td>
-  <td>
-  <p>true</p>
-  </td>
-  <td>
-  <p>The optional regular expression that determines if the Action is fired.</p>
-  <p><i>Note: In this version of the specification, only the expression 'true' is currently supported.</i></p>
-  </td>
- </tr>
-</table>
-</html>
-
-### Requirements
-- The Rule name (i.e., <ruleName>) MUST be less than or equal to 256 characters.
-- The Rule entity schema includes all general [Entity Schem](#TBD) fields in addition to any fields
-declared above.
-
-### Notes
-- OpenWhisk only supports a value of '```true```' for the '```rule```' key's value at this time.
-
-### Grammar
-```yaml
-<ruleName>:
-  description: <string>
-  trigger: <string>
-  action: <string>
-  rule: <regex>
-```
-
-### Example
-
-```yaml
-my_rule:
-  description: Enable events for my Action
-  trigger: my_trigger
-  action: my_action
-```
-
 <!--
  Bottom Navigation
 -->
 ---
 <html>
 <div align="center">
-<table align="center">
-  <tr>
-    <!-- <td><a href="">&lt;&lt;&nbsp;previous</a></td> -->
-    <td><a href="spec_index.md#openwhisk-package-specification-html">Specification Index</a></td>
-    <!-- <td><a href="">next&nbsp;&gt;&gt;</a></td> -->
-  </tr>
-</table>
+<a href="../README.md#index">Index</a>
 </div>
 </html>
