diff --git a/docs/custom_theme/searchbox.html b/docs/custom_theme/searchbox.html
new file mode 100644
index 00000000000..bc5bbda0889
--- /dev/null
+++ b/docs/custom_theme/searchbox.html
@@ -0,0 +1,5 @@
+
+
+
diff --git a/docs/protocol-spec.md b/docs/protocol-spec.md
index e80b4d1894e..c10a4f8adea 100644
--- a/docs/protocol-spec.md
+++ b/docs/protocol-spec.md
@@ -13,134 +13,134 @@ ________________________________________________________
## Table of Contents
#### [1. Introduction](#1-introduction_1)
- - [1.1 What is the fabric?](#11-what-is-the-fabric)
- - [1.2 Why the fabric?](#12-why-the-fabric)
- - [1.3 Terminology](#13-terminology)
+ * [1.1 What is the fabric?](#11-what-is-the-fabric)
+ * [1.2 Why the fabric?](#12-why-the-fabric)
+ * [1.3 Terminology](#13-terminology)
#### [2. Fabric](#2-fabric_1)
- - [2.1 Architecture](#21-architecture)
- - [2.1.1 Membership Services](#211-membership-services)
- - [2.1.2 Blockchain Services](#212-blockchain-services)
- - [2.1.3 Chaincode Services](#213-chaincode-services)
- - [2.1.4 Events](#214-events)
- - [2.1.5 Application Programming Interface (API)](#215-application-programming-interface-api)
- - [2.1.6 Command Line Interface (CLI)](#216-command-line-interface-cli)
- - [2.2 Topology](#22-topology)
- - [2.2.1 Single Validating Peer](#221-single-validating-peer)
- - [2.2.2 Multiple Validating Peers](#222-multiple-validating-peers)
- - [2.2.3 Multichain](#223-multichain)
+ * [2.1 Architecture](#21-architecture)
+ - [2.1.1 Membership Services](#211-membership-services)
+ - [2.1.2 Blockchain Services](#212-blockchain-services)
+ - [2.1.3 Chaincode Services](#213-chaincode-services)
+ - [2.1.4 Events](#214-events)
+ - [2.1.5 Application Programming Interface (API)](#215-application-programming-interface-api)
+ - [2.1.6 Command Line Interface (CLI)](#216-command-line-interface-cli)
+ * [2.2 Topology](#22-topology)
+ - [2.2.1 Single Validating Peer](#221-single-validating-peer)
+ - [2.2.2 Multiple Validating Peers](#222-multiple-validating-peers)
+ - [2.2.3 Multichain](#223-multichain)
#### [3. Protocol](#3-protocol_1)
- - [3.1 Message](#31-message)
- - [3.1.1 Discovery Messages](#311-discovery-messages)
- - [3.1.2 Transaction Messages](#312-transaction-messages)
- - [3.1.2.1 Transaction Data Structure](#3121-transaction-data-structure)
- - [3.1.2.2 Transaction Specification](#3122-transaction-specification)
- - [3.1.2.3 Deploy Transaction](#3123-deploy-transaction)
- - [3.1.2.4 Invoke Transaction](#3124-invoke-transaction)
- - [3.1.2.5 Query Transaction](#3125-query-transaction)
- - [3.1.3 Synchronization Messages](#313-synchronization-messages)
- - [3.1.4 Consensus Messages](#314-consensus-messages)
- - [3.2 Ledger](#32-ledger)
- - [3.2.1 Blockchain](#321-blockchain)
- - [3.2.1.1 Block](#3211-block)
- - [3.2.1.2 Block Hashing](#3212-block-hashing)
- - [3.2.1.3 NonHashData](#3213-nonhashdata)
- - [3.2.1.4 Transaction Execution](#3214-transaction-execution)
- - [3.2.2 World State](#322-world-state)
- - [3.2.2.1 Hashing the world state](#3221-hashing-the-world-state)
- - [3.2.2.1.1 Bucket-tree](#32211-buckettree)
- - [3.3 Chaincode](#33-chaincode)
- - [3.3.1 Virtual Machine Instantiation](#331-virtual-machine-instantiation)
- - [3.3.2 Chaincode Protocol](#332-chaincode-protocol)
- - [3.3.2.1 Chaincode Deploy](#3321-chaincode-deploy)
- - [3.3.2.2 Chaincode Invoke](#3322-chaincode-invoke)
- - [3.3.2.3 Chaincode Query](#3323-chaincode-query)
- - [3.3.2.4 Chaincode State](#3324-chaincode-state)
- - [3.4 Pluggable Consensus Framework](#34-pluggable-consensus-framework)
- - [3.4.1 Consenter interface](#341-consenter-interface)
- - [3.4.2 CPI interface](#342-cpi-interface)
- - [3.4.3 Inquirer interface](#343-inquirer-interface)
- - [3.4.4 Communicator interface](#344-communicator-interface)
- - [3.4.5 SecurityUtils interface](#345-securityutils-interface)
- - [3.4.6 LedgerStack interface](#346-ledgerstack-interface)
- - [3.4.7 Executor interface](#347-executor-interface)
- - [3.4.7.1 Beginning a transaction batch](#3471-beginning-a-transaction-batch)
- - [3.4.7.2 Executing transactions](#3472-executing-transactions)
- - [3.4.7.3 Committing and rolling-back transactions](#3473-committing-and-rollingback-transactions)
- - [3.4.8 Ledger interface](#348-ledger-interface)
- - [3.4.8.1 ReadOnlyLedger interface](#3481-readonlyledger-interface)
- - [3.4.8.2 UtilLedger interface](#3482-utilledger-interface)
- - [3.4.8.3 WritableLedger interface](#3483-writableledger-interface)
- - [3.4.9 RemoteLedgers interface](#349-remoteledgers-interface)
- - [3.4.10 controller package](#3410-controller-package)
- - [3.4.10.1 controller.NewConsenter](#34101-controllernewconsenter)
- - [3.4.11 helper package](#3411-helper-package)
- - [3.4.11.1 High-level overview](#34111-highlevel-overview)
- - [3.4.11.2 helper.ConsensusHandler](#34112-helperconsensushandler)
- - [3.4.11.3 helper.NewConsensusHandler](#34113-helpernewconsensushandler)
- - [3.4.11.4 helper.Helper](#34114-helperhelper)
- - [3.4.11.5 helper.NewHelper](#34115-helpernewhelper)
- - [3.4.11.6 helper.HandleMessage](#34116-helperhandlemessage)
- - [3.5 Events](#35-events)
- - [3.5.1 Event Stream](#351-event-stream)
- - [3.5.1.1 Event Producer](#3511-event-producer)
- - [3.5.1.2 Event Consumer](#3512-event-consumer)
- - [3.5.2 Event Adapters](#352-event-adapters)
- - [3.5.3 Event Structure](#353-event-structure)
+ * [3.1 Message](#31-message)
+ - [3.1.1 Discovery Messages](#311-discovery-messages)
+ - [3.1.2 Transaction Messages](#312-transaction-messages)
+ * [3.1.2.1 Transaction Data Structure](#3121-transaction-data-structure)
+ * [3.1.2.2 Transaction Specification](#3122-transaction-specification)
+ * [3.1.2.3 Deploy Transaction](#3123-deploy-transaction)
+ * [3.1.2.4 Invoke Transaction](#3124-invoke-transaction)
+ * [3.1.2.5 Query Transaction](#3125-query-transaction)
+ - [3.1.3 Synchronization Messages](#313-synchronization-messages)
+ - [3.1.4 Consensus Messages](#314-consensus-messages)
+ * [3.2 Ledger](#32-ledger)
+ - [3.2.1 Blockchain](#321-blockchain)
+ * [3.2.1.1 Block](#3211-block)
+ * [3.2.1.2 Block Hashing](#3212-block-hashing)
+ * [3.2.1.3 NonHashData](#3213-nonhashdata)
+ * [3.2.1.4 Transaction Execution](#3214-transaction-execution)
+ - [3.2.2 World State](#322-world-state)
+ * [3.2.2.1 Hashing the world state](#3221-hashing-the-world-state)
+ * [3.2.2.1.1 Bucket-tree](#32211-buckettree)
+ * [3.3 Chaincode](#33-chaincode)
+ - [3.3.1 Virtual Machine Instantiation](#331-virtual-machine-instantiation)
+ - [3.3.2 Chaincode Protocol](#332-chaincode-protocol)
+ * [3.3.2.1 Chaincode Deploy](#3321-chaincode-deploy)
+ * [3.3.2.2 Chaincode Invoke](#3322-chaincode-invoke)
+ * [3.3.2.3 Chaincode Query](#3323-chaincode-query)
+ * [3.3.2.4 Chaincode State](#3324-chaincode-state)
+ * [3.4 Pluggable Consensus Framework](#34-pluggable-consensus-framework)
+ - [3.4.1 Consenter interface](#341-consenter-interface)
+ - [3.4.2 CPI interface](#342-cpi-interface)
+ - [3.4.3 Inquirer interface](#343-inquirer-interface)
+ - [3.4.4 Communicator interface](#344-communicator-interface)
+ - [3.4.5 SecurityUtils interface](#345-securityutils-interface)
+ - [3.4.6 LedgerStack interface](#346-ledgerstack-interface)
+ - [3.4.7 Executor interface](#347-executor-interface)
+ * [3.4.7.1 Beginning a transaction batch](#3471-beginning-a-transaction-batch)
+ * [3.4.7.2 Executing transactions](#3472-executing-transactions)
+ * [3.4.7.3 Committing and rolling-back transactions](#3473-committing-and-rollingback-transactions)
+ - [3.4.8 Ledger interface](#348-ledger-interface)
+ * [3.4.8.1 ReadOnlyLedger interface](#3481-readonlyledger-interface)
+ * [3.4.8.2 UtilLedger interface](#3482-utilledger-interface)
+ * [3.4.8.3 WritableLedger interface](#3483-writableledger-interface)
+ - [3.4.9 RemoteLedgers interface](#349-remoteledgers-interface)
+ - [3.4.10 controller package](#3410-controller-package)
+ * [3.4.10.1 controller.NewConsenter](#34101-controllernewconsenter)
+ - [3.4.11 helper package](#3411-helper-package)
+ * [3.4.11.1 High-level overview](#34111-highlevel-overview)
+ * [3.4.11.2 helper.ConsensusHandler](#34112-helperconsensushandler)
+ * [3.4.11.3 helper.NewConsensusHandler](#34113-helpernewconsensushandler)
+ * [3.4.11.4 helper.Helper](#34114-helperhelper)
+ * [3.4.11.5 helper.NewHelper](#34115-helpernewhelper)
+ * [3.4.11.6 helper.HandleMessage](#34116-helperhandlemessage)
+ * [3.5 Events](#35-events)
+ - [3.5.1 Event Stream](#351-event-stream)
+ * [3.5.1.1 Event Producer](#3511-event-producer)
+ * [3.5.1.2 Event Consumer](#3512-event-consumer)
+ - [3.5.2 Event Adapters](#352-event-adapters)
+ - [3.5.3 Event Structure](#353-event-structure)
#### [4. Security](#4-security_1)
- - [4.1 Business security requirements](#41-business-security-requirements)
- - [4.2 User Privacy through Membership Services](#42-user-privacy-through-membership-services)
- - [4.2.1 User/Client Enrollment Process](#421-userclient-enrollment-process)
- - [4.2.2 Expiration and revocation of certificates](#422-expiration-and-revocation-of-certificates)
- - [4.3 Transaction security offerings at the infrastructure level](#43-transaction-security-offerings-at-the-infrastructure-level)
- - [4.3.1 Security Lifecycle of Transactions](#431-security-lifecycle-of-transactions)
- - [4.3.2 Transaction confidentiality](#432-transaction-confidentiality)
- - [4.3.2.1 Confidentiality against users](#4321-confidentiality-against-users)
- - [4.3.2.2 Confidentiality against validators](#4322-confidentiality-against-validators)
- - [4.3.3 Replay attack resistance](#433-replay-attack-resistance)
- - [4.4 Access control features on the application](#44-access-control-features-on-the-application)
- - [4.4.1 Invocation access control](#441-invocation-access-control)
- - [4.4.2 Read access control](#442-read-access-control)
- - [4.5 Online wallet service](#45-online-wallet-service)
- - [4.6 Network security (TLS)](#46-network-security-tls)
- - [4.7 Restrictions in the current release](#47-restrictions-in-the-current-release)
- - [4.7.1 Simplified client](#471-simplified-client)
- - [4.7.2 Simplified transaction confidentiality](#472-simplified-transaction-confidentiality)
+ * [4.1 Business security requirements](#41-business-security-requirements)
+ * [4.2 User Privacy through Membership Services](#42-user-privacy-through-membership-services)
+ - [4.2.1 User/Client Enrollment Process](#421-userclient-enrollment-process)
+ - [4.2.2 Expiration and revocation of certificates](#422-expiration-and-revocation-of-certificates)
+ * [4.3 Transaction security offerings at the infrastructure level](#43-transaction-security-offerings-at-the-infrastructure-level)
+ - [4.3.1 Security Lifecycle of Transactions](#431-security-lifecycle-of-transactions)
+ - [4.3.2 Transaction confidentiality](#432-transaction-confidentiality)
+ * [4.3.2.1 Confidentiality against users](#4321-confidentiality-against-users)
+ * [4.3.2.2 Confidentiality against validators](#4322-confidentiality-against-validators)
+ - [4.3.3 Replay attack resistance](#433-replay-attack-resistance)
+ * [4.4 Access control features on the application](#44-access-control-features-on-the-application)
+ - [4.4.1 Invocation access control](#441-invocation-access-control)
+ - [4.4.2 Read access control](#442-read-access-control)
+ * [4.5 Online wallet service](#45-online-wallet-service)
+ * [4.6 Network security (TLS)](#46-network-security-tls)
+ * [4.7 Restrictions in the current release](#47-restrictions-in-the-current-release)
+ - [4.7.1 Simplified client](#471-simplified-client)
+ - [4.7.2 Simplified transaction confidentiality](#472-simplified-transaction-confidentiality)
#### [5. Byzantine Consensus](#5-byzantine-consensus_1)
- - [5.1 Overview](#51-overview)
- - [5.2 Core PBFT Functions](#52-core-pbft-functions)
- - [5.2.1 newPbftCore](#521-newpbftcore)
+ * [5.1 Overview](#51-overview)
+ * [5.2 Core PBFT Functions](#52-core-pbft-functions)
+ * [5.2.1 newPbftCore](#521-newpbftcore)
#### [6. Application Programming Interface](#6-application-programming-interface_1)
- - [6.1 REST Service](#61-rest-service)
- - [6.2 REST API](#62-rest-api)
- - [6.2.1 REST Endpoints](#621-rest-endpoints)
- - [6.2.1.1 Block API](#6211-block-api)
- - [6.2.1.2 Blockchain API](#6212-blockchain-api)
- - [6.2.1.3 Chaincode API](#6213-chaincode-api)
- - [6.2.1.4 Network API](#6214-network-api)
- - [6.2.1.5 Registrar API (member services)](#6215-registrar-api-member-services)
- - [6.2.1.6 Transactions API](#6216-transactions-api)
- - [6.3 CLI](#63-cli)
- - [6.3.1 CLI Commands](#631-cli-commands)
- - [6.3.1.1 node start](#6311-node-start)
- - [6.3.1.2 network login](#6312-network-login)
- - [6.3.1.3 chaincode deploy](#6313-chaincode-deploy)
- - [6.3.1.4 chaincode invoke](#6314-chaincode-invoke)
- - [6.3.1.5 chaincode query](#6315-chaincode-query)
+ * [6.1 REST Service](#61-rest-service)
+ * [6.2 REST API](#62-rest-api)
+ - [6.2.1 REST Endpoints](#621-rest-endpoints)
+ * [6.2.1.1 Block API](#6211-block-api)
+ * [6.2.1.2 Blockchain API](#6212-blockchain-api)
+ * [6.2.1.3 Chaincode API](#6213-chaincode-api)
+ * [6.2.1.4 Network API](#6214-network-api)
+ * [6.2.1.5 Registrar API (member services)](#6215-registrar-api-member-services)
+ * [6.2.1.6 Transactions API](#6216-transactions-api)
+ * [6.3 CLI](#63-cli)
+ - [6.3.1 CLI Commands](#631-cli-commands)
+ * [6.3.1.1 node start](#6311-node-start)
+ * [6.3.1.2 network login](#6312-network-login)
+ * [6.3.1.3 chaincode deploy](#6313-chaincode-deploy)
+ * [6.3.1.4 chaincode invoke](#6314-chaincode-invoke)
+ * [6.3.1.5 chaincode query](#6315-chaincode-query)
#### [7. Application Model](#7-application-model_1)
- - [7.1 Composition of an Application](#71-composition-of-an-application)
- - [7.2 Sample Application](#72-sample-application)
+ * [7.1 Composition of an Application](#71-composition-of-an-application)
+ * [7.2 Sample Application](#72-sample-application)
#### [8. Future Directions](#8-future-directions_1)
- - [8.1 Enterprise Integration](#81-enterprise-integration)
- - [8.2 Performance and Scalability](#82-performance-and-scalability)
- - [8.3 Additional Consensus Plugins](#83-additional-consensus-plugins)
- - [8.4 Additional Languages](#84-additional-languages)
+ * [8.1 Enterprise Integration](#81-enterprise-integration)
+ * [8.2 Performance and Scalability](#82-performance-and-scalability)
+ * [8.3 Additional Consensus Plugins](#83-additional-consensus-plugins)
+ * [8.4 Additional Languages](#84-additional-languages)
#### [9.1 Authors](#91-authors)
#### [9.2 Reviewers](#92-reviewers)
diff --git a/mkdocs.yml b/mkdocs.yml
index 3fc6565fc3c..d3994d8599b 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -3,6 +3,9 @@ site_url: http://hyperledger-fabric.readthedocs.io
theme: readthedocs
repo_url: https://github.com/hyperledger/fabric.git
site_description: 'Welcome to the Hyperledger fabric documentation'
+strict: true
+theme_dir: 'docs/custom_theme'
+
pages:
- Home: index.md