diff --git a/docs/content/how-it-works.md b/docs/content/how-it-works.md
deleted file mode 100644
index 13f5a4d..0000000
--- a/docs/content/how-it-works.md
+++ /dev/null
@@ -1,93 +0,0 @@
-+++
-title = "How it works"
-description = "How it works"
-weight = 1
-+++
-
-# Search std docs
-
-## 1. Build *search index*
-
-The raw *search index* was generated by **rustc-doc**. The most important function is `build_index()` which
-located at [librustdoc/html/render/cache.rs](https://github.com/rust-lang/rust/blob/master/src/librustdoc/html/render/cache.rs).
-
-The final *search index* is an object array like this:
-
-```js
-var searchIndex = [
- {
- crate: "std",
- desc: "A hash map implemented with linear probing and Robin Hood bucket stealing.",
- name: "HashMap",
- parent: undefined,
- path: "std::collections",
- ty: 3,
- type: null
- },
- {
- crate: "std",
- desc: "Applies function to the elements of iterator and returns the first non-none result.",
- name: "find_map",
- parent: {ty: 8, name: "Iterator"},
- path: "std::iter",
- ty: 11,
- type: [["self"],["f"]]
- },
- ...
-];
-```
-
-## 2. Build *search words array* based on *search index*
-
-The *search words array* is the list of search words to query against which build from the raw *search index*.
-It's just a plain name array of every Rust structs, traits, enums, functions, methods, macros, etc.
-```js
-var searchWords = [
- "result",
- "option",
- "hashmap",
- "hashset",
- "clone",
- "copy",
- "display",
- "debug",
- ...
-];
-```
-
-## 3. Search keyword in *search words array*
-
-Using *Levenshtein distance* algorithm to search matched words, the max Levenshtein distance is 2.
-
-```js
-// Max levenshtein distance.
-var MAX_LEV_DISTANCE = 2;
-```
-
-## 4. Sort *search result*
-
-Sort search result according to *Levenshtein distance*, lexicographical and others metrics.
-
-## 5. Transform *search result* to *suggestion result* to show in the address bar
-
-Mapping the *search word* and *search index* to generate the *search result*, build Rust doc link for each result item.
-
-```js
-var suggestResults = [
- {
- content: "https://doc.rust-lang.org/std/ops/trait.Deref.html",
- description: "std::ops::Deref - Used for immutable dereferencing operations, like `*v`."
- },
- {
- content: "https://doc.rust-lang.org/std/ops/trait.Deref.html#tymethod.deref",
- description: "std::ops::Deref::deref - Dereferences the value."
- },
- ...
-];
-```
-
-# Search crates on crates.io
-
-## 1. Build crates index
-
-To be done...
diff --git a/docs/templates/_macros.html b/docs/templates/_macros.html
index f4db40b..a2f270e 100644
--- a/docs/templates/_macros.html
+++ b/docs/templates/_macros.html
@@ -8,6 +8,7 @@