diff --git a/website/docs/cmixx/_category_.json b/website/docs/cmixx/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..51165e0bb62cf7576e316fe9711e84690a4be983
--- /dev/null
+++ b/website/docs/cmixx/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "cMixx",
+  "position": 4,
+  "link": {
+    "type": "generated-index",
+    "description": "All things related to cMixx"
+  }
+}
diff --git a/website/docs/cmixx/adrp.md b/website/docs/cmixx/adrp.md
new file mode 100644
index 0000000000000000000000000000000000000000..af6fa4278b098f706553b19f15799b4082436b18
--- /dev/null
+++ b/website/docs/cmixx/adrp.md
@@ -0,0 +1,64 @@
+# Anonymous Data Retrieval Protocol
+
+The Anonymous Data Retrieval Protocol (ADRP) allows users to request
+data anonymously from a server without ever revealing their identity.
+With normal [end-to-end](e2e-xxm) connections in the xx Network, users always know the identity of whom
+they are messaging. With ADRP, one can send a request to another user
+containing a one-time-use key negotiation for an entirely new user. The
+recipient can respond to the negotiation without ever knowing the
+identity of the original sender. When ADRP is combined with the metadata
+shredding capability of the cMixx protocol encapsulation, a powerful
+anonymous data lookup is guaranteed.
+
+This protocol is open for use with the
+[xxDK](https://git.xx.network/elixxir/client) and is the basis for the
+[User Discovery](userDiscovery) system’s privacy.
+
+## Protocol Description
+
+The requestor needs to know the xx messenger contact details
+(cryptographic identity) of any user they request on the network
+(including a [Diffie–Hellman
+key](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)
+and a network identity). xx messenger then generates a new key pair and
+network identity by calculating a new, symmetric [Diffie–Hellman
+key](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)
+using the new key and the recipient’s key. The payload contents are then
+encrypted with the new symmetric key via
+[ChaCha20](https://en.wikipedia.org/wiki/Salsa20#ChaCha_variant), with
+an appended HMAC.
+
+The request is sent over cMixx in a single packet containing the new
+public key (in clear-text) and encrypted message contents. Once
+received, the recipient can execute a Diffie–Hellman with the clear-text
+public key and decrypt the payload. The contents (and clear-text public
+key) can be used to respond to the request from the new one-time-use
+identity. The responses are also encrypted via
+[ChaCha20](https://en.wikipedia.org/wiki/Salsa20#ChaCha_variant), with
+an appended HMAC.
+
+The recipient can then process the contents and respond via the ad-hoc
+negotiated link. Finally, the sender confirms receipt by checking the
+network for receptions on the new identity.
+
+## Cryptographic Primitives Summary:
+
+| Algorithm     | Length         | Description                                                                                           |
+|---------------|----------------|-------------------------------------------------------------------------------------------------------|
+| RSA           | 4096 bits      | Used as the signature algorithm for signing a fact or a key.                                          |
+| Blake2b       | 256 bits       | Algorithm used for generating single-use specific fingerprints and keys. Additionally used for HMACs. |
+| Diffie Helmen | 3072 bits      | Discrete log-based component of key negotiation.                                                      |
+| ChaCha20      | 256 bits (key) | Messages and payloads are encrypted by ChaCha20.                                                      |
+
+## Resources
+
+-   Single-Use
+    [Implementation](https://git.xx.network/elixxir/client/-/tree/release/single)
+-   Single-Use [Cryptographic
+    Library](https://git.xx.network/elixxir/crypto/-/tree/release/e2e/singleUse)
+-   [ID Implementation (Ephemeral and
+    Reception)](https://git.xx.network/xx_network/primitives/-/tree/release/id)
+-   [cMixx Message
+    Format](https://git.xx.network/elixxir/primitives/-/blob/release/format/message.go)
+-   [Sending cMixx
+    Messages](https://git.xx.network/elixxir/client/-/blob/release/network/message/sendCmix.go)
diff --git a/website/docs/cmixx/cmixx.md b/website/docs/cmixx/cmixx.md
new file mode 100644
index 0000000000000000000000000000000000000000..994f64e9e5ab74396be6b8d4238c028452251796
--- /dev/null
+++ b/website/docs/cmixx/cmixx.md
@@ -0,0 +1,13 @@
+---
+sidebar_position: 1
+---
+
+# Overview
+
+For cMixx, Node and Gateways pair together; every Node has a Gateway. Their relationship is a Scheduler-Worker design. In the initial design, this will be tiered with a Scheduling server orchestrating Nodes that then orchestrate their Gateways, which then pass schedules onto Clients. The Scheduling server takes its instruction from the blockchain; network participation is defined by staking and consensus. The network will rapidly remove scheduling functions from the scheduling server and move them to adjudication by xx Chain.
+
+Currently, all components of cMixx are controlled either directly or recursively by a central Scheduling server. Each member polls the entity above them in the hierarchy for information, as shown in the figure. Bi-directional communication only exists within the same level. There are two primary components of this data that are communicated: the Network Definition File (NDF) and the RoundInfo.
+
+The Network Definition File (NDF) contains all the connection information for the entities in the network and is provided by the Scheduling server through the hierarchy shown. The Nodes provide the hash of their current NDF to Scheduling; if they differ, then the updated NDF is provided to the Node. The Gateways poll the Nodes and Clients poll Gateways for the new NDF in the same fashion.
+
+Nodes, Gateways, and Clients also receive scheduling instructions from the Scheduling server. These instructions are contained within RoundInfo structures, which are both prescriptive and descriptive of changes to rounds, which groups a set of Nodes to anonymize communications. A round is created when RoundInfo is issued to start a round’s precomputation. When the Nodes finish the precomputation, Scheduling issues a new RoundInfo that schedules it for realtime, which can be delayed depending on the number of queued rounds. Finally, a further RoundInfo is issued when a round completes or fails.
\ No newline at end of file
diff --git a/website/docs/cmixx/coverTraffic.md b/website/docs/cmixx/coverTraffic.md
new file mode 100644
index 0000000000000000000000000000000000000000..de09c7ed5cfbb0ce5634dd9437def3dc90f3c75c
--- /dev/null
+++ b/website/docs/cmixx/coverTraffic.md
@@ -0,0 +1,6 @@
+# Cover Traffic
+Cover traffic, also known as dummy traffic or decoy traffic, is used by the xx Messenger application to essentially give us two additional privacy properties known as “sender unobservability” and “receiver unobservability” (see the privacy notions paper https://arxiv.org/abs/1812.05638 ). If cover traffic is enabled, the xx Messenger client will, at random time intervals, send cover messages which are indistinguishable from ordinary messages. Any adversary watching your network traffic will not know when you are sending or receiving an ordinary message or a cover message.
+
+Our cover traffic design is aided somewhat by our intentional recipient ID collisions (See [ID Collision and Notifications](idCollisionAndNotifications)). Cover traffic is sent to recipient IDs chosen at random from the small ID space which is intended to cause ID collisions. Therefore the cover messages will be received by random users of the xx Network.
+
+The cover traffic yields the privacy properties summarized above and this is important for resisting attacks on the anonymity properties of the xx Network. Because your connection data leaks (true for all network connections), that can be used over time to determine who is talking to who. By activating cover traffic you are making these statistical disclosure attacks much more difficult.
diff --git a/website/docs/cmixx/e2e-xxm.md b/website/docs/cmixx/e2e-xxm.md
new file mode 100644
index 0000000000000000000000000000000000000000..15cf5b4dff6e7ecb167039e86cb480c0d29d0e15
--- /dev/null
+++ b/website/docs/cmixx/e2e-xxm.md
@@ -0,0 +1,98 @@
+# End-to-End Encrypted Messaging in xx Messenger
+
+[End-to-End Encrypted
+(E2EE)](https://en.wikipedia.org/wiki/End-to-end_encryption) messaging
+is a way to securely and privately communicate with connections—only the
+sender and receiver can read the contents of their messages. While
+[cMixx](../overview/cmix) protects your metadata (the who, what,
+when, and where of your communications), the E2EE between clients on the
+xx Network provides the additional guarantee that no third party can
+decipher data that is processed and stored. End-to-end encryption keeps
+your message content private from third parties, including xx Nodes,
+nodes’ internet service providers, cell phone companies, and any other
+telecommunications devices or malicious actors on the internet–your data
+belongs to you, and only you. We call these E2EE links authenticated
+channels.
+
+In xx Messenger, we provide E2EE messaging that is protected against
+threats from quantum computers. We accomplish this by using a key
+exchange algorithm that uses [post-quantum
+cryptography](https://en.wikipedia.org/wiki/Post-quantum_cryptography)
+combined with a known-secure regular key exchange algorithm, ensuring
+that an attacker trying to break the protocol must break both to be
+successful. The xx Network uses the [Supersingular Isogeny
+Diffie–Helman](https://sike.org/files/SIDH-spec.pdf) (SIDH) algorithm
+for post-quantum key exchange and the classic
+[Diffie–Helman](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)
+(DH) algorithm for regular key exchange.
+
+To create an authenticated channel for E2EE messaging, the xx Messenger
+needs the cMixx contact (public cryptographic identity key) to establish
+encryption. Users can obtain these keys in one of two ways:
+
+1.  Exchanging QR codes with another user
+2.  Looking up another user with the User Discovery search function
+
+After acquiring the other users’ cMixx contact, the xx Messenger sends an
+authentication request message containing the SIDH and DH public keys
+needed to initiate the key exchange. The recipient responds with their
+own SIDH and DH public keys, and the original sender sends a final
+confirmation message.
+
+After receiving the other user’s SIDH and DH public keys, xx Messenger
+computes the shared SIDH and shared DH secrets. It then combines these
+secrets with a hash algorithm (BLAKE2B) to form the E2E Session Base
+Key. This step finalizes the authenticated channel creation–each user
+can now send E2EE messages.
+
+To provide [forward
+secrecy](https://en.wikipedia.org/wiki/Forward_secrecy) and
+[post-compromise security](https://eprint.iacr.org/2016/221.pdf), the
+E2E Session Base Key is periodically re-keyed in a process sometimes
+known as
+[ratcheting](http://cryptowiki.net/index.php?title=Ratcheted_encryption).
+The sender on each side of the connection controls how often a re-key
+occurs. To initiate a re-key, the client sends new SIDH and DH public
+keys using the authenticated channel already in place. When the
+recipient responds, the sender can generate a new E2E Session Base Key
+to create a new version of the authenticated channel, which is
+functionally identical to the previous authenticated channel but a
+different key. These rekeys require an additional message, so they are
+only sent on an as-needed basis.
+
+Each message in the xx Messenger is encrypted with [XChaCha20 symmetric
+encryption](https://cr.yp.to/chacha/chacha-20080128.pdf) with a keyed
+hash [message authentication
+code](https://en.wikipedia.org/wiki/Message_authentication_code)
+[HMAC-SHA256](https://datatracker.ietf.org/doc/html/rfc2104). The key
+used for encryption is derived from the E2E Session Base Key. In
+addition, a fingerprint, which only the recipient can use, is included
+in the message to allow the recipient to look up the same encryption key
+for that message.
+
+## Cryptographic Primitives Summary
+
+| Algorithm     | Length    | Description                                                                                                                                                      |
+|---------------|-----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| ChaCha20      | 256 bits  | Messages and payloads are encrypted by ChaCha20.                                                                                                                 |
+| BLAKE2B       | 256 bits  | Used as part of key generation, key expansion, identity generation, and identification codes. Used to combine Diffie–Helman and SIDH keys after key integration. |
+| SHA256        | 256 bits  | Message HMACs                                                                                                                                                    |
+| Diffie–Helmen | 3072 bits | Discrete log-based component of key negotiation.                                                                                                                 |
+| SIDH          | 3024 bits | Quantum-resistant component of key negotiation.                                                                                                                  |
+
+## Resources
+
+-   [Sending E2E
+    Messages](https://git.xx.network/elixxir/client/-/blob/release/network/message/sendE2E.go)
+-   [User Key
+    Exchange](https://git.xx.network/elixxir/client/-/tree/release/keyExchange)
+-   [E2E Manager and Storage
+    Implementation](https://git.xx.network/elixxir/client/-/tree/release/storage/e2e)
+-   [E2E Cryptographic
+    Library](https://git.xx.network/elixxir/crypto/-/tree/release/e2e)
+-   [Diffie Hellman Cryptographic
+    Library](https://git.xx.network/elixxir/crypto/-/tree/release/diffieHellman)
+-   [Hashing Cryptographic
+    Library](https://git.xx.network/elixxir/crypto/-/tree/release/hash)
+-   [Cloudflare's SIDH Implementation (in
+    Go)](https://github.com/cloudflarearchive/sidh)
diff --git a/website/docs/cmixx/idCollisionAndNotifications.md b/website/docs/cmixx/idCollisionAndNotifications.md
new file mode 100644
index 0000000000000000000000000000000000000000..6070e7a63085c21a3c7632c7c12e8fe9943bf1a9
--- /dev/null
+++ b/website/docs/cmixx/idCollisionAndNotifications.md
@@ -0,0 +1,67 @@
+# ID Collisions and Notifications
+
+Typically, user IDs are unique identifiers and have the property of
+being matched to one user. This allows the users to be strongly
+identified, based upon an ID alone, making it easy to tell which user is
+which.
+
+When sending messages to users, the xx Network intentionally has users
+share their IDs to receive messages–the sender ID details are removed
+when the message is sent through the xx Network.
+
+The goal here is to hide the identification details of which user
+receives a message and prevent a special type of tagging attack possible
+within the x protocol. You can read about the tagging attack in [cMixx
+Tagging
+Attack](https://docs.xx.network/cMix_Tagging_Attack_Analysis_and_Mitigation.pdf).
+
+All users have a unique reception ID where they receive messages. When
+you add a user as a contact, one can see their ID and use it at any time
+to calculate their Ephemeral ID for a specific moment. Ephemeral IDs
+rotate once per day, at a random time unique to the recipient.
+
+Ephemeral IDs are calculated within a small bit space that is designed
+to allocate at any given time roughly half as many IDs as the number of
+users in the network. This ensures that users will be receiving messages
+meant for other users to guarantee further privacy. However, due to
+[end-to-end
+encryption](e2e-xxm),
+users cannot read these messages or access any data about the sender or
+recipient.
+
+At launch, and at any point where usage drops below a few hundred
+thousand users, the number of users will be insufficient for this system
+to function, requiring alternate protections.
+
+## Notifications
+
+The notifications system relies on shared ephemeral IDs to keep
+notifications private. When a user registers for notifications, a server
+run by the xx Network team tracks when their current ephemeral ID
+receives a message and sends a notification. Then their phone processes
+the notification to detect if the message is actually for the user and
+will notify if it is. This bot, as well as the notifications provider
+(currently available for Apple and Google operating systems), do not
+know when a message is for you due to ID collisions, ensuring message
+content is private.
+
+## Cryptographic Primitives Summary
+
+| Algorithm    | Length        | Description                                                                                                                                                       |
+|--------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Ephemeral ID | 64 bits (max) | Weak identification of a network user. Designed such that collisions are probable.                                                                                |
+| User ID      | 264 bits      | Strong identification of a network user. Designed such that one’s user ID is unique under the [Birthday Paradox](https://en.wikipedia.org/wiki/Birthday_problem). |
+| BLAKE2B      | 256 bits      | Used for ID generation (ephemeral and user IDs).                                                                                                                  |
+
+## Resources
+
+-   [ID Primitives
+    Library](https://git.xx.network/xx_network/primitives/-/tree/release/id)
+-   [ID
+    Generation](https://git.xx.network/xx_network/crypto/-/tree/release/xx)
+-   [Ephemeral ID
+    Library](https://git.xx.network/xx_network/primitives/-/tree/release/id/ephemeral)
+-   [Notifications Ephemeral ID
+    Logic](https://git.xx.network/elixxir/notifications-bot/-/tree/release/notifications)
+-   [User-side Ephemeral ID
+    Logic](https://git.xx.network/elixxir/client/-/tree/release/storage/reception)
diff --git a/website/docs/cmixx/userDiscovery.md b/website/docs/cmixx/userDiscovery.md
new file mode 100644
index 0000000000000000000000000000000000000000..3f0c590b0b446c32afd6df2380e90a433593604e
--- /dev/null
+++ b/website/docs/cmixx/userDiscovery.md
@@ -0,0 +1,103 @@
+# User Discovery
+
+User Discovery (UD) is an xx Network service that helps users connect
+with others by searching via username, email, or phone number. When a
+user makes their xx Messenger account, they create a username and have
+the option to include other identifiable information in their profile.
+Other xx Messenger users can then use this information to search for
+users in UD and start communicating.
+
+User Discovery links each piece of profile data with a user’s xx
+Messenger contact, which is a cryptographically generated ID and a
+public key. When a user searches in UD, the search results display the
+cMixx contact details needed to initiate end-to-end encrypted secure
+communications. Privacy is always guaranteed; users can choose to accept
+or decline communications from contacts discovered via a UD search.
+
+User Discovery runs as a client on the xx Network. It’s server is
+maintained by the xx Network team. Long term plans are to fully
+decentralize this service onto the xx Network blockchain.
+
+## User Registration
+
+During the xx Messenger app installation process, users select a unique
+username that is registered in UD. This registration is completed
+securely via
+[TCP/IP](https://en.wikipedia.org/wiki/Internet_protocol_suite) rather
+than [cMixx](../overview/cmix).
+
+After registering their username, xx Messenger generates cryptographic
+information that will be used to identify the user uniquely. This
+information includes:
+
+-   An RSA key pair defining a cryptographic identity (known as an ID)
+-   A discrete log Diffie–Helman public key for future key exchanges
+    (3072-bit, in
+    [RFC3526](https://datatracker.ietf.org/doc/html/rfc3526#section-4))
+-   An authorization signature from the network
+
+Upon receiving their cryptographic information (i.e., by signing the
+[Diffie–Hellman](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)
+public key with the
+[RSA](https://en.wikipedia.org/wiki/RSA_(cryptosystem)) key), users
+upload their username and information to the User Discovery server to
+complete registration. As a final step in the registration process, xx
+Messenger ensures the username is unique and the information passes all
+cryptographic checks.
+
+### Registering Further Information
+
+Users can choose to build out their profile by adding and registering
+their email address or phone number. Users sign a registration request
+with their RSA key to send the request for connection, which completes
+checks before being passed to [Twilio](https://www.twilio.com), a
+third-party service that will complete the verification process. Once
+the user confirms their verification code, a salted hash
+([Blake2b](https://en.wikipedia.org/wiki/BLAKE_(hash_function))) of
+their email or phone number is stored in the database. xx Messenger
+protects users’ personal information and never stores unencrypted plain
+text on any servers.
+
+## Searching for Users
+
+xx Messenger allows users to easily find their connections by searching
+for their username, email, or phone number. When a user fills in search
+criteria, xx Messenger first salts and hashes the data and then sends it
+over the [anonymous data retrieval
+protocol](adrp), which utilizes [cMixx](../overview/cmix) and a unique, on-the-fly negotiation
+format request to search for the user without ever revealing who is
+searching or who is being searched. When received, the User Discovery
+server searches for the salted hash in its database. If a match is
+found, the relevant user’s cryptographic data is returned, allowing the
+requesting user to form an
+[end-to-end](e2e-xxm) relationship.
+
+## Deletion
+
+A user can delete a piece of their data or their entire registered
+account at any time. However, this will not remove existing
+relationships formed based on that data. To fully remove user data and
+relationships, xx Messenger requires a signed statement that will allow
+the app to completely remove data from the database.
+
+## Cryptographic Primitives Summary
+
+| Algorithm      | Length    | Description                                                                                                       |
+|----------------|-----------|-------------------------------------------------------------------------------------------------------------------|
+| RSA            | 4096 bits | Used as the signature algorithm for signing a fact or a key.                                                      |
+| Blake2b        | 256 bits  | Algorithm used for hashing facts. It is a faster hashing algorithm that matches or exceeds the security of SHA-3. |
+| Diffie–Hellman | 3072 bits | Discrete log-based component of key negotiation.                                                                  |
+
+## Resources
+
+-   [User-side
+    Code](https://git.xx.network/elixxir/client/-/tree/release/ud)
+-   [UD-Side Code](https://git.xx.network/elixxir/user-discovery-bot)
+-   [Fact
+    Implementation](https://git.xx.network/elixxir/primitives/-/tree/release/fact)
+-   [Fact Cryptographic
+    Library](https://git.xx.network/elixxir/crypto/-/tree/release/factID)
+-   [Cryptographic ID
+    Implementation](https://git.xx.network/xx_network/primitives/-/tree/release/id)
+-   [RSA
+    Signature](https://git.xx.network/xx_network/crypto/-/tree/release/signature/rsa)
diff --git a/website/docs/cmixx/xxdk/_category_.json b/website/docs/cmixx/xxdk/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..7ce55ba2d84465ed94da974108a349d1fb60b47f
--- /dev/null
+++ b/website/docs/cmixx/xxdk/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "xxDK",
+  "position": 2,
+  "link": {
+    "type": "generated-index",
+    "description": "All things related to cMix"
+  }
+}
diff --git a/website/docs/cmixx/xxdk/getting-started.md b/website/docs/cmixx/xxdk/getting-started.md
new file mode 100644
index 0000000000000000000000000000000000000000..b1a0170b958a7380923ef1204af5bd34741f9a7a
--- /dev/null
+++ b/website/docs/cmixx/xxdk/getting-started.md
@@ -0,0 +1,559 @@
+---
+sidebar_position: 2
+---
+
+# Getting Started
+
+:::note
+This document uses the term “cMix client” to mean a unique user in the cMix network. The terms “client” and “server” will distinguish cMix clients based on their roles in a client-server architecture. They are also used interchangeably with “connect client” and “connect server,” respectively.
+:::
+
+To integrate cMix with your application logic, each instance needs to be connected to the xx cMix network. This begins with creating a new cMix client and registering its identity with the network. Session data is stored in an encrypted key-value (EKV) store containing cryptographic keys and state.
+
+While there are multiple use cases for communicating over cMix, this document focuses on communicating with a specific recipient, such as a server. It outlines the steps for setting up two simple applications structured in a client-server architecture, where each application is also a cMix client. 
+
+![The client and server applications are both cMix clients, interfacing with the cMix network using the Client API.](@site/static/img/cMix.png)
+*The client and server applications are both cMix clients, interfacing with the cMix network using the Client API.*
+
+The client and server applications are both cMix clients, interfacing with the cMix network using the Client API.
+
+The complete source code for the sample client and server applications is [available on GitLab](https://git.xx.network/elixxir/xxdk-examples). You can also browse the [API Reference](https://pkg.go.dev/gitlab.com/elixxir/client/xxdk) for comprehensive detail on the different types and functions exposed by the cMix Client API (xxDK).
+
+## Objectives of This Guide
+
+This guide covers the entire process of integrating the xxDK in an application, registering within the xxDK and setting up a connection with the cMix network, setting up listeners, as well as sending and receiving messages or other data. It aims to help you accomplish the following:
+
+- Create two cMix clients set up in a client-server architecture
+- Set up the client application to exchange messages with a server
+- Set up the server to listen for and respond to messages from the client application(s)
+
+We include a sample scenario in [*Putting It All Together*](#putting-it-all-together-sample-scenario) to create a picture of how the client and server might interact with each other.
+
+## Setting Up a cMix Client
+
+This section briefly discusses commonalities between client and server applications—steps that any cMix client needs to be set up correctly.  They include:
+
+1. Fetching an NDF
+2. Creating and initializing a cMix object
+3. Creating a reception identity
+4. Starting network threads
+
+The steps diverge after creating a reception identity. Depending on whether you are building a server or client,  the network threads will be started slightly differently and not necessarily in the order listed above.
+
+Once the most basic steps are completed, a cMix client acting as a ‘server’ starts up a server to listen for connections from clients while each client attempts to connect to the server securely. This is all handled with the `connect` package:
+
+```swift
+"gitlab.com/elixxir/client/connect"
+```
+
+Skip over to [*Setting Up a Connect Server*](#setting-up-a-connect-server) to browse server-specific steps and [*Setting Up a Connect Client*](#setting-up-a-connect-client) for steps specific to a client application. 
+
+### Import the xxDK
+
+The xxDK is a Go library that can be imported like any other Go package.
+
+```go
+"gitlab.com/elixxir/client/xxdk"
+```
+
+You will need to import a few more packages along the way. However, we will include them as needed to avoid unused import warnings from the compiler. It is straightforward to switch out the external libraries for any alternatives you prefer.
+
+:::tip
+To ensure you are using the latest release version of the client, you can run `go get gitlab.com/elixxir/client@release`. This will update your `go.mod` file automatically.
+:::
+
+### Fetching the NDF
+
+The NDF, or network definition file, is a signed file with a [predefined structure](https://xxnetwork.wiki/Network_Definition_File_(NDF)) containing the current network state and configuration for a target network.  For deployed applications, the NDF should be queried from one or a few trusted network gateways. See [NDF Retrieval](./guides/ndf-retrieval)  for recommendations on how to retrieve an NDF and establish trust with one or more gateways.
+
+### Create a Client Keystore
+
+The (cMix) client keystore is a directory-backed storage which contains the cryptographic keys and state data. On initialization, it creates a set of keys for outbound communication with the xx network.
+
+:::caution
+
+It is vital that the contents of the Client Keystore are stored securely. See *[cMix Client Keystore](https://www.notion.so/cMix-Client-Keystore-1fc63d2a52e946debc70991144f4fb0a)* for  the cryptographic details of the storage and recommendations for storing the generated keys on different platforms.
+:::
+
+The keystore is created on disk by calling the `NewCmix()` function.
+
+```go
+func NewCmix(ndfJSON string, storageDir string, password []byte, registrationCode string) error
+```
+
+`NewCmix()` expects multiple arguments:
+
+- `ndfJSON`: This is string-formatted NDF data.
+- `storageDir`: The path to the directory that will store the state for the cMix client. It is a `string` type.
+- `password`: User-specified password for accessing cMix client sessions. Must be passed in as a byte slice (`[]byte`).
+- `registrationCode`: Optional argument. Enables pre-selected users to register a code with the registration server. Use an empty string to register without a code.
+
+### Load the Client Keystore
+
+Next, load the client keystore you just created using the `LoadCmix()` function.
+
+```go
+func LoadCmix(storageDir string, password []byte, parameters xxdk.Params) (*xxdk.Cmix, error)
+```
+
+`LoadCmix()` expects the same `storageDir` and `password` used to call `NewCmix()`. It also expects some network parameters. You can fetch the default parameters using `xxdk.GetDefaultCmixParams()`, which can then be modified and passed into `LoadCmix()` as needed.
+
+```go
+// Load with the same storageDir and password used to call NewCmix()
+net, err := xxdk.LoadCmix(storageDir, []byte(password),
+	xxdk.GetDefaultCMixParams())
+if err != nil {
+	// Handle failed to load state error
+}
+```
+
+This call starts communication with the network and registers your client with the [permissioning server](technical-glossary#permissioning-server). This enables you to keep track of the network state for message sending and retrieval.
+
+### Creating Reception Identities
+
+A cMix client must generate a cryptographic identity for receiving messages. This is typically referred to as its *Reception Identity*. Reception Identities are your designation or name on the network—what other parties know you as.
+
+A new Reception Identity can be created by passing a `Cmix` object to `MakeReceptionIdentity()`.  You can reuse a Reception Identity or create an infinite number of Reception Identities on the fly, but there is a privacy tradeoff between having established identities and frequently creating new identities.
+
+The Reception Identity has keying material in it, so it is crucial that it is stored in an encrypted location. `StoreReceptionIdentity()` handles this automatically, which is the recommended way to store identities. This way, a user only has to save the lookup key, which can be stored arbitrarily.  Similarly, a saved identity can be retrieved from the Client Keystore using `LoadReceptionIdentity()`.
+<details>
+
+<summary>Code sample</summary>
+
+```mdx-code-block
+import CodeBlock from '@theme/CodeBlock';
+
+<CodeBlock className="language-go" showLineNumbers>
+  {
+	`// Sample key for storing reception identity object
+identityStorageKey := "identityStorageKey"
+	
+// If no extant xxdk.ReceptionIdentity, generate and store a new one
+identity, err := xxdk.LoadReceptionIdentity(identityStorageKey, net)
+if err != nil {
+	identity, err = xxdk.MakeReceptionIdentity(net)
+if err != nil {
+	// Handle failed to generate reception identity error
+}
+err = xxdk.StoreReceptionIdentity(identityStorageKey, identity, net)
+if err != nil {
+	// Handle failed to store new reception identity error
+}
+`}
+</CodeBlock>
+```
+<p>Note that the identity storage key is simply a dictionary lookup key used to access a stored identity.</p>
+</details>
+
+#### Writing Contacts to File
+
+In order to contact another cMix client directly, you must obtain a contact file based on the Reception Identity belonging to the desired recipient. 
+
+```go
+import (
+	"gitlab.com/xx_network/primitives/utils"
+)
+
+// Set the output contact file path
+contactFilePath := "connectServer.xxc"
+
+// Save the contact file so that clients can connect to this server
+err := utils.WriteFileDef(outfilePath, identity.GetContact().Marshal())
+```
+
+Note that the file extension can be chosen arbitrarily, although we stick to `.xxc` and `.json`.
+
+### Starting Network Threads
+
+The network follower is a relatively computationally-intensive thread that keeps track of network state and health. The client is able to operate fully only once the network is in a healthy state, as indicated by the follower seeing rounds completed successfully.
+
+```go
+func (* Cmix) StartNetworkFollower(timeout time.Duration) error
+```
+
+`StartNetworkFollower()` takes a single timeout duration that specifies how long to wait for the function call to succeed before a timeout error is returned. To stop the network threads, such as when your application is closed or put in the background, simply run  `StopNetworkFollower()`.
+
+<details>
+<summary>Code sample</summary>
+<div>
+<p>For our application, we have also set up a function that starts network threads and waits until the network is healthy before proceeding.</p>
+
+```mdx-code-block
+<CodeBlock className="language-go" showLineNumbers>
+  {
+	`// Set networkFollowerTimeout to a value of your choice (seconds)
+networkFollowerTimeout := 5 * time.Second
+    
+err = connectServer.User.StartNetworkFollower(networkFollowerTimeout)
+if err != nil {
+	// Handle failed to start network follower error
+}
+    
+// Create a tracker channel to be notified of network changes
+connected := make(chan bool, 10)
+    
+// Provide a callback that will be signalled when network health
+// status changes
+connectServer.User.GetCmix().AddHealthCallback(
+	func(isConnected bool) {
+		connected <- isConnected
+	})
+    
+// You may implement a function which retries
+// attempts to connect to the network
+waitUntilConnected := func(connected chan bool) {
+	// ...
+}
+    
+// Wait until connected or crash on timeout
+waitUntilConnected(connected)
+`}
+</CodeBlock>
+```
+</div>
+</details>
+
+## Building Client/Server Relationships using Connections
+
+The `connect` package provides a quick and convenient way of establishing client/server relationships over cMix. Initially, a client requires the server’s contact file in order to make a connection. The connection process functionally establishes a cryptographic relationship between the two that is encapsulated by a `connect.Connection` object. Using this object, end-to-end encrypted messages can be sent between client and server with ease and handled with customized business logic as defined by your application.
+
+## Setting Up a Connect Server
+
+Creating a server capable of interacting with clients is a very straightforward process using connections. Almost all the code required is standard, with business logic relevant to your specific implementation needs is handled entirely in two places—message listeners and the connection callbacks. Pay special attention to these sections when writing a server application.
+
+### Enabling Message Reception
+
+A message listener is the only way to handle incoming end-to-end encrypted messages. They are a piece of code that is registered with the xxDK to be run whenever an E2E message is received. Message listeners can be further filtered to handle specific message types or specific message senders depending on application needs.
+
+We will soon create a message listener using the `RegisterListener()` method on the `Connection` object:
+
+```go
+func (c *connect.Connection) RegisterListener(messageType catalog.MessageType,
+	newListener receive.Listener) (receive.ListenerID, error)
+```
+
+`RegisterListener()` expects the following arguments:
+
+- `messageType`: Use `catalog.NoType` (`"[gitlab.com/elixxir/client/catalog](http://gitlab.com/elixxir/client/catalog)"`) as a wildcard to listen to all existing types of messages.
+- `newListener`: An implementation of the `Listener` interface (shown below).
+
+```go
+// Listener interface for a listener adhere to
+type Listener interface {
+	// The Hear function is called to exercise the listener, passing in the
+	// data as an item
+	Hear(item Message)
+	// Returns a name, used for debugging
+	Name() string
+}
+```
+
+When a message matching the registered listener is received, the `Hear()` function will receive a copy of the message to handle with user-specified logic. The code example below shows a very simple `Listener` that simply prints out received messages and sends an automated response in return.
+
+<details>
+<summary>Code sample</summary>
+<div>
+<CodeBlock className="language-go" showLineNumbers>
+  {
+	`// listener.go
+    
+// ...
+      
+import (
+	jww "github.com/spf13/jwalterweatherman"
+	"gitlab.com/elixxir/client/connect"
+	"gitlab.com/elixxir/client/e2e/receive"
+	"gitlab.com/elixxir/client/catalog"
+	"gitlab.com/elixxir/client/xxdk"
+)
+    
+// listener adheres to the receive.Listener interface.
+type listener struct {
+	name string
+	connection connect.Connection
+}
+    
+// Hear will be called whenever a message matching the RegisterListener call is
+// received; User-defined message handling logic goes here.
+func (l *listener) Hear(item receive.Message) {
+	jww.INFO.Printf("Message received: %v", item)
+    
+	// Acknowledge connection by sending a response
+	respond(l.connection)
+}
+    
+// Name is used for debugging purposes.
+func (l *listener) Name() string {
+	return l.name
+}
+    
+func respond(connection connect.Connection) {
+	msgBody := "Hi, I'm the server, and you just connected to me."
+    
+	roundIDs, messageID, timeSent, err := connection.SendE2E(catalog.XxMessage, []byte(msgBody), xxdk.GetDefaultE2EParams().Base)
+	if err != nil {
+		// Handle failed to send message error
+	}
+	jww.INFO.Printf("Message %v sent in RoundIDs: %+v at %v", messageID, roundIDs, timeSent)
+}
+`}
+</CodeBlock>
+</div>
+</details>
+
+### Enabling Incoming Connections
+
+The connection callback is defined within the system as the custom logic that will be executed whenever a client attempts to open a new `connect.Connection` with the running server. To this end, the connection callback will eventually be passed as an argument into `connect.StartServer()`.
+
+The following code sample demonstrates what a callback for handling incoming client connections might look like. Notably, this incorporates the creation of a message listener as described in the previous section in order to facilitate future message reception once the connection is established:
+
+```go
+import "gitlab.com/elixxir/client/catalog"
+
+// Create callback for incoming connections
+connectionCallback := func(connection connect.Connection) {
+// User-defined behavior for message reception goes in the listener
+	_, err = connection.RegisterListener(
+ 		catalog.NoType, &listener{"connection server listener", connection})
+	if err != nil {
+		// Handle failed to register listener error
+	}
+}
+```
+
+### Start the Server
+
+Once the connection callback has been defined, the connection server may be started using `connect.StartServer()`:
+
+```go
+func StartServer(identity xxdk.ReceptionIdentity, connectionCallback Callback,
+  net *xxdk.Cmix, params xxdk.E2EParams, clParams ConnectionListParams)
+  (*ConnectionServer, error)
+```
+
+`StartServer()` assembles a `Connection` object on the server-side and feeds it into the given `Callback` whenever an incoming request for an end-to-end (E2E) partnership with a client completes successfully. It expects the following arguments:
+
+- `identity`: This is the reception identity of the cMix client, created in [*Creating Reception Identities.*](#creating-reception-identities).
+- `connectionCallback`: The callback that will handle incoming client connections.
+- `net`: This is the cMix object created in [*Create a Client Keystore*](#create-a-client-keystore)
+- `params`: Network parameters for sending E2E messages over the cMix network. Includes authentication and rekey parameters amongst others. Use `xxdk.GetDefaultE2EParams()` for the default settings.
+- `clParams`:  Parameters that determine the frequency of stale connection cleanups. Use `connect.DefaultConnectionListParams()` for the default settings.
+
+<details>
+<summary>Code sample</summary>
+<div>
+
+<CodeBlock className="language-go" showLineNumbers>
+  {
+	`import "gitlab.com/elixxir/client/connect"
+    
+// Start the connection server, which will allow clients to start connections with you
+e2eParams := xxdk.GetDefaultE2EParams()
+connectionListParams := connect.DefaultConnectionListParams()
+    
+connectServer, err := connect.StartServer(
+	identity, connectionCallback, net, e2eParams, connectionListParams)
+if err != nil {
+	// Handle unable to start connection server error
+}
+`}
+</CodeBlock>
+</div>
+</details>  
+
+Now, you can create a client and attempt to connect with the running server.
+
+## Setting Up a Connect Client
+
+Similar to the server, almost all the code required for a connect-backed client is standard. The business logic relevant to your specific implementation needs is handled entirely within your own sending logic as well as in the message reception listener.
+
+### Create the E2E User Object
+
+`Login()` bundles a `ReceptionIdentity` and `Cmix` into an `E2e`, which is required for establishing a client-side `Connection`. This operation ultimately forms the representation of the user of the client’s network identity and allows for end-to-end encrypted operations. While the `E2e` object is assembled under the hood server-side, we must do this explicitly on the client-side.
+
+```go
+func Login(net *Cmix, callbacks AuthCallbacks, identity ReceptionIdentity,
+  params E2EParams) (m *E2e, err error)
+```
+
+`Login()` expects the following arguments:
+
+1. `net`: This is the cMix object created in [*Create a Client Keystore*](#create-a-client-keystore) 
+2. `callbacks`: These are the callbacks for handling E2E relationship operations between cMix clients. The `connect` package will handle these independently, thus one can simply feed in the same struct (`xxdk.DefaultAuthCallbacks{}`) shown in the sample code below which provides basic implementations of these callbacks.
+3. `identity`: This is the same identity created in [*Creating Reception Identities.*](#creating-reception-identities)
+4. `params`: These are network parameters for sending E2E messages over the cMix network. Use `xxdk.GetDefaultE2EParams()` for the default settings.
+
+```go
+user, err := xxdk.Login(net, xxdk.DefaultAuthCallbacks{}, identity, xxdk.GetDefaultE2EParams())
+if err != nil {
+	panic("unable to login")
+}
+```
+
+### Connect To the Server
+
+The simplest way for connecting a client and a server is through the use of a contact file, as described earlier in [*Writing Contacts to File*](#writing-contacts-to-file). While there are several options for finding and establishing relationships with clients across cMix, contact files work especially well in this example because the identity of a server is not expected to change.
+
+Use `Connect()`, which is located in the `connect` package (`"gitlab.com/elixxir/client/connect"` ), to negotiate the connection. You will need to provide the server’s contact file as well as the `E2e` object created by `Login()` in the previous step.
+
+```go
+func Connect(recipient contact.Contact, user *xxdk.E2e, p xxdk.E2EParams)
+  (connect.Connection, error)
+```
+
+`Connect()` performs key negotiation with a given recipient and returns a `Connection` object, which will later be used to register a listener and send messages. An example of reading in a contact file in order to open a connection is provided below.
+
+<details>
+<summary>Code sample</summary>
+<div>
+
+<CodeBlock className="language-go" showLineNumbers>
+  {
+	`// Path to the server contact file
+serverContactPath := "../connectServer/connectServer.xxc"
+    
+// Read the server's contact data
+contactData, err := ioutil.ReadFile(serverContactPath)
+if err != nil {
+	// Handle failed to read server contact file error
+}
+    
+// Import "gitlab.com/elixxir/crypto/contact" which provides
+// an \`Unmarshal\` function to convert the byte slice output
+// of \`ioutil.ReadFile()\`to the \`Contact\` type expected by \`Connect()\`
+recipientContact, err := contact.Unmarshal(contactData)
+if err != nil {
+	// Handle failed to get contact data error
+}
+    
+// Create the connection
+handler, err := connect.Connect(recipientContact, user, params)
+if err != nil {
+	// Handle failed to create connection object error
+}
+`}
+</CodeBlock>
+</div>
+</details>  
+
+### Enabling Message Reception
+
+Message reception support is added client-side much the same as the server-side.
+
+```go
+import "gitlab.com/elixxir/client/catalog"
+
+// Listen for all types of messages using catalog.NoType
+// User-defined behavior for message reception goes in the listener
+_, err = handler.RegisterListener(catalog.NoType, listener{
+	name: "e2e Message Listener",
+})
+if err != nil {
+	// Handle could not register message listener error
+}
+```
+
+You will also want to implement the `Listener` interface just as we did for the server. All response logic is handled by the `Hear()` function.
+
+<details>
+<summary>Code sample</summary>
+<div>
+
+<CodeBlock className="language-go" showLineNumbers>
+  {
+	`// listener.go
+    
+package main
+    
+import (
+	jww "github.com/spf13/jwalterweatherman"
+    
+	"gitlab.com/elixxir/client/e2e/receive"
+)
+    
+// listener implements the receive.Listener interface
+type listener struct {
+	name string
+}
+    
+// Hear will be called whenever a message matching
+// the RegisterListener call is received
+// User-defined message handling logic goes here
+func (l listener) Hear(item receive.Message) {
+	jww.INFO.Printf("Message received: %v", item)
+}
+    
+// Name is used for debugging purposes
+func (l listener) Name() string {
+	return l.name
+}
+`}
+</CodeBlock>
+</div>
+</details>
+
+### Sending Messages to the Server
+
+With the connection to the server established and message reception enabled, the client is now ready to begin communicating with the server. This will be done using methods of the `connect.Connection` object returned by `Connect()` in the previous steps.
+
+```go
+func (connect.Connection).SendE2E(mt catalog.MessageType, payload []byte,
+  params e2e.Params) ([]id.Round, e2e.MessageID, time.Time, error)
+```
+
+It expects the following arguments:
+
+- `mt`: This is the message type. Specify as `catalog.XxMessage`.
+- `payload`: The actual message contents. Pass in the payload as a byte slice.
+- `params`: Network parameters for sending E2E messages over the cMix network. Use `xxdk.GetDefaultE2EParams().Base` for the default settings.
+
+ `SendE2E()` returns the list of rounds in which parts of your message were sent, the message ID, and the sent timestamp. An error is returned if the send is unsuccessful.
+
+<details>
+<summary>Code sample</summary>
+
+<CodeBlock className="language-go" showLineNumbers>
+  {
+	`// Test message
+msgBody := "If this message is sent successfully, we'll have established contact with the server."
+    
+params := xxdk.GetDefaultE2EParams() // defined earlier
+    
+roundIDs, messageID, timeSent, err := handler.SendE2E(catalog.XxMessage, []byte(msgBody), params.Base)
+if err != nil {
+	// Handle failed to send message error
+}
+jww.INFO.Printf("Message %v sent in RoundIDs: %+v at %v", messageID, roundIDs, timeSent)
+`}
+</CodeBlock>
+
+<div>
+</div>
+</details> 
+
+## Putting It All Together: Sample Scenario
+
+Suppose you have a server hooked up to a fax machine. When a client sends something to the server, the server takes that data and sends it as a fax.
+
+As the server, you create a cMix client and set it up with a reception identity. You generate your contact file and call `connect.StartServer()`, which is passed a `Callback`, to start listening for connections.
+
+You distribute your contact file to your users, so they can use it to contact you like a phone number.
+
+Users call `connect.Connect()`, which establishes a relationship with the server.
+
+The server sees one of these connections—a user wants to send a fax, so they opened a connection. It assembles a `Connection` object and feeds it into the `Callback` passed to `StartServer()`.
+
+Next, the server calls `RegisterListener()` to start listening for messages coming in from that connection with a client. 
+
+When the listener picks up a fax sent to it as a message, it reads it and sends the fax onward to its intended destination.
+
+Assuming that hundreds of users are doing this all at the same time, each with their own `Connection`, you’ll want to catalogue all connections somehow in the `Callback` passed to `StartServer()`. Then you can look up what `Connection` corresponds to each user and let them know that you successfully sent their fax by sending a message with `connection.SendE2e()`.
+
+On a high level, integrating the Client API with your application can be reduced to:
+
+1. Generate an identity for your client to identity itself on the network.
+2. Interact with the network by starting network followers.
+3. Register listeners for message reception.
+4. Send and receive encrypted messages.
+
+For best results, ensure that you perform these actions in the given order.
\ No newline at end of file
diff --git a/website/docs/cmixx/xxdk/guides/_category_.json b/website/docs/cmixx/xxdk/guides/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..32424f9e0a4cd1314d87bc9735f6ac59af23952d
--- /dev/null
+++ b/website/docs/cmixx/xxdk/guides/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "Reference Guides",
+  "position": 5,
+  "link": {
+    "type": "generated-index",
+    "description": "All things related to cMix"
+  }
+}
diff --git a/website/docs/cmixx/xxdk/guides/cmix-client-keystore.md b/website/docs/cmixx/xxdk/guides/cmix-client-keystore.md
new file mode 100644
index 0000000000000000000000000000000000000000..368dda915d7878f7c99dc8b4aa2bdf2f3bff1297
--- /dev/null
+++ b/website/docs/cmixx/xxdk/guides/cmix-client-keystore.md
@@ -0,0 +1,37 @@
+# cMix Client Keystore
+
+The cMix Client Keystore is a directory-backed encrypted key-value storage which contains cryptographic keys and state data. It is implemented by wrapping the [EKV library](https://git.xx.network/elixxir/ekv).
+
+The keystore is initially populated by a small number of critical keys that define a client’s identity. It holds all the information necessary to send messages (transmission) as well as to receive messages (reception or message pickup) on the cMix network. The keystore is extended as needed to store key and state information for various subsystems (e.g., E2E messaging).
+
+# Handling the Client Keystore
+
+The Client Keystore requires a directory path where it will be initialized. A client must provide a path to a directory on a filesystem as well as a password that will be used to encrypt the contents of the directory. Once initialized, several encrypted files are generated at that path and used to store a variety of things that must persist across runs of the client. 
+
+The password used to encrypt the contents of the keystore must be provided by the user or stored securely using secure storage, for example by using the [Android](https://developer.android.com/reference/android/security/KeyChain) or [iOS Keychain](https://developer.apple.com/documentation/security/keychain_services) APIs. 
+
+# Key Generation on Initialization
+
+The cMix Client Keystore must be initialized on first run. Initializing the keystore creates a series of keys for outbound (transmission) communication with the xx network. These transmission keys are then used to register and negotiate a key with each node on the network. 
+
+The process generally takes 20~30 seconds on first run, but can take upwards of five minutes in rare cases. As a result, it is highly recommended in almost all cases to persist the initialized keystore across executions of the cMix client.
+
+## Client Identity
+
+At first, only the base data for sending messages (transmission) and receiving messages (reception) are stored in the keystore. These two sets of data include:
+
+1. **Transmission Identity**
+    1. **RSA Transmission Keys:** The transmission keys are a pair of RSA private/public keys used to register with the xx network. The public key is signed by the client registrar, a temporary system run by the foundation to allow the registration of new clients to be disabled in the event of certain network attacks. In the future, this system will be replaced with an on-chain registrar which registers new users for a fee in xx coins.
+    2. **RSA Transmission ID:** This is a unique identifier used for sending messages over the network. It is generated using a salt and the RSA transmission public key.
+2. **Legacy Reception Identity**
+    1. **RSA Reception Keys:** The [User Discovery](../technical-glossary#user-discovery-ud) system run by the xx foundation requires a signed reception identity for registration. While registration identities are generally intended to be fungible, for the xx messenger and xx foundation user discovery server, they are not and must be signed. This allows it to piggy back off of the protection mechanisms described in the *RSA Transmission Keys* section above.  
+    2. **RSA Reception ID:** This is a unique identifier used by a cMix client to receive messages. It will typically poll this ID when looking for messages sent from other users. This ID is generated from a combination of a salt and the RSA reception public key. 
+
+## Other Critical Key Structures Stored in the Keystore
+
+While a small set of keys are stored on initial execution, that group grows as various modules are exercised. Here are some of the more important keys which are stored in the client Keystore. This is not an exhaustive list.
+
+- **E2E keys:** When a cMix client requests or receives requests for an authenticated connection with another client, it uses its end-to-end (E2E) identity. This is a pair of Diffie-Helman (DH) keys.
+- **cMix state data**: Due to the decentralized nature of the xx network and the cMix protocol, there is no central repository for the state of message picking for an individual reception ID.  Instead, it is the client’s responsibility to build a picture of the network and track its own message pickup information. This data is stored in the keystore as the client runs. The bulk of the data and its handling can be found in the [/cmix/identity](https://git.xx.network/elixxir/client/-/tree/release/cmix/identity) package.
+- **Network signatures:** As described in the *Client Identity* section above, the Transmission Identity as well as the Legacy Reception Identity are signed by the Network Registrar. These signatures are stored in [/storage/user](https://git.xx.network/elixxir/client/-/tree/release/storage/user) as the `TransmissionRegistrationValidationsSignature`, and the `ReceptionRegistrationValidationsSignature`*.*
+- **Node keypairs:** Clients negotiate symmetric keys with every node in the network in order to receive the mixes the nodes are a part of. These keys are stored in the keystore in [/cmix/nodes](https://git.xx.network/elixxir/client/-/tree/release/cmix/nodes).
\ No newline at end of file
diff --git a/website/docs/cmixx/xxdk/guides/ndf-retrieval.md b/website/docs/cmixx/xxdk/guides/ndf-retrieval.md
new file mode 100644
index 0000000000000000000000000000000000000000..76dd9af1c6f9593e9407c03c4c5d1bc6f7f6b7fe
--- /dev/null
+++ b/website/docs/cmixx/xxdk/guides/ndf-retrieval.md
@@ -0,0 +1,137 @@
+# NDF Retrieval
+
+This guide covers how to fetch the [network definition file](../technical-glossary#network-definition-file-ndf), or NDF, either through the command line (CLI) or using the Client API (xxDK).
+
+---
+
+The xx network team maintains an encoded [NDF online](https://elixxir-bins.s3.us-west-1.amazonaws.com/ndf/mainnet.json), which has a comprehensive list of publicly available gateway addresses and their certificates. The data is base64-encoded (use `base64 -D` on the file to read). The reader may take this list or use their own methods to find gateway information depending on their trust model (see [Vetting Gateways section](https://www.notion.so/NDF-Retrieval-3899220500444ec4a71b05f954672728) below). 
+
+From this list, a [trustworthy gateway](https://www.notion.so/NDF-Retrieval-3899220500444ec4a71b05f954672728) should be determined by the reader. To avoid influencing or suggesting which gateways should be trusted, all examples in this guide use a local network. `localhost:8440` should be replaced with a trusted gateway address when fetching an NDF off of a live network.
+
+## Using the CLI
+
+The `getndf` CLI command enables you to download the NDF from a [network gateway](https://xxdk-dev.xx.network/technical-glossary/#gateway-also-network-gateway). This does not require a pre-established client connection, but you will need the IP address, port, and an SSL certificate for the gateway:
+
+```bash
+// Download an SSL certificate using OpenSSL 1.0.1 or newer
+// (check your version if you get an error)
+openssl s_client -showcerts -connect localhost:8440 < /dev/null 2>&1 | openssl x509 -outform PEM > certfile.pem
+// Fetch NDF from a gateway
+go run main.go getndf --gwhost localhost:8440 --cert certfile.pem | jq . >ndf.json
+```
+
+If you are trying to connect to one of the public networks, we recommend downloading an NDF directly for different environments by using the `--env` flag. This will download the NDF directly from a URL hosted by the xx network team:
+
+```bash
+// Download an NDF using the team environment URL
+go run main.go getndf --env mainnet | jq . >ndf.json
+```
+
+## Using the xxDK
+
+There are two (2) methods of retrieving an NDF via the xxDK. Neither requires a pre-established client connection.
+
+### Downloading from a Gateway
+
+You may download an NDF from a selected gateway using the xxDK via the `DownloadNdfFromGateway()` function. Below is an example code snippet using that xxDK call:
+
+```go
+// Gateway contact information
+certPath := "path/to/gateway.crt"
+address := "localhost:8440"
+
+// Read certificate from file
+cert, err := utils.ReadFile(certPath)
+if err != nil {
+	jww.FATAL.Panicf("Failed to read file: %+v", err)
+}
+    
+// Download NDF from a target gateway
+resp, err := xxdk.DownloadNdfFromGateway(address, cert)
+if err != nil {
+	jww.FATAL.Panicf("%v", err)
+}
+```
+
+### Downloading from a URL
+
+You may download an NDF using the xxDK from the URL provided by the xx network team using the `DownloadAndVerifySignedNdfWithUrl()` function call. The URL contains a signed version of the NDF which requires a certificate to verify that signature. There are several running environments, each with [its own URL and certificate](https://git.xx.network/elixxir/client/-/blob/release/cmd/deployment.go). Below is an example code snippet using that xxDK call:
+
+```go
+// Network environment parameters.
+certificatePath := "path/to/certificate.crt"
+ndfUrl := "<insertURL>"
+     
+// Read certificate
+cert, err := ioutil.ReadFile(certificatePath)
+if err != nil {
+	jww.FATAL.Panicf("Failed to read certificate: %v", err)
+}
+
+// Download NDF from URL
+ndfJSON, err = xxdk.DownloadAndVerifySignedNdfWithUrl(ndfURL, string(cert))
+if err != nil {
+	jww.FATAL.Panicf("Failed to download NDF: %+v", err)
+}
+```
+
+## Vetting Gateways
+
+When downloading an NDF from a gateway, it’s important to ensure that the targeted gateway can be trusted. There are many ways to do this; the team provides a few possible strategies for the reader to develop trust with a gateway. This is not intended to be a comprehensive guide for establishing trust with gateways, but a way to suggest possible avenues.
+
+As an entry point, the team publishes a publicly available list of gateways in the published encoding of the NDF. You can download that, decode it, and select a gateway from the list. However, it is better to have some trust in the gateway as the wrong NDF can be provided by the gateway, connecting you to the wrong network. There are three (3) general methods you can use: 
+
+- **Choose a gateway run by you or an acquaintance.** If you know someone who runs a gateway, or you are running a gateway, you can use that information to connect to your gateway to get an NDF.
+- **Use the longest-running gateways.** You can find the longest-running gateways by browsing the [dashboard](https://dashboard.xx.network/) and clicking on the node information, or via the [wallet](https://wallet.xx.network/#/staking) by browsing the staked validators.
+- **Use team-run gateways.** If you trust the team, you can select the team gateway. The details of the team gateway are:
+
+    
+    > **Name:** xx west
+    > 
+    > 
+    > **Node ID:** `c6wptSinakErZHrk0SlgGQXExETPYYLB2CwpLNze6FMC`
+    > 
+    > **Validator wallet:** `6Wb9wqBLi8iBhpnNqqWDVPcqfRQMkqTZWq9cAsALwC7W68h4`
+    > 
+    > **Gateway ID:** `c6wptSinakErZHrk0SlgGQXExETPYYLB2CwpLNze6FMB`
+    > 
+    > **Address:** `161.35.228.41:22840`
+    > 
+    > **Tls_certificate:** 
+    > 
+    > ```bash
+    > -----BEGIN CERTIFICATE-----
+    > MIIFvzCCA6egAwIBAgIUHsHksdZ0MJ3YU7wBdnbZLC+uS7cwDQYJKoZIhvcNAQEL
+    > BQAwgYsxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJQ2xhcmVt
+    > b250MRIwEAYDVQQKDAl4eG5ldHdvcmsxETAPBgNVBAsMCHRlc3ROb2RlMRMwEQYD
+    > VQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3Jr
+    > MB4XDTIyMDExMjIwMzQyM1oXDTI0MDExMjIwMzQyM1owgYsxCzAJBgNVBAYTAlVT
+    > MQswCQYDVQQIDAJDQTESMBAGA1UEBwwJQ2xhcmVtb250MRIwEAYDVQQKDAl4eG5l
+    > dHdvcmsxETAPBgNVBAsMCHRlc3ROb2RlMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8w
+    > HQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3JrMIICIjANBgkqhkiG9w0BAQEF
+    > AAOCAg8AMIICCgKCAgEA3ibxqYIPDMPwoOD6aBbp7BxWkyVduVRMHbM+v2mgSBeA
+    > KxuKsZBVC2DZdN+4DCclXCQFb//sD8gJ3Nm9HKZscg/tvm3tH+c62QQxZ3JKMsqt
+    > 0BVoCiuBxKUlJYHDEmwuU4a1UAsoJBMy4TYVj9gFHsvBx+d1yoyY49R/xnN3ThuK
+    > 9ssFdEvmSTaFHA5JvjybDgwQnPxdxvw/12Vt9RYuXBy+FsLeMrA0hmjeLiKRys84
+    > 3gmf71qssJZuQ1WcrgKG+LuLdjjnmtbbGWdWYH7oD2RqOHOkinQgoC8EX5tK+/Yg
+    > T2NvAZgGkiOa9HvUBF9lmWGHmPVmZ1nRQRQZxkRRl0JFnIAqhCZGqmeTR3zgznIz
+    > TlMSCC72zKSfvPbVxSWZssD6v+P0fOzXxmxEoblg4XpBJg3GFtTIgSw8ZQ9Q9CV5
+    > nMqLRQ0BCrSEiw+70ERb1HrQLeKZWc63HDWNNowaLw4mSAn2KlsyoJX8c0yR3aAd
+    > RXqd2p1H1ZXSCYvwY2c2Q5NSLZ9yKyNBaAoVz7zBI+KTZ6jh+ci5goDaOPk9J09D
+    > BNY5YUw+2buP9r2/onv4NCWe/gk8mdxN3ljf+B13kOG69iGi5oRUKN+jEcAHEuum
+    > 2y7ZpnFTg8pcabzvoOrVCC3FgpH4ktWtf/o9AylirDFmbh8Yu09H6BwiyTsqfnUC
+    > AwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkqhkiG9w0BAQsFAAOC
+    > AgEATUjlU0LCgMHTb/ndhyl06p7fdzCZ8BPFvEP7B5634hC/VEDXTYCuISV4/Kor
+    > KuUtgEC59Gi2qB8T/C5xexZgcMA0s0spbBo/IrUUeDiYmQttf4zPLn12H1JeOiwE
+    > Ea2iWToGFn0GSPG6x+8TkKUH3xT/eSHpupEpejf4JMcZ5aI5jQB8G9BBTLmwjOzV
+    > VpszmAU33rUdBkomZIDSFjT38Cs0OJcKSnZpViFF474gscKiiV7mV5e/ZTkQU5OI
+    > AerS274Ouz+s6kfWkdqJTKyDmyIZHQBwP3Uc6Al7ol17DuDY2RujZkrXJx5QXZLu
+    > o3LxzMmzelobpcsWc6FPA+ZExDDTm3AcqrgPPTgSwTo7RscVFcFT65k9119UXbPf
+    > D5KWUi5HuAqEmwom+xeOxePoS0w1TC2j+6qsCmH6I0Er/iIKro6yR+03AkgQfHwH
+    > WUu9DCqM8kOSwWjxNRis6YJszdDpu0nYYzT2WAses9hRAAzit8e7TdpLezY4hGOr
+    > yANToWFUEuLVDJErlSAgDU1bCYXoEKuTAv2m2oP+mjhad70M/NnTKonsJ4+ymsE2
+    > +mtN7Yb/1o98jK3aH7CX+nvMazyDaBwV6az+B18SNT3xuyzvunZXtGMk+IxBY40j
+    > Aq9325V+FsK9K2j/DfJQOhpUh+qEyK3kYsAD8U4fqJ2Vjq8=
+    > -----END CERTIFICATE-----
+    > ```
+    >
\ No newline at end of file
diff --git a/website/docs/cmixx/xxdk/mobile docs/_category_.json b/website/docs/cmixx/xxdk/mobile docs/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..63971d0bc9841cc78d5874de832b9f09eab46c24
--- /dev/null
+++ b/website/docs/cmixx/xxdk/mobile docs/_category_.json	
@@ -0,0 +1,4 @@
+{
+  "label": "Mobile Docs",
+  "position": 4
+}
diff --git a/website/docs/cmixx/xxdk/mobile docs/ios-sdk.md b/website/docs/cmixx/xxdk/mobile docs/ios-sdk.md
new file mode 100644
index 0000000000000000000000000000000000000000..1ad7099f8ba3586beb2a60f283b02835791d2861
--- /dev/null
+++ b/website/docs/cmixx/xxdk/mobile docs/ios-sdk.md	
@@ -0,0 +1,230 @@
+---
+sidebar_position: 3
+---
+
+# iOS SDK
+
+## Installation
+The Elixxir SDK requires the use of the [Swift Package Manager](https://swift.org/package-manager/)—a tool for managing the distribution of Swift code. To use the SDK, add it to dependencies in your `Package.swift` file.
+
+```swift
+dependencies: [
+    .package(url: "https://git.xx.network/elixxir/elixxir-dapps-sdk-swift")
+]
+```
+
+## Initialization
+The instructions below describe how to initialize the client and connect to the network.
+
+1. First, you will need to create a secure area to store client data. You can do this by creating a `PasswordStorage` for saving and loading your client storage. For example purposes we will use UserDefaults, but really encourage you to not use it and use `Keychain`  instead. 
+
+    ```swift
+    let demoPasswordStorage = PasswordStorage(
+    save: { password in
+        UserDefaults.standard.set(password, forKey: "SDKPassword")
+    },
+    load: {
+        UserDefaults.standard.value(forKey: "SDKPassword") as! Data
+    })
+    ```
+
+2. Next, create a client storage to manage client data stored on disk.
+
+    ```swift
+    let clientStorage = ClientStorage.live(passwordStorage: demoPasswordStorage)
+    ```
+
+3. If a client storage already exists, load it instead of creating a new one.
+
+    ```swift
+    let client = Client
+
+    /*
+    //loadClient is a blocking call, do it on the background thread
+    //createClient is a blocking call, do it on the background thread
+    */
+
+    if clientStorage.hasStoredClient() {
+    client = try? clientStorage.loadClient()
+    } else {
+    client = try? clientStorage.createClient()
+    }
+    ```
+
+4. Next, create an identity. You will need to create a connection later.
+
+    ```swift
+    /*
+    //Blocking call, do it on the background thread
+    */
+    let myIdentity = try client.makeIdentity()
+    ```
+
+5. Start the network follower.
+
+    ```swift
+    let networkFollower = client.networkFollower
+
+    /*
+    //Blocking call, do it on the background thread
+    //Time is in millisecond
+    */
+    try networkFollower.start(timeoutMS: 30_000) 
+    ```
+
+6. Finally, wait for the network to be connected.       
+
+    ```swift
+    /*
+    //Blocking call, do it on the background thread
+    //Time is in millisecond
+    */
+    let isConnected = client.waitForNetwork(30_000)  
+    guard isConnected else { /* try again */ }
+    ```
+
+## Send Rest-like message
+The instructions below describe how to use the restlike API to send requests and receive messages like a rest API.
+
+1. First, create an E2E client.
+
+    ```swift
+    /*
+    //Blocking call, do it on the background thread.
+    */
+    let clientE2E = try ClientE2ELogin.live(with: client)
+    ```
+
+2. Next, to initiate a connection with the remote, use an unauthenticated connection. (To get remote identity, please refer to [this](https://git.xx.network/elixxir/client/-/blob/release/restlike/README.md).)
+
+    ```swift
+    /*
+    //Blocking call, do it on the background thread
+    // You need your remote identity.
+    */
+    let connection = try client.connect(withAuthentication: false, recipientContact: REMOTE_IDENTITY, e2eId: clientE2E.getId())
+    ```
+
+3. Next, create a `RequestSender`.
+
+    ```swift
+    let restLikeRequestSender = RestlikeRequestSender.live(authenticated: false)
+    ```
+
+4. Create your request that you will send.
+
+    ```swift
+    /*
+    //All fields are customizable to meet your remote configuration
+    //Content accepts any json encoded object, this is where you include your request body
+    //Method number is used to refer to get, post, put, etc.
+    */
+    let request = RestlikeMessage(
+    version: Int,
+    headers: YOUR_HEADERS,
+    content: YOUR_JSON_ENCODED_MODEL,
+    method: Int,
+    Uri: String,
+    error: String)
+    ```
+
+5. Send your request and wait for a response.
+
+    ```swift
+    /*
+    //Blocking call, do it on the background thread
+    //Response is RestLikeMessage object
+    */
+
+    let response = try? restLikeRequestSender.send(
+    client.getId(),
+    connection!.getId(),
+    request)
+
+    /* 
+    //Jumping to the main thread to update any UI with the response
+    */
+    DispatchQueue.main.async {
+    let message = response 
+    //Use the response message here to update UI
+    }
+    ```
+
+## Send E2E message
+
+1. First, create an E2E client.
+
+    ```swift
+    /*
+    //Blocking call, do it on the background thread.
+    */
+    let clientE2E = try ClientE2ELogin.live(with: client)
+    ```
+
+2. Next, to initiate a connection with the remote, use an unauthenticated connection. (To get remote identity, please refer to [this](https://git.xx.network/elixxir/client/-/blob/release/restlike/README.md).)
+
+    ```swift
+    /*
+    // Blocking call, do it on the background thread
+    // You need your remote identity.
+    */
+    let connection = try client.connect(
+    withAuthentication: false,
+    recipientContact: REMOTE_IDENTITY,
+    e2eId: clientE2E.getId())
+    ```
+
+2. Setup your messages listener.
+
+    ```swift
+    /*
+    //Blocking call, do it on the background thread
+    //messageType value must be same as the value you will use to send a message
+    */
+    connection.listen(messageType: Int) { message in
+    /* 
+    //Jumping to the main thread to update any UI with the message
+    */
+    DispatchQueue.main.async {
+        let msg = message
+        //Use the received message here to update UI
+    }
+    }
+    ```
+
+3. Send the message and wait to get the send report, which contains the delivery status.
+
+    ```swift
+    /*
+    //Blocking call, do it on the background thread
+    //messageType value must be same as the value you used to setup your messages listener
+    */
+    let sendReport = try connection?.send(
+    messageType: Int,
+    payload: YOUR_JSON_ENCODED_MODEL)
+    ```
+
+4. Wait for the message to be delivered and update the UI if needed.
+
+    ```swift
+    /*
+    //Blocking call, do it on the background thread
+    //Time is in millisecond
+    */
+
+    client.waitForDelivery(report: sendReport, timeoutMS: 30_000) { result in
+    /* 
+    //Jumping to the main thread to update any UI
+    */
+    DispatchQueue.main.async {
+        switch result {
+        case .delivered(let roundResults):
+        // You can stop loading indicator here for example
+        case .notDelivered:
+        //Show error popup here for example
+        }
+    }
+    }
+    ```
+
+
diff --git a/website/docs/cmixx/xxdk/overview.md b/website/docs/cmixx/xxdk/overview.md
new file mode 100644
index 0000000000000000000000000000000000000000..6fffc905ed09b423dfed9ce7a8ae2d4f9a5f9802
--- /dev/null
+++ b/website/docs/cmixx/xxdk/overview.md
@@ -0,0 +1,40 @@
+---
+sidebar_position: 1
+---
+# Overview
+
+
+
+The Client API (xxDK) is the client-side software for communicating with the cMix network, a privacy-protecting layer within the larger [xx network](https://xx.network/) blockchain ecosystem. cMix builds on current data protection mechanisms by extending security beyond just content to include metadata — the what, when, where, and how of user activity.
+
+:::info
+To learn more about the cMix protocol and what it offers, a good place to start is [the cMix whitepaper](https://xx.network/xxcMixwhitepaper.pdf).
+:::
+
+The xxDK helps developers provide unparalleled privacy for their users by implementing xx network messaging features such as end-to-end encryption and metadata protection. It comes with an API library and related command-line facilities that enable developers to build full-featured xx clients for all platforms. Additionally, the base messaging protocols can be extended.
+
+Some use cases for integrating the API into your applications include (but are not limited to) building:
+
+- Banking applications
+- Voting applications, such as [Votexx](https://votexx.org/)
+- Secure messaging apps for private communication, such as [xx messenger](https://xx.network/messenger/)
+
+The xxDK supports golang versions 1.17 or newer. You can find the most recent version on [Gitlab](https://git.xx.network/elixxir/client). 
+
+It's easy to get started with the xxDK. Explore the links below to find what you need.
+
+### Getting Started
+
+The [Getting Started](getting-started) guide is where to begin if you're looking to get up and running quickly.
+
+### API Quick Reference
+
+The [API Quick Reference](https://pkg.go.dev/gitlab.com/elixxir/client/xxdk) provides extensive detail on the different types and functions exposed by the xxDK.
+
+### Technical Glossary
+
+The [Technical Glossary](technical-glossary) offers meanings to unfamiliar terms and concepts specific to the cMix system.
+
+<!-- ### FAQs
+
+Refer to the FAQ for answers to some of our users' most common questions. -->
diff --git a/website/docs/cmixx/xxdk/quick-reference.md b/website/docs/cmixx/xxdk/quick-reference.md
new file mode 100644
index 0000000000000000000000000000000000000000..6d23b6be645d7c0a4716616d05e58be46609372a
--- /dev/null
+++ b/website/docs/cmixx/xxdk/quick-reference.md
@@ -0,0 +1,665 @@
+---
+sidebar_position: 3
+---
+
+# API Quick Reference
+
+This document provides brief descriptions of all public functions, types, and interfaces exposed by the Client API (xxDK). <!-- Each item links to a page with more detail.  -->
+
+:::note
+If you are new to the xxDK, you can start with the [Overview](/) and [Getting Started](./getting-started) docs.
+:::
+
+Note that if you're running the client locally, you can use `go doc` to explore the list of functions and interfaces.
+
+```go
+// cd into the `client` directory 
+go doc -all ./api
+go doc -all ./interfaces
+```
+
+## How to Use the API
+
+The API exposes multiple functions, as well as types and their associated method sets. For example, browsing through the API will show you there is a `GetRoundEvents()` callback registration function that lets your client see round events:
+
+```go
+func (c *Client) GetRoundEvents() interfaces.RoundEvents
+```
+
+`GetRoundEvents()` returns a `RoundEvents` interface. Exploring the broader xxDK for this interface  reveals a few functions, such as `AddRoundEvent()` that enable monitoring of a specified event:
+
+```go
+type RoundEvents interface {
+        // designates a callback to call on the specified event
+        // rid is the id of the round the event occurs on
+        // callback is the callback the event is triggered on
+        // timeout is the amount of time before an error event is returned
+        // valid states are the states which the event should trigger on
+        AddRoundEvent(rid id.Round, callback ds.RoundEventCallback,
+                timeout time.Duration, validStates ...states.Round) *ds.EventCallback
+
+        // designates a go channel to signal the specified event
+        // rid is the id of the round the event occurs on
+        // eventChan is the channel the event is triggered on
+        // timeout is the amount of time before an error event is returned
+        // valid states are the states which the event should trigger on
+        AddRoundEventChan(rid id.Round, eventChan chan ds.EventReturn,
+                timeout time.Duration, validStates ...states.Round) *ds.EventCallback
+
+        //Allows the un-registration of a round event before it triggers
+        Remove(rid id.Round, e *ds.EventCallback)
+}
+```
+
+Investigating the `callback` parameter of `AddRoundEvent()` yields the following prototype showing that you can receive a full `RoundInfo` object for any round event received by the client on the network:
+
+```go
+// Callbacks must use this function signature
+type RoundEventCallback func(ri *pb.RoundInfo, timedOut bool)
+```
+
+## API Quick Reference
+
+## Constants
+
+```go
+const (
+        // SaltSize size of user salts
+        SaltSize = 32
+)
+```
+
+## Functions
+
+### func CompressJpeg
+
+```go
+func CompressJpeg(imgBytes []byte) ([]byte, error)
+```
+
+`CompressJpeg` takes a JPEG image in byte format and compresses it based on desired output size.
+
+### func CompressJpegForPreview
+
+```go
+func CompressJpegForPreview(imgBytes []byte) ([]byte, error)
+```
+
+`CompressJpegForPreview` takes a JPEG image in byte format and compresses it based on desired output size.
+
+### func DownloadAndVerifySignedNdfWithUrl
+
+```go
+func DownloadAndVerifySignedNdfWithUrl(url, cert string) ([]byte, error)
+```
+
+`DownloadAndVerifySignedNdfWithUrl` retrieves the NDF from a specified URL. The NDF is processed into a protobuf containing a signature which is verified using the cert string passed in. The NDF is returned as marshaled byte data which may be used to start a client.
+
+### func LoadSecretWithMnemonic
+
+```go
+func LoadSecretWithMnemonic(mnemonic, path string) (secret []byte, err error)
+```
+
+`LoadSecretWithMnemonic` loads the encrypted secret from storage and decrypts the secret using the given mnemonic.
+
+### func NewClient
+
+```go
+func NewClient(ndfJSON, storageDir string, password []byte,
+        registrationCode string) error 
+```
+
+`NewClient` creates client storage, generates keys, connects, and registers with the network. Note that this does not register a username/identity, but merely creates a new cryptographic identity for adding such information at a later date.
+
+### func NewClientFromBackup
+
+```go
+func NewClientFromBackup(ndfJSON, storageDir string, sessionPassword,
+        backupPassphrase []byte, backupFileContents []byte) ([]*id.ID, string, error)
+```
+
+`NewClientFromBackup` constructs a new client from an encrypted backup. The backup is decrypted using the `backupPassphrase`. On successful client creation, the function will return a JSON encoded list of the E2E partners contained in the backup and a json-encoded string containing parameters stored in the backup.
+
+### func NewPrecannedClient
+
+```go
+func NewPrecannedClient(precannedID uint, defJSON, storageDir string,
+        password []byte) error
+```
+
+`NewPrecannedClient` is used for integration testing and should not be used unless you are working on the cMix gateway and servers. You cannot connect to any public networks with a precanned client.
+
+### func NewProtoClient_Unsafe
+
+```go
+func NewProtoClient_Unsafe(ndfJSON, storageDir string, password,
+        protoClientJSON []byte) error
+```
+
+`NewProtoClient_Unsafe` initializes a client object from a JSON containing predefined cryptographic which defines a user. This is designed for some specific deployment procedures and is generally unsafe. 
+
+:::note
+`NewProtoClient_Unsafe` is planned to be deprecated in favor of a new account backup API.
+:::
+
+### func NewVanityClient
+
+```go
+func NewVanityClient(ndfJSON, storageDir string, password []byte,
+        registrationCode string, userIdPrefix string) error
+```
+
+`NewVanityClient` creates a user with a receptionID that starts with the supplied prefix It creates client storage, generates keys, connects, and registers with the network. Note that this does not register a username/identity, but merely creates a new cryptographic identity for adding such information at a later date.
+
+### func StoreSecretWithMnemonic
+
+```go
+func StoreSecretWithMnemonic(secret []byte, path string) (string, error)
+```
+
+`StoreSecretWithMnemonic` creates a mnemonic and uses it to encrypt the secret. This encrypted data saved in storage.
+
+## Types
+
+### type Client
+
+```go
+type Client struct {
+        // Has unexported fields.
+}
+```
+
+### func Login
+
+```go
+func Login(storageDir string, password []byte, parameters params.Network) (*Client, error)
+```
+
+`Login` initializes a client object from existing storage.
+
+### func LoginWithNewBaseNDF_UNSAFE
+
+```go
+func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte,
+        newBaseNdf string, parameters params.Network) (*Client, error)
+```
+
+`LoginWithNewBaseNDF_UNSAFE` initializes a client object from existing storage while replacing the base NDF. This is designed for some specific deployment procedures and is generally unsafe.
+
+### func LoginWithProtoClient
+
+```go
+func LoginWithProtoClient(storageDir string, password []byte, protoClientJSON []byte,
+        newBaseNdf string, parameters params.Network) (*Client, error)
+```
+
+`LoginWithProtoClient` creates a client object with a protoclient JSON containing the cryptographic primitives. This is designed for some specific deployment procedures and is generally unsafe.
+
+### func OpenClient
+
+```go
+func OpenClient(storageDir string, password []byte, parameters params.Network) (*Client, error)
+```
+
+Open a client session, but do not connect to the network or log in.
+
+### func (*Client) AddService
+
+```go
+func (c *Client) AddService(sp Service) error
+```
+
+`AddService` adds a service to be controlled by the client thread control; these will be started and stopped with the network follower.
+
+### func (*Client) ConfirmAuthenticatedChannel
+
+```go
+func (c *Client) ConfirmAuthenticatedChannel(recipient contact.Contact) (id.Round, error)
+```
+
+`ConfirmAuthenticatedChannel` creates an authenticated channel out of a valid received request and sends a message to the requestor that the request has been confirmed. It will not run if the network state is not healthy. An error will be returned if a channel already exists, if a request does not exist, or if the passed in contact does not exactly match the received request. Can be retried.
+
+### func (*Client) ConstructProtoUerFile
+
+```go
+func (c *Client) ConstructProtoUerFile() ([]byte, error)
+```
+
+`ConstructProtoUerFile` is a helper function which is used for proto client testing. This is used for development testing.
+
+### func (*Client) DeleteAllRequests
+
+```go
+func (c *Client) DeleteAllRequests() error
+```
+
+`DeleteAllRequests` clears all requests from client's auth storage.
+
+### func (*Client) DeleteContact
+
+```go
+func (c *Client) DeleteContact(partnerId *id.ID) error
+```
+
+`DeleteContact` removes a partner from the client's storage.
+
+### func (*Client) DeleteReceiveRequests
+
+```go
+func (c *Client) DeleteReceiveRequests() error
+```
+
+`DeleteReceiveRequests` clears receive requests from client's auth storage.
+
+### func (*Client) DeleteSentRequests
+
+```go
+func (c *Client) DeleteSentRequests() error
+```
+
+`DeleteSentRequests` clears sent requests from client's auth storage.
+
+### func (*Client) GetAuthRegistrar
+
+```go
+func (c *Client) GetAuthRegistrar() interfaces.Auth
+```
+
+`GetAuthRegistrar` gets the object which allows the registration of auth callbacks.
+
+### func (*Client) GetAuthenticatedChannelRequest
+
+```go
+func (c *Client) GetAuthenticatedChannelRequest(partner *id.ID) (contact.Contact, error)
+```
+
+`GetAuthenticatedChannelRequest` returns the contact received in a request if one exists for the given userID. Returns an error if no contact is found.
+
+### func (*Client) GetBackup
+
+```go
+func (c *Client) GetBackup() *interfaces.BackupContainer
+```
+
+`GetBackup` returns a pointer to the backup container so that the backup can be set and triggered.
+
+### func (*Client) GetComms
+
+```go
+func (c *Client) GetComms() *client.Comms
+```
+
+`GetComms` returns the client comms object.
+
+### func (*Client) GetErrorsChannel
+
+```go
+func (c *Client) GetErrorsChannel() <-chan interfaces.ClientError
+```
+
+`GetErrorsChannel` returns a channel which passess errors from the long running threads controlled by `StartNetworkFollower` and `StopNetworkFollower.`
+
+### func (*Client) GetHealth
+
+```go
+func (c *Client) GetHealth() interfaces.HealthTracker
+```
+
+`GetHealth` returns the health tracker for registration and polling.
+
+### func (*Client) GetNetworkInterface
+
+```go
+func (c *Client) GetNetworkInterface() interfaces.NetworkManager
+```
+
+`GetNetworkInterface` returns the client’s network interface.
+
+### func (*Client) GetNodeRegistrationStatus
+
+```go
+func (c *Client) GetNodeRegistrationStatus() (int, int, error)
+```
+
+`GetNodeRegistrationStatus` gets the current state of node registration in the network. It returns the total number of nodes in the NDF and the number of those with which the client is currently registered. An error is returned if the network is not healthy.
+
+### func (*Client) GetPreferredBins
+
+```go
+func (c *Client) GetPreferredBins(countryCode string) ([]string, error)
+```
+
+`GetPreferredBins` returns the geographic bin or bins that the provided two-character country code is a part of.
+
+### func (*Client) GetRateLimitParams
+
+```go
+func (c *Client) GetRateLimitParams() (uint32, uint32, int64)
+```
+
+`GetRateLimitParams` retrieves the rate limiting parameters.
+
+### func (*Client) GetRelationshipFingerprint
+
+```go
+func (c *Client) GetRelationshipFingerprint(partner *id.ID) (string, error)
+```
+
+`GetRelationshipFingerprint` returns a unique 15 character fingerprint for an E2E relationship. An error is returned if no relationship with the partner is found.
+
+### func (*Client) GetRng
+
+```go
+func (c *Client) GetRng() *fastRNG.StreamGenerator
+```
+
+`GetRng` returns the client’s rng (random number generator) object.
+
+### func (*Client) GetRoundEvents
+
+```go
+func (c *Client) GetRoundEvents() interfaces.RoundEvents
+```
+
+`GetRoundEvents` registers a callback for round events.
+
+### func (*Client) GetRoundResults
+
+```go
+func (c *Client) GetRoundResults(roundList []id.Round, timeout time.Duration,
+        roundCallback RoundEventCallback) error
+```
+
+`GetRoundResults` adjudicates on the rounds requested. It checks if they are older rounds or in-progress rounds.
+
+### func (*Client) GetStorage
+
+```go
+func (c *Client) GetStorage() *storage.Session
+```
+
+`GetStorage` returns the client storage object.
+
+### func (*Client) GetSwitchboard
+
+```go
+func (c *Client) GetSwitchboard() interfaces.Switchboard
+```
+
+`GetSwitchboard` returns the switchboard for registration.
+
+### func (*Client) GetUser
+
+```go
+func (c *Client) GetUser() user.User
+```
+
+`GetUser` returns the current user identity for this client. This can be serialized into a byte stream for out-of-band sharing.
+
+### func (*Client) HasAuthenticatedChannel
+
+```go
+func (c *Client) HasAuthenticatedChannel(partner *id.ID) bool
+```
+
+`HasAuthenticatedChannel` returns true if an authenticated channel exists for a specified partner.
+
+### func (*Client) HasRunningProcessies
+
+```go
+func (c *Client) HasRunningProcessies() bool
+```
+
+`HasRunningProcessies` checks if any background threads are running and returns `true` if one or more are.
+
+### func (*Client) MakePrecannedAuthenticatedChannel
+
+```go
+func (c *Client) MakePrecannedAuthenticatedChannel(precannedID uint) (contact.Contact, error)
+```
+
+`MakePrecannedAuthenticatedChannel` creates an insecure e2e relationship with a precanned user.
+
+:::note
+`MakePrecannedAuthenticatedChannel` is used for integration testing and is unavailable on public networks.
+:::
+
+### func (*Client) MakePrecannedContact
+
+```go
+func (c *Client) MakePrecannedContact(precannedID uint) contact.Contact
+```
+
+`MakePrecannedContact` creates an insecure e2e contact object for a precanned user.
+
+### func (*Client) NetworkFollowerStatus
+
+```go
+func (c *Client) NetworkFollowerStatus() Status
+```
+
+`NetworkFollowerStatus` gets the state of the network follower. It returns:
+
+- `Stopped` - 0
+- `Starting` - 1000
+- `Running` - 2000
+- `Stopping` - 3000
+
+### func (*Client) NewCMIXMessage
+
+```go
+func (c *Client) NewCMIXMessage(contents []byte) (format.Message, error)
+```
+
+`NewCMIXMessage` creates a new cMix message with the right properties for the current cMix network.
+
+### func (*Client) RegisterEventCallback
+
+```go
+func (c *Client) RegisterEventCallback(name string,
+        myFunc interfaces.EventCallbackFunction) error
+```
+
+`RegisterEventCallback` records the given function to receive `ReportableEvent` objects. It returns the internal index of the callback so that it can be deleted later.
+
+### func (*Client) RegisterForNotifications
+
+```go
+func (c *Client) RegisterForNotifications(token string) error
+```
+
+`RegisterForNotifications` allows a client to register for push notifications. Note that clients are not required to register for push notifications especially as these rely on third parties i.e., Firebase, that may represent a security risk to the user.
+
+### func (*Client) ReportEvent
+
+```go
+func (c *Client) ReportEvent(priority int, category, evtType, details string)
+```
+
+`ReportEvent` reports an event from the client to API users, providing a priority, category, event type, and details.
+
+### func (*Client) RequestAuthenticatedChannel
+
+```go
+func (c *Client) RequestAuthenticatedChannel(recipient, me contact.Contact,
+        message string) (id.Round, error)
+```
+
+`RequestAuthenticatedChannel` sends a request to another party to establish an authenticated channel. It will not run if the network state is not healthy. An error will be returned if a channel already exists or if a request was already received. When a confirmation occurs, the channel will be created and the callback will be called. Can be retried.
+
+### func (*Client) ResetSession
+
+```go
+func (c *Client) ResetSession(recipient, me contact.Contact,
+        message string) (id.Round, error)
+```
+
+`ResetSession` resets an authenticate channel that already exists.
+
+### func (*Client) SendCMIX
+
+```go
+func (c *Client) SendCMIX(msg format.Message, recipientID *id.ID,
+        param params.CMIX) (id.Round, ephemeral.Id, error)
+```
+
+`SendCMIX` sends a "raw" CMIX message payload to the provided recipient. Note that both `SendE2E` and `SendUnsafe` call `SendCMIX`. Returns the round ID of the round the payload was sent or an error if it fails.
+
+### func (*Client) SendE2E
+
+```go
+func (c *Client) SendE2E(m message.Send, param params.E2E) ([]id.Round,
+        e2e.MessageID, time.Time, error)
+```
+
+`SendE2E` sends an end-to-end payload to the provided recipient with the provided message type. Returns the list of rounds in which parts of the message were sent or an error if it fails.
+
+### func (*Client) SendManyCMIX
+
+```go
+func (c *Client) SendManyCMIX(messages []message.TargetedCmixMessage,
+        params params.CMIX) (id.Round, []ephemeral.Id, error)
+```
+
+`SendManyCMIX` sends many "raw" CMIX message payloads to each of the provided recipients. Used for group chat functionality. Returns the round ID of the round the payload was sent or an error if it fails.
+
+### func (*Client) SendUnsafe
+
+```go
+func (c *Client) SendUnsafe(m message.Send, param params.Unsafe) ([]id.Round,
+        error)
+```
+
+`SendUnsafe` sends an unencrypted payload to the provided recipient with the provided message type. Returns the list of rounds in which parts of the message were sent or an error if it fails. NOTE: Do not use this function unless you know what you are doing.
+
+### func (*Client) SetProxiedBins
+
+```go
+func (c *Client) SetProxiedBins(binStrings []string) error
+```
+
+`SetProxiedBins` updates the host pool filter that filters out gateways that are not in one of the specified bins.
+
+### func (*Client) StartNetworkFollower
+
+```go
+func (c *Client) StartNetworkFollower(timeout time.Duration) error
+```
+
+`StartNetworkFollower` kicks off the tracking of the network. It starts long running network client threads and returns an object for checking state and stopping those threads. Call this when returning from sleep and close when going back to sleep. These threads may become a significant drain on battery when offline; ensure they are stopped if there is no internet access.
+
+**Threads Started:**
+
+1. Network Follower (/network/follow.go) - Tracks the network events and hands them off to workers for handling
+2. Historical Round Retrieval (/network/rounds/historical.go) - Retrieves data about rounds which are too old to be stored by the client
+3. Message Retrieval Worker Group (/network/rounds/retrieve.go) - Requests all messages in a given round from the gateway of the last node
+4. Message Handling Worker Group (/network/message/handle.go) - Decrypts and partitions messages when signals via the Switchboard
+5. Health Tracker (/network/health) - Via the network instance tracks the state of the network
+6. Garbled Messages (/network/message/garbled.go) - Can be signaled to check all recent messages which could be be decoded
+Uses a message store on disk for persistence
+7. Critical Messages (/network/message/critical.go) - Ensures all protocol layer mandatory messages are sent
+Uses a message store on disk for persistence
+8. KeyExchange Trigger (/keyExchange/trigger.go) -Responds to sent rekeys and executes them
+9. KeyExchange Confirm (/keyExchange/confirm.go) - Responds to confirmations of successful rekey operations
+10. Auth Callback (/auth/callback.go) - Handles both auth confirm and requests
+
+### func (*Client) StopNetworkFollower
+
+```go
+func (c *Client) StopNetworkFollower() error
+```
+
+`StopNetworkFollower` stops the network follower if it is running. It returns errors if the follower is in the wrong state to stop or if it fails to stop it. If the network follower is running and this fails, the client object will most likely be in an unrecoverable state and need to be trashed.
+
+### func (*Client) UnregisterEventCallback
+
+```go
+func (c *Client) UnregisterEventCallback(name string)
+```
+
+`UnregisterEventCallback` deletes the callback identified by the index. It returns an error if it fails.
+
+### func (*Client) UnregisterForNotifications
+
+```go
+func (c *Client) UnregisterForNotifications() error
+```
+
+`UnregisterForNotifications` turns off notifications for this client.
+
+### func (*Client) VerifyOwnership
+
+```go
+func (c *Client) VerifyOwnership(received, verified contact.Contact) bool
+```
+
+`VerifyOwnership` checks if the ownership proof on a passed contact matches the identity in a verified contact.
+
+### type RoundEventCallback
+
+```go
+type RoundEventCallback func(allRoundsSucceeded, timedOut bool, rounds map[id.Round]RoundResult)
+```
+
+Callback interface which reports the requested rounds. Designed such that the caller may decide how much detail they need.
+
+`allRoundsSucceeded`: Returns false if any rounds in the round map were unsuccessful. Returns true if ALL rounds were successful.
+
+`timedOut`: Returns true if any of the rounds timed out while being monitored. Returns false if all rounds statuses were returned.
+
+`rounds`: Contains a mapping of all previously requested rounds to their respective round results.
+
+### type RoundResult
+
+```go
+type RoundResult uint
+```
+
+Enum of possible round results to pass back
+
+### Const
+
+```go
+const (
+        TimeOut RoundResult = iota
+        Failed
+        Succeeded
+)
+```
+
+### func (RoundResult) String
+
+```go
+func (rr RoundResult) String() string
+```
+
+### type Service
+
+```go
+type Service func() (stoppable.Stoppable, error)
+```
+
+A service process starts itself in a new thread, returning from the originator a stoppable to control it.
+
+### type Status
+
+```go
+type Status int
+```
+
+### Const
+
+```go
+const (
+        Stopped  Status = 0
+        Running  Status = 2000
+        Stopping Status = 3000
+)
+```
+
+### func (Status) String
+
+```go
+func (s Status) String() string
+```
\ No newline at end of file
diff --git a/website/docs/cmixx/xxdk/technical-glossary.md b/website/docs/cmixx/xxdk/technical-glossary.md
new file mode 100644
index 0000000000000000000000000000000000000000..05eddb12bddbf38e68e853509b92801f372af8c6
--- /dev/null
+++ b/website/docs/cmixx/xxdk/technical-glossary.md
@@ -0,0 +1,97 @@
+---
+sidebar_position: 6
+---
+
+# Technical Glossary
+
+There are several terms and concepts in these docs that are specific to the cMix network. This page lists some of the most important and a few general computing terms.
+
+## A
+
+### **Authenticated Channel**
+
+An authenticated channel is a state where both the sender and recipient have verified their identities. cMix clients can send and receive authenticated channel requests.
+
+## C
+
+### **Client**
+
+A computer performing the 'client' role in a client-server network architecture.
+
+### **cMix Client**
+
+A cMix client is a unique user in the cMix network. It can send and receive private data. All cMix clients use the [Client API](https://git.xx.network/elixxir/client) to interact with the cMix network.
+
+### **Client Session**
+
+See **[Session](#session-also-client-session)**
+
+### **Client Command-Line Interface (CLI)**
+
+The Client CLI is a command-line tool intended for testing xx network functionality. It can send and receive messages and authenticated channel requests. For instructions on how to set it up, see [*Set Up the Client Locally*](./getting-started.md/#set-up-the-client-locally).
+
+## G
+
+### **Gateway (also Network Gateway)**
+
+The public-facing component of a node. One exists for each node. Gateways store received messages and provide public access to data.
+
+## P
+
+### **Permissioning Server**
+
+The permissioning server, also referred to as the scheduling server, manages the [NDF](#network-definition-file-ndf) for cMix clients and servers. It schedules cMix rounds within the network. 
+
+### **Precanned Client**
+
+A precanned client (created with `NewPrecannedClient()`) is used for integration testing and should not be used unless you are working on the cMix gateway and servers. You cannot connect to any public networks with a precanned client.
+
+## R
+
+### **Rekeying**
+
+A process of renegotiating a key with a partner. This is triggered based on how frequently the current session key is used. When that passes a threshold, a renegotiation is triggered. The user then uses an unused session with its unique key and sends that over to their partner. The partner creates a new send and receive relationship with this public key to continue communication with their partner.
+
+### **Round**
+
+The process by which batches of messages are processed by the mixnet. Rounds are represented by positive integers in logs.
+
+## S
+
+### **Server**
+
+A computer performing the 'server' role in a client-server network architecture.
+
+### **Session (also Client Session)**
+
+An encrypted key-value (EKV) store containing the cryptographic keys and state of a cMix client.
+
+## U
+
+### **User Discovery (UD)**
+
+User Discovery helps users make first contact with other users. Using the "single use" package within the xxDK, User Discovery implements a completely private user lookup where the system cannot determine which user is querying. The system leverages Twilio to verify emails and phone numbers if the user would like to do so.
+
+## N
+
+### **Network Definition File (NDF)**
+
+A JSON file required for registering a cMix client as a user within the cMix network. It describes how to communicate with the Nodes, Gateways, and other servers on the network. For more detail, see *[Network Definition File (NDF)](https://xxnetwork.wiki/index.php/Network_Definition_File_(NDF))*.
+
+### **Network Gateway**
+
+See **[Gateway](#gateway-also-network-gateway)**
+
+### **Network Health**
+
+The state of the network as tracked by network followers. It is either healthy or unhealthy. The network is in a healthy state when the health tracker sees rounds completed successfully and vice versa.
+
+### **Node**
+
+A core operator of the cMix network. Executes the cMix protocol and validates the xx blockchain.
+
+## V
+
+### **Vanity Client**
+
+A user whose cMix ID starts with a supplied prefix (such as their username). It is created with the `NewVanityClient()` function, which generates IDs randomly until it meets the required set of criteria. Similar to Bitcoin's vanity addresses.
\ No newline at end of file
diff --git a/website/docs/dapps/_category_.json b/website/docs/dapps/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..75bc5b708e78b99255202dd13d8ed301fe33b00b
--- /dev/null
+++ b/website/docs/dapps/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "dApps",
+  "position": 6,
+  "link": {
+    "type": "generated-index",
+    "description": "3rd Party dApps"
+  }
+}
diff --git a/website/docs/dapps/intro.md b/website/docs/dapps/intro.md
new file mode 100644
index 0000000000000000000000000000000000000000..4d944060479dc271b99e7163c658e3254fc987b8
--- /dev/null
+++ b/website/docs/dapps/intro.md
@@ -0,0 +1 @@
+todo
\ No newline at end of file
diff --git a/website/docs/dapps/phoenixx.md b/website/docs/dapps/phoenixx.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/website/docs/dapps/proxxy.md b/website/docs/dapps/proxxy.md
new file mode 100644
index 0000000000000000000000000000000000000000..dd42066aff9b19d5a1a5147b09f23ecf825b6e04
--- /dev/null
+++ b/website/docs/dapps/proxxy.md
@@ -0,0 +1,286 @@
+# Proxxy
+
+Proxxy is a technology that leverages the xx Network's
+[cMixx](../cmix/cmix.md) network to provide metadata protection
+to users of web3.
+
+With Proxxy, any wallet can integrate better privacy, in order to avoid
+user's data being collected by RPC providers.
+
+Currently, in order to use Proxxy, users have to install a desktop
+application, which will act as a local proxy to supported blockchain
+networks.
+
+In principle, any wallet that supports adding custom networks will work
+with the Proxxy App, but for now MetaMask is the main wallet being
+targeted.
+
+In the future, Proxxy technology will be made into an API that can be
+integrated directly in any wallet. However, this will always be
+dependent on developers of said wallets doing the integration,
+potentially in partnerships with the xx Network.
+
+You can use Proxxy now by downloading the Desktop App, navigating to the
+Proxxy [webpage](https://proxxy.xx.network), and following the
+connection flow.
+
+## Why is Proxxy needed?
+
+Anytime a user interacts with a blockchain using a website or mobile
+wallet connecting to anything other than the RPC endpoint of a
+personally operated full node, it is leaking data that can be gathered.
+
+This data might not be collected by RPC providers, but it can be. This
+lack of privacy has been known and acknowledged for a long time
+(Coindesk
+[article](https://www.coindesk.com/markets/2018/11/08/the-little-known-ways-ethereum-reveals-user-location-data/))
+and remains one to this day with RPC providers:
+
+***"MetaMask must have an RPC provider to work, and an RPC provider must
+collect your IP and wallet address to work"*** [^1]
+
+When a user connects to a public RPC endpoint, of any blockchain, the
+owner of that endpoint can see all the traffic coming and going.
+
+Metadata such as IP address can be used to determine location, date &
+time can be used to find routines, and often more, such as tracking data
+from a browser that can be used to create social graphs, user profiles
+and personal information, etc ([Understanding browser
+tracking](https://edu.gcfglobal.org/en/internetsafety/understanding-browser-tracking/1/)).
+
+The following image represents how user metadata is leaked to the RPC
+provider when using MetaMask.
+
+![](@site/static/img/Regular_MetaMask.png)
+
+By collecting the metadata and transaction data, Infura can associate a
+source address of any transaction with information that might help
+identify the user, effectively breaking the pseudonymity provided by the
+blockchain.
+
+With Proxxy, users are safe to interact with a public RPC endpoint, and
+their metadata and/or browser data does not end up in the possession of
+the company operating the RPC infrastructure.
+
+## How does Proxxy work?
+
+Proxxy uses a pair of client / server applications that communicate over
+the cMixx network.
+
+The client receives RPC requests from the wallet application interacting
+with a given blockchain and sends them over cMixx to the Relay server.
+
+The Relay server then forwards the request to configured RPC endpoints
+according to the blockchain network the user is interacting with.
+
+The RPC endpoint replies to the request and the Relay server then
+forwards it back to the client over x, which then responds back to
+the wallet application.
+
+The source code for Proxxy client / server applications can be found
+[here](https://github.com/xx-labs/blockchain-cmix-relay).
+
+The Proxxy App wraps the client side application, so that the user is
+presented with a simple interface and experience, instead of requiring
+the use of a command line application.
+
+The source code for the Proxxy App and Website can be found
+[here](https://github.com/xx-labs/proxxy).
+
+The following image shows how user metadata is protected when using
+MetaMask with the Proxxy App.
+
+
+![](@site/static/img/MetaMask_with_Proxxy.png)
+
+
+Infura can still collect metadata, but now this will always be
+information about the Relay Server, so there is no way to associate
+source addresses to user information, thus maintaining the pseudonymity
+properties provided by the blockchain.
+
+### How does the app contact a Relay Server?
+
+The Proxxy App can contact any number of Relay Servers, and the only
+information required is the Relay server contact data, which is
+generated by the server when connecting to the cMixx network.
+
+The xx Foundation maintains a
+[file](https://nx38767.your-storageshare.de/s/8PTGRzoHtxNpHZy) with the
+contact data of active Relay Servers.
+
+It's important to note that even if the xx Foundation was malicious, and
+changed the contact information of the Relay Servers, user's metadata is
+STILL PROTECTED by cMixx. This can be seen in the image above, as the
+Relay Server can only pick up messages from the cMixx network, which have
+been stripped of all metadata.
+
+In other words, malicious Relay Servers cannot gather user metadata over
+the cMixx network. This is a clear contrast to some privacy protecting
+technologies, which rely on a direct connection with a relay server.
+When a wallet does not use cMixx and directly connects to a relay server,
+a malicious relay server provider will be able to gather user metadata,
+the same as an RPC provider.
+
+## Supported Networks
+
+Currently, the following networks are supported by Proxxy.
+
+Mainnets:
+
+-   Ethereum
+-   Avalanche C-Chain
+-   Polygon
+-   Binance Smart Chain (also known as BSC or BNB)
+-   Astar
+-   Moonbeam
+-   Fantom
+-   Arbitrum (ETH L2)
+-   Optimism (ETH L2)
+-   Celo
+-   Aurora
+-   Shiden
+-   Moonriver
+
+Testnets:
+
+-   Ethereum Goerli
+-   Ethereum Sepolia
+-   Avalanche Fuji C-Chain
+-   Polygon Mumbai
+-   Binance Smart Chain Testnet
+-   Fantom Testnet
+-   Celo Alfajores
+-   Aurora Testnet
+
+Support for any more EVM based networks can be added easily on demand,
+via the xxfoundation canny
+[page](https://xxfoundation.canny.io/proxxy?selectedCategory=supported-networks).
+
+## Metamask Recommendations
+
+Before setting up Proxxy with MetaMask, it is recommended to disable
+multiple settings that reduce the user's privacy.
+
+In order to disable these settings, open your MetaMask wallet, go to
+Settings -> Security & Privacy and disable the following:
+
+-   Show balance and token price checker
+-   Show incoming transactions
+-   Autodetect tokens
+-   Batch account balance requests
+-   Participate in MetaMetrics
+
+## Download and Install
+
+**The Proxxy app is available for Windows, Linux and Mac machines.**
+**Refer to the detailed instructions below for your operating
+    system.**
+    
+###  Windows Instructions.
+1.  Download the Proxxy file for Windows
+[here](https://nx38767.your-storageshare.de/s/wYsHnZZKZqMZXxW/download?path=%2F&files=Proxxy-win-x64.exe).
+2.  In the file browser, navigate to the folder where the
+application was downloaded to and double-click the file.
+![](@site/static/img/Downloaded_Proxxy_Exe_file.png)
+
+3.  You may get a notice saying "Windows protected your PC"
+preventing you from running the program. This is common with
+newer applications that have not yet been registered with
+Windows OS. To get past the SmartScreen filter, click on the
+"*More info"* link.      
+![](@site/static/img/More_Info.png)
+
+4.  Next, click the *Run anyway* button and the setup will
+launch.
+![](@site/static/img/Run_Anyway.png)
+
+### macOS Instructions.
+1.  Download the binary for macOS and for your CPU architecture:
+[x64](https://nx38767.your-storageshare.de/s/wYsHnZZKZqMZXxW/download?path=%2F&files=Proxxy-mac-x64.zip)
+or
+[arm64](https://nx38767.your-storageshare.de/s/wYsHnZZKZqMZXxW/download?path=%2F&files=Proxxy-mac-arm64.zip),
+which you can check on the "About This Mac" page. The Intel
+version (x64) will work on Apple Silicon devices (arm64) as
+well.
+2.  Open the Finder, head to Downloads, and double click on the
+file to unzip the application.
+
+![](@site/static/img/Unzip_proxxy.png)
+
+3.  Now that you have the Proxxy application unzipped, you can
+drag it to the *Applications* folder on the left side of the
+finder.
+
+![](@site/static/img/Proxxy_to_applications_folder.png)
+
+4.  Go to the *Applications* folder, find the *Proxxy* app in
+the application list, and double click to open.
+
+![](@site/static/img/Proxxy_in_applications.png)
+
+5.  A warning will appear saying that the developer cannot be
+verified. Click the *OK b*utton. This warning might look
+different on older macOS versions, which could have a
+*Cancel* button. If so, press that button instead.
+![](@site/static/img/Proxxy_warning.png)
+6.  Next, click on the Apple icon in the top left corner of your
+screen in the menu bar. In the drop-down menu, select System
+*Preferences…*.
+![](@site/static/img/Open_System_Preferences_from_Apple_Menu.png)If
+your machine is running macOS Ventura (version 13 and up),
+you should select "System Settings..."
+instead.![](@site/static/img/System_settings.png)
+7.  The System Preferences window will show up. Click on
+*Security & Privacy*.
+![](@site/static/img/Security_&_Privacy_in_System_Preferences.png)If
+your machine is running macOS Ventura (version 13 and up),
+the menu is now called "Privacy &
+Security"![](@site/static/img/Macos_PrivacyAndSecurity.png)
+8.  Scroll down on the settings until you find a prompt where it
+says *"Proxxy" was blocked…*, click the *Open Anyway*
+button.
+
+![](@site/static/img/Open_anyway.png)
+
+9.  You might be prompted to insert your password or use TouchID
+in order to confirm this action.
+
+![](@site/static/img/Touchid_confirm.png)
+
+10. In the window that opens, click the *Open* button and the
+Proxxy app will launch.
+![](@site/static/img/Open_proxxy.png)
+11. When launching the app for the first time after unblocking
+it in the Security settings in some machines, it will stay
+black and not load. If this happens, close the app and open
+it again. It should now work.
+### Linux instructions.
+1.  Download the file, according to your CPU architecture:
+[x64](https://nx38767.your-storageshare.de/s/wYsHnZZKZqMZXxW/download?path=%2F&files=Proxxy-linux-x64)
+or
+[arm64](https://nx38767.your-storageshare.de/s/wYsHnZZKZqMZXxW/download?path=%2F&files=Proxxy-linux-arm64)
+2.  Open the defualt file manager (Ex. Gnome/Files, KDE/Dolphin,
+etc.).
+3.  Browse to the location of the file.
+4.  Right click the file and select "Properties".
+5.  A window will appear, (Example of Gnome/Files shown below)
+select the "Permissions" tab, check the "Execute: Allow
+executing file as program" box and close the window.
+![](@site/static/img/linux+x.png)
+6.  You can now launch the *Proxxy* application by
+double-clicking the file right from the file manager.
+
+3.  After the App launches, head back to the Proxxy
+    [webpage](https://proxxy.xx.network) and follow the rest of the
+    instructions.
+4.  **If you are using the Brave browser, please note that you need to
+    disable Brave Shield in order to be able to connect the proxxy
+    webpage to the app.**
+    
+    ![](@site/static/img/Proxxy.png)
+    
+
+<references />
+
+[^1]: https://consensys.io/blog/consensys-data-retention-update
diff --git a/website/docs/dapps/speakeasy.md b/website/docs/dapps/speakeasy.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/website/docs/dapps/usecases/test.md b/website/docs/dapps/usecases/test.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/website/docs/dapps/xxm.md b/website/docs/dapps/xxm.md
new file mode 100644
index 0000000000000000000000000000000000000000..9b4e1c7c1b065d46b47ec0873c567324945e56f7
--- /dev/null
+++ b/website/docs/dapps/xxm.md
@@ -0,0 +1,7 @@
+# xx Messenger
+
+[xx Messenger](https://xxmessenger.io/) is a messaging app originally developed by the Elixxir team. The aim of the team was to use the app as a global test and build out the [xxDK](../cmix/xxdk/overview.md)
+
+xx Messgenger is no longer being activly developed but has functioning [Android](https://links.xx.network/playstore) and [iOS](https://links.xx.network/appstore) apps. It can be used "as is" but should not be considered "stable".
+
+Source code for both platforms, [Android](https://github.com/xxfoundation/elixxir-xx-Messenger-Android) and [iOS](https://github.com/xxfoundation/elixxir-xx-messenger-iOS), are available for anyone who wishes to make use of it.
\ No newline at end of file
diff --git a/website/docs/intro.md b/website/docs/intro.md
index 984aa114fcdd848be5d8a306bd4e92f71eaf241e..68bd2c385e6d862a079fd29c60a7f42c087fa073 100644
--- a/website/docs/intro.md
+++ b/website/docs/intro.md
@@ -3,46 +3,21 @@ sidebar_position: 1
 slug: /
 ---
 
-# Tutorial Intro
+# xx network Documentation
 
-Let's discover **Docusaurus in less than 5 minutes**.
+This documentation aims to help understand the core concepts of xx network, its blockchain (xxChain) and its communication layer (cMixx). You will also find documentation covering advanced topics, end-user tools, use-cases and tutorials.
 
-## Getting Started
+As an open-source project, suggesting new topics, adding new content, and providing corrections are welcome. All documentation can be edited via GitLab. If you're unsure how, follow these instructions (TODO).
 
-Get started by **creating a new site**.
+# Getting started
 
-Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
+If you are unfamiliar with the xx network we recommend reviewing ...
 
-### What you'll need
+ * [Intro to xx network](overview/xxnetwork.md) - An overview of the xx network
 
-- [Node.js](https://nodejs.org/en/download/) version 18.0 or above:
-  - When installing Node.js, you are recommended to check all checkboxes related to dependencies.
+# Modules
 
-## Generate a new site
-
-Generate a new Docusaurus site using the **classic template**.
-
-The classic template will automatically be added to your project after you run the command:
-
-```bash
-npm init docusaurus@latest my-website classic
-```
-
-You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
-
-The command also installs all necessary dependencies you need to run Docusaurus.
-
-## Start your site
-
-Run the development server:
-
-```bash
-cd my-website
-npm run start
-```
-
-The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
-
-The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.
-
-Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.
+ * [xxChain](xxchain/xxchain.md) - xxChain specific documentation.
+ * [cMixx](cmixx/cmixx.md) - cMixx specific documentation.
+ * [Tools](tools/) - End-user documentation. (Explorers, Wallets, Staking, Etc.)
+ * [dApps](dapps/intro.md) - 3rd Party dApps and Use-cases
diff --git a/website/docs/overview/_category_.json b/website/docs/overview/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..6585a6dd97b1ca3e069ce954e56bc6daaef67da5
--- /dev/null
+++ b/website/docs/overview/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "Intro to xx network",
+  "position": 2,
+  "link": {
+    "type": "generated-index",
+    "description": "Overview of the xx Network"
+  }
+}
diff --git a/website/docs/overview/chain.md b/website/docs/overview/chain.md
new file mode 100644
index 0000000000000000000000000000000000000000..c81eb9ed914feb53142b38f8ac254366eff7268d
--- /dev/null
+++ b/website/docs/overview/chain.md
@@ -0,0 +1,7 @@
+---
+sidebar_position: 2
+---
+
+# What is xx Chain?
+
+xx Chain is the unique consensus protocol that protects and secures the xx Network blockchain. After transactional data is neutralized through cMixx, payments are passed to the decentralized xx Nodes running the xx Chain protocol. The nodes then confirm transactions and add them to the xx blockchain. Learn more in the xx consensus whitepaper.
\ No newline at end of file
diff --git a/website/docs/overview/cmix.md b/website/docs/overview/cmix.md
new file mode 100644
index 0000000000000000000000000000000000000000..411fac5b3c754171e4b22f95f4ccf828bf0f9dad
--- /dev/null
+++ b/website/docs/overview/cmix.md
@@ -0,0 +1,8 @@
+---
+sidebar_position: 3
+---
+
+# What is cMixx?
+
+cMixx is the end-to-end encryption tool we use to protect your privacy. It uses a revolutionary metadata shredding technology that obscures the metadata you share when sending messages, making payments, and transferring data. cMixx does this by mixing all transactions together in batches or “anonymity sets” and processing them simultaneously, which shreds all metadata and prevents third parties from analyzing activity patterns and connecting senders to recipients. Read more about it in the cMixx whitepaper.
+![Message Mixing System Comic](@site/static/img/Message_Mixing_System_Comic.jpg)
\ No newline at end of file
diff --git a/website/docs/overview/softwareOverview.md b/website/docs/overview/softwareOverview.md
new file mode 100644
index 0000000000000000000000000000000000000000..b869451553c688c99941d775a84d534abd5e11ca
--- /dev/null
+++ b/website/docs/overview/softwareOverview.md
@@ -0,0 +1,245 @@
+# xx Network Software Overview
+
+![](@site/static/img/Codebase_Overview_Figure_-v3.0-.png)
+The xx Network codebase is combined between xx Labs’ consensus software
+and Elixxir’s cMixx protocol.
+
+Elixxir software is organized into four groups of repositories as shown
+in the figure: Core, Services, Clients, and Tools. The *Core* libraries
+handle functionality across Clients and Services, which contain data
+structures, interfaces, and cryptography common to many xx Network
+components. *Services* implement various messenger features, as well as
+authorizing Clients and Nodes to join the network. *Clients* interact
+with the network using a shared [Client API (xxDK)](../cmix/xxdk/overview.md). *Tools* provide several
+interfaces and utilities to deploy, test, and debug the network.
+
+Most of the Elixxir code found in the Core and Services is written in
+the Go programming language. The repositories listed as public below can
+be found on the public [Elixxir](https://git.xx.network/elixxir) and [xx
+network](https://git.xx.network/xx_network) Git pages. Most software is
+posted on a git server run by xx Network.
+
+xx Labs' software is based on Substrate and involves a fork of Substrate
+and custom "pallets" implementing xx Network-specific features. This
+software is mainly hosted on public [GitHub](https://github.com/xx-labs)
+repositories but will be mostly moved to the [xx
+labs](https://git.xx.network/xx-labs) on the xx Network git shortly.
+
+To follow the setup guide, most Node operators will likely elect to
+download the prepackaged tarballs containing the compiled binaries. To
+learn more, refer to the *Node and Gateway Software* section.
+
+## [xx network Codebase](https://git.xx.network/xx_network/)
+:::note
+TODO Public/Private note
+:::
+### xx network/[Primitives](https://git.xx.network/xx_network/primitives)
+
+The xx network Primitives repository contains the basic data structures
+and utilities used in the Elixxir and Praxxis codebases. This includes
+the ID structure for Nodes, Gateways, and users and the NDF structure.
+Additional generic structures and utilities are also contained in
+Primitives, such as file access and rate-limiting utilities.
+
+### xx network/[Crypto](https://git.xx.network/xx_network/crypto)
+
+The xx Network Crypto repository contains cryptographic primitives that
+are shared between Elixxir and Praxxis codebases. Primarily lower-level
+primitives, randomness generation, TLS handling, and nonce handling.
+
+### xx network/[Comms](https://git.xx.network/xx_network/comms)
+
+The Comms repository handles all network communication functionality as
+well as all of the core connectivity logic. It includes generic comms
+handlers and protocols and not specific implementations, which are
+implemented in the respective Comm branches for each project.
+
+### xx network/[Scheduling-Scripts](https://git.xx.network/xx_network/scheduling-scripts)
+
+Scripts used to direct the scheduling server based upon blockchain
+state, as well as return state for tokenomics
+
+## [Elixxir Codebase](https://git.xx.network/elixxir/)
+
+### Elixxir/[Primitives](https://git.xx.network/elixxir/primitives)
+
+The Elixxir Primitives repository contains the basic data structures and
+utilities that are used by all Elixxir repositories. This includes the
+user fact structure, the cMixx message structure, and the version object.
+
+### Elixxir/[Crypto](https://git.xx.network/elixxir/crypto)
+
+The Crypto repository encompasses all of the base cryptographic
+functionality found in the codebase. Relying heavily on Go’s *big
+integer* implementation, Crypto features a cryptographically secure
+random number generator implementation, libraries for working with large
+integers in modulo cyclic groups for cMixx operations, and basic
+encrypt/decrypt functionality. Like Primitives, Crypto only contains
+code that is generic to the larger system. A core approach to this
+repository is to supply wrappers for operations that may require
+migration to other implementations in the future.
+
+### Elixxir/[Comms](https://git.xx.network/elixxir/comms)
+
+Comms builds on the generic utilities of xx Network Comms to provide
+specific functionality for Elixxir. It holds a gRPC protocol file along
+with a thin Client/Server implementation. The repository currently uses
+TLS certificates with RSA keys for encryption and identification, which
+will migrate to xx consensus-based quantum secure authenticated channels
+as development progresses.
+
+### Elixxir/[GPUMaths](https://git.xx.network/elixxir/gpumathsgo)
+
+The GPUMaths repository accelerates the math used by Server, especially
+for precomputations. It provides a subset of the math implemented in the
+Crypto repository but accelerated on GPUs. Underlying the acceleration is a publicly available CUDA arbitrary-precision math library, CGBN2.
+Components of this written in CUDA are in a separate repository
+[gpumathsnative](https://gitlab.com/elixxir/gpumathsnative).
+
+## Services
+
+### Elixxir/[Server](https://git.xx.network/elixxir/server)
+
+The Server repository implements the core cMixx functionality and is the
+software that a Node runs. It performs precomputation and real-time
+computation and processes messages. In addition, it receives batches of
+messages from the Gateways as well as performs network team operations.
+
+### Elixxir/[Gateway](https://git.xx.network/elixxir/gateway)
+
+The Gateway repository contains the API for Clients to interact with the
+network. Every Node runs a Gateway and the Gateways collect and store
+messages for Clients. Gateway is designed to be a scalable front-end to
+the xx Network.
+
+### Elixxir/[Scheduling](https://git.xx.network/elixxir/registration)
+
+Permissioning, also referred to as Scheduling, manages the NDF for
+Clients and Servers and schedules cMixx rounds within the network.
+Eventually, this functionality will be managed by the distributed xx
+consensus. For now, this code handles admission, manages which Nodes are
+part of the network, and orchestrates when Nodes operate.
+
+### Elixxir/[Notifications](https://git.xx.network/elixxir/notifications-bot)
+
+Implements a private notifications system, allowing users to receive
+notifications on their phone when using the xx messenger. Does so via
+Firebase for Android and Apple APNs for iOS.
+
+### Elixxir/[Authorizer](https://git.xx.network/elixxir/authorizer) :lock:
+
+Edge server that Nodes contact to get let through the firewall to talk
+to the Scheduling server.
+
+### Elixxir/[Client Registrar](https://git.xx.network/elixxir/client-registrar)
+
+Edge server which authorizes clients into the network
+
+## Clients
+
+### Elixxir/[Client API (xxDK)](https://git.xx.network/elixxir/client)
+
+All Clients use the Client API to interact and send messages with the
+cMixx network. In addition, it uses Go mobile to produce a library
+compatible with iOS and Android.
+
+### Elixxir/[User Discovery (UD)](https://git.xx.network/elixxir/user-discovery-bot)
+
+User Discovery helps users make the first contact with other users.
+Using the "singe use" package within the xxDK, User Discovery implements
+a completely private user lookup, where the system cannot determine
+which user is querying. The system leverages Twilio to verify emails and
+phone numbers if the user would like to do so.
+
+### Elixxir/Mobile Clients
+* [xx Messenger - Android](https://gitlab.com/elixxir/client-android)
+* [xx Messenger - iOS](https://gitlab.com/elixxir/client-ios)
+
+Currently, clients exist for iOS and Android operating systems. These
+both use the Go mobile libraries produced in the Client API.
+
+## Tools
+
+### Elixxir/[Wrapper Script](https://git.xx.network/elixxir/wrapper)
+
+The Wrapper Script is a Node and Gateway management script that
+simplifies the running of the xx Network software. The script automates
+the management of the xx Network software log files. For easy management
+or in the event of an error, it starts, stops, and restarts the software
+without requiring the operator to revisit the command line. Optionally,
+it can automatically update the Node and Gateway with the latest xx
+network binaries and configuration files. To learn more, refer to the
+Wrapper Script Arguments section.
+
+### Elixxir/[DevOps](https://git.xx.network/elixxir/) :lock:
+
+DevOps is a deployment platform for Microsoft Azure, Google Cloud
+Platform, and Amazon Web Services (AWS) written in Terraform. DevOps
+allows for the deployment of test networks, management of deployments of
+individual Nodes, and the deployment of multi-cloud implementations of
+xx Network.
+
+### Elixxir/[Integration](https://git.xx.network/elixxir/integration)
+
+The Integration repository is a series of end-to-end tests designed to
+test different functionality of the cMixx protocol. For example, several
+tests focus on different batch sizes with Nodes only. Another test
+covers all the Client-level interactions within the network.
+
+### Elixxir/[Local Environment](https://git.xx.network/elixxir/localenvironment)
+
+The Local Environment repository contains a set of scripts designed to
+allow testing the entire platform on a single machine.
+
+## Version Scheme
+
+Both Gateway and Node binaries have a version string embedded in them,
+consisting of a major version, a minor version, and a patch string,
+separated by a period.
+
+| Major |     | Minor |     | Patch |
+|-------|-----|-------|-----|-------|
+| ┌┴┐   |     | ┌┴┐   |     | ┌─┴─┐ |
+| 4     | .   | 2     | .   | 6ab   |
+
+To participate in the network, a Node or Gateway has to have a
+compatible version with the required version reported by the Scheduling
+server. For a version to be compatible, the major version must be equal
+to the required major version and the minor version must be greater than
+or equal to the required minor version. The patch can be anything, but
+it will always be present.
+
+## [xx labs Codebase](https://github.com/xx-labs)
+
+### xx-labs/[sleeve](https://github.com/xx-labs/sleeve)
+
+The xx labs sleeve repository contains code to generate Sleeve wallets.
+The sleeve is a novel way of embedding a quantum secure key in the
+generation of curve-based, non-quantum secure keys. In addition, the
+repository contains an implementation of the WOTS+ signature scheme,
+which is used as the quantum-secure fallback for Sleeve wallets.
+
+### xx-labs/[xxchain](https://github.com/xx-labs/xxchain)
+
+The xxchain repository contains the code for the xx Network blockchain
+node, which is based on Substrate. It contains the following pallets
+(modules) that are necessary for xx Network, among others:
+
+-   **xx-betanet-rewards:** allows users to select an option for the
+    BetaNet Staking Rewards program, which can only be accepted and
+    enacted after a Referendum passes using Democracy;
+-   **xx-cmix:** hosts cMixx variables and software hashes on-chain, and
+    allows scheduling server to push points information according to
+    cMixx rounds completed/failed;
+-   **xx-economics:** Implements the unique token economics of xx
+    network. This includes a rewards pool from which staking rewards are
+    taken, only leading to inflation of the total supply after the pool
+    is empty, and an adjustable maximum inflation value according to
+    block number, which allows xx Network’s inflation to be decreasing
+    over multiple years.
+
+### xx-labs/[substrate](https://github.com/xx-labs/substrate)
+
+The xx labs substrate repository is a fork of the [Substrate framework](https://github.com/paritytech/substrate). The xx-network
+branch of this repository contains Staking pallet modifications specific
+to the xx Network, such as the inclusion of cMixx IDs.
diff --git a/website/docs/overview/xxnetwork.md b/website/docs/overview/xxnetwork.md
new file mode 100644
index 0000000000000000000000000000000000000000..66d1bb02fdec781d1ecea8889e5123721cce16a0
--- /dev/null
+++ b/website/docs/overview/xxnetwork.md
@@ -0,0 +1,26 @@
+---
+sidebar_position: 1
+---
+
+# What is xx Network?
+
+xx network is the secure and efficient decentralized ecosystem of the future. Founded by the godfather of digital currency and privacy technology David Chaum, the xx network MainNet launched in November 2021. xx network consists of a fast, low-fee quantum-ready layer 1 blockchain built in tandem with the most private communications network in the world (cMixx). By leveraging the xxDK, any application or blockchain can route their traffic through the xx network's communications layer in order to provide metadata privacy and quantum-secure encryption for all types of data communications.
+
+## Current xx Network Architecture
+The MainNet is generally composed of three components: Nodes, Gateways, and clients. Within themselves, all three of these components handle two functions: interacting with cMixx, the private communications layer, and the xx Chain.
+![Current Network Structure](@site/static/img/Present_Network_Chart.png)
+* Nodes: The core operators of the network; they execute the cMixx protocol and act as validators within the xx Chain.
+* Gateways: The public-facing components of Nodes, one exists per Node. They store received messages, provide public access to data, and run a light node for public access.
+* Clients: Clients come in two versions, cMixx clients and xx Chain clients. cMixx clients access the communications layer and can send and receive private communications. xx Chain clients are currently limited to block explorers and other interactions with the blockchain.
+
+## Full xx Network Decentralization
+In a future update, the scheduling server will be eliminated and replaced by an on-chain consensus operation which will work as follows:
+![Future Network Structure](@site/static/img/Future_Network_Chart.png)
+* To be scheduled, a Node will submit a transaction to the network known as a waiting bid. Once accepted into a block, the Node will be written into the “waiting pool” for a maximum number of blocks.
+* The waiting pool will not be exhausted below 30% of the total number of online xx Nodes (in the waiting pool + currently running rounds) to ensure proper mixing between Nodes in a team. Every block producer will use the block randomly to execute a fisher-yates shuffle on the waiting pool, selecting Nodes 1 through 5 as the first team, nodes 6 through 10 as the second team, etcetera until the waiting pool is exhausted.
+* The teams will see their formation and work together to execute their precomputation. Once completed, they will select a time to execute their realtime based upon network congestion and generate a joint certificate on the round realtime start. This will be passed to the Gateways and gossiped throughout the Gateway network.
+* Clients, who are polling the Gateways, will see realtime certificates as well as the scheduling of the team within the block and select a round to submit messages to.
+* Once a realtime time has been reached, the nodes will begin the realtime, rapidly anonymizing the messages.
+* Once complete, the mixed messages will be delivered to the Gateway and the team will form a joint certificate stating the completion of the round. This will be submitted as a transaction to the blockchain.
+* Once the certificate of completion is received from the team, they will be awarded points towards compensation for the era and entered back into the waiting pool automatically. If the certificate does not get received by the blockchain before a predefined number of blocks, the round will be considered failed and the team will not be re-entered back into the waiting pool until they submit another waiting bid. At any time, any member of the team can submit a failure certificate for the round, canceling it and allowing the team members to bid back into the waiting pool.
+
diff --git a/website/docs/tools/_category_.json b/website/docs/tools/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..168ec3340f75e43d9d179a0e952e5b7418cc0480
--- /dev/null
+++ b/website/docs/tools/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "Tools",
+  "position": 5,
+  "link": {
+    "type": "generated-index",
+    "description": "How to get things done"
+  }
+}
diff --git a/website/docs/tools/dashboard/_category_.json b/website/docs/tools/dashboard/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..51ce2900f0822f6f4e0396ea914231d54e471988
--- /dev/null
+++ b/website/docs/tools/dashboard/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "cMixx Dashboard",
+  "position": 2,
+  "link": {
+    "type": "generated-index",
+    "description": "How to get things done"
+  }
+}
diff --git a/website/docs/tools/dashboard/dashboard.md b/website/docs/tools/dashboard/dashboard.md
new file mode 100644
index 0000000000000000000000000000000000000000..2211cb1db13e310141074c141dc2468f4914f42a
--- /dev/null
+++ b/website/docs/tools/dashboard/dashboard.md
@@ -0,0 +1,104 @@
+# About
+
+# [Quick View](https://dashboard.xx.network/)
+The above link will bring you to cMix Dashboard Quick View.
+
+* mTPS - Shows the average mTPS (cMix Message Transactions per Second) by hour over the last 24 hrs.
+* Latency - The delay before a transfer of data begins following an instruction for its transfer.
+* Nodes (worldwide) - Here users can see where we have nodes actives from all over the world.
+* Total Rounds - Total number of successfully processed rounds since MainNet, [2021.11.17 | 07:01 (UTC)](https://explorer.xx.network/blocks/1)
+* Avg Throughput/Hr - 
+* Total Throughput (24hr)
+* Realtime Success Rate (24hr)
+* Precomp Success Rate
+* Completion Time - A list of the 20 most recent rounds and the time at which they finished.
+  * Round Number - Self explanatory.
+  * Completion Time (UTC) - Completion of the Realtime Phase.
+* 24hr mTPS - A chart which shows the hourly mTPS of the past 24 hours.
+* Performance - Shows a chart and table of the duration  of the 10 most recent rounds.
+  * Round Number - Self explanatory.
+  * Precomp Duration - The number of seconds it took to complete the Precomputation phase of the round.
+  * Realtime Duration - The number of seconds it took to complete the Realtime phase of the round.
+* Active Validators - Shows the number of cMix nodes online of the number of active cMix nodes.
+* Min Server Version - The minimum compatible version of the cMix binary.
+* Min Gateway Version - The minimum compatible version of the gateway binary.
+* Node Status Breakdown - Shows the status of all known cMix nodes.
+  * online - Represents a node is communicating with the network and can be scheduled to run rounds.
+  * error - Represents a node is communicating with the network but cannot be scheduled to run rounds due to an error.
+  * offline - Represents a node is not communicating with the network.
+  * not currently a validator - Represents a cMix node's associated xx Chain validator is not validating or was not elected in the current era.
+
+# [Rounds View](https://dashboard.xx.network/rounds)
+The above link will opens the cMix Dashboard Rounds View.
+
+* Round ID - Self explanatory.
+* Completion Time - Date and time (UTC) the round ended, whether SUCCESS or TIMEOUT.
+* Status
+  * SUCCESS - The round completed successfully.
+  * TIMEOUT - The round failed during the Precomputation or Realtime phase.
+* Realtime Duration - Displays the duration of the Realtime phase or `-` if the round timed out.
+* Batch Size - The number of message slots allocated for the round.
+* Precomputation Start Time - The date and time (UTC) the Precomputation phase started.
+* Precomputation End Time - The date and time (UTC) the Precomputation phase ended or '-' if the round failed during the Precomputation phase.
+* RealTime Start Time - The date and time (UTC) the Realtime phase started or '-' if the round failed during the Precomputation phase.
+* RealTime End Time - The date and time (UTC) the Realtime phase ended or '-' if the round failed during the Realtime phase.
+* Round End Time - Date and time (UTC) the round ended, whether SUCCESS or TIMEOUT.
+* Node (1st, etc) - The position and node ID of all nodes participating in the round.
+
+# [Round View](https://dashboard.xx.network/rounds/1)
+The above link opens the cMix Dashboard Round View for Round 1 as an example.
+
+* Nodes in the Round - The number of nodes participating in the round.
+* Precomp Duration - Displays the duration of the Precomputation phase or `Error` if the round failed.
+* Realtime Duration - Displays the duration of the Realtime phase or `Error` if the round failed.
+* Batch Size - The number of message slots allocated for the round.
+* Nodes Worldwide (1, etc) - Lists the position and node ID of all nodes participating in the round and the path is displayed on a world map.
+* Precomputation - Displays the start and finish date and time of Precomputation phase or `-` if the round failed.
+* Real Time - Displays the start and finish date and time of the Realtime phase or `-` if the round failed.
+* Result
+  * Success - The round completed successfully.
+  * Failed - The round failed during the Precomputation or Realtime phase. If the result is "Failed", additional information regarding the failure will be displayed in the form of a log message.
+
+# [Nodes View](https://dashboard.xx.network/nodes)
+The above link opens the cMix Dashboard Nodes View
+
+* Name (Conditional) - Displays a name if the node operator has "Set on-chain identity" of the validator.
+* ID - The cMix node ID
+* Wallet (Conditional) - Displays the cMix node's associated xx Chain validator wallet address only when the validator is an active validator. See "not currently a validator"
+* Status
+  * online - Represents a node is communicating with the network and can be scheduled to run rounds.
+  * error - Represents a node is communicating with the network but cannot be scheduled to run rounds due to an error.
+  * offline - Represents a node is not communicating with the network.
+  * not currently a validator - Represents a cMix node's associated xx Chain validator is not validating or was not elected in the current era.
+* Bin - Displays the [geographic bin](https://xx.network/blog/mainnetgeobins/) of the node.
+* ISP - The Internet Service Provider of the node.
+* Precomp Failure Rate [^1] - Percentage of rounds participated in, monthly to date, which failed during the Precomputation phase.
+* Realtime Failure Rate [^1] - Percentage of rounds participated in, monthly to date, which failed during the Realtime phase.
+* Percent Uptime - Percentage of the time, to date monthly, a node has been online while an active validator.
+
+[^1]: This does not necessarily indicate the particular node is responsible for the failures.
+
+# [Node View](https://dashboard.xx.network/nodes/c6wptSinakErZHrk0SlgGQXExETPYYLB2CwpLNze6FMC)
+The above link opens the cMix Dashboard Node View for the cMix node, xx west, as an example.
+
+* Name (Conditional) - Displays a name if the node operator has "Set on-chain identity" of the validator.
+* Node ID - The cMix node ID
+* Wallet (Conditional) - Displays the cMix node's associated xx Chain validator wallet address only when the validator is an active validator. 
+* Status
+  * online - Represents a node is communicating with the network and can be scheduled to run rounds.
+  * error - Represents a node is communicating with the network but cannot be scheduled to run rounds due to an error.
+  * offline - Represents a node is not communicating with the network.
+  * not currently a validator - Represents a cMix node's associated xx Chain validator is not validating or was not elected in the current era.
+* Node Metrics - This section can display weekly and monthly metrics via the drop-down menu.
+  * Weekly - Select a week via the drop-down menu to the right.
+  * Monthly - Select a month via the drop-down menu to the right.
+* Uptime - Percentage of the time online and offline, of selected period, a node has been online while an active validator.
+* Round Success Rate [^1] - Shows the percentages of successful and failed, by Realtime and Precomputation timeout, rounds participated in, of selected period.
+* Round Profile
+  * Total - Total number of rounds participated in in the selected period.
+  * Success - Total number of successful rounds participated in in the selected period.
+  * Realtime Timed Out [^1] - Total number of rounds participated in which failed during the Realtime phase in the selected period.
+  * Total Timed Out [^1] - Total number of rounds participated in which failed in the selected period.
+* Precomp Average Duration - Average duration of the Precomputation phase of all rounds participated in in the selected period.
+* Realtime Average Duration - Average duration of the Realtime phase of all rounds participated in in the selected period.
+* Last 100 Rounds - A list of the last 100 rounds the node has participated in and the result of the round. Or will display, "This node has not participated in any rounds in the last 48 hours..." if the node has been offline for more then 48 hours.
\ No newline at end of file
diff --git a/website/docs/tools/explorer/_category_.json b/website/docs/tools/explorer/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..2a79f6795960c85c4c44892cebdfa4d2490a5371
--- /dev/null
+++ b/website/docs/tools/explorer/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "xxChain Explorer",
+  "position": 1,
+  "link": {
+    "type": "generated-index",
+    "description": "How to get things done"
+  }
+}
diff --git a/website/docs/tools/explorer/explorer.md b/website/docs/tools/explorer/explorer.md
new file mode 100644
index 0000000000000000000000000000000000000000..6b25718dae8b4dd888d8f532af0c5565eb0e2868
--- /dev/null
+++ b/website/docs/tools/explorer/explorer.md
@@ -0,0 +1 @@
+https://explorer.xx.network
\ No newline at end of file
diff --git a/website/docs/tools/simpleStaking/_category_.json b/website/docs/tools/simpleStaking/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..8a8d0b7e9deeebbf893bc5fc5d25a0bf488609ca
--- /dev/null
+++ b/website/docs/tools/simpleStaking/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "Simple Staking",
+  "position": 4,
+  "link": {
+    "type": "generated-index",
+    "description": "How to get things done"
+  }
+}
diff --git a/website/docs/tools/simpleStaking/simpleStaking.md b/website/docs/tools/simpleStaking/simpleStaking.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/website/docs/tools/sleeve/_category_.json b/website/docs/tools/sleeve/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..1adae180e674102a2459d01d0d5468626185fbf6
--- /dev/null
+++ b/website/docs/tools/sleeve/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "Sleeve Wallet Generator",
+  "position": 2,
+  "link": {
+    "type": "generated-index",
+    "description": "How to get things done"
+  }
+}
diff --git a/website/docs/tools/sleeve/sleeve.md b/website/docs/tools/sleeve/sleeve.md
new file mode 100644
index 0000000000000000000000000000000000000000..1f6c3b2af8ceb9eb8f7ffe22e7ab4e55ba9e1d80
--- /dev/null
+++ b/website/docs/tools/sleeve/sleeve.md
@@ -0,0 +1,27 @@
+# Sleeve Wallet Generation Tool
+The [Sleeve Wallet Generation Tool](https://sleeve.xx.network/) walks you through the process of creating a quantum-ready wallet for use in the xx Network. It is important that you keep the wallet you generate private and secure, as you would any other cryptocurrency wallet.
+![](@site/static/img/sleeve-welcome.png)
+After clicking "Next" you will notice the green icon indicating the browser is connected to the internet. It is recommended you disconnect the browser from the internet while generating a wallet.
+![](@site/static/img/sleeve-online.png)
+## Disconnect and Acknowledge
+Once disconnected, check the two acknowledgments and the "Generate New Wallet" function will be available. Click "Generate New Wallet"
+![](@site/static/img/sleeve-offline.png)
+## Save Mnemonics
+On this page you will be presented with two sets of mnemonics, the "Quantum Mnemonic"[^1] and "Standard Mnemonic"[^2]. Write these two down somewhere safe as they will be required to complete the wallet generation process and to add the account to wallet apps.
+![](@site/static/img/sleeve-gen-mnemonics.png)
+## Confirm Quantum Mnemonics
+In this step you must input five randomly selected words from the Quantum Mnemonic. As an example you can see "Word #18" is one of the five required to be entered. Word 18 was decline. After typing in the 5 words correctly, press Next.
+![](@site/static/img/sleeve-ver-quant.png)
+## Confirm Standard Mnemonics
+In this step you must input five randomly selected words from the Standard Mnemonic. As an example you can see "Word #6" is one of the five required to be entered. Word 6 was mercy. After typing in the 5 words correctly, press Next.
+![](@site/static/img/sleeve-ver-stan.png)
+## Finish Wallet Setup
+On this page you will see the public address of the generated wallet. At this step you can ["Add Wallet to Accounts"](../webWallet/accounts/addAccount.md) of the Web Wallet using the "Standard Mnemonic" or export a JSON file which can be used to import the account into the Web Wallet.
+![](@site/static/img/sleeve-finish.png)
+## Export JSON Account File
+To export the JSON file, enter stong password and press "EXPORT JSON ACCOUNT FILE" button. This file will be saved to local storage of the computer. The password you set here will be asked for if you import the account into the Web Wallet.
+![](@site/static/img/sleeve-export-json.png)
+
+[^1]: Quantum Mnemonic: derives the quantum-secure wallet, which is not currently used, but will be necessary in the future in order to rollover existing non quantum secure wallets into quantum secure wallets.
+
+[^2]: Standard Mnemonic: currently used to generate standard non quantum secure Wallets. This phrase can be generated from the quantum secure phrase, so keeping the first one safe will always be of utmost importance.
\ No newline at end of file
diff --git a/website/docs/tools/webWallet/_category_.json b/website/docs/tools/webWallet/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..d7ae1a1fa7ac4cc68871eac68930a111190d076f
--- /dev/null
+++ b/website/docs/tools/webWallet/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "Web Wallet",
+  "position": 4,
+  "link": {
+    "type": "generated-index",
+    "description": "How to use the xx Network Web Wallet"
+  }
+}
diff --git a/website/docs/tools/webWallet/accounts/_category_.json b/website/docs/tools/webWallet/accounts/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..ec4e4edffba0969e176be440f9cceda8723ad127
--- /dev/null
+++ b/website/docs/tools/webWallet/accounts/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "Accounts",
+  "position": 3,
+  "link": {
+    "type": "generated-index",
+    "description": "Accounts"
+  }
+}
diff --git a/website/docs/tools/webWallet/accounts/accountTypes.md b/website/docs/tools/webWallet/accounts/accountTypes.md
new file mode 100644
index 0000000000000000000000000000000000000000..deadfb1521caa3fc3878320fc58e2caf891b92fd
--- /dev/null
+++ b/website/docs/tools/webWallet/accounts/accountTypes.md
@@ -0,0 +1,3 @@
+---
+sidebar_position: 3
+---
\ No newline at end of file
diff --git a/website/docs/tools/webWallet/accounts/addAccount.md b/website/docs/tools/webWallet/accounts/addAccount.md
new file mode 100644
index 0000000000000000000000000000000000000000..ce60ae817569937de1b6f6abc4c15d272a289a27
--- /dev/null
+++ b/website/docs/tools/webWallet/accounts/addAccount.md
@@ -0,0 +1,103 @@
+---
+sidebar_position: 5
+---
+# Adding Accounts to the Web Wallet
+
+## Adding a Basic Account
+
+To add your account to the [Web Wallet](https://wallet.xx.network/), follow the instructions below.
+
+1.  In the navigation menu, go to *Accounts* and in the drop-down menu,
+    click on *Accounts*.
+    ![](@site/static/img/Explorer_-_Top_Menu_Accounts_-_Accounts.png)
+2.  On the right side of the *My accounts* page, click *Add account*.
+    ![](@site/static/img/Xx_network_Explorer-_Account_Page.png)
+3.  The first page of the *add an account via seed* window will show up.
+    ![](@site/static/img/Add_an_Account_Via_Seed.png)
+    a.  Enter the *standard phrase*, also known as the *non-quantum
+        mnemonic phrase*. Each word in the phrase must be seperated by a single space. 
+        Remove all line breaks and double and trailing spaces.
+
+    b.  Then check the *I have saved my mnemonic seed safely* checkbox.
+
+    c.  Click the *Next* button.
+
+4.  Next, you will enter the account details.
+    ![](@site/static/img/Add_an_Account_Via_Seed_-_Account_details.png)
+    a.  Create the name for your account.
+
+    b.  Create a strong and secure password.
+
+    c.  Click the *Next* button.
+
+5.  On the next page, An encrypted backup file will be created once you have pressed the "Save" button. 
+    :::tip 
+    This file can be used to import your account on any other machine. Save this backup file in a secure location. Additionally, the password associated with this account is needed together with this backup file in order to restore your account.
+    :::
+    ![](@site/static/img/Add_an_Account_Via_Seed_-_Save.png)
+
+## Derivation Paths
+
+Within the xx network wallet, it is possible to create a child account
+using a *derivation path*. A derivation path can be any text used to
+mutate the account's seed (generally a mnemonic) to create a separate
+wallet. Note that both the parent account and its seed must be known to
+recover the child account.
+:::danger
+A derived account cannot be regenerated from the parent account without 
+the derivation path. Therefore, make sure you do not lose the derivation path.
+:::
+
+### Hard and Soft Derivation
+
+When creating a derivation path, the path generally starts with either a `/`
+or a `//`, the former signifying a *soft derivation* and the latter a *hard
+derivation*.
+
+With a Hard Derivation, it is not possible from the account information
+to link the child account to the parent account (excluding metadata
+analysis). At the same time, it is possible to connect the two with a
+soft derivation.
+
+For example, a hard derivation could look like `//banana`, while a soft derivation
+would look like `/orange`.
+
+### Multi-Derived accounts
+
+It is possible to derive accounts from derived accounts by chaining
+derivation paths. For example, in `//banana/broccoli`, the hard derived wallet *banana* has a
+soft derived wallet *broccoli*.
+
+### Deriving a wallet
+
+1.  In the navigation menu, go to *Accounts* and in the drop-down menu,
+    click on *Accounts*.
+    ![](@site/static/img/Explorer_-_Top_Menu_Accounts_-_Accounts.png)
+2.  Find the account you would like to derive from and click on the
+    three dot menu to the right and select *Derive account via
+    derivation path*.
+    ![](@site/static/img/Explorer_-_My_accounts_three_dot_menu_derive_account_via_derivation_path.png)
+3.  A window will appear asking to unlock your account. Enter your
+    password and press the *Unlock* button.
+    ![](@site/static/img/Explorer_-_Unlock_account_to_derive_account_from_pair.png)
+4.  On the next page, you can enter your derivation path and create the
+    derived account.
+    :::danger
+    Do not leave the derivation path empty. If you do, it will overwrite the root account.
+    :::
+    :::tip
+    Keep your derivation path in a safe, secure, and private location. You may want to keep this with your wallet mnemonics.
+    :::
+    ![](@site/static/img/Explorer_-_Derive_Account_from_Pair.png)
+    a.  Enter your derivation path. You must supply a path. Precede hard
+        keys with `//` and soft keys with `/`. You can optionally include a
+        password for this account using `///`.
+          
+    b.  Select a name to appear in the wallet.
+
+    c.  Select a password to access this account in the wallet.
+
+    d.  Press the *Next* button to continue.
+
+5.  On the next page, click the *Save* button.
+    ![](@site/static/img/Explorer_-_Save_derived_account.png)
diff --git a/website/docs/tools/webWallet/accounts/addContact.md b/website/docs/tools/webWallet/accounts/addContact.md
new file mode 100644
index 0000000000000000000000000000000000000000..b89031da1f6a56b78bade7867eb244efe7a36fb0
--- /dev/null
+++ b/website/docs/tools/webWallet/accounts/addContact.md
@@ -0,0 +1,3 @@
+---
+sidebar_position: 6
+---
\ No newline at end of file
diff --git a/website/docs/tools/webWallet/accounts/claim.md b/website/docs/tools/webWallet/accounts/claim.md
new file mode 100644
index 0000000000000000000000000000000000000000..54f0da8ddc5b745c5858f767b54cf3b090c0f690
--- /dev/null
+++ b/website/docs/tools/webWallet/accounts/claim.md
@@ -0,0 +1,57 @@
+# Claiming Tokens
+
+Check out the [Genesis Block
+Spreadsheet](https://docs.google.com/spreadsheets/d/1xBeCP5awzGDACiKsOUUjHMwJpNQ6ac3bBcIK_eg5wUI).
+
+1.  Before starting, this guide will utilize MetaMask. It is suggested that you [install the browser
+    extension for MetaMask](https://metamask.io/download) and set it up
+    with your Ethereum wallet from the sale. 
+2.  You will need to have generated an account and added the account to the Web Wallet.
+    You can learn more about [Using the Wallet Generator](generateAccount) and [Adding Accounts to the Web Wallet](addAccount).
+3.  In the navigation menu of the [Web Wallet](https://wallet.xx.network), go to *Accounts* and in the drop-down menu,
+    click on *Claim Tokens*.
+    ![](@site/static/img/Main_Menu_-_Accounts,_Claim_Tokens.png)
+4.  The *claim your xx tokens* page will open.
+    ![](@site/static/img/Select_Account_to_Claim_Tokens.png)
+    a.  Select the correct account from the drop-down menu.
+    
+    b.  Press the *Continue* button to proceed to the next step.
+
+5.  Next, in the *Choose how to sign* box, select the *Use MetaMask*
+    button.
+    ![](@site/static/img/Choose_How_to_Sign_to_Claim_Tokens.png)
+6.  Next, a pop-up will appear asking you to select a wallet. Click on
+    the *MetaMask* button.
+    ![](@site/static/img/Select_a_Wallet.png)
+7.  A pop-up in a separate window will appear asking you to connect 
+    `https://wallet.xx.network` with MetaMask. Make sure you have the correct
+    wallet selected and then press the *Next* button to continue.
+    ![](@site/static/img/Connect_with_MetaMask.png)
+8.  Finally, click the *Connect* button to connect your account.
+    ![](@site/static/img/Connect_MetaMask_Account_with_Explorer.png)
+9.  Once connected, the window should close and your Ethereum address
+    will be filled in inside the third box labeled *Confirm ETH address
+    from the sale*. Press the *Confirm Address* button to confirm the
+    address and claim your token.
+    ![](@site/static/img/Confirm_Ethereum_Address_to_Claim_Tokens.png)
+10. A fourth box labeled *Sign with your metamask extension the
+    following payload* will contain an agreement that you must read
+    through and agree to. Once you have done so, cliock the *Confirm
+    Payload* button.
+    :::tip
+    Read the agreement in full. You can download a PDF of the agreement using the link provided.
+    :::
+    ![](@site/static/img/Explorer_-_Claim_Tokens_Contract.png)
+11. A MetaMask pop-up window will appear asking you to sign the request.
+    Verify the details are correct and click the "Sign" button.
+
+    ![](@site/static/img/MetaMask_Sign_Request.png)
+12. If you have tokens to claim, a new box will show up showing how many
+    are available. Click the *Claim* button to claim the tokens.
+    ![](@site/static/img/Ethereum_Account_has_Valid_Claim_for_xx.png)
+13. A window will appear asking you to authorize the transaction. Click
+    the *Submit (no signature)* button to authorize.
+    ![](@site/static/img/Authorize_Transaction_-_Claim_xx_Tokens.png)
+14. On Success, you will see two notifications in the top right of the windows similar to below.
+
+    ![](@site/static/img/Claiming_xx_Token_Transaction_Notifications.png)
\ No newline at end of file
diff --git a/website/docs/tools/webWallet/accounts/generateAccount.md b/website/docs/tools/webWallet/accounts/generateAccount.md
new file mode 100644
index 0000000000000000000000000000000000000000..f0524b391dbd979579fb093dcaa4c9fbeb589437
--- /dev/null
+++ b/website/docs/tools/webWallet/accounts/generateAccount.md
@@ -0,0 +1,30 @@
+---
+sidebar_position: 4
+---
+# Generate Account
+The MainNet wallet generator app walks you through the process of creating a quantum-ready wallet for use in the xx Network. It is important that you keep the wallet you generate private and secure, as you would any other cryptocurrency wallet.
+
+When you first load the page you will notice the green icon indicating the browser is connected to the internet. It is recommended you disconnect the browser from the internet while generating a wallet.
+![](@site/static/img/ww-gen-online.png)
+## Disconnect and Acknowledge
+Once disconnected, check the two acknowledgments and the "Generate New Wallet" function will be available. Click "Generate New Wallet"
+![](@site/static/img/ww-gen-offline.png)
+## Save Mnemonics
+On this page you will be presented with two sets of mnemonics, the "Quantum Mnemonic"[^1] and "Standard Mnemonic"[^2]. Write these two down somewhere safe as they will be required to complete the wallet generation process and to add the account to wallet apps.
+![](@site/static/img/ww-gen-mnemonics.png)
+## Confirm Quantum Mnemonics
+In this step you must input five randomly selected words from the Quantum Mnemonic. As an example you can see "Word #15" is one of the five required to be entered. Word 15 was artist. After typing in the 5 words correctly, press Next.
+![](@site/static/img/ww-gen-ver-quant.png)
+## Confirm Standard Mnemonics
+In this step you must input five randomly selected words from the Standard Mnemonic. As an example you can see "Word #13" is one of the five required to be entered. Word 13 was treat. After typing in the 5 words correctly, press Next.
+![](@site/static/img/ww-gen-ver-stan.png)
+## Mnemonics Confirmed Successfully
+You will see a confirmation message that the Quantum and Standard Mnemonics were inputted correctly. Press Go to Last Step
+![](@site/static/img/ww-gen-mnemonics-confirmed.png)
+## Public Address
+On this page you will see the public address of the generated wallet. At this step you can ["Add Wallet to Accounts"](./addAccount.md) of the Web Wallet or "Finish Setup".
+![](@site/static/img/ww-gen-finished.png)
+
+[^1]: Quantum Mnemonic: derives the quantum-secure wallet, which is not currently used, but will be necessary in the future in order to rollover existing non quantum secure wallets into quantum secure wallets.
+
+[^2]: Standard Mnemonic: currently used to generate standard non quantum secure Wallets. This phrase can be generated from the quantum secure phrase, so keeping the first one safe will always be of utmost importance.
\ No newline at end of file
diff --git a/website/docs/tools/webWallet/accounts/ledger.md b/website/docs/tools/webWallet/accounts/ledger.md
new file mode 100644
index 0000000000000000000000000000000000000000..eaed63e8904907627803384ae5e48e6c08f3cc99
--- /dev/null
+++ b/website/docs/tools/webWallet/accounts/ledger.md
@@ -0,0 +1,227 @@
+
+# Ledger
+
+## Introduction
+
+Hardware wallets like [Ledger](https://www.ledger.com/) are considered
+some of the most secure ways to store and use cryptocurrencies as they
+keep your private keys off of online devices that could be compromised
+by malware or mismanagement. This page will walk you through the
+process of setting up a Ledger device to use with the xx Network. Please
+keep in mind that even if you are familiar with using Ledger devices,
+there are some unique key generation steps when creating xx Network
+wallets due to the quantum-ready signature scheme that has been
+developed to address the looming threat of quantum computing on
+cryptocurrency wallets.
+
+## Functionality (Light vs XL versions)
+
+There are two options available when downloading the xx Network app onto
+your Ledger device: a “light” version and an “XL” version. The
+difference between them is simply the amount of functionality they
+support and the amount of space they take up on your Ledger device.
+
+#### XL Version
+
+The XL version is capable of signing almost every type of transaction
+available in the xx Network [Web Wallet](https://wallet.xx.network/) with
+the primary exceptions being Democracy transactions (you can use a
+governance proxy if you’d like to secure your wallets with a Ledger but
+still participate in voting). If you are running a validator (node) then
+it is highly recommended you use the XL version. The XL version will
+generally require an entire Ledger device dedicated to it as it will
+take up the majority of memory on a standard Ledger Nano S.
+
+#### Light Version
+
+The light version will sign the majority of transactions needed for a
+light user of the network: balance transfers, staking, and nominating.
+The light version does not support some key functions needed for running
+a node or setting a proxy so if you want to run a node or participate in
+Governance then you will need to add your account directly in the xx
+wallet temporarily or upgrade to the XL version.
+
+You can see the complete list of compatible functions for both versions
+at the bottom of the Github
+[repository](https://github.com/Zondax/ledger-xxnetwork).
+
+## Account Generation
+
+xx Network wallets can be created using the novel
+Sleeve Wallet Generation tool wich is available on the [Sleeve](https://sleeve.xx.network/) website and the [Web Wallet](https://wallet.xx.network/#/accounts/generate).
+
+Sleeve allows a quantum-secure wallet to be embedded into the creation
+of a standard non quantum-secure wallet. The quantum-secure wallet will be used in the future, once xx Network
+adopts quantum-secure cryptography, but for the time being, the standard
+wallet is in use. Any standard wallet created using Sleeve will be upgradable to their
+respective quantum-secure wallet.
+
+#### (Optional) Create a Sleeve wallet
+
+Even after adoption of quantum-secure cryptography, xx Network will
+continue to support non quantum-secure wallets. This means that creating a wallet using Sleeve is recommended, but not
+mandatory. If you decide to use Sleeve to create your xx Netqork wallet, you won't be
+generating your account directly on the Ledger device.
+
+Instead, you should use our offline wallet generation tool to create
+both a standard and quantum secure recovery phrase.You will then use the standard recovery phrase to initialize your Ledger
+device. The offline wallet generator tool will securely generate two recovery
+phrases: a standard recovery phrase and a quantum secure recovery
+phrase. Refer to [Using the Wallet Generator](./generateAccount.md) for a walkthrough of
+the steps needed to download and install the wallet generator tool.
+
+Once you’ve generated your recovery phrases, make sure to keep them
+somewhere safe where they won’t be lost or stolen. These phrases will
+give complete access to your wallet.
+
+## Setup Ledger Device
+
+#### Download Ledger Live
+
+Go to the Ledger [website](https://www.ledger.com/ledger-live/) and download
+and install the Ledger Live app.
+
+Once you’ve installed and opened Ledger Live, plug in your Ledger
+device.
+
+#### (Optional) Setup your device with recovery phrase
+
+If you previously created an xx Network wallet using Sleeve, follow this
+instructions. Otherwise, skip to the next section.
+
+You will be using the [RESTORE YOUR LEDGER ACCOUNTS WITH YOUR RECOVERY PHRASE](https://support.ledger.com/hc/en-us/articles/4404382560913-Restore-your-device-from-a-recovery-phrase?support=true) process to setup the device as detailed
+on the Ledger support.
+
+During this process you will enter the standard recovery phrase (**NOT
+THE QUANTUM RECOVERY PHRASE**) directly into the Ledger device.
+
+#### Download the xx Network Ledger app
+
+With your account successfully added to the Ledger device you will need
+to add the xx Network app to your Ledger.
+
+Make sure the Ledger is plugged in and unlocked and then open the Ledger
+Live app.
+
+Go to the "My Ledger" tab and search for the xx Network app. Choose the
+XL or light version according to your needs and click Install.
+
+## Small note about Ledger accounts
+
+The xx Network blockchain is developed using Substrate, which has its
+own wallet derivation scheme using
+[substrate-bip39](https://github.com/paritytech/substrate-bip39). This
+scheme is used by both the Web Wallet and the Wallet Generator app (which
+displays the generated wallet address in the last step).
+
+However, Ledger devices use the industry standard
+[bip39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki),
+which differs from the Substrate one. This means that the same
+**recovery phrase** will **NOT** result in the same wallet when setup on
+a Ledger device or the Web Wallet. **Please keep this in mind when
+proceeding in the next steps**.
+
+## Using the Ledger Wallet
+
+#### Add Account to the Web Wallet
+
+Now that you’ve set up your Ledger wallet, you’re ready to begin using
+it with the Web Wallet
+
+The first thing you need to do is add your Ledger Wallet account to the
+xx wallet. Note that this does not store your keys in the browser, they
+remain secure in the Ledger device so you will need to have your Ledger
+available anytime you want to sign a transaction.
+
+First, plug your Ledger device into your computer, unlock it and open
+the xx network app.
+
+Once the app is open, go to the [wallet](https://wallet.xx.network/).
+Click on the Accounts tab and then select the Accounts menu item.
+
+Click on *Add via Ledger*.
+![](@site/static/img/Add_via_ledger.png)
+
+You will be asked to name your account and presented with some options
+for creating derived accounts. The name of your account can be anything
+you want and will only be seen by you. You may change it at any time
+after adding it to the xx wallet. Derivations will not be covered in
+this wiki page.
+
+Press the *Save* button to continue after choosing the name.
+![](@site/static/img/Screen_Shot_2022-06-22_at_3.59.21_PM.png)
+When you click *Save* you may be prompted by your web browser to allow
+the Ledger device to connect. Select the device and click *Connect*.
+![](@site/static/img/Screen_Shot_2022-06-22_at_3.59.43_PM.png)
+You should now see your Ledger account in the xx wallet window with the
+wallet address below the name. It is highly recommended that you verify
+this address before sending or receiving any xx coins with this wallet.
+
+#### Verify Account Address
+
+After adding your account to the xx wallet, you should always verify
+that the address matches the address shown on your Ledger device.
+
+To do this, simply click on the three dots next to the *send* button and
+then select *Show address on hardware device*.
+![](@site/static/img/Ledger_address.png)
+If your Ledger device is connected, unlocked, and you’re in the xx
+network Ledger app, you should now see your wallet address show up on
+the Ledger device.
+
+Use the buttons to scroll through the entire address and if it matches
+the wallet address you see on the xx wallet then you can go ahead and
+click *Approve* on the Ledger and you’re all set to use the wallet.
+![](@site/static/img/Ledger_address_1.jpg)
+![](@site/static/img/Ledger_address_2.jpg)
+![](@site/static/img/Ledger_address_approve.jpg)
+
+If the wallet address does not match, then make sure you followed the
+setup instructions correctly and if you’re still having trouble email
+\[/cdn-cgi/l/email-protection \[email protected\]\]
+
+#### Review and Approve a Transaction
+
+In order to use the Ledger device to sign a transaction, make sure it is
+plugged into your computer and that you’ve opened the xx network Ledger
+app on your Ledger device.
+
+Create your transaction as you would with a non-Ledger wallet and click
+on the *Sign and Submit* button (this may be labeled something else
+depending on the type of transaction you’re executing).
+
+In this example we’re showing a transaction that sends xx coins.
+![](@site/static/img/Send_xx.png)
+The transaction should now show up on your Ledger device with all the
+transaction details. Carefully review the transaction on your Ledger by
+scrolling through it with the buttons and make sure it matches the
+transaction you’re attempting to send.
+![](@site/static/img/Ledger_balances_transfer.jpg)
+![](@site/static/img/Ledger_balances_dest.jpg)
+![](@site/static/img/Ledger_transfer_amount.jpg)
+
+If it looks incorrect then click Reject on the Ledger and try the
+transaction again.
+
+Otherwise click *Approve* and you should see a submission status icon at
+the top right of the xx wallet. Assuming the transaction is valid, this
+will turn green and your transaction has been successfully processed.
+![](@site/static/img/Ledger_transfer_approve.jpg)
+![](@site/static/img/Tx_submission.png)
+![](@site/static/img/Tx_success.png)
+
+#### Possible Issues
+
+If you run into any error using the xx wallet and the Ledger device,
+make sure the transaction you are trying to sign is supported by the xx
+network Ledger app version you are using (light or XL).
+
+Also, make sure your Ledger device is connected, unlocked, and the xx
+network app is open, whenever you are trying to use the Ledger wallet in
+the xx wallet to send transactions.
+
+## Support
+
+If you are having issues using the xx network Ledger app, you can join
+the xx network [Discord](https://discord.com/invite/Y8pCkbK) or
+[Telegram](https://t.me/xxnetwork) communities and ask for support.
diff --git a/website/docs/tools/webWallet/accounts/multisig.md b/website/docs/tools/webWallet/accounts/multisig.md
new file mode 100644
index 0000000000000000000000000000000000000000..ff710a1915fdf62685699170845f758abcbe4b26
--- /dev/null
+++ b/website/docs/tools/webWallet/accounts/multisig.md
@@ -0,0 +1,99 @@
+# Multisig Accounts
+
+You can use a multisig account to add extra security layers from a
+basic wallet. The main purpose is to require multiple signatures to
+authorize a transaction or any change.
+
+## Overview to use a multisig account
+
+1.  Create two or more accounts - [Using the Wallet Generator](./generateAccount.md)
+2.  Generate a multisig account from these accounts by specify the
+    threshold
+3.  Send some xx coins on each account
+4.  Do any transaction
+5.  Sign with required amount of accounts for authorize action
+
+## Before Starting
+
+Multisig account costs a lot of fee for every actions so this security
+feature isn't cheap. The main purpose is to store these accounts keys or
+.json files on different location like that even if you lost one you can
+recover your account from another key by using a threshold X-1 wallet.
+
+Example : you create three accounts but you need only two for sign and
+authorize a transaction. If you not do that and specify all account with
+the threshold number you need all accounts for authorize anything if you
+lost one account your multisig account is lost forever.
+
+If you dont do this and specify all accounts on the threshold number you
+need all accounts for authorize anything if you lost one single account
+your multisig account is lost forever.
+
+## Generate
+
+Once you have your wallets set up, you need to generate a multisig
+account by clicking "Multisig" button ![](@site/static/img/Account.jpg)
+
+Select all accounts to create a multisig account and choose the
+threshold number here 2 (threshold) of 3 wallets (selected signatories).
+![](@site/static/img/Addmultisig.jpg)
+
+## Export
+
+Multisig is a special account and xx wallet not execute a direct
+download like other account of the .json file. You have two possibilites
+to get your multisig account from wallet.xx.network :
+
+1.  Import all accounts and click again on "Multisig" button to recreate
+    same multisig account with exactly the same threshold number.
+2.  You can click on the "Export" button and select only the multisig
+    account to export a .json file. The advantage is that you can import
+    only two accounts and the multisig account for signing transactions
+    if you choose 2 (threshold) of 3 (selected signatories) so you can
+    keep safe your last account safe on cold
+    storage.![](@site/static/img/Export.png)
+
+## Using multisig for validate
+
+The first thing is to put some coins on each account for pay the fees
+but be careful because you need one account with **more than 20xx**!
+
+This account with more than 20xx must be used **first** in the approval
+process for sign the transaction : ![](@site/static/img/Validator.png)
+![](@site/static/img/ValidatorConfirm.png)
+
+-   Use an account with more than 20xx for sign the first approval
+-   It's better if you copy the "multisig call data" for the final
+    approval
+
+![](@site/static/img/Validatoro.png)
+
+If you have enough coins over 20xx on the first account, you see it
+appear on the right of the screen
+
+You now have two options to confirm all the necessary accounts :
+
+1\. Go to the "Accounts" tab and you should have a red mark on the left
+side of your multisig because you need more accounts to sign the
+transaction until you reach the threshold number for the final approval
+![](@site/static/img/Multisig.png)
+![](@site/static/img/MultiSigApprovalo.png)
+
+2\. Perform the same actions with the same parameters and you will
+arrive at this window until your reach the threshold number "Existing
+approvals (1/3)"
+![](@site/static/img/MultisigApprovalConfirmation.png)
+For the final approval your have also two choices :
+
+1.  You have copied the "multisig call data" and by clicking on
+    "Multisig approvals" from "Accounts" tab you come to this window and
+    have to enter the "call data for final approval" copied during the
+    first approval. The "Multisig message with call (for final
+    approval)" ticks itself.
+
+![](@site/static/img/MultisigApprovalConfirmationFINAL.png)
+2. You haven't kept "multisig call data" and you have to do exactly the
+same transaction with the same parameters. "Multisig message with call
+(for final apporval) is triggered by itself when your reach the
+threshold number of signatures.
+![](@site/static/img/ValidatorFINAL.png)
\ No newline at end of file
diff --git a/website/docs/tools/webWallet/accounts/receiveCoins.md b/website/docs/tools/webWallet/accounts/receiveCoins.md
new file mode 100644
index 0000000000000000000000000000000000000000..e6d3b31ca882df1ade366bf5c3745387085b0597
--- /dev/null
+++ b/website/docs/tools/webWallet/accounts/receiveCoins.md
@@ -0,0 +1,17 @@
+# Receive Coins
+You can receive coins from someone by sending your wallet address to
+that person.
+
+First, you may want to [derive a new wallet](./addAccount.md#deriving-a-wallet).
+
+1.  In the navigation menu, go to *Accounts* and in the drop-down menu,
+    click on *Accounts*. Or navigate to
+    https://wallet.xx.network/#/accounts.
+    ![](@site/static/img/Explorer_-_Top_Menu_Accounts_-_Accounts.png)
+2.  Select an account from the list and click on the avatar to the left
+    of the account name to copy the wallet address.
+    ![](@site/static/img/Explorer_-_Copy_wallet_address.png)
+3.  You should see a notification in the top right indicating the
+    address was copied.
+    ![](@site/static/img/Explorer_-_address_copied_notification.png)
+4.  Send the wallet address to the person who will send you coins.
diff --git a/website/docs/tools/webWallet/accounts/sendCoins.md b/website/docs/tools/webWallet/accounts/sendCoins.md
new file mode 100644
index 0000000000000000000000000000000000000000..646ee4b9c3e13f92a8a7c48094a14766449c8024
--- /dev/null
+++ b/website/docs/tools/webWallet/accounts/sendCoins.md
@@ -0,0 +1,51 @@
+# Send Coins
+Once you have set up your account, you can send coins to any wallet you
+have the address for.
+
+1.  In the navigation menu, go to *Accounts* and in the drop-down menu,
+    click on *Address book*. Or navigate to
+    https://wallet.xx.network/#/addresses.
+    ![](@site/static/img/Explorer_-_Address_book_nav.png)
+2.  Click on the *Add contact* button
+    ![](@site/static/img/Explorer_Add_contact_button.svg).
+    ![](@site/static/img/Explorer_-_Address_book,_Add_contact_button.png)
+3.  The *add an address* window will open
+    ![](@site/static/img/Explorer_-_Add_an_Address_Window.png)
+    
+    a.  Input the address for the wallet you want to send coins to.
+    
+    b.  Give a name to the contact. This can be changed later.
+    
+    c.  Click the *Save* button to save the contact.
+
+4.  The wallet will now appear in your contacts. Click on the *send*
+    button next to the contact to begin sending them coins.
+    ![](@site/static/img/Explorer_-_Address_book,_send_button.png)
+
+    You can also get to this screen by clicking on *Accounts* in the top
+    menu and then click *Transfer*.
+
+    ![](@site/static/img/Explorer_-_Transfer_Nav.png)
+5.  The *send funds* window will open.
+    ![](@site/static/img/Explorer_-_Send_Funds_Window.png)
+    
+    a.  Select one of your wallets to send the coins from. Ensure that
+        it has enough coins to send the amount desired and that it does
+        not go below the existential deposit (e).
+    
+    b.  Select the wallet to send coins to.
+    
+    c.  Select the number of coins to send. Use the dropdown on the
+        right to select the denomination.
+    
+    d.  The number of coins in your wallet cannot drop below the
+        existential deposit. Having less coins results in your account
+        being inactive.
+    
+    e.  Press the *Make Transfer* button when you have confirmed all the
+        details
+
+6.  On the next page, authorize your transaction by entering your
+    password and clicking the *Sign and Submit* button
+    ![](@site/static/img/Explorer_Sign_and_Submit_button.svg).
+    ![](@site/static/img/Explorer_-_Authorize_Transaction_(Sending_to_Contact).png)
diff --git a/website/docs/tools/webWallet/endpoints.md b/website/docs/tools/webWallet/endpoints.md
new file mode 100644
index 0000000000000000000000000000000000000000..2e26110ff5a0ef25a48666e71a65d11d2c4487a7
--- /dev/null
+++ b/website/docs/tools/webWallet/endpoints.md
@@ -0,0 +1,7 @@
+---
+sidebar_position: 2
+---
+
+# Selecting an Endpoint
+
+How to
diff --git a/website/docs/tools/webWallet/governance/_category_.json b/website/docs/tools/webWallet/governance/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..fa78c975963be74b9f938c98123fb20559c3095b
--- /dev/null
+++ b/website/docs/tools/webWallet/governance/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "Governance",
+  "position": 5,
+  "link": {
+    "type": "generated-index",
+    "description": "Governance"
+  }
+}
diff --git a/website/docs/tools/webWallet/governance/councilElections.md b/website/docs/tools/webWallet/governance/councilElections.md
new file mode 100644
index 0000000000000000000000000000000000000000..1413f2614ed3549e8830e7aa5f695a8f292f9111
--- /dev/null
+++ b/website/docs/tools/webWallet/governance/councilElections.md
@@ -0,0 +1,60 @@
+# Council Elections
+The [Council](../../../chain/governance.md#council) is an on-chain
+representative 13 member body designed to represent passive stakeholders
+within the xx network.
+
+Every seven days, an election will be held for these seats utilizing the
+Phragmén election process standard within the Substrate Ecosystem. This
+election will be based upon those who receive the plurality of coins.
+Any coins can be used, including those that are bonded for staking,
+locked, or vesting.
+
+The status of the current election can be checked with the
+[Web Wallet](https://wallet.xx.network/#/council).
+
+## Voting
+
+1.  Go to the [Web Wallet](https://wallet.xx.network/) and log in with
+    your account.
+2.  In the navigation menu, go to *Governance* and in the drop-down
+    menu, click on *Council*.
+    ![](@site/static/img/Main_Menu_-_Governance,_Council.png)
+3.  On the right side, click on the *Vote* button.
+    ![](@site/static/img/Explorer_-_Governance,_Council,_Vote_Button.png)
+4.  The *vote for current candidates* window will open up, which allows
+    you to rank the candidates according to your preference.
+    ![](@site/static/img/Explorer_-_Vote_for_Current_Candidates.png)
+    a.  Select the account you would like to use to cast a vote.
+    
+    b.  Select the value of your vote.
+    
+    c.  Select as many candidates as you would like.
+    
+    d.  Click the *Vote* button
+
+5.  On the next page, authorize your transaction by entering your
+    password and clicking the *Sign and Submit* button.
+    ![](@site/static/img/Explorer_-_Authorize_Transaction_(Council_Vote).png)
+6.  You should see your vote appear in the interface after your
+    transaction is included.
+
+## Submitting Candidacy
+
+1.  Go to the [Web Wallet](https://wallet.xx.network/) and log in with
+    your account.
+2.  In the navigation menu, go to *Governance* and in the drop-down
+    menu, click on *Council*.
+    ![](@site/static/img/Main_Menu_-_Governance,_Council.png)
+3.  On the right side, click on the *Submit candidacy* button.
+    ![](@site/static/img/Explorer_-_Governance,_Council,_Submit_candidacy_Button.png)
+4.  The *submit your council candidacy* window will open up.
+    ![](@site/static/img/Explorer_-_Submit_council_candidacy.png)
+    a.  Select the account you would like to submit candidacy for.
+    
+    b.  This is the amount that will be bonded.
+    
+    c.  Click the *Submit* button to continue.
+    
+5.  On the next page, authorize your transaction by entering your
+    password and clicking the *Sign and Submit* button.
+    ![](@site/static/img/Explorer_-_Authorize_Transaction_(Submit_Candidacy).png)
diff --git a/website/docs/tools/webWallet/governance/largeDemocracyProposal.md b/website/docs/tools/webWallet/governance/largeDemocracyProposal.md
new file mode 100644
index 0000000000000000000000000000000000000000..8cde7aea5b1d202e0b2d0d923ac30dd3ccbc4715
--- /dev/null
+++ b/website/docs/tools/webWallet/governance/largeDemocracyProposal.md
@@ -0,0 +1,99 @@
+# Large Democracy Proposal
+
+This wiki page describes how to submit a Democracy Proposal for a pallet
+call that expects a large amount of data, which is very cumbersome to do
+via the Wallet directly.
+
+As an example, this page describes a proposal that changes the cMix
+geographic multipliers to be all 1.
+
+## Generate the preimage
+
+The preimage of the proposal can be generated programatically using for
+example python or js.
+
+An example script for setting all geographic multipliers to 1 is
+available here, [set_cmix_variables.py](https://github.com/xx-labs/scripts-py/blob/main/set_cmix_variables.py)
+
+Running this script when connected to a MainNet node will result in the
+following output. 
+```
+$ python set_cmix_variables.py
+0x0d0e750d1e02e0930400000000000a0000001400000082000000e5034249074d4e09544f0b50570b4d5403435a0345520650460b415100464b01494d02424a06534807434c01564901495205554d00414d055053054852044c4b0a54460b435501424c014e4c0251410550470b434b0b5647014553024145055559014c43015447064e4f034a5009415a054547064748064d5206504b0a544a0a4e460b4149015645015054024d480b425201545a074b5009544d0a4e520b5349034158044c42054854014d500b534e064c520643580b535a074244094754014359045452054e5a0b424d01474d065a5707504d01414f075353074c5307464a0b5553004d51014d4b0457460b4b520941550b534a03494c05445a064652025a41075547074749025641035253044e47074b470a425a01474c015a4d074b48094b490b494f0a424f01534b035541045354074543015359054349064746014d5507484b09544c0b49530242410459450545450456550b4c55024954034d5909464d0b50520141440242590441470149510541460a4741074b5a0a555a0a4d560a43430b4c54044c56044d4106504c03434e094d4f095059015358014154034c41095257075954075347094d5707444f01464f024e45064751075344065041014945024c59064b59015643014e50094b4d074744014a4502534d03434607504501424704534c0653420b4b4e01434407564e09474504435606444a06475901484e014753014251014d45045454014d53014b5705455406425607434100415201435701524507525508535201424e0b444503414c045341054d4c065457094253014e49014d4601504e0b494e0a484d0b4157014257075343074e430b41530b474e064d4d09475001444b034a4f054a4d014d430250480b4752044248054d470742540957530b444d01424502524f0454430149440b544b0b4c4903544406454806485503544e06434d074d5a074242014352015356014246064742024348034f4d054e550b47550b475706534f074e4107434f014747024b45074d58004347075448095345034649044d440454560b3000e80301e80302e80303e80304e80305e80306e80307e80308e80309e8030ae8030be8033075000000000000983a000000000000b80b00000000000005e80300005000000000000000e0930400e8030000005c260500000000
+```
+The large hex string is the encoded
+democracy.notePreimage call with a nested xxCmix.setNextCmixVariables
+call containing the new cmix variables as argument.
+
+## Submit the preimage
+
+Now that the preimage call is created, it can be submitted to the
+network in the Wallet.
+
+Steps:
+
+1.  Go to the [Web Wallet](https://wallet.xx.network)
+2.  Go to the Developer/Extrinsics tab (only shows up if an account is
+    added)![](@site/static/img/Screen_Shot_2022-05-17_at_9.44.48_AM.png)
+3.  Select the Decode
+    tab![](@site/static/img/Screen_Shot_2022-05-17_at_9.44.56_AM.png)
+4.  Paste the hex string from the previous step in the hex-encoded call
+    field![](@site/static/img/Screen_Shot_2022-05-17_at_9.45.09_AM.png)
+5.  Submit the transaction
+
+## Create the Democracy Proposal
+
+Now that the preimage is on-chain, the Democracy proposal can be created
+using the Wallet.
+
+Steps:
+
+1.  After submitting the transaction in the previous step, go back to
+    the Network/Explorer tab
+2.  Find the democracy.PreimageNoted event and click the arrow icon to
+    expand
+    it![](@site/static/img/Screen_Shot_2022-05-17_at_9.45.23_AM.png)
+3.  Click the clipboard icon to copy the preimage hash (the actual value
+    might be different than shown in the
+    image![](@site/static/img/Screen_Shot_2022-05-17_at_9.45.28_AM.png)
+4.  Go to the Democracy tab and click the Submit proposal
+    button![](@site/static/img/Screen_Shot_2022-05-17_at_1.08.30_PM.png)
+5.  Paste the preimage hash and submit the transaction
+    ![](@site/static/img/Screen_Shot_2022-05-17_at_9.45.42_AM.png)
+
+
+## Verify a Democracy Proposal
+
+In the Democracy page in the Wallet, the arrow icon can be used to
+expand an existing proposal in order to see the arguments to the
+specified call.
+![](@site/static/img/Screen_Shot_2022-05-17_at_1.10.51_PM.png)
+However, in the case of this example, the call argument is large, which
+makes it very hard to verify visually.
+![](@site/static/img/Screen_Shot_2022-05-17_at_1.10.59_PM.png)
+
+This way, it's better to programatically verify the proposal, and what
+it actually changes.
+
+An example script for verifying the cmix variables proposal is available
+here, [check_cmix_variables_proposal.py](https://github.com/xx-labs/scripts-py/blob/main/check_cmix_variables_proposal.py)
+
+Running this script when connected to a MainNet node and configured with
+the preimage hash that is available on-chain will result in the
+following output.
+```
+$ python check_cmix_variables_proposal.py
+...
+Multiplier for `North America` changing from 1.023 to 1.0
+Multiplier for `South and Central America` changing from 1.267 to 1.0
+Multiplier for `Western Europe` changing from 0.873 to 1.0
+Multiplier for `Central Europe` changing from 0.962 to 1.0
+Multiplier for `Eastern Europe` changing from 0.905 to 1.0
+Multiplier for `Middle East` changing from 0.899 to 1.0
+Multiplier for `Northern Africa` changing from 1.381 to 1.0
+Multiplier for `Southern Africa` changing from 1.381 to 1.0
+Multiplier for `Russia` changing from 0.944 to 1.0
+Multiplier for `Eastern Asia` changing from 1.402 to 1.0
+Multiplier for `Western Asia` changing from 1.211 to 1.0
+Multiplier for `Oceania` changing from 1.457 to 1.0
+```
diff --git a/website/docs/tools/webWallet/governance/runtimeUpdate.md b/website/docs/tools/webWallet/governance/runtimeUpdate.md
new file mode 100644
index 0000000000000000000000000000000000000000..611511743be91d5c83809ef83aa8d75089889183
--- /dev/null
+++ b/website/docs/tools/webWallet/governance/runtimeUpdate.md
@@ -0,0 +1,130 @@
+# Runtime Update Tutorial
+This page describes how to perform a runtime update (code change)
+in the xx Network blockchain.
+
+## Versioning
+
+xx Chain version follows the standard Semantic versioning of
+`v[major].[minor].[patch]`
+
+Runtime versioning stays inline with the xx Chain version, using a 6
+digit string.
+
+For example:
+
+-   v0.2.0 -> runtime 00 02 00 = 200
+-   v0.2.3 -> runtime 00 02 03 = 203
+-   v1.0.0 -> runtime 01 00 00 = 10000
+-   v1.1.0 -> runtime 01 01 00 = 10100
+
+If a particular change in xxchain is client side only (no runtime
+changes), then the runtime version stays the same. These sort of changes
+should always be patches.
+
+## Runtime Compilation
+
+Steps:
+
+1.  Create a branch containing the desired changes to the runtime
+    (example:
+    [xxnetwork-runtime-203](https://github.com/xx-labs/xxchain/tree/xxnetwork-runtime-203))
+    -   Naming should follow the standard:
+        \[spec_name\]-runtime-\[spec_version\]
+    -   Make sure the spec version is correctly increased for the
+        runtime
+        -   Example: current runtime spec version is 202, so the new version
+            needs to be at least 203 for the upgrade to be performed
+    -   Make sure Cargo.toml versions are also increased for the cli and
+        runtime packages. Also, any packages that import the runtime
+        should be updated to import the new version
+2.  Commit changes to git, and create a tag following the Semantic
+    versioning rules described above
+3.  Compile the binary (which compiles the runtime)
+
+Alternatively, if a release already exists, you can get the necessary
+binary, runtime code and subwasm information from the release notes.
+
+Example:
+[v0.2.3](https://github.com/xx-labs/xxchain/releases/tag/v0.2.3)
+
+## Democracy Proposal
+
+Steps:
+
+1.  In the wallet go to the
+    [Democracy](https://wallet.xx.network/#/democracy)
+2.  Click the “Submit proposal” button
+
+![](@site/static/img/Screen_Shot_2022-04-26_at_2.06.27_PM.png)
+
+3.  Fill in the preimage hash with the system.setCode hash from the
+    previous steps![](@site/static/img/Screen_Shot_2022-04-26_at_2.07.48_PM.png)
+4.  Click "Submit proposal" and then on the next screen sign and submit
+    the transaction
+
+Now that the proposal is up, go to the xx network community channels
+([discord](https://discord.com/invite/Y8pCkbK) and
+[telegram](https://t.me/xxnetwork)) and inform other members of the
+community about the proposed code change. It is important that
+information about the code change is included (references to github
+release), since the actual code won’t be put on chain until the
+referendum passes.
+
+Once the proposal becomes a referendum, anyone can vote for it. Voting
+period is one week.
+
+## Verifying Code Changes
+
+While the referendum is ongoing, community members might wish to verify
+that the proposer was truthful.
+
+Steps:
+
+1.  Checkout the branch with the new runtime
+2.  Compile the binary (which compiles the runtime)
+3.  Use subwasm to get the system.setCode hash for the new runtime in
+    compact compressed format (see above for example)
+4.  Verify that the proposal preimage hash that is on-chain matches the
+    system.setCode hash output in the previous step
+
+## Uploading Code
+
+If the referendum passes, the enactment period is one week as well,
+meaning the change is only performed one week after the referendum ends.
+Before the end of this enactment period, the code changes must be
+uploaded on chain, otherwise the enactment will fail.
+
+This can be done by anyone, without needing to reserve coins, since the
+preimage is imminent.
+
+Steps:
+
+1.  In the wallet go to the
+    [Democracy/Dispatch](https://wallet.xx.network/#/democracy/dispatch)
+2.  Click the “Image” button
+3.  Select ”system” and “setCode” from the dropdown menus and click on
+    the “file upload” toggle![](@site/static/img/Screen_Shot_2022-04-26_at_2.19.45_PM.png)
+4.  Click on the code field (where it says “click to select …”) which
+    opens your OS file explorer. Find the runtime file containing the
+    new code and open it![](@site/static/img/Screen_Shot_2022-04-26_at_2.20.26_PM.png)
+5.  If the code is correct, the preimage hash matches what was approved
+    in the referendum (this was highlighted in red before the file was
+    selected). This makes it impossible to change the code to upload
+    after the referendum has been approved![](@site/static/img/Screen_Shot_2022-04-26_at_2.20.37_PM.png)
+6.  Click the “Submit preimage” button
+7.  Review the information
+:::note
+Since the code change is a large file, the transaction
+        fees shown could be close to 100 xx. However, since this
+        referendum is imminent, the fee is refunded at the end of the
+        transaction processing. Still, the funds still need to be
+        available in the account to be able to submit the transaction
+:::
+
+![](@site/static/img/Screen_Shot_2022-04-26_at_2.20.49_PM.png)
+8.  Sign and submit the transaction
+9.  When the transaction is in a block it’s possible to see the
+    transaction fee being Withdraw and then Deposited back into the
+    account![](@site/static/img/Screen_Shot_2022-04-26_at_2.21.51_PM.png)
+10. In the democracy dispatch queue, now it’s possible to see the exact
+    proposal data instead of only the preimage![](@site/static/img/Screen_Shot_2022-04-26_at_2.21.07_PM.png)
diff --git a/website/docs/tools/webWallet/governance/voting.md b/website/docs/tools/webWallet/governance/voting.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/website/docs/tools/webWallet/staking/_category_.json b/website/docs/tools/webWallet/staking/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..96083ce3b12b5feb6d554fcade4a12005d27d125
--- /dev/null
+++ b/website/docs/tools/webWallet/staking/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "Staking",
+  "position": 5,
+  "link": {
+    "type": "generated-index",
+    "description": "Staking"
+  }
+}
diff --git a/website/docs/tools/webWallet/staking/bond.md b/website/docs/tools/webWallet/staking/bond.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/website/docs/tools/webWallet/staking/nominate.md b/website/docs/tools/webWallet/staking/nominate.md
new file mode 100644
index 0000000000000000000000000000000000000000..3bbd8a7924d02e1264fbd460f55caa02add30fe6
--- /dev/null
+++ b/website/docs/tools/webWallet/staking/nominate.md
@@ -0,0 +1,251 @@
+# Nominating Validators
+
+To nominate a Node in the xx network, you will be required to first bond
+the coins you wish to stake. While bonded, these coins will not be
+transferable but may be used for staking and governance. Staking and
+governance are considered separate actions and both may be done
+simultaneously with the same locked coins. For example, suppose you have
+1,000 xx coins staked and nominating several nodes. In that case, you
+may use those same xx coins to vote on referenda, elect council members,
+and propose treasury spending without unstaking the nodes.
+
+When a user wishes to unbond all or some of their coins to transfer
+them, there is a 28-day cooldown period until the coins may be used. The
+coins will not earn interest during this period and will not be counted
+towards your active stake. A user may rebond the coins at any time
+during this period and begin using them for staking again. This period
+ensures that the coins are available for slashing if a prior offense is
+caught within the 28-day unbonding period.
+
+**Overview of Steps to Nominate Nodes**
+
+1.  Create and fund a controller wallet
+2.  Bond the coins you wish to stake
+3.  Choose up to 16 nodes to nominate (with each bonded account)
+4.  Wait for the next election for your nomination to be applied
+5.  Claim rewards (rewards will automatically be staked so that they
+    earn interest)
+
+## Before Starting
+
+Before you can bond and nominate, log in to the [xx wallet](https://wallet.xx.network/) with your account. If you have not
+created a wallet or account, refer to [Using the Wallet Generator](../accounts/generateAccount.md) to get started with a
+new wallet and [Add an Account to the xx wallet](../accounts/addAccount.md) to log in.
+
+## Bond the Coins to be Staked
+
+Once you have your wallet with coins set up, you need to bond the coins
+into the network.
+
+1.  In the navigation menu, go to *Network* and in the drop-down menu,
+    click on *Staking*. Or navigate to
+    https://wallet.xx.network/#/staking.
+    ![](@site/static/img/Explorer_-_Staking_Nav.png)
+2.  The Staking Overview page will open.
+    1.  Click on *Account actions* in the submenu.
+    2.  Then click the *stash* button
+        ![](@site/static/img/Explorer_Stash_button.svg).
+
+    ![](@site/static/img/Explorer_-_Account_Actions,_Add_Stash.png)
+3.  The *bonding preferences* window will open.
+    1.  Select the account to use. It should be the same account for
+        stash and controller accounts.
+    2.  Enter the amount you wish to bond
+    3.  Once you have confirmed everything, click the *Bond* button.
+
+    ![](@site/static/img/Explorer_-_Add_Stash,_Bonding_Preferences.png)
+4.  On the next page, authorize your transaction by entering your
+    password and clicking the *Sign and Submit* button
+    ![](@site/static/img/Explorer_Sign_and_Submit_button.svg).
+    ![](@site/static/img/Explorer_-_Authorize_Transaction_(Bond_Tokens_for_Stash).png)
+
+![](@site/static/img/Stashing_xx_coins.gif)
+
+## Selecting Nodes to Nominate
+
+Once your stash is bonded, you are ready to stake nodes. This section
+will cover nominating other people’s nodes.
+
+Keep in mind that each account can nominate up to 16 different nodes. If
+you want to nominate more than 16 nodes, then you will need to create
+another account and split your coins between the accounts.
+
+### Reviewing Nodes
+
+First, you will likely need to research the available nodes to select
+the right nodes to nominate.
+
+1.  In the navigation menu, go to *Network* and in the drop-down menu,
+    click on *Staking*. Or navigate to
+    https://wallet.xx.network/#/staking.
+    ![](@site/static/img/Explorer_-_Staking_Nav.png)
+2.  The Staking Overview page will open. Click on *Targets* in the
+    submenu.
+    ![](@site/static/img/Explorer_-_Targets_Submenu_Nav.png)
+
+From here, you can see all the available nodes you can nominate. A
+detailed walkthrough of choosing the best nodes to stake is outside the
+scope of the wiki, but there are some things to consider when selecting
+the nodes that you want to nominate.
+
+1.  **Determine the node’s commission.**
+    
+    The commission percentage is the amount of the rewards pool that the
+    node takes off the top as compensation for running the node. The
+    rest of the rewards are then split amongst the stakers of the node.
+    A node with a 100% commission rate will take all of its rewards in
+    an era, leaving no rewards for anyone who has nominated it.
+    Likewise, a node with 0% commission will not take any additional
+    compensation for running the node and all of its earnings will be
+    split amongst its stakers.
+
+    ![](@site/static/img/Commission_column.png)
+2.  **Verify how many people are already nominating a node.**
+    
+    The rewards that a node earns are split evenly based on stake (after
+    the commission is taken out). The more stake that a node has, the
+    more people you will share your rewards with. Check the *total
+    stake* column for this info and take this into consideration.
+    Furthermore, the rewards from a node will only be paid to the top
+    256 nominators. This means if you nominate on a node, but 256 people
+    are nominating more than you, then you will not receive any rewards
+    from that node until you stake enough to be in the top 256. Check
+    the *nominators* column and take this into consideration when
+    choosing nodes. A red icon labeled *Oversubscribed*
+    ![](@site/static/img/Explorer_-_Oversubscribed_Icon.svg)
+    will appear next to all nodes that have more than 256 nominators.
+
+    ![](@site/static/img/Nominator_Info.png)
+
+3.  **Check the node’s prior performance.**
+    
+    If a node goes offline or misbehaves, it (and everyone staked on it)
+    will earn fewer coins and, in rare cases, may lose coins. Follow
+    these instructions to check the performance of the node.
+
+    1.  Click on the *cmix id* for a node to open its page on the [xx
+        network dashboard](https://dashboard.xx.network/) in a new
+        tab/window.
+        ![](@site/static/img/Explorer_-_Targets,_cmix_id_link.png)
+    2.  Look at the *Uptime* and *Round Success Rate* graphs and confirm
+        that they are acceptable.
+        ![](@site/static/img/Dashboard_-_Uptime_and_Round_Success_Rate_Graphs.png)
+    3.  Return to the explorer tab/window and click on the *stats* icon
+        ![](@site/static/img/Explorer_-_Stats_Icon.svg) next to the node.
+        ![](@site/static/img/Explorer_-_Targets,_Stats_icon_link.png)
+    4.  On this page, you can see how consistent the node has been.
+        ![](@site/static/img/Explorer_-_Validator_stats.png)
+
+    ![](@site/static/img/Node_performance_gif.gif)
+
+
+## Selecting Nodes
+
+1.  Click on *Targets* in the submenu to return to the list of nodes.
+
+![](@site/static/img/Explorer_-_Targets_Submenu_Nav.png)
+
+To select a node, use the toggle box on the far right. You can toggle
+the ones you like (up to 16).
+
+![](@site/static/img/Explorer_-_Targets,_Nominate_Checkbox.png)
+
+Once you have selected all the nodes you want to nominate, click on the
+*Nominate selected* button
+![](@site/static/img/Explorer_Nominate_selected_button.svg) on the top
+right.
+
+![](@site/static/img/Explorer_-_Targets,_Nominate_selected.png)
+
+The *nominate validators* window will open.
+
+1.  Make sure that you select the correct account to nominate with.
+2.  The validators you selected to nominate.
+3.  Once you are ready to nominate, click the *Nominate* button
+    ![](@site/static/img/Explorer_Nominate_button.svg).
+
+![](@site/static/img/Explorer_-_Nominate_validators_windows.png)
+
+On the next page, authorize your transaction by entering your password
+and clicking the *Sign and Submit* button
+![](@site/static/img/Explorer_Sign_and_Submit_button.svg).
+
+![](@site/static/img/Explorer_-_Authorize_Transaction_(Nominating).png)
+
+![](@site/static/img/Nominate_from_targets_gif.gif)
+
+## Wait For Next Election for Your Nomination to be Applied
+
+When you nominate a node, your nomination does not become active
+immediately. Instead, it will be applied in the next node election,
+which occurs at the end of every era.
+
+1.  In the navigation menu, go to *Network* and in the drop-down menu,
+    click on *Staking*. Or navigate to
+    https://wallet.xx.network/#/staking.
+
+![](@site/static/img/Explorer_-_Staking_Nav.png)
+
+The Staking Overview page will open. Click on *Account actions* in the
+submenu.
+
+![](@site/static/img/Explorer_-_Account_Actions_Nav.png)
+
+On the *Account actions* page, you can see all your bonded wallets along
+with information on whether there are *active* or *waiting* nominations
+on them.
+
+To see when the next era begins:
+
+1.  In the navigation menu, go to *Network* and in the drop-down menu,
+    click on *Staking*. Or navigate to
+    https://wallet.xx.network/#/staking.
+    ![](@site/static/img/Explorer_-_Staking_Nav.png)
+2.  The length of each era and the time until the next era are viewable
+    in the top right.
+    ![](@site/static/img/Era_Timer.png)
+
+## Claim Rewards
+
+You may receive an xx coin payout at the end of every era in which you
+are an active nominator on an active validator. Your payouts do not go
+into your wallet automatically; they must be manually claimed by you or
+one of the other stakers on that payout’s node. When one of the stakers
+on a node claims the payout for an era, it is automatically claimed for
+all other stakers on the node. There is a deadline by which each payout
+must be claimed before it is lost.
+
+To see any available payouts, go to the *Payouts* tab on the *Staking*
+page or navigate to the [*Payouts*
+page](https://wallet.xx.network/#/staking/payout). From here, you can
+see the aggregate payouts available per bonded stash, as well as a list
+of all the individual payouts available to claim. You may claim each of
+these one-by-one by clicking on the *Payout* button on the right, or you
+can claim all of your payouts with the *Payout all* button at the top
+right. If you have been actively nominating for at least a day and you
+do not see any payouts, it is likely another staker already claimed the
+payout for you and the coins are already in your stash wallet. All
+payouts are automatically rebonded into the stash account that earned
+them.
+![](@site/static/img/Payouts_tab.png)
+
+### Instructions
+
+1.  In the navigation menu, go to *Network* and in the drop-down menu,
+    click on *Staking*. Or navigate to
+    https://wallet.xx.network/#/staking.
+    ![](@site/static/img/Explorer_-_Staking_Nav.png)
+2.  The Staking Overview page will open. Click on *Payouts* in the
+    submenu.
+    ![](@site/static/img/Explorer_-_Payouts_Nav.png)
+3.  To select a single payout, click the *Payout* button next to the
+    selected payout. To receive all payouts at once, click the *Payout
+    all* button in the top right.
+4.  The *payout all stakers* window will open.
+    1.  Select the account to request the payout from.
+    2.  Once you have confirmed everything, click the *Payout* button.
+5.  On the next page, authorize your transaction by entering your
+    password and clicking the *Sign and Submit* button
+    ![](@site/static/img/Explorer_Sign_and_Submit_button.svg).
+6.  You should see these notifications in the top right corner
+    indicating the action was successful.
diff --git a/website/docs/tools/webWallet/staking/nominateRight.md b/website/docs/tools/webWallet/staking/nominateRight.md
new file mode 100644
index 0000000000000000000000000000000000000000..d302954edab0fb35ef8a7dd4ddca0621a2c51143
--- /dev/null
+++ b/website/docs/tools/webWallet/staking/nominateRight.md
@@ -0,0 +1,167 @@
+To choose the right validators in the xx network, you will first need to
+follow [How To Nominate](https://xxnetwork.wiki/How_to_Nominate) wiki
+article.
+
+Once you know all the steps to nominate, you can follow this article.
+
+This article can help you to save a lot of XX coins. Some people
+nominate "boot node" who not even run cmix and give almost no reward
+with more than 1M xx coins staked. Boot nodes share less than 40xx
+instead of about 250xx per era. Cumulative lost for these nominators
+since November 2021 is more than 10k XX whatever their stake due to huge
+team stake. And it's the same for bad validators who run always below
+average every era you lost rewards and these validators hurt the
+network.
+
+## Select some validators
+
+For select the right validators, you should first check the commission
+percentage which is an important parameter. This percentage is the price
+you pay to the validator for each era based on the number of XX
+received. So sort from lowest to highest 2% (which is the minimum
+percentage allowed) to 18% maximum percentage allowed by the team to use
+the team multiplier (red bar). The 20% and above are hidden by default
+with "no 20%+ comm". You shouldn't take validators above 18% because
+there are already many good validators to choose from this range.
+
+![](@site/static/img/BadPercentageP.png)
+This is an example of validators with 20%+ that you shouldn't nominate.
+
+To help you choose after this first sort, try to check the nominators
+column without the red icons on the left (oversubscribed means there are
+too many nominators due to the limit of 256 per validator / blocks
+nominations icon means that this validator refuses to be nominated / the
+slashed icon is for people who have more than one node or a
+configuration error or not enough time before switching to another
+gateway or cmix on another computer so check these validators carefully
+before choosing them)
+
+For the nominator column (in the middle of this graph): the first number
+is for the current nominators selected for this era and the second
+number is for all nominators that name this node.
+![](@site/static/img/Nominator_columns.png)
+You can easily filter out people who are above the "avg staked"; they
+already have too many nominators, so they don't need you and it's not
+really good for you.
+
+Below I share four strategies: one for poorer nominators with low stakes
+(less than 50k), one for richer nominators (100k or more), one for a
+validator with a nominator stake, and the last one for nominate and
+forget.
+
+After that, you have the most important step. NEVER appoint a validator
+that performs poorly and can harm the entire network, because it is your
+responsibility to eject these poorly performing validators from the
+network!
+![](@site/static/img/StatsIcon.png)
+
+## Low stake nominators strategy
+
+To get the best validators for you, try to catch some people in the
+waiting list with the highest "own stake". This means lowering the total
+stake of the nominators so that you have fewer competitors on the side
+of the nominators with the lowest possible commission percentage to keep
+the best daily reward. People in the waiting list is a good strategy
+because most of the time have a low number of nominators without enough
+stake to get elected. Another strategy is to take a validator with only
+one great nominator at the "avg staked" or below because the threshold
+can be even a little lower than average. Never nominate too many
+validators with this strategy but choose 1 or 2 running validators only
+and every good validators in the waiting list.
+
+## Richer nominators strategy
+
+Your best strategy is to take the lowest possible own stake with the
+lowest commission or try to add your nominator's stake + validator own
+stake to reach the "avg staked". Phragmen will eliminate all other
+nominators and split the rewards only between you and the validator. To
+find out that, just look at the "avg staked" number in the Targets tab.
+This strategy should be checked almost daily to see if your validator
+has changed commission percentage and not have any problems, but forcing
+your total stake on one or two validators with a low commission
+percentage will increase your daily rewards. For limited risk, choose a
+validator in the 9-18% range who probably won't move their commission
+value too much.
+
+## Validators strategy
+
+If you have a TM, set 18% and choose only your own validator, lowering
+your TM value as much as possible. You need a little less "avg staked"
+than what you can find at the top of the "Targets" tab.
+
+If you don't have a TM and enough coins, push the percentage as high as
+possible and select your own node until you reach a little less than
+"avg staked" and don't select any other nominators. If you are at "avg
+staked" number on your validator with no other nominators than your
+nominator. You need to create a second wallet for create a second
+nominators and select the "low stake" or "richer" nominator strategy.
+
+## Nominate and forget strategy
+
+Nominate a maximum of 16 nodes, but check each validator (last step) and
+retain only those validators that have performed at or above average for
+more than 30 eras and whose commission is between 9% and 18% or whose
+commission percentage has not changed in the last 60 eras.
+
+## NEVER nominate bad validators
+
+This is the most important step. Your job is to remove bad validators
+from the network and replace them with good validators that do not cause
+problems for the network. This action will allow you to earn more
+rewards each time. Before nominate any validators, click on the icon in
+the "stats" column to check the rewards received at every eras and the
+validator is consistently performing at or above the average on the
+rewards graph at the bottom left of the page.
+
+![](@site/static/img/GoodAverageValidator.png) An example of an excellent validator with consistent results over time. On
+this graph, the green line represents the actual result of the validator
+which is really perfect and never touches the average line (red). Never
+select validators that are always below this average line and watch out
+for validators that fall below the average (red) line too often on this
+graph but is grey on the page.
+
+![](@site/static/img/BadValidator.png) This
+is an example of a bad validator that is consistently below average and
+that no one should nominate. This validator should be replaced with a
+better validator that doesn't hurt the whole network every era and also
+gives you more rewards.
+
+![](@site/static/img/Good_validator_with_drops_from_elected_list.png)
+This is an example of a good validator that performs above average when
+elected but has frequent dropouts from elected list giving reward graph
+frequent drops to zero marked with green squares. Notice that all reward
+drops to zero marked green corresponds with "elected stake" graph also
+dropping to zero, which means validator just did not get elected for
+that specific era. The only validator performance related drop is marked
+with red rectangle. This validator is a good to nominate.
+
+The second thing to look at is the commission graph on the right. Some
+validators attract nominators by setting a low percentage, but after
+certain periods of time that percentage increases and can even exceed
+80% for some validators, so be very careful with these validators and
+it's best to not select them. The best validators are stable and the
+line on the right is flat at 18% or less or move between 0% (not
+elected) and back to their old flat percentage.
+
+![](@site/static/img/ValidatorBadCommission.png)
+validator who isn't performing well due to regularly below average
+performance and double commission for no reason. Nominators should not
+nominate him and choose another validator with less percentage and above
+average results.
+
+![](@site/static/img/Flip-flopper.png)Another
+example of validator changing commission rate frequently from 18% to
+100% in order to deceive nominators. Nominators should look for other
+reliable validator.
+
+So to take this last step:
+
+\- look at these graphs all the time before nominate someone that's very
+important and take only the validator that stays equal or above the
+average rewards with minimal points below the average as possible (if
+the reward point is at 0, this validator is not elected and it's not
+important. You can see that the commission graph stays at 0% during
+these times, but at 10% commission and low reward, then validator is
+performing poorly in that era).
+
+\- see that the commission is as flat as possible
diff --git a/website/docs/tools/webWallet/staking/payout.md b/website/docs/tools/webWallet/staking/payout.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/website/docs/tools/webWallet/staking/staking.md b/website/docs/tools/webWallet/staking/staking.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/website/docs/tools/webWallet/staking/unbond.md b/website/docs/tools/webWallet/staking/unbond.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/website/docs/tools/webWallet/staking/validate.md b/website/docs/tools/webWallet/staking/validate.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/website/docs/tools/webWallet/webwallet.md b/website/docs/tools/webWallet/webwallet.md
new file mode 100644
index 0000000000000000000000000000000000000000..fa4034ccc8efe9e4113a725e15a33e0f290ae060
--- /dev/null
+++ b/website/docs/tools/webWallet/webwallet.md
@@ -0,0 +1,7 @@
+---
+sidebar_position: 1
+---
+
+# Introduction
+
+Description
\ No newline at end of file
diff --git a/website/docs/tutorial-basics/_category_.json b/website/docs/tutorial-basics/_category_.json
deleted file mode 100644
index 2e6db55b1eb61147f3aef1965dbdd79fdd505406..0000000000000000000000000000000000000000
--- a/website/docs/tutorial-basics/_category_.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "label": "Tutorial - Basics",
-  "position": 2,
-  "link": {
-    "type": "generated-index",
-    "description": "5 minutes to learn the most important Docusaurus concepts."
-  }
-}
diff --git a/website/docs/tutorial-basics/congratulations.md b/website/docs/tutorial-basics/congratulations.md
deleted file mode 100644
index 04771a00b72f80ee4d829890a8229085da77db4d..0000000000000000000000000000000000000000
--- a/website/docs/tutorial-basics/congratulations.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-sidebar_position: 6
----
-
-# Congratulations!
-
-You have just learned the **basics of Docusaurus** and made some changes to the **initial template**.
-
-Docusaurus has **much more to offer**!
-
-Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**.
-
-Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610)
-
-## What's next?
-
-- Read the [official documentation](https://docusaurus.io/)
-- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config)
-- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration)
-- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout)
-- Add a [search bar](https://docusaurus.io/docs/search)
-- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase)
-- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support)
diff --git a/website/docs/tutorial-basics/create-a-blog-post.md b/website/docs/tutorial-basics/create-a-blog-post.md
deleted file mode 100644
index 550ae17ee1a2348bf4c66e75bf3a68f48a5a8083..0000000000000000000000000000000000000000
--- a/website/docs/tutorial-basics/create-a-blog-post.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-sidebar_position: 3
----
-
-# Create a Blog Post
-
-Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed...
-
-## Create your first Post
-
-Create a file at `blog/2021-02-28-greetings.md`:
-
-```md title="blog/2021-02-28-greetings.md"
----
-slug: greetings
-title: Greetings!
-authors:
-  - name: Joel Marcey
-    title: Co-creator of Docusaurus 1
-    url: https://github.com/JoelMarcey
-    image_url: https://github.com/JoelMarcey.png
-  - name: Sébastien Lorber
-    title: Docusaurus maintainer
-    url: https://sebastienlorber.com
-    image_url: https://github.com/slorber.png
-tags: [greetings]
----
-
-Congratulations, you have made your first post!
-
-Feel free to play around and edit this post as much as you like.
-```
-
-A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
diff --git a/website/docs/tutorial-basics/create-a-document.md b/website/docs/tutorial-basics/create-a-document.md
deleted file mode 100644
index c22fe29446877a1485793edc1ea6ab3573acc09d..0000000000000000000000000000000000000000
--- a/website/docs/tutorial-basics/create-a-document.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-sidebar_position: 2
----
-
-# Create a Document
-
-Documents are **groups of pages** connected through:
-
-- a **sidebar**
-- **previous/next navigation**
-- **versioning**
-
-## Create your first Doc
-
-Create a Markdown file at `docs/hello.md`:
-
-```md title="docs/hello.md"
-# Hello
-
-This is my **first Docusaurus document**!
-```
-
-A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello).
-
-## Configure the Sidebar
-
-Docusaurus automatically **creates a sidebar** from the `docs` folder.
-
-Add metadata to customize the sidebar label and position:
-
-```md title="docs/hello.md" {1-4}
----
-sidebar_label: 'Hi!'
-sidebar_position: 3
----
-
-# Hello
-
-This is my **first Docusaurus document**!
-```
-
-It is also possible to create your sidebar explicitly in `sidebars.js`:
-
-```js title="sidebars.js"
-export default {
-  tutorialSidebar: [
-    'intro',
-    // highlight-next-line
-    'hello',
-    {
-      type: 'category',
-      label: 'Tutorial',
-      items: ['tutorial-basics/create-a-document'],
-    },
-  ],
-};
-```
diff --git a/website/docs/tutorial-basics/create-a-page.md b/website/docs/tutorial-basics/create-a-page.md
deleted file mode 100644
index 20e2ac300556e9baedcaf67474244f7059a53c40..0000000000000000000000000000000000000000
--- a/website/docs/tutorial-basics/create-a-page.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-sidebar_position: 1
----
-
-# Create a Page
-
-Add **Markdown or React** files to `src/pages` to create a **standalone page**:
-
-- `src/pages/index.js` → `localhost:3000/`
-- `src/pages/foo.md` → `localhost:3000/foo`
-- `src/pages/foo/bar.js` → `localhost:3000/foo/bar`
-
-## Create your first React Page
-
-Create a file at `src/pages/my-react-page.js`:
-
-```jsx title="src/pages/my-react-page.js"
-import React from 'react';
-import Layout from '@theme/Layout';
-
-export default function MyReactPage() {
-  return (
-    <Layout>
-      <h1>My React page</h1>
-      <p>This is a React page</p>
-    </Layout>
-  );
-}
-```
-
-A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page).
-
-## Create your first Markdown Page
-
-Create a file at `src/pages/my-markdown-page.md`:
-
-```mdx title="src/pages/my-markdown-page.md"
-# My Markdown page
-
-This is a Markdown page
-```
-
-A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page).
diff --git a/website/docs/tutorial-basics/deploy-your-site.md b/website/docs/tutorial-basics/deploy-your-site.md
deleted file mode 100644
index 1c50ee063ef416333b994a910d10d05f984bf589..0000000000000000000000000000000000000000
--- a/website/docs/tutorial-basics/deploy-your-site.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-sidebar_position: 5
----
-
-# Deploy your site
-
-Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**).
-
-It builds your site as simple **static HTML, JavaScript and CSS files**.
-
-## Build your site
-
-Build your site **for production**:
-
-```bash
-npm run build
-```
-
-The static files are generated in the `build` folder.
-
-## Deploy your site
-
-Test your production build locally:
-
-```bash
-npm run serve
-```
-
-The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/).
-
-You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**).
diff --git a/website/docs/tutorial-basics/markdown-features.mdx b/website/docs/tutorial-basics/markdown-features.mdx
deleted file mode 100644
index 35e00825ed77df7e9f1aa6b7d2a9f4715616df0f..0000000000000000000000000000000000000000
--- a/website/docs/tutorial-basics/markdown-features.mdx
+++ /dev/null
@@ -1,152 +0,0 @@
----
-sidebar_position: 4
----
-
-# Markdown Features
-
-Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**.
-
-## Front Matter
-
-Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/):
-
-```text title="my-doc.md"
-// highlight-start
----
-id: my-doc-id
-title: My document title
-description: My document description
-slug: /my-custom-url
----
-// highlight-end
-
-## Markdown heading
-
-Markdown text with [links](./hello.md)
-```
-
-## Links
-
-Regular Markdown links are supported, using url paths or relative file paths.
-
-```md
-Let's see how to [Create a page](/create-a-page).
-```
-
-```md
-Let's see how to [Create a page](./create-a-page.md).
-```
-
-**Result:** Let's see how to [Create a page](./create-a-page.md).
-
-## Images
-
-Regular Markdown images are supported.
-
-You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`):
-
-```md
-![Docusaurus logo](/img/docusaurus.png)
-```
-
-![Docusaurus logo](/img/docusaurus.png)
-
-You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:
-
-```md
-![Docusaurus logo](./img/docusaurus.png)
-```
-
-## Code Blocks
-
-Markdown code blocks are supported with Syntax highlighting.
-
-````md
-```jsx title="src/components/HelloDocusaurus.js"
-function HelloDocusaurus() {
-  return <h1>Hello, Docusaurus!</h1>;
-}
-```
-````
-
-```jsx title="src/components/HelloDocusaurus.js"
-function HelloDocusaurus() {
-  return <h1>Hello, Docusaurus!</h1>;
-}
-```
-
-## Admonitions
-
-Docusaurus has a special syntax to create admonitions and callouts:
-
-```md
-:::tip My tip
-
-Use this awesome feature option
-
-:::
-
-:::danger Take care
-
-This action is dangerous
-
-:::
-```
-
-:::tip My tip
-
-Use this awesome feature option
-
-:::
-
-:::danger Take care
-
-This action is dangerous
-
-:::
-
-## MDX and React Components
-
-[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**:
-
-```jsx
-export const Highlight = ({children, color}) => (
-  <span
-    style={{
-      backgroundColor: color,
-      borderRadius: '20px',
-      color: '#fff',
-      padding: '10px',
-      cursor: 'pointer',
-    }}
-    onClick={() => {
-      alert(`You clicked the color ${color} with label ${children}`)
-    }}>
-    {children}
-  </span>
-);
-
-This is <Highlight color="#25c2a0">Docusaurus green</Highlight> !
-
-This is <Highlight color="#1877F2">Facebook blue</Highlight> !
-```
-
-export const Highlight = ({children, color}) => (
-  <span
-    style={{
-      backgroundColor: color,
-      borderRadius: '20px',
-      color: '#fff',
-      padding: '10px',
-      cursor: 'pointer',
-    }}
-    onClick={() => {
-      alert(`You clicked the color ${color} with label ${children}`);
-    }}>
-    {children}
-  </span>
-);
-
-This is <Highlight color="#25c2a0">Docusaurus green</Highlight> !
-
-This is <Highlight color="#1877F2">Facebook blue</Highlight> !
diff --git a/website/docs/tutorial-extras/_category_.json b/website/docs/tutorial-extras/_category_.json
deleted file mode 100644
index a8ffcc19300ec5973db4c87090a2bc9e5cf73aa0..0000000000000000000000000000000000000000
--- a/website/docs/tutorial-extras/_category_.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "label": "Tutorial - Extras",
-  "position": 3,
-  "link": {
-    "type": "generated-index"
-  }
-}
diff --git a/website/docs/tutorial-extras/img/docsVersionDropdown.png b/website/docs/tutorial-extras/img/docsVersionDropdown.png
deleted file mode 100644
index 97e4164618b5f8beda34cfa699720aba0ad2e342..0000000000000000000000000000000000000000
Binary files a/website/docs/tutorial-extras/img/docsVersionDropdown.png and /dev/null differ
diff --git a/website/docs/tutorial-extras/img/localeDropdown.png b/website/docs/tutorial-extras/img/localeDropdown.png
deleted file mode 100644
index e257edc1f932985396bf59584c7ccfaddf955779..0000000000000000000000000000000000000000
Binary files a/website/docs/tutorial-extras/img/localeDropdown.png and /dev/null differ
diff --git a/website/docs/tutorial-extras/manage-docs-versions.md b/website/docs/tutorial-extras/manage-docs-versions.md
deleted file mode 100644
index ccda0b9076bf760b16ef068675035a5ee90e3290..0000000000000000000000000000000000000000
--- a/website/docs/tutorial-extras/manage-docs-versions.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-sidebar_position: 1
----
-
-# Manage Docs Versions
-
-Docusaurus can manage multiple versions of your docs.
-
-## Create a docs version
-
-Release a version 1.0 of your project:
-
-```bash
-npm run docusaurus docs:version 1.0
-```
-
-The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created.
-
-Your docs now have 2 versions:
-
-- `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs
-- `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs**
-
-## Add a Version Dropdown
-
-To navigate seamlessly across versions, add a version dropdown.
-
-Modify the `docusaurus.config.js` file:
-
-```js title="docusaurus.config.js"
-export default {
-  themeConfig: {
-    navbar: {
-      items: [
-        // highlight-start
-        {
-          type: 'docsVersionDropdown',
-        },
-        // highlight-end
-      ],
-    },
-  },
-};
-```
-
-The docs version dropdown appears in your navbar:
-
-![Docs Version Dropdown](./img/docsVersionDropdown.png)
-
-## Update an existing version
-
-It is possible to edit versioned docs in their respective folder:
-
-- `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello`
-- `docs/hello.md` updates `http://localhost:3000/docs/next/hello`
diff --git a/website/docs/tutorial-extras/translate-your-site.md b/website/docs/tutorial-extras/translate-your-site.md
deleted file mode 100644
index b5a644abdf9670b573f902c5caef2ec7854bf7c4..0000000000000000000000000000000000000000
--- a/website/docs/tutorial-extras/translate-your-site.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-sidebar_position: 2
----
-
-# Translate your site
-
-Let's translate `docs/intro.md` to French.
-
-## Configure i18n
-
-Modify `docusaurus.config.js` to add support for the `fr` locale:
-
-```js title="docusaurus.config.js"
-export default {
-  i18n: {
-    defaultLocale: 'en',
-    locales: ['en', 'fr'],
-  },
-};
-```
-
-## Translate a doc
-
-Copy the `docs/intro.md` file to the `i18n/fr` folder:
-
-```bash
-mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/
-
-cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md
-```
-
-Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French.
-
-## Start your localized site
-
-Start your site on the French locale:
-
-```bash
-npm run start -- --locale fr
-```
-
-Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated.
-
-:::caution
-
-In development, you can only use one locale at a time.
-
-:::
-
-## Add a Locale Dropdown
-
-To navigate seamlessly across languages, add a locale dropdown.
-
-Modify the `docusaurus.config.js` file:
-
-```js title="docusaurus.config.js"
-export default {
-  themeConfig: {
-    navbar: {
-      items: [
-        // highlight-start
-        {
-          type: 'localeDropdown',
-        },
-        // highlight-end
-      ],
-    },
-  },
-};
-```
-
-The locale dropdown now appears in your navbar:
-
-![Locale Dropdown](./img/localeDropdown.png)
-
-## Build your localized site
-
-Build your site for a specific locale:
-
-```bash
-npm run build -- --locale fr
-```
-
-Or build your site to include all the locales at once:
-
-```bash
-npm run build
-```
diff --git a/website/docs/xxchain/API Documents/_category_.json b/website/docs/xxchain/API Documents/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..8283b764f5eac3f53305585997f50322571319b9
--- /dev/null
+++ b/website/docs/xxchain/API Documents/_category_.json	
@@ -0,0 +1,8 @@
+{
+  "label": "API Documents",
+  "position": 2,
+  "link": {
+    "type": "generated-index",
+    "description": "All things related to Chain"
+  }
+}
diff --git a/website/docs/xxchain/API Documents/constants.md b/website/docs/xxchain/API Documents/constants.md
new file mode 100644
index 0000000000000000000000000000000000000000..4c5b838a742ea0d19f1a4b8f21db1f4067739ff5
--- /dev/null
+++ b/website/docs/xxchain/API Documents/constants.md	
@@ -0,0 +1,762 @@
+---
+title: Constants
+---
+
+The following sections contain the module constants, also known as parameter types. These can only be changed as part of a runtime upgrade. On the api, these are exposed via `api.consts.<module>.<method>`. 
+
+(NOTE: These were generated from a static/snapshot view of a recent Substrate master node. Some items may not be available in older nodes, or in any customized implementations.)
+
+- **[assets](#assets)**
+
+- **[authorship](#authorship)**
+
+- **[babe](#babe)**
+
+- **[balances](#balances)**
+
+- **[bounties](#bounties)**
+
+- **[chainBridge](#chainbridge)**
+
+- **[claims](#claims)**
+
+- **[democracy](#democracy)**
+
+- **[electionProviderMultiPhase](#electionprovidermultiphase)**
+
+- **[elections](#elections)**
+
+- **[grandpa](#grandpa)**
+
+- **[identity](#identity)**
+
+- **[imOnline](#imonline)**
+
+- **[multisig](#multisig)**
+
+- **[proxy](#proxy)**
+
+- **[recovery](#recovery)**
+
+- **[scheduler](#scheduler)**
+
+- **[staking](#staking)**
+
+- **[swap](#swap)**
+
+- **[system](#system)**
+
+- **[timestamp](#timestamp)**
+
+- **[tips](#tips)**
+
+- **[transactionPayment](#transactionpayment)**
+
+- **[treasury](#treasury)**
+
+- **[uniques](#uniques)**
+
+- **[utility](#utility)**
+
+- **[vesting](#vesting)**
+
+- **[xXBetanetRewards](#xxbetanetrewards)**
+
+- **[xXCustody](#xxcustody)**
+
+- **[xXEconomics](#xxeconomics)**
+
+- **[xXPublic](#xxpublic)**
+
+
+___
+
+
+## assets
+ 
+### approvalDeposit: `u128`
+- **interface**: `api.consts.assets.approvalDeposit`
+- **summary**:    The amount of funds that must be reserved when creating a new approval. 
+ 
+### assetDeposit: `u128`
+- **interface**: `api.consts.assets.assetDeposit`
+- **summary**:    The basic amount of funds that must be reserved for an asset. 
+ 
+### metadataDepositBase: `u128`
+- **interface**: `api.consts.assets.metadataDepositBase`
+- **summary**:    The basic amount of funds that must be reserved when adding metadata to your asset. 
+ 
+### metadataDepositPerByte: `u128`
+- **interface**: `api.consts.assets.metadataDepositPerByte`
+- **summary**:    The additional funds that must be reserved for the number of bytes you store in your  metadata. 
+ 
+### stringLimit: `u32`
+- **interface**: `api.consts.assets.stringLimit`
+- **summary**:    The maximum length of a name or symbol stored on-chain. 
+
+___
+
+
+## authorship
+ 
+### uncleGenerations: `u32`
+- **interface**: `api.consts.authorship.uncleGenerations`
+- **summary**:    The number of blocks back we should accept uncles.  This means that we will deal with uncle-parents that are  `UncleGenerations + 1` before `now`. 
+
+___
+
+
+## babe
+ 
+### epochDuration: `u64`
+- **interface**: `api.consts.babe.epochDuration`
+- **summary**:    The amount of time, in slots, that each epoch should last.  NOTE: Currently it is not possible to change the epoch duration after  the chain has started. Attempting to do so will brick block production. 
+ 
+### expectedBlockTime: `u64`
+- **interface**: `api.consts.babe.expectedBlockTime`
+- **summary**:    The expected average block time at which BABE should be creating  blocks. Since BABE is probabilistic it is not trivial to figure out  what the expected average block time should be based on the slot  duration and the security parameter `c` (where `1 - c` represents  the probability of a slot being empty). 
+ 
+### maxAuthorities: `u32`
+- **interface**: `api.consts.babe.maxAuthorities`
+- **summary**:    Max number of authorities allowed 
+
+___
+
+
+## balances
+ 
+### existentialDeposit: `u128`
+- **interface**: `api.consts.balances.existentialDeposit`
+- **summary**:    The minimum amount required to keep an account open. 
+ 
+### maxLocks: `u32`
+- **interface**: `api.consts.balances.maxLocks`
+- **summary**:    The maximum number of locks that should exist on an account.  Not strictly enforced, but used for weight estimation. 
+ 
+### maxReserves: `u32`
+- **interface**: `api.consts.balances.maxReserves`
+- **summary**:    The maximum number of named reserves that can exist on an account. 
+
+___
+
+
+## bounties
+ 
+### bountyCuratorDeposit: `Permill`
+- **interface**: `api.consts.bounties.bountyCuratorDeposit`
+- **summary**:    Percentage of the curator fee that will be reserved upfront as deposit for bounty  curator. 
+ 
+### bountyDepositBase: `u128`
+- **interface**: `api.consts.bounties.bountyDepositBase`
+- **summary**:    The amount held on deposit for placing a bounty proposal. 
+ 
+### bountyDepositPayoutDelay: `u32`
+- **interface**: `api.consts.bounties.bountyDepositPayoutDelay`
+- **summary**:    The delay period for which a bounty beneficiary need to wait before claim the payout. 
+ 
+### bountyUpdatePeriod: `u32`
+- **interface**: `api.consts.bounties.bountyUpdatePeriod`
+- **summary**:    Bounty duration in blocks. 
+ 
+### bountyValueMinimum: `u128`
+- **interface**: `api.consts.bounties.bountyValueMinimum`
+- **summary**:    Minimum value for a bounty. 
+ 
+### dataDepositPerByte: `u128`
+- **interface**: `api.consts.bounties.dataDepositPerByte`
+- **summary**:    The amount held on deposit per byte within the tip report reason or bounty description. 
+ 
+### maximumReasonLength: `u32`
+- **interface**: `api.consts.bounties.maximumReasonLength`
+- **summary**:    Maximum acceptable reason length. 
+
+___
+
+
+## chainBridge
+ 
+### chainIdentity: `u8`
+- **interface**: `api.consts.chainBridge.chainIdentity`
+ 
+### palletId: `FrameSupportPalletId`
+- **interface**: `api.consts.chainBridge.palletId`
+- **summary**:    The ChainBridge's module id, used for deriving account ID 
+ 
+### proposalLifetime: `u32`
+- **interface**: `api.consts.chainBridge.proposalLifetime`
+
+___
+
+
+## claims
+ 
+### prefix: `Bytes`
+- **interface**: `api.consts.claims.prefix`
+- **summary**:    The Prefix that is used in signed Ethereum messages for this network 
+
+___
+
+
+## democracy
+ 
+### cooloffPeriod: `u32`
+- **interface**: `api.consts.democracy.cooloffPeriod`
+- **summary**:    Period in blocks where an external proposal may not be re-submitted after being vetoed. 
+ 
+### enactmentPeriod: `u32`
+- **interface**: `api.consts.democracy.enactmentPeriod`
+- **summary**:    The period between a proposal being approved and enacted. 
+
+   It should generally be a little more than the unstake period to ensure that  voting stakers have an opportunity to remove themselves from the system in the case  where they are on the losing side of a vote. 
+ 
+### fastTrackVotingPeriod: `u32`
+- **interface**: `api.consts.democracy.fastTrackVotingPeriod`
+- **summary**:    Minimum voting period allowed for a fast-track referendum. 
+ 
+### instantAllowed: `bool`
+- **interface**: `api.consts.democracy.instantAllowed`
+- **summary**:    Indicator for whether an emergency origin is even allowed to happen. Some chains may  want to set this permanently to `false`, others may want to condition it on things such  as an upgrade having happened recently. 
+ 
+### launchPeriod: `u32`
+- **interface**: `api.consts.democracy.launchPeriod`
+- **summary**:    How often (in blocks) new public referenda are launched. 
+ 
+### maxProposals: `u32`
+- **interface**: `api.consts.democracy.maxProposals`
+- **summary**:    The maximum number of public proposals that can exist at any time. 
+ 
+### maxVotes: `u32`
+- **interface**: `api.consts.democracy.maxVotes`
+- **summary**:    The maximum number of votes for an account. 
+
+   Also used to compute weight, an overly big value can  lead to extrinsic with very big weight: see `delegate` for instance. 
+ 
+### minimumDeposit: `u128`
+- **interface**: `api.consts.democracy.minimumDeposit`
+- **summary**:    The minimum amount to be used as a deposit for a public referendum proposal. 
+ 
+### preimageByteDeposit: `u128`
+- **interface**: `api.consts.democracy.preimageByteDeposit`
+- **summary**:    The amount of balance that must be deposited per byte of preimage stored. 
+ 
+### voteLockingPeriod: `u32`
+- **interface**: `api.consts.democracy.voteLockingPeriod`
+- **summary**:    The minimum period of vote locking. 
+
+   It should be no shorter than enactment period to ensure that in the case of an approval,  those successful voters are locked into the consequences that their votes entail. 
+ 
+### votingPeriod: `u32`
+- **interface**: `api.consts.democracy.votingPeriod`
+- **summary**:    How often (in blocks) to check for new votes. 
+
+___
+
+
+## electionProviderMultiPhase
+ 
+### minerMaxLength: `u32`
+- **interface**: `api.consts.electionProviderMultiPhase.minerMaxLength`
+- **summary**:    Maximum length (bytes) that the mined solution should consume. 
+
+   The miner will ensure that the total length of the unsigned solution will not exceed  this value. 
+ 
+### minerMaxWeight: `u64`
+- **interface**: `api.consts.electionProviderMultiPhase.minerMaxWeight`
+- **summary**:    Maximum weight that the miner should consume. 
+
+   The miner will ensure that the total weight of the unsigned solution will not exceed  this value, based on [`WeightInfo::submit_unsigned`]. 
+ 
+### minerTxPriority: `u64`
+- **interface**: `api.consts.electionProviderMultiPhase.minerTxPriority`
+- **summary**:    The priority of the unsigned transaction submitted in the unsigned-phase 
+ 
+### offchainRepeat: `u32`
+- **interface**: `api.consts.electionProviderMultiPhase.offchainRepeat`
+- **summary**:    The repeat threshold of the offchain worker. 
+
+   For example, if it is 5, that means that at least 5 blocks will elapse between attempts  to submit the worker's solution. 
+ 
+### signedDepositBase: `u128`
+- **interface**: `api.consts.electionProviderMultiPhase.signedDepositBase`
+- **summary**:    Base deposit for a signed solution. 
+ 
+### signedDepositByte: `u128`
+- **interface**: `api.consts.electionProviderMultiPhase.signedDepositByte`
+- **summary**:    Per-byte deposit for a signed solution. 
+ 
+### signedDepositWeight: `u128`
+- **interface**: `api.consts.electionProviderMultiPhase.signedDepositWeight`
+- **summary**:    Per-weight deposit for a signed solution. 
+ 
+### signedMaxSubmissions: `u32`
+- **interface**: `api.consts.electionProviderMultiPhase.signedMaxSubmissions`
+- **summary**:    Maximum number of signed submissions that can be queued. 
+
+   It is best to avoid adjusting this during an election, as it impacts downstream data  structures. In particular, `SignedSubmissionIndices<T>` is bounded on this value. If you  update this value during an election, you _must_ ensure that  `SignedSubmissionIndices.len()` is less than or equal to the new value. Otherwise,  attempts to submit new solutions may cause a runtime panic. 
+ 
+### signedMaxWeight: `u64`
+- **interface**: `api.consts.electionProviderMultiPhase.signedMaxWeight`
+- **summary**:    Maximum weight of a signed solution. 
+
+   This should probably be similar to [`Config::MinerMaxWeight`]. 
+ 
+### signedPhase: `u32`
+- **interface**: `api.consts.electionProviderMultiPhase.signedPhase`
+- **summary**:    Duration of the signed phase. 
+ 
+### signedRewardBase: `u128`
+- **interface**: `api.consts.electionProviderMultiPhase.signedRewardBase`
+- **summary**:    Base reward for a signed solution 
+ 
+### solutionImprovementThreshold: `Perbill`
+- **interface**: `api.consts.electionProviderMultiPhase.solutionImprovementThreshold`
+- **summary**:    The minimum amount of improvement to the solution score that defines a solution as  "better" (in any phase). 
+ 
+### unsignedPhase: `u32`
+- **interface**: `api.consts.electionProviderMultiPhase.unsignedPhase`
+- **summary**:    Duration of the unsigned phase. 
+ 
+### voterSnapshotPerBlock: `u32`
+- **interface**: `api.consts.electionProviderMultiPhase.voterSnapshotPerBlock`
+- **summary**:    The maximum number of voters to put in the snapshot. At the moment, snapshots are only  over a single block, but once multi-block elections are introduced they will take place  over multiple blocks. 
+
+   Also, note the data type: If the voters are represented by a `u32` in `type  CompactSolution`, the same `u32` is used here to ensure bounds are respected. 
+
+___
+
+
+## elections
+ 
+### candidacyBond: `u128`
+- **interface**: `api.consts.elections.candidacyBond`
+- **summary**:    How much should be locked up in order to submit one's candidacy. 
+ 
+### desiredMembers: `u32`
+- **interface**: `api.consts.elections.desiredMembers`
+- **summary**:    Number of members to elect. 
+ 
+### desiredRunnersUp: `u32`
+- **interface**: `api.consts.elections.desiredRunnersUp`
+- **summary**:    Number of runners_up to keep. 
+ 
+### palletId: `[u8;8]`
+- **interface**: `api.consts.elections.palletId`
+- **summary**:    Identifier for the elections-phragmen pallet's lock 
+ 
+### termDuration: `u32`
+- **interface**: `api.consts.elections.termDuration`
+- **summary**:    How long each seat is kept. This defines the next block number at which an election  round will happen. If set to zero, no elections are ever triggered and the module will  be in passive mode. 
+ 
+### votingBondBase: `u128`
+- **interface**: `api.consts.elections.votingBondBase`
+- **summary**:    Base deposit associated with voting. 
+
+   This should be sensibly high to economically ensure the pallet cannot be attacked by  creating a gigantic number of votes. 
+ 
+### votingBondFactor: `u128`
+- **interface**: `api.consts.elections.votingBondFactor`
+- **summary**:    The amount of bond that need to be locked for each vote (32 bytes). 
+
+___
+
+
+## grandpa
+ 
+### maxAuthorities: `u32`
+- **interface**: `api.consts.grandpa.maxAuthorities`
+- **summary**:    Max Authorities in use 
+
+___
+
+
+## identity
+ 
+### basicDeposit: `u128`
+- **interface**: `api.consts.identity.basicDeposit`
+- **summary**:    The amount held on deposit for a registered identity 
+ 
+### fieldDeposit: `u128`
+- **interface**: `api.consts.identity.fieldDeposit`
+- **summary**:    The amount held on deposit per additional field for a registered identity. 
+ 
+### maxAdditionalFields: `u32`
+- **interface**: `api.consts.identity.maxAdditionalFields`
+- **summary**:    Maximum number of additional fields that may be stored in an ID. Needed to bound the I/O  required to access an identity, but can be pretty high. 
+ 
+### maxRegistrars: `u32`
+- **interface**: `api.consts.identity.maxRegistrars`
+- **summary**:    Maxmimum number of registrars allowed in the system. Needed to bound the complexity  of, e.g., updating judgements. 
+ 
+### maxSubAccounts: `u32`
+- **interface**: `api.consts.identity.maxSubAccounts`
+- **summary**:    The maximum number of sub-accounts allowed per identified account. 
+ 
+### subAccountDeposit: `u128`
+- **interface**: `api.consts.identity.subAccountDeposit`
+- **summary**:    The amount held on deposit for a registered subaccount. This should account for the fact  that one storage item's value will increase by the size of an account ID, and there will  be another trie item whose value is the size of an account ID plus 32 bytes. 
+
+___
+
+
+## imOnline
+ 
+### unsignedPriority: `u64`
+- **interface**: `api.consts.imOnline.unsignedPriority`
+- **summary**:    A configuration for base priority of unsigned transactions. 
+
+   This is exposed so that it can be tuned for particular runtime, when  multiple pallets send unsigned transactions. 
+
+___
+
+
+## multisig
+ 
+### depositBase: `u128`
+- **interface**: `api.consts.multisig.depositBase`
+- **summary**:    The base amount of currency needed to reserve for creating a multisig execution or to  store a dispatch call for later. 
+
+   This is held for an additional storage item whose value size is  `4 + sizeof((BlockNumber, Balance, AccountId))` bytes and whose key size is  `32 + sizeof(AccountId)` bytes. 
+ 
+### depositFactor: `u128`
+- **interface**: `api.consts.multisig.depositFactor`
+- **summary**:    The amount of currency needed per unit threshold when creating a multisig execution. 
+
+   This is held for adding 32 bytes more into a pre-existing storage value. 
+ 
+### maxSignatories: `u16`
+- **interface**: `api.consts.multisig.maxSignatories`
+- **summary**:    The maximum amount of signatories allowed in the multisig. 
+
+___
+
+
+## proxy
+ 
+### announcementDepositBase: `u128`
+- **interface**: `api.consts.proxy.announcementDepositBase`
+- **summary**:    The base amount of currency needed to reserve for creating an announcement. 
+
+   This is held when a new storage item holding a `Balance` is created (typically 16  bytes). 
+ 
+### announcementDepositFactor: `u128`
+- **interface**: `api.consts.proxy.announcementDepositFactor`
+- **summary**:    The amount of currency needed per announcement made. 
+
+   This is held for adding an `AccountId`, `Hash` and `BlockNumber` (typically 68 bytes)  into a pre-existing storage value. 
+ 
+### maxPending: `u32`
+- **interface**: `api.consts.proxy.maxPending`
+- **summary**:    The maximum amount of time-delayed announcements that are allowed to be pending. 
+ 
+### maxProxies: `u32`
+- **interface**: `api.consts.proxy.maxProxies`
+- **summary**:    The maximum amount of proxies allowed for a single account. 
+ 
+### proxyDepositBase: `u128`
+- **interface**: `api.consts.proxy.proxyDepositBase`
+- **summary**:    The base amount of currency needed to reserve for creating a proxy. 
+
+   This is held for an additional storage item whose value size is  `sizeof(Balance)` bytes and whose key size is `sizeof(AccountId)` bytes. 
+ 
+### proxyDepositFactor: `u128`
+- **interface**: `api.consts.proxy.proxyDepositFactor`
+- **summary**:    The amount of currency needed per proxy added. 
+
+   This is held for adding 32 bytes plus an instance of `ProxyType` more into a  pre-existing storage value. Thus, when configuring `ProxyDepositFactor` one should take  into account `32 + proxy_type.encode().len()` bytes of data. 
+
+___
+
+
+## recovery
+ 
+### configDepositBase: `u128`
+- **interface**: `api.consts.recovery.configDepositBase`
+- **summary**:    The base amount of currency needed to reserve for creating a recovery configuration. 
+
+   This is held for an additional storage item whose value size is  `2 + sizeof(BlockNumber, Balance)` bytes. 
+ 
+### friendDepositFactor: `u128`
+- **interface**: `api.consts.recovery.friendDepositFactor`
+- **summary**:    The amount of currency needed per additional user when creating a recovery  configuration. 
+
+   This is held for adding `sizeof(AccountId)` bytes more into a pre-existing storage  value. 
+ 
+### maxFriends: `u16`
+- **interface**: `api.consts.recovery.maxFriends`
+- **summary**:    The maximum amount of friends allowed in a recovery configuration. 
+ 
+### recoveryDeposit: `u128`
+- **interface**: `api.consts.recovery.recoveryDeposit`
+- **summary**:    The base amount of currency needed to reserve for starting a recovery. 
+
+   This is primarily held for deterring malicious recovery attempts, and should  have a value large enough that a bad actor would choose not to place this  deposit. It also acts to fund additional storage item whose value size is  `sizeof(BlockNumber, Balance + T * AccountId)` bytes. Where T is a configurable  threshold. 
+
+___
+
+
+## scheduler
+ 
+### maximumWeight: `u64`
+- **interface**: `api.consts.scheduler.maximumWeight`
+- **summary**:    The maximum weight that may be scheduled per block for any dispatchables of less  priority than `schedule::HARD_DEADLINE`. 
+ 
+### maxScheduledPerBlock: `u32`
+- **interface**: `api.consts.scheduler.maxScheduledPerBlock`
+- **summary**:    The maximum number of scheduled calls in the queue for a single block.  Not strictly enforced, but used for weight estimation. 
+
+___
+
+
+## staking
+ 
+### bondingDuration: `u32`
+- **interface**: `api.consts.staking.bondingDuration`
+- **summary**:    Number of eras that staked funds must remain bonded for. 
+ 
+### maxNominations: `u32`
+- **interface**: `api.consts.staking.maxNominations`
+ 
+### maxNominatorRewardedPerValidator: `u32`
+- **interface**: `api.consts.staking.maxNominatorRewardedPerValidator`
+- **summary**:    The maximum number of nominators rewarded for each validator. 
+
+   For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can  claim their reward. This used to limit the i/o cost for the nominator payout. 
+ 
+### sessionsPerEra: `u32`
+- **interface**: `api.consts.staking.sessionsPerEra`
+- **summary**:    Number of sessions per era. 
+ 
+### slashDeferDuration: `u32`
+- **interface**: `api.consts.staking.slashDeferDuration`
+- **summary**:    Number of eras that slashes are deferred by, after computation. 
+
+   This should be less than the bonding duration. Set to 0 if slashes  should be applied immediately, without opportunity for intervention. 
+
+___
+
+
+## swap
+ 
+### nativeTokenId: `[u8;32]`
+- **interface**: `api.consts.swap.nativeTokenId`
+
+___
+
+
+## system
+ 
+### blockHashCount: `u32`
+- **interface**: `api.consts.system.blockHashCount`
+- **summary**:    Maximum number of block number to block hash mappings to keep (oldest pruned first). 
+ 
+### blockLength: `FrameSystemLimitsBlockLength`
+- **interface**: `api.consts.system.blockLength`
+- **summary**:    The maximum length of a block (in bytes). 
+ 
+### blockWeights: `FrameSystemLimitsBlockWeights`
+- **interface**: `api.consts.system.blockWeights`
+- **summary**:    Block & extrinsics weights: base values and limits. 
+ 
+### dbWeight: `FrameSupportWeightsRuntimeDbWeight`
+- **interface**: `api.consts.system.dbWeight`
+- **summary**:    The weight of runtime database operations the runtime can invoke. 
+ 
+### ss58Prefix: `u16`
+- **interface**: `api.consts.system.ss58Prefix`
+- **summary**:    The designated SS85 prefix of this chain. 
+
+   This replaces the "ss58Format" property declared in the chain spec. Reason is  that the runtime should know about the prefix in order to make use of it as  an identifier of the chain. 
+ 
+### version: `SpVersionRuntimeVersion`
+- **interface**: `api.consts.system.version`
+- **summary**:    Get the chain's current version. 
+
+___
+
+
+## timestamp
+ 
+### minimumPeriod: `u64`
+- **interface**: `api.consts.timestamp.minimumPeriod`
+- **summary**:    The minimum period between blocks. Beware that this is different to the *expected*  period that the block production apparatus provides. Your chosen consensus system will  generally work with this to determine a sensible block time. e.g. For Aura, it will be  double this period on default settings. 
+
+___
+
+
+## tips
+ 
+### dataDepositPerByte: `u128`
+- **interface**: `api.consts.tips.dataDepositPerByte`
+- **summary**:    The amount held on deposit per byte within the tip report reason or bounty description. 
+ 
+### maximumReasonLength: `u32`
+- **interface**: `api.consts.tips.maximumReasonLength`
+- **summary**:    Maximum acceptable reason length. 
+ 
+### tipCountdown: `u32`
+- **interface**: `api.consts.tips.tipCountdown`
+- **summary**:    The period for which a tip remains open after is has achieved threshold tippers. 
+ 
+### tipFindersFee: `Percent`
+- **interface**: `api.consts.tips.tipFindersFee`
+- **summary**:    The percent of the final tip which goes to the original reporter of the tip. 
+ 
+### tipReportDepositBase: `u128`
+- **interface**: `api.consts.tips.tipReportDepositBase`
+- **summary**:    The amount held on deposit for placing a tip report. 
+
+___
+
+
+## transactionPayment
+ 
+### operationalFeeMultiplier: `u8`
+- **interface**: `api.consts.transactionPayment.operationalFeeMultiplier`
+- **summary**:    A fee mulitplier for `Operational` extrinsics to compute "virtual tip" to boost their  `priority` 
+
+   This value is multipled by the `final_fee` to obtain a "virtual tip" that is later  added to a tip component in regular `priority` calculations.  It means that a `Normal` transaction can front-run a similarly-sized `Operational`  extrinsic (with no tip), by including a tip value greater than the virtual tip. 
+
+   ```rust,ignore  // For `Normal`  let priority = priority_calc(tip); 
+
+   // For `Operational`  let virtual_tip = (inclusion_fee + tip) * OperationalFeeMultiplier;  let priority = priority_calc(tip + virtual_tip);  ``` 
+
+   Note that since we use `final_fee` the multiplier applies also to the regular `tip`  sent with the transaction. So, not only does the transaction get a priority bump based  on the `inclusion_fee`, but we also amplify the impact of tips applied to `Operational`  transactions. 
+ 
+### transactionByteFee: `u128`
+- **interface**: `api.consts.transactionPayment.transactionByteFee`
+- **summary**:    The fee to be paid for making a transaction; the per-byte portion. 
+ 
+### weightToFee: `Vec<FrameSupportWeightsWeightToFeeCoefficient>`
+- **interface**: `api.consts.transactionPayment.weightToFee`
+- **summary**:    The polynomial that is applied in order to derive fee from weight. 
+
+___
+
+
+## treasury
+ 
+### burn: `Permill`
+- **interface**: `api.consts.treasury.burn`
+- **summary**:    Percentage of spare funds (if any) that are burnt per spend period. 
+ 
+### maxApprovals: `u32`
+- **interface**: `api.consts.treasury.maxApprovals`
+- **summary**:    The maximum number of approvals that can wait in the spending queue. 
+ 
+### palletId: `FrameSupportPalletId`
+- **interface**: `api.consts.treasury.palletId`
+- **summary**:    The treasury's pallet id, used for deriving its sovereign account ID. 
+ 
+### proposalBond: `Permill`
+- **interface**: `api.consts.treasury.proposalBond`
+- **summary**:    Fraction of a proposal's value that should be bonded in order to place the proposal.  An accepted proposal gets these back. A rejected proposal does not. 
+ 
+### proposalBondMinimum: `u128`
+- **interface**: `api.consts.treasury.proposalBondMinimum`
+- **summary**:    Minimum amount of funds that should be placed in a deposit for making a proposal. 
+ 
+### spendPeriod: `u32`
+- **interface**: `api.consts.treasury.spendPeriod`
+- **summary**:    Period between successive spends. 
+
+___
+
+
+## uniques
+ 
+### attributeDepositBase: `u128`
+- **interface**: `api.consts.uniques.attributeDepositBase`
+- **summary**:    The basic amount of funds that must be reserved when adding an attribute to an asset. 
+ 
+### classDeposit: `u128`
+- **interface**: `api.consts.uniques.classDeposit`
+- **summary**:    The basic amount of funds that must be reserved for an asset class. 
+ 
+### depositPerByte: `u128`
+- **interface**: `api.consts.uniques.depositPerByte`
+- **summary**:    The additional funds that must be reserved for the number of bytes store in metadata,  either "normal" metadata or attribute metadata. 
+ 
+### instanceDeposit: `u128`
+- **interface**: `api.consts.uniques.instanceDeposit`
+- **summary**:    The basic amount of funds that must be reserved for an asset instance. 
+ 
+### keyLimit: `u32`
+- **interface**: `api.consts.uniques.keyLimit`
+- **summary**:    The maximum length of an attribute key. 
+ 
+### metadataDepositBase: `u128`
+- **interface**: `api.consts.uniques.metadataDepositBase`
+- **summary**:    The basic amount of funds that must be reserved when adding metadata to your asset. 
+ 
+### stringLimit: `u32`
+- **interface**: `api.consts.uniques.stringLimit`
+- **summary**:    The maximum length of data stored on-chain. 
+ 
+### valueLimit: `u32`
+- **interface**: `api.consts.uniques.valueLimit`
+- **summary**:    The maximum length of an attribute value. 
+
+___
+
+
+## utility
+ 
+### batchedCallsLimit: `u32`
+- **interface**: `api.consts.utility.batchedCallsLimit`
+- **summary**:    The limit on the number of batched calls. 
+
+___
+
+
+## vesting
+ 
+### maxVestingSchedules: `u32`
+- **interface**: `api.consts.vesting.maxVestingSchedules`
+ 
+### minVestedTransfer: `u128`
+- **interface**: `api.consts.vesting.minVestedTransfer`
+- **summary**:    The minimum amount transferred to call `vested_transfer`. 
+
+___
+
+
+## xXBetanetRewards
+ 
+### enactmentBlock: `u32`
+- **interface**: `api.consts.xXBetanetRewards.enactmentBlock`
+
+___
+
+
+## xXCustody
+ 
+### custodyDuration: `u32`
+- **interface**: `api.consts.xXCustody.custodyDuration`
+ 
+### governanceCustodyDuration: `u32`
+- **interface**: `api.consts.xXCustody.governanceCustodyDuration`
+ 
+### payoutFrequency: `u32`
+- **interface**: `api.consts.xXCustody.payoutFrequency`
+
+___
+
+
+## xXEconomics
+ 
+### rewardsPoolAccount: `AccountId32`
+- **interface**: `api.consts.xXEconomics.rewardsPoolAccount`
+ 
+### rewardsPoolId: `FrameSupportPalletId`
+- **interface**: `api.consts.xXEconomics.rewardsPoolId`
+
+___
+
+
+## xXPublic
+ 
+### saleAccount: `AccountId32`
+- **interface**: `api.consts.xXPublic.saleAccount`
+ 
+### testnetAccount: `AccountId32`
+- **interface**: `api.consts.xXPublic.testnetAccount`
diff --git a/website/docs/xxchain/API Documents/errors.md b/website/docs/xxchain/API Documents/errors.md
new file mode 100644
index 0000000000000000000000000000000000000000..5448ec09945a9558eb2032f008dc158ad6a1953a
--- /dev/null
+++ b/website/docs/xxchain/API Documents/errors.md	
@@ -0,0 +1,1371 @@
+---
+title: Errors
+---
+
+This page lists the errors that can be encountered in the different modules. 
+
+(NOTE: These were generated from a static/snapshot view of a recent Substrate master node. Some items may not be available in older nodes, or in any customized implementations.)
+
+- **[assets](#assets)**
+
+- **[authorship](#authorship)**
+
+- **[babe](#babe)**
+
+- **[balances](#balances)**
+
+- **[bounties](#bounties)**
+
+- **[chainBridge](#chainbridge)**
+
+- **[claims](#claims)**
+
+- **[council](#council)**
+
+- **[democracy](#democracy)**
+
+- **[electionProviderMultiPhase](#electionprovidermultiphase)**
+
+- **[elections](#elections)**
+
+- **[grandpa](#grandpa)**
+
+- **[identity](#identity)**
+
+- **[imOnline](#imonline)**
+
+- **[multisig](#multisig)**
+
+- **[proxy](#proxy)**
+
+- **[recovery](#recovery)**
+
+- **[scheduler](#scheduler)**
+
+- **[session](#session)**
+
+- **[staking](#staking)**
+
+- **[system](#system)**
+
+- **[technicalCommittee](#technicalcommittee)**
+
+- **[technicalMembership](#technicalmembership)**
+
+- **[tips](#tips)**
+
+- **[treasury](#treasury)**
+
+- **[uniques](#uniques)**
+
+- **[utility](#utility)**
+
+- **[vesting](#vesting)**
+
+- **[xXBetanetRewards](#xxbetanetrewards)**
+
+- **[xXCmix](#xxcmix)**
+
+- **[xXCustody](#xxcustody)**
+
+
+___
+
+
+## assets
+ 
+### BadMetadata
+- **interface**: `api.errors.assets.BadMetadata.is`
+- **summary**:    Invalid metadata given. 
+ 
+### BadWitness
+- **interface**: `api.errors.assets.BadWitness.is`
+- **summary**:    Invalid witness data given. 
+ 
+### BalanceLow
+- **interface**: `api.errors.assets.BalanceLow.is`
+- **summary**:    Account balance must be greater than or equal to the transfer amount. 
+ 
+### BalanceZero
+- **interface**: `api.errors.assets.BalanceZero.is`
+- **summary**:    Balance should be non-zero. 
+ 
+### Frozen
+- **interface**: `api.errors.assets.Frozen.is`
+- **summary**:    The origin account is frozen. 
+ 
+### InUse
+- **interface**: `api.errors.assets.InUse.is`
+- **summary**:    The asset ID is already taken. 
+ 
+### MinBalanceZero
+- **interface**: `api.errors.assets.MinBalanceZero.is`
+- **summary**:    Minimum balance should be non-zero. 
+ 
+### NoPermission
+- **interface**: `api.errors.assets.NoPermission.is`
+- **summary**:    The signing account has no permission to do the operation. 
+ 
+### NoProvider
+- **interface**: `api.errors.assets.NoProvider.is`
+- **summary**:    No provider reference exists to allow a non-zero balance of a non-self-sufficient  asset. 
+ 
+### Unapproved
+- **interface**: `api.errors.assets.Unapproved.is`
+- **summary**:    No approval exists that would allow the transfer. 
+ 
+### Unknown
+- **interface**: `api.errors.assets.Unknown.is`
+- **summary**:    The given asset ID is unknown. 
+ 
+### WouldDie
+- **interface**: `api.errors.assets.WouldDie.is`
+- **summary**:    The source account would not survive the transfer and it needs to stay alive. 
+
+___
+
+
+## authorship
+ 
+### GenesisUncle
+- **interface**: `api.errors.authorship.GenesisUncle.is`
+- **summary**:    The uncle is genesis. 
+ 
+### InvalidUncleParent
+- **interface**: `api.errors.authorship.InvalidUncleParent.is`
+- **summary**:    The uncle parent not in the chain. 
+ 
+### OldUncle
+- **interface**: `api.errors.authorship.OldUncle.is`
+- **summary**:    The uncle isn't recent enough to be included. 
+ 
+### TooHighUncle
+- **interface**: `api.errors.authorship.TooHighUncle.is`
+- **summary**:    The uncle is too high in chain. 
+ 
+### TooManyUncles
+- **interface**: `api.errors.authorship.TooManyUncles.is`
+- **summary**:    Too many uncles. 
+ 
+### UncleAlreadyIncluded
+- **interface**: `api.errors.authorship.UncleAlreadyIncluded.is`
+- **summary**:    The uncle is already included. 
+ 
+### UnclesAlreadySet
+- **interface**: `api.errors.authorship.UnclesAlreadySet.is`
+- **summary**:    Uncles already set in the block. 
+
+___
+
+
+## babe
+ 
+### DuplicateOffenceReport
+- **interface**: `api.errors.babe.DuplicateOffenceReport.is`
+- **summary**:    A given equivocation report is valid but already previously reported. 
+ 
+### InvalidEquivocationProof
+- **interface**: `api.errors.babe.InvalidEquivocationProof.is`
+- **summary**:    An equivocation proof provided as part of an equivocation report is invalid. 
+ 
+### InvalidKeyOwnershipProof
+- **interface**: `api.errors.babe.InvalidKeyOwnershipProof.is`
+- **summary**:    A key ownership proof provided as part of an equivocation report is invalid. 
+
+___
+
+
+## balances
+ 
+### DeadAccount
+- **interface**: `api.errors.balances.DeadAccount.is`
+- **summary**:    Beneficiary account must pre-exist 
+ 
+### ExistentialDeposit
+- **interface**: `api.errors.balances.ExistentialDeposit.is`
+- **summary**:    Value too low to create account due to existential deposit 
+ 
+### ExistingVestingSchedule
+- **interface**: `api.errors.balances.ExistingVestingSchedule.is`
+- **summary**:    A vesting schedule already exists for this account 
+ 
+### InsufficientBalance
+- **interface**: `api.errors.balances.InsufficientBalance.is`
+- **summary**:    Balance too low to send value 
+ 
+### KeepAlive
+- **interface**: `api.errors.balances.KeepAlive.is`
+- **summary**:    Transfer/payment would kill account 
+ 
+### LiquidityRestrictions
+- **interface**: `api.errors.balances.LiquidityRestrictions.is`
+- **summary**:    Account liquidity restrictions prevent withdrawal 
+ 
+### TooManyReserves
+- **interface**: `api.errors.balances.TooManyReserves.is`
+- **summary**:    Number of named reserves exceed MaxReserves 
+ 
+### VestingBalance
+- **interface**: `api.errors.balances.VestingBalance.is`
+- **summary**:    Vesting balance too high to send value 
+
+___
+
+
+## bounties
+ 
+### InsufficientProposersBalance
+- **interface**: `api.errors.bounties.InsufficientProposersBalance.is`
+- **summary**:    Proposer's balance is too low. 
+ 
+### InvalidFee
+- **interface**: `api.errors.bounties.InvalidFee.is`
+- **summary**:    Invalid bounty fee. 
+ 
+### InvalidIndex
+- **interface**: `api.errors.bounties.InvalidIndex.is`
+- **summary**:    No proposal or bounty at that index. 
+ 
+### InvalidValue
+- **interface**: `api.errors.bounties.InvalidValue.is`
+- **summary**:    Invalid bounty value. 
+ 
+### PendingPayout
+- **interface**: `api.errors.bounties.PendingPayout.is`
+- **summary**:    A bounty payout is pending.  To cancel the bounty, you must unassign and slash the curator. 
+ 
+### Premature
+- **interface**: `api.errors.bounties.Premature.is`
+- **summary**:    The bounties cannot be claimed/closed because it's still in the countdown period. 
+ 
+### ReasonTooBig
+- **interface**: `api.errors.bounties.ReasonTooBig.is`
+- **summary**:    The reason given is just too big. 
+ 
+### RequireCurator
+- **interface**: `api.errors.bounties.RequireCurator.is`
+- **summary**:    Require bounty curator. 
+ 
+### UnexpectedStatus
+- **interface**: `api.errors.bounties.UnexpectedStatus.is`
+- **summary**:    The bounty status is unexpected. 
+
+___
+
+
+## chainBridge
+ 
+### ChainAlreadyWhitelisted
+- **interface**: `api.errors.chainBridge.ChainAlreadyWhitelisted.is`
+- **summary**:    Chain has already been enabled 
+ 
+### ChainNotWhitelisted
+- **interface**: `api.errors.chainBridge.ChainNotWhitelisted.is`
+- **summary**:    Interactions with this chain is not permitted 
+ 
+### InvalidChainId
+- **interface**: `api.errors.chainBridge.InvalidChainId.is`
+- **summary**:    Provided chain Id is not valid 
+ 
+### InvalidThreshold
+- **interface**: `api.errors.chainBridge.InvalidThreshold.is`
+- **summary**:    Relayer threshold cannot be 0 
+ 
+### MustBeRelayer
+- **interface**: `api.errors.chainBridge.MustBeRelayer.is`
+- **summary**:    Protected operation, must be performed by relayer 
+ 
+### ProposalAlreadyComplete
+- **interface**: `api.errors.chainBridge.ProposalAlreadyComplete.is`
+- **summary**:    Proposal has either failed or succeeded 
+ 
+### ProposalAlreadyExists
+- **interface**: `api.errors.chainBridge.ProposalAlreadyExists.is`
+- **summary**:    A proposal with these parameters has already been submitted 
+ 
+### ProposalDoesNotExist
+- **interface**: `api.errors.chainBridge.ProposalDoesNotExist.is`
+- **summary**:    No proposal with the ID was found 
+ 
+### ProposalExpired
+- **interface**: `api.errors.chainBridge.ProposalExpired.is`
+- **summary**:    Lifetime of proposal has been exceeded 
+ 
+### ProposalNotComplete
+- **interface**: `api.errors.chainBridge.ProposalNotComplete.is`
+- **summary**:    Cannot complete proposal, needs more votes 
+ 
+### RelayerAlreadyExists
+- **interface**: `api.errors.chainBridge.RelayerAlreadyExists.is`
+- **summary**:    Relayer already in set 
+ 
+### RelayerAlreadyVoted
+- **interface**: `api.errors.chainBridge.RelayerAlreadyVoted.is`
+- **summary**:    Relayer has already submitted some vote for this proposal 
+ 
+### RelayerInvalid
+- **interface**: `api.errors.chainBridge.RelayerInvalid.is`
+- **summary**:    Provided accountId is not a relayer 
+ 
+### ResourceDoesNotExist
+- **interface**: `api.errors.chainBridge.ResourceDoesNotExist.is`
+- **summary**:    Resource ID provided isn't mapped to anything 
+ 
+### ThresholdNotSet
+- **interface**: `api.errors.chainBridge.ThresholdNotSet.is`
+- **summary**:    Relayer threshold not set 
+
+___
+
+
+## claims
+ 
+### InvalidEthereumSignature
+- **interface**: `api.errors.claims.InvalidEthereumSignature.is`
+- **summary**:    Invalid Ethereum signature. 
+ 
+### InvalidStatement
+- **interface**: `api.errors.claims.InvalidStatement.is`
+- **summary**:    A needed statement was not included. 
+ 
+### PotUnderflow
+- **interface**: `api.errors.claims.PotUnderflow.is`
+- **summary**:    There's not enough in the pot to pay out some unvested amount. Generally implies a logic  error. 
+ 
+### SenderHasNoClaim
+- **interface**: `api.errors.claims.SenderHasNoClaim.is`
+- **summary**:    Account ID sending tx has no claim. 
+ 
+### SignerHasNoClaim
+- **interface**: `api.errors.claims.SignerHasNoClaim.is`
+- **summary**:    Ethereum address has no claim. 
+ 
+### VestedBalanceExists
+- **interface**: `api.errors.claims.VestedBalanceExists.is`
+- **summary**:    The account already has a vested balance. 
+
+___
+
+
+## council
+ 
+### AlreadyInitialized
+- **interface**: `api.errors.council.AlreadyInitialized.is`
+- **summary**:    Members are already initialized! 
+ 
+### DuplicateProposal
+- **interface**: `api.errors.council.DuplicateProposal.is`
+- **summary**:    Duplicate proposals not allowed 
+ 
+### DuplicateVote
+- **interface**: `api.errors.council.DuplicateVote.is`
+- **summary**:    Duplicate vote ignored 
+ 
+### NotMember
+- **interface**: `api.errors.council.NotMember.is`
+- **summary**:    Account is not a member 
+ 
+### ProposalMissing
+- **interface**: `api.errors.council.ProposalMissing.is`
+- **summary**:    Proposal must exist 
+ 
+### TooEarly
+- **interface**: `api.errors.council.TooEarly.is`
+- **summary**:    The close call was made too early, before the end of the voting. 
+ 
+### TooManyProposals
+- **interface**: `api.errors.council.TooManyProposals.is`
+- **summary**:    There can only be a maximum of `MaxProposals` active proposals. 
+ 
+### WrongIndex
+- **interface**: `api.errors.council.WrongIndex.is`
+- **summary**:    Mismatched index 
+ 
+### WrongProposalLength
+- **interface**: `api.errors.council.WrongProposalLength.is`
+- **summary**:    The given length bound for the proposal was too low. 
+ 
+### WrongProposalWeight
+- **interface**: `api.errors.council.WrongProposalWeight.is`
+- **summary**:    The given weight bound for the proposal was too low. 
+
+___
+
+
+## democracy
+ 
+### AlreadyCanceled
+- **interface**: `api.errors.democracy.AlreadyCanceled.is`
+- **summary**:    Cannot cancel the same proposal twice 
+ 
+### AlreadyDelegating
+- **interface**: `api.errors.democracy.AlreadyDelegating.is`
+- **summary**:    The account is already delegating. 
+ 
+### AlreadyVetoed
+- **interface**: `api.errors.democracy.AlreadyVetoed.is`
+- **summary**:    Identity may not veto a proposal twice 
+ 
+### DuplicatePreimage
+- **interface**: `api.errors.democracy.DuplicatePreimage.is`
+- **summary**:    Preimage already noted 
+ 
+### DuplicateProposal
+- **interface**: `api.errors.democracy.DuplicateProposal.is`
+- **summary**:    Proposal already made 
+ 
+### Imminent
+- **interface**: `api.errors.democracy.Imminent.is`
+- **summary**:    Imminent 
+ 
+### InstantNotAllowed
+- **interface**: `api.errors.democracy.InstantNotAllowed.is`
+- **summary**:    The instant referendum origin is currently disallowed. 
+ 
+### InsufficientFunds
+- **interface**: `api.errors.democracy.InsufficientFunds.is`
+- **summary**:    Too high a balance was provided that the account cannot afford. 
+ 
+### InvalidHash
+- **interface**: `api.errors.democracy.InvalidHash.is`
+- **summary**:    Invalid hash 
+ 
+### MaxVotesReached
+- **interface**: `api.errors.democracy.MaxVotesReached.is`
+- **summary**:    Maximum number of votes reached. 
+ 
+### NoneWaiting
+- **interface**: `api.errors.democracy.NoneWaiting.is`
+- **summary**:    No proposals waiting 
+ 
+### Nonsense
+- **interface**: `api.errors.democracy.Nonsense.is`
+- **summary**:    Delegation to oneself makes no sense. 
+ 
+### NoPermission
+- **interface**: `api.errors.democracy.NoPermission.is`
+- **summary**:    The actor has no permission to conduct the action. 
+ 
+### NoProposal
+- **interface**: `api.errors.democracy.NoProposal.is`
+- **summary**:    No external proposal 
+ 
+### NotDelegating
+- **interface**: `api.errors.democracy.NotDelegating.is`
+- **summary**:    The account is not currently delegating. 
+ 
+### NotImminent
+- **interface**: `api.errors.democracy.NotImminent.is`
+- **summary**:    Not imminent 
+ 
+### NotSimpleMajority
+- **interface**: `api.errors.democracy.NotSimpleMajority.is`
+- **summary**:    Next external proposal not simple majority 
+ 
+### NotVoter
+- **interface**: `api.errors.democracy.NotVoter.is`
+- **summary**:    The given account did not vote on the referendum. 
+ 
+### PreimageInvalid
+- **interface**: `api.errors.democracy.PreimageInvalid.is`
+- **summary**:    Invalid preimage 
+ 
+### PreimageMissing
+- **interface**: `api.errors.democracy.PreimageMissing.is`
+- **summary**:    Preimage not found 
+ 
+### ProposalBlacklisted
+- **interface**: `api.errors.democracy.ProposalBlacklisted.is`
+- **summary**:    Proposal still blacklisted 
+ 
+### ProposalMissing
+- **interface**: `api.errors.democracy.ProposalMissing.is`
+- **summary**:    Proposal does not exist 
+ 
+### ReferendumInvalid
+- **interface**: `api.errors.democracy.ReferendumInvalid.is`
+- **summary**:    Vote given for invalid referendum 
+ 
+### TooEarly
+- **interface**: `api.errors.democracy.TooEarly.is`
+- **summary**:    Too early 
+ 
+### TooManyProposals
+- **interface**: `api.errors.democracy.TooManyProposals.is`
+- **summary**:    Maximum number of proposals reached. 
+ 
+### ValueLow
+- **interface**: `api.errors.democracy.ValueLow.is`
+- **summary**:    Value too low 
+ 
+### VotesExist
+- **interface**: `api.errors.democracy.VotesExist.is`
+- **summary**:    The account currently has votes attached to it and the operation cannot succeed until  these are removed, either through `unvote` or `reap_vote`. 
+ 
+### WrongUpperBound
+- **interface**: `api.errors.democracy.WrongUpperBound.is`
+- **summary**:    Invalid upper bound. 
+
+___
+
+
+## electionProviderMultiPhase
+ 
+### CallNotAllowed
+- **interface**: `api.errors.electionProviderMultiPhase.CallNotAllowed.is`
+- **summary**:    The call is not allowed at this point. 
+ 
+### InvalidSubmissionIndex
+- **interface**: `api.errors.electionProviderMultiPhase.InvalidSubmissionIndex.is`
+- **summary**:    `Self::insert_submission` returned an invalid index. 
+ 
+### MissingSnapshotMetadata
+- **interface**: `api.errors.electionProviderMultiPhase.MissingSnapshotMetadata.is`
+- **summary**:    Snapshot metadata should exist but didn't. 
+ 
+### OcwCallWrongEra
+- **interface**: `api.errors.electionProviderMultiPhase.OcwCallWrongEra.is`
+- **summary**:    OCW submitted solution for wrong round 
+ 
+### PreDispatchEarlySubmission
+- **interface**: `api.errors.electionProviderMultiPhase.PreDispatchEarlySubmission.is`
+- **summary**:    Submission was too early. 
+ 
+### PreDispatchWeakSubmission
+- **interface**: `api.errors.electionProviderMultiPhase.PreDispatchWeakSubmission.is`
+- **summary**:    Submission was too weak, score-wise. 
+ 
+### PreDispatchWrongWinnerCount
+- **interface**: `api.errors.electionProviderMultiPhase.PreDispatchWrongWinnerCount.is`
+- **summary**:    Wrong number of winners presented. 
+ 
+### SignedCannotPayDeposit
+- **interface**: `api.errors.electionProviderMultiPhase.SignedCannotPayDeposit.is`
+- **summary**:    The origin failed to pay the deposit. 
+ 
+### SignedInvalidWitness
+- **interface**: `api.errors.electionProviderMultiPhase.SignedInvalidWitness.is`
+- **summary**:    Witness data to dispatchable is invalid. 
+ 
+### SignedQueueFull
+- **interface**: `api.errors.electionProviderMultiPhase.SignedQueueFull.is`
+- **summary**:    The queue was full, and the solution was not better than any of the existing ones. 
+ 
+### SignedTooMuchWeight
+- **interface**: `api.errors.electionProviderMultiPhase.SignedTooMuchWeight.is`
+- **summary**:    The signed submission consumes too much weight 
+
+___
+
+
+## elections
+ 
+### DuplicatedCandidate
+- **interface**: `api.errors.elections.DuplicatedCandidate.is`
+- **summary**:    Duplicated candidate submission. 
+ 
+### InsufficientCandidateFunds
+- **interface**: `api.errors.elections.InsufficientCandidateFunds.is`
+- **summary**:    Candidate does not have enough funds. 
+ 
+### InvalidRenouncing
+- **interface**: `api.errors.elections.InvalidRenouncing.is`
+- **summary**:    The renouncing origin presented a wrong `Renouncing` parameter. 
+ 
+### InvalidReplacement
+- **interface**: `api.errors.elections.InvalidReplacement.is`
+- **summary**:    Prediction regarding replacement after member removal is wrong. 
+ 
+### InvalidVoteCount
+- **interface**: `api.errors.elections.InvalidVoteCount.is`
+- **summary**:    The provided count of number of votes is incorrect. 
+ 
+### InvalidWitnessData
+- **interface**: `api.errors.elections.InvalidWitnessData.is`
+- **summary**:    The provided count of number of candidates is incorrect. 
+ 
+### LowBalance
+- **interface**: `api.errors.elections.LowBalance.is`
+- **summary**:    Cannot vote with stake less than minimum balance. 
+ 
+### MaximumVotesExceeded
+- **interface**: `api.errors.elections.MaximumVotesExceeded.is`
+- **summary**:    Cannot vote more than maximum allowed. 
+ 
+### MemberSubmit
+- **interface**: `api.errors.elections.MemberSubmit.is`
+- **summary**:    Member cannot re-submit candidacy. 
+ 
+### MustBeVoter
+- **interface**: `api.errors.elections.MustBeVoter.is`
+- **summary**:    Must be a voter. 
+ 
+### NotMember
+- **interface**: `api.errors.elections.NotMember.is`
+- **summary**:    Not a member. 
+ 
+### NoVotes
+- **interface**: `api.errors.elections.NoVotes.is`
+- **summary**:    Must vote for at least one candidate. 
+ 
+### ReportSelf
+- **interface**: `api.errors.elections.ReportSelf.is`
+- **summary**:    Cannot report self. 
+ 
+### RunnerUpSubmit
+- **interface**: `api.errors.elections.RunnerUpSubmit.is`
+- **summary**:    Runner cannot re-submit candidacy. 
+ 
+### TooManyVotes
+- **interface**: `api.errors.elections.TooManyVotes.is`
+- **summary**:    Cannot vote more than candidates. 
+ 
+### UnableToPayBond
+- **interface**: `api.errors.elections.UnableToPayBond.is`
+- **summary**:    Voter can not pay voting bond. 
+ 
+### UnableToVote
+- **interface**: `api.errors.elections.UnableToVote.is`
+- **summary**:    Cannot vote when no candidates or members exist. 
+
+___
+
+
+## grandpa
+ 
+### ChangePending
+- **interface**: `api.errors.grandpa.ChangePending.is`
+- **summary**:    Attempt to signal GRANDPA change with one already pending. 
+ 
+### DuplicateOffenceReport
+- **interface**: `api.errors.grandpa.DuplicateOffenceReport.is`
+- **summary**:    A given equivocation report is valid but already previously reported. 
+ 
+### InvalidEquivocationProof
+- **interface**: `api.errors.grandpa.InvalidEquivocationProof.is`
+- **summary**:    An equivocation proof provided as part of an equivocation report is invalid. 
+ 
+### InvalidKeyOwnershipProof
+- **interface**: `api.errors.grandpa.InvalidKeyOwnershipProof.is`
+- **summary**:    A key ownership proof provided as part of an equivocation report is invalid. 
+ 
+### PauseFailed
+- **interface**: `api.errors.grandpa.PauseFailed.is`
+- **summary**:    Attempt to signal GRANDPA pause when the authority set isn't live  (either paused or already pending pause). 
+ 
+### ResumeFailed
+- **interface**: `api.errors.grandpa.ResumeFailed.is`
+- **summary**:    Attempt to signal GRANDPA resume when the authority set isn't paused  (either live or already pending resume). 
+ 
+### TooSoon
+- **interface**: `api.errors.grandpa.TooSoon.is`
+- **summary**:    Cannot signal forced change so soon after last. 
+
+___
+
+
+## identity
+ 
+### AlreadyClaimed
+- **interface**: `api.errors.identity.AlreadyClaimed.is`
+- **summary**:    Account ID is already named. 
+ 
+### EmptyIndex
+- **interface**: `api.errors.identity.EmptyIndex.is`
+- **summary**:    Empty index. 
+ 
+### FeeChanged
+- **interface**: `api.errors.identity.FeeChanged.is`
+- **summary**:    Fee is changed. 
+ 
+### InvalidIndex
+- **interface**: `api.errors.identity.InvalidIndex.is`
+- **summary**:    The index is invalid. 
+ 
+### InvalidJudgement
+- **interface**: `api.errors.identity.InvalidJudgement.is`
+- **summary**:    Invalid judgement. 
+ 
+### InvalidTarget
+- **interface**: `api.errors.identity.InvalidTarget.is`
+- **summary**:    The target is invalid. 
+ 
+### JudgementGiven
+- **interface**: `api.errors.identity.JudgementGiven.is`
+- **summary**:    Judgement given. 
+ 
+### NoIdentity
+- **interface**: `api.errors.identity.NoIdentity.is`
+- **summary**:    No identity found. 
+ 
+### NotFound
+- **interface**: `api.errors.identity.NotFound.is`
+- **summary**:    Account isn't found. 
+ 
+### NotNamed
+- **interface**: `api.errors.identity.NotNamed.is`
+- **summary**:    Account isn't named. 
+ 
+### NotOwned
+- **interface**: `api.errors.identity.NotOwned.is`
+- **summary**:    Sub-account isn't owned by sender. 
+ 
+### NotSub
+- **interface**: `api.errors.identity.NotSub.is`
+- **summary**:    Sender is not a sub-account. 
+ 
+### StickyJudgement
+- **interface**: `api.errors.identity.StickyJudgement.is`
+- **summary**:    Sticky judgement. 
+ 
+### TooManyFields
+- **interface**: `api.errors.identity.TooManyFields.is`
+- **summary**:    Too many additional fields. 
+ 
+### TooManyRegistrars
+- **interface**: `api.errors.identity.TooManyRegistrars.is`
+- **summary**:    Maximum amount of registrars reached. Cannot add any more. 
+ 
+### TooManySubAccounts
+- **interface**: `api.errors.identity.TooManySubAccounts.is`
+- **summary**:    Too many subs-accounts. 
+
+___
+
+
+## imOnline
+ 
+### DuplicatedHeartbeat
+- **interface**: `api.errors.imOnline.DuplicatedHeartbeat.is`
+- **summary**:    Duplicated heartbeat. 
+ 
+### InvalidKey
+- **interface**: `api.errors.imOnline.InvalidKey.is`
+- **summary**:    Non existent public key. 
+
+___
+
+
+## multisig
+ 
+### AlreadyApproved
+- **interface**: `api.errors.multisig.AlreadyApproved.is`
+- **summary**:    Call is already approved by this signatory. 
+ 
+### AlreadyStored
+- **interface**: `api.errors.multisig.AlreadyStored.is`
+- **summary**:    The data to be stored is already stored. 
+ 
+### MaxWeightTooLow
+- **interface**: `api.errors.multisig.MaxWeightTooLow.is`
+- **summary**:    The maximum weight information provided was too low. 
+ 
+### MinimumThreshold
+- **interface**: `api.errors.multisig.MinimumThreshold.is`
+- **summary**:    Threshold must be 2 or greater. 
+ 
+### NoApprovalsNeeded
+- **interface**: `api.errors.multisig.NoApprovalsNeeded.is`
+- **summary**:    Call doesn't need any (more) approvals. 
+ 
+### NotFound
+- **interface**: `api.errors.multisig.NotFound.is`
+- **summary**:    Multisig operation not found when attempting to cancel. 
+ 
+### NoTimepoint
+- **interface**: `api.errors.multisig.NoTimepoint.is`
+- **summary**:    No timepoint was given, yet the multisig operation is already underway. 
+ 
+### NotOwner
+- **interface**: `api.errors.multisig.NotOwner.is`
+- **summary**:    Only the account that originally created the multisig is able to cancel it. 
+ 
+### SenderInSignatories
+- **interface**: `api.errors.multisig.SenderInSignatories.is`
+- **summary**:    The sender was contained in the other signatories; it shouldn't be. 
+ 
+### SignatoriesOutOfOrder
+- **interface**: `api.errors.multisig.SignatoriesOutOfOrder.is`
+- **summary**:    The signatories were provided out of order; they should be ordered. 
+ 
+### TooFewSignatories
+- **interface**: `api.errors.multisig.TooFewSignatories.is`
+- **summary**:    There are too few signatories in the list. 
+ 
+### TooManySignatories
+- **interface**: `api.errors.multisig.TooManySignatories.is`
+- **summary**:    There are too many signatories in the list. 
+ 
+### UnexpectedTimepoint
+- **interface**: `api.errors.multisig.UnexpectedTimepoint.is`
+- **summary**:    A timepoint was given, yet no multisig operation is underway. 
+ 
+### WrongTimepoint
+- **interface**: `api.errors.multisig.WrongTimepoint.is`
+- **summary**:    A different timepoint was given to the multisig operation that is underway. 
+
+___
+
+
+## proxy
+ 
+### Duplicate
+- **interface**: `api.errors.proxy.Duplicate.is`
+- **summary**:    Account is already a proxy. 
+ 
+### NoPermission
+- **interface**: `api.errors.proxy.NoPermission.is`
+- **summary**:    Call may not be made by proxy because it may escalate its privileges. 
+ 
+### NoSelfProxy
+- **interface**: `api.errors.proxy.NoSelfProxy.is`
+- **summary**:    Cannot add self as proxy. 
+ 
+### NotFound
+- **interface**: `api.errors.proxy.NotFound.is`
+- **summary**:    Proxy registration not found. 
+ 
+### NotProxy
+- **interface**: `api.errors.proxy.NotProxy.is`
+- **summary**:    Sender is not a proxy of the account to be proxied. 
+ 
+### TooMany
+- **interface**: `api.errors.proxy.TooMany.is`
+- **summary**:    There are too many proxies registered or too many announcements pending. 
+ 
+### Unannounced
+- **interface**: `api.errors.proxy.Unannounced.is`
+- **summary**:    Announcement, if made at all, was made too recently. 
+ 
+### Unproxyable
+- **interface**: `api.errors.proxy.Unproxyable.is`
+- **summary**:    A call which is incompatible with the proxy type's filter was attempted. 
+
+___
+
+
+## recovery
+ 
+### AlreadyProxy
+- **interface**: `api.errors.recovery.AlreadyProxy.is`
+- **summary**:    This account is already set up for recovery 
+ 
+### AlreadyRecoverable
+- **interface**: `api.errors.recovery.AlreadyRecoverable.is`
+- **summary**:    This account is already set up for recovery 
+ 
+### AlreadyStarted
+- **interface**: `api.errors.recovery.AlreadyStarted.is`
+- **summary**:    A recovery process has already started for this account 
+ 
+### AlreadyVouched
+- **interface**: `api.errors.recovery.AlreadyVouched.is`
+- **summary**:    This user has already vouched for this recovery 
+ 
+### BadState
+- **interface**: `api.errors.recovery.BadState.is`
+- **summary**:    Some internal state is broken. 
+ 
+### DelayPeriod
+- **interface**: `api.errors.recovery.DelayPeriod.is`
+- **summary**:    The friend must wait until the delay period to vouch for this recovery 
+ 
+### MaxFriends
+- **interface**: `api.errors.recovery.MaxFriends.is`
+- **summary**:    Friends list must be less than max friends 
+ 
+### NotAllowed
+- **interface**: `api.errors.recovery.NotAllowed.is`
+- **summary**:    User is not allowed to make a call on behalf of this account 
+ 
+### NotEnoughFriends
+- **interface**: `api.errors.recovery.NotEnoughFriends.is`
+- **summary**:    Friends list must be greater than zero and threshold 
+ 
+### NotFriend
+- **interface**: `api.errors.recovery.NotFriend.is`
+- **summary**:    This account is not a friend who can vouch 
+ 
+### NotRecoverable
+- **interface**: `api.errors.recovery.NotRecoverable.is`
+- **summary**:    This account is not set up for recovery 
+ 
+### NotSorted
+- **interface**: `api.errors.recovery.NotSorted.is`
+- **summary**:    Friends list must be sorted and free of duplicates 
+ 
+### NotStarted
+- **interface**: `api.errors.recovery.NotStarted.is`
+- **summary**:    A recovery process has not started for this rescuer 
+ 
+### StillActive
+- **interface**: `api.errors.recovery.StillActive.is`
+- **summary**:    There are still active recovery attempts that need to be closed 
+ 
+### Threshold
+- **interface**: `api.errors.recovery.Threshold.is`
+- **summary**:    The threshold for recovering this account has not been met 
+ 
+### ZeroThreshold
+- **interface**: `api.errors.recovery.ZeroThreshold.is`
+- **summary**:    Threshold must be greater than zero 
+
+___
+
+
+## scheduler
+ 
+### FailedToSchedule
+- **interface**: `api.errors.scheduler.FailedToSchedule.is`
+- **summary**:    Failed to schedule a call 
+ 
+### NotFound
+- **interface**: `api.errors.scheduler.NotFound.is`
+- **summary**:    Cannot find the scheduled call. 
+ 
+### RescheduleNoChange
+- **interface**: `api.errors.scheduler.RescheduleNoChange.is`
+- **summary**:    Reschedule failed because it does not change scheduled time. 
+ 
+### TargetBlockNumberInPast
+- **interface**: `api.errors.scheduler.TargetBlockNumberInPast.is`
+- **summary**:    Given target block number is in the past. 
+
+___
+
+
+## session
+ 
+### DuplicatedKey
+- **interface**: `api.errors.session.DuplicatedKey.is`
+- **summary**:    Registered duplicate key. 
+ 
+### InvalidProof
+- **interface**: `api.errors.session.InvalidProof.is`
+- **summary**:    Invalid ownership proof. 
+ 
+### NoAccount
+- **interface**: `api.errors.session.NoAccount.is`
+- **summary**:    Key setting account is not live, so it's impossible to associate keys. 
+ 
+### NoAssociatedValidatorId
+- **interface**: `api.errors.session.NoAssociatedValidatorId.is`
+- **summary**:    No associated validator ID for account. 
+ 
+### NoKeys
+- **interface**: `api.errors.session.NoKeys.is`
+- **summary**:    No keys are associated with this account. 
+
+___
+
+
+## staking
+ 
+### AlreadyBonded
+- **interface**: `api.errors.staking.AlreadyBonded.is`
+- **summary**:    Stash is already bonded. 
+ 
+### AlreadyClaimed
+- **interface**: `api.errors.staking.AlreadyClaimed.is`
+- **summary**:    Rewards for this era have already been claimed for this validator. 
+ 
+### AlreadyPaired
+- **interface**: `api.errors.staking.AlreadyPaired.is`
+- **summary**:    Controller is already paired. 
+ 
+### BadState
+- **interface**: `api.errors.staking.BadState.is`
+- **summary**:    Internal state has become somehow corrupted and the operation cannot continue. 
+ 
+### BadTarget
+- **interface**: `api.errors.staking.BadTarget.is`
+- **summary**:    A nomination target was supplied that was blocked or otherwise not a validator. 
+ 
+### CannotChillOther
+- **interface**: `api.errors.staking.CannotChillOther.is`
+- **summary**:    The user has enough bond and thus cannot be chilled forcefully by an external person. 
+ 
+### DuplicateIndex
+- **interface**: `api.errors.staking.DuplicateIndex.is`
+- **summary**:    Duplicate index. 
+ 
+### ElectionOngoing
+- **interface**: `api.errors.staking.ElectionOngoing.is`
+- **summary**:    Election ongoing, can't transfer CMIX ID 
+ 
+### EmptyTargets
+- **interface**: `api.errors.staking.EmptyTargets.is`
+- **summary**:    Targets cannot be empty. 
+ 
+### FundedTarget
+- **interface**: `api.errors.staking.FundedTarget.is`
+- **summary**:    Attempting to target a stash that still has funds. 
+ 
+### IncorrectHistoryDepth
+- **interface**: `api.errors.staking.IncorrectHistoryDepth.is`
+- **summary**:    Incorrect previous history depth input provided. 
+ 
+### IncorrectSlashingSpans
+- **interface**: `api.errors.staking.IncorrectSlashingSpans.is`
+- **summary**:    Incorrect number of slashing spans provided. 
+ 
+### InsufficientBond
+- **interface**: `api.errors.staking.InsufficientBond.is`
+- **summary**:    Can not bond with value less than minimum required. 
+ 
+### InvalidEraToReward
+- **interface**: `api.errors.staking.InvalidEraToReward.is`
+- **summary**:    Invalid era to reward. 
+ 
+### InvalidNumberOfNominations
+- **interface**: `api.errors.staking.InvalidNumberOfNominations.is`
+- **summary**:    Invalid number of nominations. 
+ 
+### InvalidSlashIndex
+- **interface**: `api.errors.staking.InvalidSlashIndex.is`
+- **summary**:    Slash record index out of bounds. 
+ 
+### NoMoreChunks
+- **interface**: `api.errors.staking.NoMoreChunks.is`
+- **summary**:    Can not schedule more unlock chunks. 
+ 
+### NotController
+- **interface**: `api.errors.staking.NotController.is`
+- **summary**:    Not a controller account. 
+ 
+### NotSortedAndUnique
+- **interface**: `api.errors.staking.NotSortedAndUnique.is`
+- **summary**:    Items are not sorted and unique. 
+ 
+### NotStash
+- **interface**: `api.errors.staking.NotStash.is`
+- **summary**:    Not a stash account. 
+ 
+### NoUnlockChunk
+- **interface**: `api.errors.staking.NoUnlockChunk.is`
+- **summary**:    Can not rebond without unlocking chunks. 
+ 
+### StashActiveValidator
+- **interface**: `api.errors.staking.StashActiveValidator.is`
+- **summary**:    Stash is active validator 
+ 
+### StashAlreadyHasCmixId
+- **interface**: `api.errors.staking.StashAlreadyHasCmixId.is`
+- **summary**:    Stash account already has a CMIX ID 
+ 
+### StashElectedValidator
+- **interface**: `api.errors.staking.StashElectedValidator.is`
+- **summary**:    Stash is elected validator for next era 
+ 
+### StashNoCmixId
+- **interface**: `api.errors.staking.StashNoCmixId.is`
+- **summary**:    Stash account doesn't have a CMIX ID 
+ 
+### StashValidating
+- **interface**: `api.errors.staking.StashValidating.is`
+- **summary**:    Stash is validating 
+ 
+### TooManyNominators
+- **interface**: `api.errors.staking.TooManyNominators.is`
+- **summary**:    There are too many nominators in the system. Governance needs to adjust the staking  settings to keep things safe for the runtime. 
+ 
+### TooManyTargets
+- **interface**: `api.errors.staking.TooManyTargets.is`
+- **summary**:    Too many nomination targets supplied. 
+ 
+### TooManyValidators
+- **interface**: `api.errors.staking.TooManyValidators.is`
+- **summary**:    There are too many validators in the system. Governance needs to adjust the staking  settings to keep things safe for the runtime. 
+ 
+### ValidatorCmixIdNotUnique
+- **interface**: `api.errors.staking.ValidatorCmixIdNotUnique.is`
+- **summary**:    CMIX ID already exists 
+ 
+### ValidatorCommissionTooLow
+- **interface**: `api.errors.staking.ValidatorCommissionTooLow.is`
+- **summary**:    Validator commission is too low 
+ 
+### ValidatorMustHaveCmixId
+- **interface**: `api.errors.staking.ValidatorMustHaveCmixId.is`
+- **summary**:    Validator must have a CMIX ID 
+
+___
+
+
+## system
+ 
+### CallFiltered
+- **interface**: `api.errors.system.CallFiltered.is`
+- **summary**:    The origin filter prevent the call to be dispatched. 
+ 
+### FailedToExtractRuntimeVersion
+- **interface**: `api.errors.system.FailedToExtractRuntimeVersion.is`
+- **summary**:    Failed to extract the runtime version from the new runtime. 
+
+   Either calling `Core_version` or decoding `RuntimeVersion` failed. 
+ 
+### InvalidSpecName
+- **interface**: `api.errors.system.InvalidSpecName.is`
+- **summary**:    The name of specification does not match between the current runtime  and the new runtime. 
+ 
+### NonDefaultComposite
+- **interface**: `api.errors.system.NonDefaultComposite.is`
+- **summary**:    Suicide called when the account has non-default composite data. 
+ 
+### NonZeroRefCount
+- **interface**: `api.errors.system.NonZeroRefCount.is`
+- **summary**:    There is a non-zero reference count preventing the account from being purged. 
+ 
+### SpecVersionNeedsToIncrease
+- **interface**: `api.errors.system.SpecVersionNeedsToIncrease.is`
+- **summary**:    The specification version is not allowed to decrease between the current runtime  and the new runtime. 
+
+___
+
+
+## technicalCommittee
+ 
+### AlreadyInitialized
+- **interface**: `api.errors.technicalCommittee.AlreadyInitialized.is`
+- **summary**:    Members are already initialized! 
+ 
+### DuplicateProposal
+- **interface**: `api.errors.technicalCommittee.DuplicateProposal.is`
+- **summary**:    Duplicate proposals not allowed 
+ 
+### DuplicateVote
+- **interface**: `api.errors.technicalCommittee.DuplicateVote.is`
+- **summary**:    Duplicate vote ignored 
+ 
+### NotMember
+- **interface**: `api.errors.technicalCommittee.NotMember.is`
+- **summary**:    Account is not a member 
+ 
+### ProposalMissing
+- **interface**: `api.errors.technicalCommittee.ProposalMissing.is`
+- **summary**:    Proposal must exist 
+ 
+### TooEarly
+- **interface**: `api.errors.technicalCommittee.TooEarly.is`
+- **summary**:    The close call was made too early, before the end of the voting. 
+ 
+### TooManyProposals
+- **interface**: `api.errors.technicalCommittee.TooManyProposals.is`
+- **summary**:    There can only be a maximum of `MaxProposals` active proposals. 
+ 
+### WrongIndex
+- **interface**: `api.errors.technicalCommittee.WrongIndex.is`
+- **summary**:    Mismatched index 
+ 
+### WrongProposalLength
+- **interface**: `api.errors.technicalCommittee.WrongProposalLength.is`
+- **summary**:    The given length bound for the proposal was too low. 
+ 
+### WrongProposalWeight
+- **interface**: `api.errors.technicalCommittee.WrongProposalWeight.is`
+- **summary**:    The given weight bound for the proposal was too low. 
+
+___
+
+
+## technicalMembership
+ 
+### AlreadyMember
+- **interface**: `api.errors.technicalMembership.AlreadyMember.is`
+- **summary**:    Already a member. 
+ 
+### NotMember
+- **interface**: `api.errors.technicalMembership.NotMember.is`
+- **summary**:    Not a member. 
+
+___
+
+
+## tips
+ 
+### AlreadyKnown
+- **interface**: `api.errors.tips.AlreadyKnown.is`
+- **summary**:    The tip was already found/started. 
+ 
+### NotFinder
+- **interface**: `api.errors.tips.NotFinder.is`
+- **summary**:    The account attempting to retract the tip is not the finder of the tip. 
+ 
+### Premature
+- **interface**: `api.errors.tips.Premature.is`
+- **summary**:    The tip cannot be claimed/closed because it's still in the countdown period. 
+ 
+### ReasonTooBig
+- **interface**: `api.errors.tips.ReasonTooBig.is`
+- **summary**:    The reason given is just too big. 
+ 
+### StillOpen
+- **interface**: `api.errors.tips.StillOpen.is`
+- **summary**:    The tip cannot be claimed/closed because there are not enough tippers yet. 
+ 
+### UnknownTip
+- **interface**: `api.errors.tips.UnknownTip.is`
+- **summary**:    The tip hash is unknown. 
+
+___
+
+
+## treasury
+ 
+### InsufficientProposersBalance
+- **interface**: `api.errors.treasury.InsufficientProposersBalance.is`
+- **summary**:    Proposer's balance is too low. 
+ 
+### InvalidIndex
+- **interface**: `api.errors.treasury.InvalidIndex.is`
+- **summary**:    No proposal or bounty at that index. 
+ 
+### TooManyApprovals
+- **interface**: `api.errors.treasury.TooManyApprovals.is`
+- **summary**:    Too many approvals in the queue. 
+
+___
+
+
+## uniques
+ 
+### AlreadyExists
+- **interface**: `api.errors.uniques.AlreadyExists.is`
+- **summary**:    The asset instance ID has already been used for an asset. 
+ 
+### BadWitness
+- **interface**: `api.errors.uniques.BadWitness.is`
+- **summary**:    Invalid witness data given. 
+ 
+### Frozen
+- **interface**: `api.errors.uniques.Frozen.is`
+- **summary**:    The asset instance or class is frozen. 
+ 
+### InUse
+- **interface**: `api.errors.uniques.InUse.is`
+- **summary**:    The asset ID is already taken. 
+ 
+### NoDelegate
+- **interface**: `api.errors.uniques.NoDelegate.is`
+- **summary**:    There is no delegate approved. 
+ 
+### NoPermission
+- **interface**: `api.errors.uniques.NoPermission.is`
+- **summary**:    The signing account has no permission to do the operation. 
+ 
+### Unapproved
+- **interface**: `api.errors.uniques.Unapproved.is`
+- **summary**:    No approval exists that would allow the transfer. 
+ 
+### Unknown
+- **interface**: `api.errors.uniques.Unknown.is`
+- **summary**:    The given asset ID is unknown. 
+ 
+### WrongDelegate
+- **interface**: `api.errors.uniques.WrongDelegate.is`
+- **summary**:    The delegate turned out to be different to what was expected. 
+ 
+### WrongOwner
+- **interface**: `api.errors.uniques.WrongOwner.is`
+- **summary**:    The owner turned out to be different to what was expected. 
+
+___
+
+
+## utility
+ 
+### TooManyCalls
+- **interface**: `api.errors.utility.TooManyCalls.is`
+- **summary**:    Too many calls batched. 
+
+___
+
+
+## vesting
+ 
+### AmountLow
+- **interface**: `api.errors.vesting.AmountLow.is`
+- **summary**:    Amount being transferred is too low to create a vesting schedule. 
+ 
+### AtMaxVestingSchedules
+- **interface**: `api.errors.vesting.AtMaxVestingSchedules.is`
+- **summary**:    The account already has `MaxVestingSchedules` count of schedules and thus  cannot add another one. Consider merging existing schedules in order to add another. 
+ 
+### InvalidScheduleParams
+- **interface**: `api.errors.vesting.InvalidScheduleParams.is`
+- **summary**:    Failed to create a new schedule because some parameter was invalid. 
+ 
+### NotVesting
+- **interface**: `api.errors.vesting.NotVesting.is`
+- **summary**:    The account given is not vesting. 
+ 
+### ScheduleIndexOutOfBounds
+- **interface**: `api.errors.vesting.ScheduleIndexOutOfBounds.is`
+- **summary**:    An index was out of bounds of the vesting schedules. 
+
+___
+
+
+## xXBetanetRewards
+ 
+### EnactmentBlockHasPassed
+- **interface**: `api.errors.xxBetanetRewards.EnactmentBlockHasPassed.is`
+- **summary**:    Enactment block has passed 
+ 
+### NoRewards
+- **interface**: `api.errors.xxBetanetRewards.NoRewards.is`
+- **summary**:    Account doesn't have rewards 
+
+___
+
+
+## xXCmix
+ 
+### AdminPermissionExpired
+- **interface**: `api.errors.xxCmix.AdminPermissionExpired.is`
+- **summary**:    AdminOrigin is not allowed to modify cmix hashes 
+ 
+### MustBeScheduling
+- **interface**: `api.errors.xxCmix.MustBeScheduling.is`
+- **summary**:    Must be scheduling server account to call this function 
+
+___
+
+
+## xXCustody
+ 
+### CustodyPeriodEnded
+- **interface**: `api.errors.xxCustody.CustodyPeriodEnded.is`
+- **summary**:    Custody period ended, custodian can't call this function anymore 
+ 
+### GovernanceCustodyActive
+- **interface**: `api.errors.xxCustody.GovernanceCustodyActive.is`
+- **summary**:    Governance custody ongoing, team member can't call this function yet 
+ 
+### GovernanceCustodyPeriodEnded
+- **interface**: `api.errors.xxCustody.GovernanceCustodyPeriodEnded.is`
+- **summary**:    Governance custody period ended, custodian can't call this function anymore 
+ 
+### InvalidCustodyAccount
+- **interface**: `api.errors.xxCustody.InvalidCustodyAccount.is`
+- **summary**:    Invalid custody account 
+ 
+### InvalidTeamMember
+- **interface**: `api.errors.xxCustody.InvalidTeamMember.is`
+- **summary**:    Invalid team member account 
+ 
+### MustBeCustodian
+- **interface**: `api.errors.xxCustody.MustBeCustodian.is`
+- **summary**:    Must be custodian to call this function 
+ 
+### PayoutFailedInsufficientFunds
+- **interface**: `api.errors.xxCustody.PayoutFailedInsufficientFunds.is`
+- **summary**:    Payout failed due to insufficient custody + reserve funds 
+ 
+### PayoutNotAvailable
+- **interface**: `api.errors.xxCustody.PayoutNotAvailable.is`
+- **summary**:    Payout not available yet 
+ 
+### TeamMemberExists
+- **interface**: `api.errors.xxCustody.TeamMemberExists.is`
+- **summary**:    This team member account already exists 
diff --git a/website/docs/xxchain/API Documents/events.md b/website/docs/xxchain/API Documents/events.md
new file mode 100644
index 0000000000000000000000000000000000000000..c760e17391cde0a827bb56a273571863d887f3f8
--- /dev/null
+++ b/website/docs/xxchain/API Documents/events.md	
@@ -0,0 +1,1119 @@
+---
+title: Events
+---
+
+Events are emitted for certain operations on the runtime. The following sections describe the events that are part of the default Substrate runtime. 
+
+(NOTE: These were generated from a static/snapshot view of a recent Substrate master node. Some items may not be available in older nodes, or in any customized implementations.)
+
+- **[assets](#assets)**
+
+- **[balances](#balances)**
+
+- **[bounties](#bounties)**
+
+- **[chainBridge](#chainbridge)**
+
+- **[claims](#claims)**
+
+- **[council](#council)**
+
+- **[democracy](#democracy)**
+
+- **[electionProviderMultiPhase](#electionprovidermultiphase)**
+
+- **[elections](#elections)**
+
+- **[grandpa](#grandpa)**
+
+- **[identity](#identity)**
+
+- **[imOnline](#imonline)**
+
+- **[multisig](#multisig)**
+
+- **[offences](#offences)**
+
+- **[proxy](#proxy)**
+
+- **[recovery](#recovery)**
+
+- **[scheduler](#scheduler)**
+
+- **[session](#session)**
+
+- **[staking](#staking)**
+
+- **[swap](#swap)**
+
+- **[system](#system)**
+
+- **[technicalCommittee](#technicalcommittee)**
+
+- **[technicalMembership](#technicalmembership)**
+
+- **[tips](#tips)**
+
+- **[treasury](#treasury)**
+
+- **[uniques](#uniques)**
+
+- **[utility](#utility)**
+
+- **[vesting](#vesting)**
+
+- **[xxBetanetRewards](#xxbetanetrewards)**
+
+- **[xxCmix](#xxcmix)**
+
+- **[xxCustody](#xxcustody)**
+
+- **[xxEconomics](#xxeconomics)**
+
+- **[xxPublic](#xxpublic)**
+
+
+___
+
+
+## assets
+ 
+### ApprovalCancelled(`u32`, `AccountId32`, `AccountId32`)
+- **interface**: `api.events.assets.ApprovalCancelled.is`
+- **summary**:    An approval for account `delegate` was cancelled by `owner`.  \[id, owner, delegate\] 
+ 
+### ApprovedTransfer(`u32`, `AccountId32`, `AccountId32`, `u64`)
+- **interface**: `api.events.assets.ApprovedTransfer.is`
+- **summary**:    (Additional) funds have been approved for transfer to a destination account.  \[asset_id, source, delegate, amount\] 
+ 
+### AssetFrozen(`u32`)
+- **interface**: `api.events.assets.AssetFrozen.is`
+- **summary**:    Some asset `asset_id` was frozen. \[asset_id\] 
+ 
+### AssetStatusChanged(`u32`)
+- **interface**: `api.events.assets.AssetStatusChanged.is`
+- **summary**:    An asset has had its attributes changed by the `Force` origin.  \[id\] 
+ 
+### AssetThawed(`u32`)
+- **interface**: `api.events.assets.AssetThawed.is`
+- **summary**:    Some asset `asset_id` was thawed. \[asset_id\] 
+ 
+### Burned(`u32`, `AccountId32`, `u64`)
+- **interface**: `api.events.assets.Burned.is`
+- **summary**:    Some assets were destroyed. \[asset_id, owner, balance\] 
+ 
+### Created(`u32`, `AccountId32`, `AccountId32`)
+- **interface**: `api.events.assets.Created.is`
+- **summary**:    Some asset class was created. \[asset_id, creator, owner\] 
+ 
+### Destroyed(`u32`)
+- **interface**: `api.events.assets.Destroyed.is`
+- **summary**:    An asset class was destroyed. 
+ 
+### ForceCreated(`u32`, `AccountId32`)
+- **interface**: `api.events.assets.ForceCreated.is`
+- **summary**:    Some asset class was force-created. \[asset_id, owner\] 
+ 
+### Frozen(`u32`, `AccountId32`)
+- **interface**: `api.events.assets.Frozen.is`
+- **summary**:    Some account `who` was frozen. \[asset_id, who\] 
+ 
+### Issued(`u32`, `AccountId32`, `u64`)
+- **interface**: `api.events.assets.Issued.is`
+- **summary**:    Some assets were issued. \[asset_id, owner, total_supply\] 
+ 
+### MetadataCleared(`u32`)
+- **interface**: `api.events.assets.MetadataCleared.is`
+- **summary**:    Metadata has been cleared for an asset. \[asset_id\] 
+ 
+### MetadataSet(`u32`, `Bytes`, `Bytes`, `u8`, `bool`)
+- **interface**: `api.events.assets.MetadataSet.is`
+- **summary**:    New metadata has been set for an asset. \[asset_id, name, symbol, decimals, is_frozen\] 
+ 
+### OwnerChanged(`u32`, `AccountId32`)
+- **interface**: `api.events.assets.OwnerChanged.is`
+- **summary**:    The owner changed \[asset_id, owner\] 
+ 
+### TeamChanged(`u32`, `AccountId32`, `AccountId32`, `AccountId32`)
+- **interface**: `api.events.assets.TeamChanged.is`
+- **summary**:    The management team changed \[asset_id, issuer, admin, freezer\] 
+ 
+### Thawed(`u32`, `AccountId32`)
+- **interface**: `api.events.assets.Thawed.is`
+- **summary**:    Some account `who` was thawed. \[asset_id, who\] 
+ 
+### Transferred(`u32`, `AccountId32`, `AccountId32`, `u64`)
+- **interface**: `api.events.assets.Transferred.is`
+- **summary**:    Some assets were transferred. \[asset_id, from, to, amount\] 
+ 
+### TransferredApproved(`u32`, `AccountId32`, `AccountId32`, `AccountId32`, `u64`)
+- **interface**: `api.events.assets.TransferredApproved.is`
+- **summary**:    An `amount` was transferred in its entirety from `owner` to `destination` by  the approved `delegate`.  \[id, owner, delegate, destination\] 
+
+___
+
+
+## balances
+ 
+### BalanceSet(`AccountId32`, `u128`, `u128`)
+- **interface**: `api.events.balances.BalanceSet.is`
+- **summary**:    A balance was set by root. \[who, free, reserved\] 
+ 
+### Deposit(`AccountId32`, `u128`)
+- **interface**: `api.events.balances.Deposit.is`
+- **summary**:    Some amount was deposited into the account (e.g. for transaction fees). \[who,  deposit\] 
+ 
+### DustLost(`AccountId32`, `u128`)
+- **interface**: `api.events.balances.DustLost.is`
+- **summary**:    An account was removed whose balance was non-zero but below ExistentialDeposit,  resulting in an outright loss. \[account, balance\] 
+ 
+### Endowed(`AccountId32`, `u128`)
+- **interface**: `api.events.balances.Endowed.is`
+- **summary**:    An account was created with some free balance. \[account, free_balance\] 
+ 
+### Reserved(`AccountId32`, `u128`)
+- **interface**: `api.events.balances.Reserved.is`
+- **summary**:    Some balance was reserved (moved from free to reserved). \[who, value\] 
+ 
+### ReserveRepatriated(`AccountId32`, `AccountId32`, `u128`, `FrameSupportTokensMiscBalanceStatus`)
+- **interface**: `api.events.balances.ReserveRepatriated.is`
+- **summary**:    Some balance was moved from the reserve of the first account to the second account.  Final argument indicates the destination balance type.  \[from, to, balance, destination_status\] 
+ 
+### Slashed(`AccountId32`, `u128`)
+- **interface**: `api.events.balances.Slashed.is`
+- **summary**:    Some amount was removed from the account (e.g. for misbehavior). \[who,  amount_slashed\] 
+ 
+### Transfer(`AccountId32`, `AccountId32`, `u128`)
+- **interface**: `api.events.balances.Transfer.is`
+- **summary**:    Transfer succeeded. \[from, to, value\] 
+ 
+### Unreserved(`AccountId32`, `u128`)
+- **interface**: `api.events.balances.Unreserved.is`
+- **summary**:    Some balance was unreserved (moved from reserved to free). \[who, value\] 
+ 
+### Withdraw(`AccountId32`, `u128`)
+- **interface**: `api.events.balances.Withdraw.is`
+- **summary**:    Some amount was withdrawn from the account (e.g. for transaction fees). \[who, value\] 
+
+___
+
+
+## bounties
+ 
+### BountyAwarded(`u32`, `AccountId32`)
+- **interface**: `api.events.bounties.BountyAwarded.is`
+- **summary**:    A bounty is awarded to a beneficiary. \[index, beneficiary\] 
+ 
+### BountyBecameActive(`u32`)
+- **interface**: `api.events.bounties.BountyBecameActive.is`
+- **summary**:    A bounty proposal is funded and became active. \[index\] 
+ 
+### BountyCanceled(`u32`)
+- **interface**: `api.events.bounties.BountyCanceled.is`
+- **summary**:    A bounty is cancelled. \[index\] 
+ 
+### BountyClaimed(`u32`, `u128`, `AccountId32`)
+- **interface**: `api.events.bounties.BountyClaimed.is`
+- **summary**:    A bounty is claimed by beneficiary. \[index, payout, beneficiary\] 
+ 
+### BountyExtended(`u32`)
+- **interface**: `api.events.bounties.BountyExtended.is`
+- **summary**:    A bounty expiry is extended. \[index\] 
+ 
+### BountyProposed(`u32`)
+- **interface**: `api.events.bounties.BountyProposed.is`
+- **summary**:    New bounty proposal. \[index\] 
+ 
+### BountyRejected(`u32`, `u128`)
+- **interface**: `api.events.bounties.BountyRejected.is`
+- **summary**:    A bounty proposal was rejected; funds were slashed. \[index, bond\] 
+
+___
+
+
+## chainBridge
+ 
+### ChainWhitelisted(`u8`)
+- **interface**: `api.events.chainBridge.ChainWhitelisted.is`
+- **summary**:    Chain now available for transfers (chain_id) 
+ 
+### FungibleTransfer(`u8`, `u64`, `[u8;32]`, `U256`, `Bytes`)
+- **interface**: `api.events.chainBridge.FungibleTransfer.is`
+- **summary**:    FunglibleTransfer is for relaying fungibles (dest_id, nonce, resource_id, amount, recipient, metadata) 
+ 
+### GenericTransfer(`u8`, `u64`, `[u8;32]`, `Bytes`)
+- **interface**: `api.events.chainBridge.GenericTransfer.is`
+- **summary**:    GenericTransfer is for a generic data payload (dest_id, nonce, resource_id, metadata) 
+ 
+### NonFungibleTransfer(`u8`, `u64`, `[u8;32]`, `Bytes`, `Bytes`, `Bytes`)
+- **interface**: `api.events.chainBridge.NonFungibleTransfer.is`
+- **summary**:    NonFungibleTransfer is for relaying NFTS (dest_id, nonce, resource_id, token_id, recipient, metadata) 
+ 
+### ProposalApproved(`u8`, `u64`)
+- **interface**: `api.events.chainBridge.ProposalApproved.is`
+- **summary**:    Voting successful for a proposal 
+ 
+### ProposalFailed(`u8`, `u64`)
+- **interface**: `api.events.chainBridge.ProposalFailed.is`
+- **summary**:    Execution of call failed 
+ 
+### ProposalRejected(`u8`, `u64`)
+- **interface**: `api.events.chainBridge.ProposalRejected.is`
+- **summary**:    Voting rejected a proposal 
+ 
+### ProposalSucceeded(`u8`, `u64`)
+- **interface**: `api.events.chainBridge.ProposalSucceeded.is`
+- **summary**:    Execution of call succeeded 
+ 
+### RelayerAdded(`AccountId32`)
+- **interface**: `api.events.chainBridge.RelayerAdded.is`
+- **summary**:    Relayer added to set 
+ 
+### RelayerRemoved(`AccountId32`)
+- **interface**: `api.events.chainBridge.RelayerRemoved.is`
+- **summary**:    Relayer removed from set 
+ 
+### RelayerThresholdChanged(`u32`)
+- **interface**: `api.events.chainBridge.RelayerThresholdChanged.is`
+- **summary**:    Vote threshold has changed (new_threshold) 
+ 
+### VoteAgainst(`u8`, `u64`, `AccountId32`)
+- **interface**: `api.events.chainBridge.VoteAgainst.is`
+- **summary**:    Vot submitted against proposal 
+ 
+### VoteFor(`u8`, `u64`, `AccountId32`)
+- **interface**: `api.events.chainBridge.VoteFor.is`
+- **summary**:    Vote submitted in favour of proposal 
+
+___
+
+
+## claims
+ 
+### Claimed(`AccountId32`, `ClaimsEthereumAddress`, `u128`, `u128`)
+- **interface**: `api.events.claims.Claimed.is`
+- **summary**:    Someone claimed some coins. [who, ethereum_address, amount, reward] 
+
+___
+
+
+## council
+ 
+### Approved(`H256`)
+- **interface**: `api.events.council.Approved.is`
+- **summary**:    A motion was approved by the required threshold.  \[proposal_hash\] 
+ 
+### Closed(`H256`, `u32`, `u32`)
+- **interface**: `api.events.council.Closed.is`
+- **summary**:    A proposal was closed because its threshold was reached or after its duration was up.  \[proposal_hash, yes, no\] 
+ 
+### Disapproved(`H256`)
+- **interface**: `api.events.council.Disapproved.is`
+- **summary**:    A motion was not approved by the required threshold.  \[proposal_hash\] 
+ 
+### Executed(`H256`, `Result<Null, SpRuntimeDispatchError>`)
+- **interface**: `api.events.council.Executed.is`
+- **summary**:    A motion was executed; result will be `Ok` if it returned without error.  \[proposal_hash, result\] 
+ 
+### MemberExecuted(`H256`, `Result<Null, SpRuntimeDispatchError>`)
+- **interface**: `api.events.council.MemberExecuted.is`
+- **summary**:    A single member did some action; result will be `Ok` if it returned without error.  \[proposal_hash, result\] 
+ 
+### Proposed(`AccountId32`, `u32`, `H256`, `u32`)
+- **interface**: `api.events.council.Proposed.is`
+- **summary**:    A motion (given hash) has been proposed (by given account) with a threshold (given  `MemberCount`).  \[account, proposal_index, proposal_hash, threshold\] 
+ 
+### Voted(`AccountId32`, `H256`, `bool`, `u32`, `u32`)
+- **interface**: `api.events.council.Voted.is`
+- **summary**:    A motion (given hash) has been voted on by given account, leaving  a tally (yes votes and no votes given respectively as `MemberCount`).  \[account, proposal_hash, voted, yes, no\] 
+
+___
+
+
+## democracy
+ 
+### Blacklisted(`H256`)
+- **interface**: `api.events.democracy.Blacklisted.is`
+- **summary**:    A proposal \[hash\] has been blacklisted permanently. 
+ 
+### Cancelled(`u32`)
+- **interface**: `api.events.democracy.Cancelled.is`
+- **summary**:    A referendum has been cancelled. \[ref_index\] 
+ 
+### Delegated(`AccountId32`, `AccountId32`)
+- **interface**: `api.events.democracy.Delegated.is`
+- **summary**:    An account has delegated their vote to another account. \[who, target\] 
+ 
+### Executed(`u32`, `Result<Null, SpRuntimeDispatchError>`)
+- **interface**: `api.events.democracy.Executed.is`
+- **summary**:    A proposal has been enacted. \[ref_index, result\] 
+ 
+### ExternalTabled()
+- **interface**: `api.events.democracy.ExternalTabled.is`
+- **summary**:    An external proposal has been tabled. 
+ 
+### NotPassed(`u32`)
+- **interface**: `api.events.democracy.NotPassed.is`
+- **summary**:    A proposal has been rejected by referendum. \[ref_index\] 
+ 
+### Passed(`u32`)
+- **interface**: `api.events.democracy.Passed.is`
+- **summary**:    A proposal has been approved by referendum. \[ref_index\] 
+ 
+### PreimageInvalid(`H256`, `u32`)
+- **interface**: `api.events.democracy.PreimageInvalid.is`
+- **summary**:    A proposal could not be executed because its preimage was invalid.  \[proposal_hash, ref_index\] 
+ 
+### PreimageMissing(`H256`, `u32`)
+- **interface**: `api.events.democracy.PreimageMissing.is`
+- **summary**:    A proposal could not be executed because its preimage was missing.  \[proposal_hash, ref_index\] 
+ 
+### PreimageNoted(`H256`, `AccountId32`, `u128`)
+- **interface**: `api.events.democracy.PreimageNoted.is`
+- **summary**:    A proposal's preimage was noted, and the deposit taken. \[proposal_hash, who, deposit\] 
+ 
+### PreimageReaped(`H256`, `AccountId32`, `u128`, `AccountId32`)
+- **interface**: `api.events.democracy.PreimageReaped.is`
+- **summary**:    A registered preimage was removed and the deposit collected by the reaper.  \[proposal_hash, provider, deposit, reaper\] 
+ 
+### PreimageUsed(`H256`, `AccountId32`, `u128`)
+- **interface**: `api.events.democracy.PreimageUsed.is`
+- **summary**:    A proposal preimage was removed and used (the deposit was returned).  \[proposal_hash, provider, deposit\] 
+ 
+### Proposed(`u32`, `u128`)
+- **interface**: `api.events.democracy.Proposed.is`
+- **summary**:    A motion has been proposed by a public account. \[proposal_index, deposit\] 
+ 
+### Started(`u32`, `PalletDemocracyVoteThreshold`)
+- **interface**: `api.events.democracy.Started.is`
+- **summary**:    A referendum has begun. \[ref_index, threshold\] 
+ 
+### Tabled(`u32`, `u128`, `Vec<AccountId32>`)
+- **interface**: `api.events.democracy.Tabled.is`
+- **summary**:    A public proposal has been tabled for referendum vote. \[proposal_index, deposit,  depositors\] 
+ 
+### Undelegated(`AccountId32`)
+- **interface**: `api.events.democracy.Undelegated.is`
+- **summary**:    An \[account\] has cancelled a previous delegation operation. 
+ 
+### Vetoed(`AccountId32`, `H256`, `u32`)
+- **interface**: `api.events.democracy.Vetoed.is`
+- **summary**:    An external proposal has been vetoed. \[who, proposal_hash, until\] 
+
+___
+
+
+## electionProviderMultiPhase
+ 
+### ElectionFinalized(`Option<PalletElectionProviderMultiPhaseElectionCompute>`)
+- **interface**: `api.events.electionProviderMultiPhase.ElectionFinalized.is`
+- **summary**:    The election has been finalized, with `Some` of the given computation, or else if the  election failed, `None`. 
+ 
+### Rewarded(`AccountId32`, `u128`)
+- **interface**: `api.events.electionProviderMultiPhase.Rewarded.is`
+- **summary**:    An account has been rewarded for their signed submission being finalized. 
+ 
+### SignedPhaseStarted(`u32`)
+- **interface**: `api.events.electionProviderMultiPhase.SignedPhaseStarted.is`
+- **summary**:    The signed phase of the given round has started. 
+ 
+### Slashed(`AccountId32`, `u128`)
+- **interface**: `api.events.electionProviderMultiPhase.Slashed.is`
+- **summary**:    An account has been slashed for submitting an invalid signed submission. 
+ 
+### SolutionStored(`PalletElectionProviderMultiPhaseElectionCompute`, `bool`)
+- **interface**: `api.events.electionProviderMultiPhase.SolutionStored.is`
+- **summary**:    A solution was stored with the given compute. 
+
+   If the solution is signed, this means that it hasn't yet been processed. If the  solution is unsigned, this means that it has also been processed. 
+
+   The `bool` is `true` when a previous solution was ejected to make room for this one. 
+ 
+### UnsignedPhaseStarted(`u32`)
+- **interface**: `api.events.electionProviderMultiPhase.UnsignedPhaseStarted.is`
+- **summary**:    The unsigned phase of the given round has started. 
+
+___
+
+
+## elections
+ 
+### CandidateSlashed(`AccountId32`, `u128`)
+- **interface**: `api.events.elections.CandidateSlashed.is`
+- **summary**:    A \[candidate\] was slashed by \[amount\] due to failing to obtain a seat as member or  runner-up. 
+
+   Note that old members and runners-up are also candidates. 
+ 
+### ElectionError()
+- **interface**: `api.events.elections.ElectionError.is`
+- **summary**:    Internal error happened while trying to perform election. 
+ 
+### EmptyTerm()
+- **interface**: `api.events.elections.EmptyTerm.is`
+- **summary**:    No (or not enough) candidates existed for this round. This is different from  `NewTerm(\[\])`. See the description of `NewTerm`. 
+ 
+### MemberKicked(`AccountId32`)
+- **interface**: `api.events.elections.MemberKicked.is`
+- **summary**:    A \[member\] has been removed. This should always be followed by either `NewTerm` or  `EmptyTerm`. 
+ 
+### NewTerm(`Vec<(AccountId32,u128)>`)
+- **interface**: `api.events.elections.NewTerm.is`
+- **summary**:    A new term with \[new_members\]. This indicates that enough candidates existed to run  the election, not that enough have has been elected. The inner value must be examined  for this purpose. A `NewTerm(\[\])` indicates that some candidates got their bond  slashed and none were elected, whilst `EmptyTerm` means that no candidates existed to  begin with. 
+ 
+### Renounced(`AccountId32`)
+- **interface**: `api.events.elections.Renounced.is`
+- **summary**:    Someone has renounced their candidacy. 
+ 
+### SeatHolderSlashed(`AccountId32`, `u128`)
+- **interface**: `api.events.elections.SeatHolderSlashed.is`
+- **summary**:    A \[seat holder\] was slashed by \[amount\] by being forcefully removed from the set. 
+
+___
+
+
+## grandpa
+ 
+### NewAuthorities(`Vec<(SpFinalityGrandpaAppPublic,u64)>`)
+- **interface**: `api.events.grandpa.NewAuthorities.is`
+- **summary**:    New authority set has been applied. \[authority_set\] 
+ 
+### Paused()
+- **interface**: `api.events.grandpa.Paused.is`
+- **summary**:    Current authority set has been paused. 
+ 
+### Resumed()
+- **interface**: `api.events.grandpa.Resumed.is`
+- **summary**:    Current authority set has been resumed. 
+
+___
+
+
+## identity
+ 
+### IdentityCleared(`AccountId32`, `u128`)
+- **interface**: `api.events.identity.IdentityCleared.is`
+- **summary**:    A name was cleared, and the given balance returned. \[who, deposit\] 
+ 
+### IdentityKilled(`AccountId32`, `u128`)
+- **interface**: `api.events.identity.IdentityKilled.is`
+- **summary**:    A name was removed and the given balance slashed. \[who, deposit\] 
+ 
+### IdentitySet(`AccountId32`)
+- **interface**: `api.events.identity.IdentitySet.is`
+- **summary**:    A name was set or reset (which will remove all judgements). \[who\] 
+ 
+### JudgementGiven(`AccountId32`, `u32`)
+- **interface**: `api.events.identity.JudgementGiven.is`
+- **summary**:    A judgement was given by a registrar. \[target, registrar_index\] 
+ 
+### JudgementRequested(`AccountId32`, `u32`)
+- **interface**: `api.events.identity.JudgementRequested.is`
+- **summary**:    A judgement was asked from a registrar. \[who, registrar_index\] 
+ 
+### JudgementUnrequested(`AccountId32`, `u32`)
+- **interface**: `api.events.identity.JudgementUnrequested.is`
+- **summary**:    A judgement request was retracted. \[who, registrar_index\] 
+ 
+### RegistrarAdded(`u32`)
+- **interface**: `api.events.identity.RegistrarAdded.is`
+- **summary**:    A registrar was added. \[registrar_index\] 
+ 
+### SubIdentityAdded(`AccountId32`, `AccountId32`, `u128`)
+- **interface**: `api.events.identity.SubIdentityAdded.is`
+- **summary**:    A sub-identity was added to an identity and the deposit paid. \[sub, main, deposit\] 
+ 
+### SubIdentityRemoved(`AccountId32`, `AccountId32`, `u128`)
+- **interface**: `api.events.identity.SubIdentityRemoved.is`
+- **summary**:    A sub-identity was removed from an identity and the deposit freed.  \[sub, main, deposit\] 
+ 
+### SubIdentityRevoked(`AccountId32`, `AccountId32`, `u128`)
+- **interface**: `api.events.identity.SubIdentityRevoked.is`
+- **summary**:    A sub-identity was cleared, and the given deposit repatriated from the  main identity account to the sub-identity account. \[sub, main, deposit\] 
+
+___
+
+
+## imOnline
+ 
+### AllGood()
+- **interface**: `api.events.imOnline.AllGood.is`
+- **summary**:    At the end of the session, no offence was committed. 
+ 
+### HeartbeatReceived(`PalletImOnlineSr25519AppSr25519Public`)
+- **interface**: `api.events.imOnline.HeartbeatReceived.is`
+- **summary**:    A new heartbeat was received from `AuthorityId` \[authority_id\] 
+ 
+### SomeOffline(`Vec<(AccountId32,PalletStakingExposure)>`)
+- **interface**: `api.events.imOnline.SomeOffline.is`
+- **summary**:    At the end of the session, at least one validator was found to be \[offline\]. 
+
+___
+
+
+## multisig
+ 
+### MultisigApproval(`AccountId32`, `PalletMultisigTimepoint`, `AccountId32`, `[u8;32]`)
+- **interface**: `api.events.multisig.MultisigApproval.is`
+- **summary**:    A multisig operation has been approved by someone.  \[approving, timepoint, multisig, call_hash\] 
+ 
+### MultisigCancelled(`AccountId32`, `PalletMultisigTimepoint`, `AccountId32`, `[u8;32]`)
+- **interface**: `api.events.multisig.MultisigCancelled.is`
+- **summary**:    A multisig operation has been cancelled. \[canceling, timepoint, multisig, call_hash\] 
+ 
+### MultisigExecuted(`AccountId32`, `PalletMultisigTimepoint`, `AccountId32`, `[u8;32]`, `Result<Null, SpRuntimeDispatchError>`)
+- **interface**: `api.events.multisig.MultisigExecuted.is`
+- **summary**:    A multisig operation has been executed. \[approving, timepoint, multisig, call_hash\] 
+ 
+### NewMultisig(`AccountId32`, `AccountId32`, `[u8;32]`)
+- **interface**: `api.events.multisig.NewMultisig.is`
+- **summary**:    A new multisig operation has begun. \[approving, multisig, call_hash\] 
+
+___
+
+
+## offences
+ 
+### Offence(`[u8;16]`, `Bytes`)
+- **interface**: `api.events.offences.Offence.is`
+- **summary**:    There is an offence reported of the given `kind` happened at the `session_index` and  (kind-specific) time slot. This event is not deposited for duplicate slashes.  \[kind, timeslot\]. 
+
+___
+
+
+## proxy
+ 
+### Announced(`AccountId32`, `AccountId32`, `H256`)
+- **interface**: `api.events.proxy.Announced.is`
+- **summary**:    An announcement was placed to make a call in the future. \[real, proxy, call_hash\] 
+ 
+### AnonymousCreated(`AccountId32`, `AccountId32`, `XxnetworkRuntimeProxyType`, `u16`)
+- **interface**: `api.events.proxy.AnonymousCreated.is`
+- **summary**:    Anonymous account has been created by new proxy with given  disambiguation index and proxy type. \[anonymous, who, proxy_type,  disambiguation_index\] 
+ 
+### ProxyAdded(`AccountId32`, `AccountId32`, `XxnetworkRuntimeProxyType`, `u32`)
+- **interface**: `api.events.proxy.ProxyAdded.is`
+- **summary**:    A proxy was added. \[delegator, delegatee, proxy_type, delay\] 
+ 
+### ProxyExecuted(`Result<Null, SpRuntimeDispatchError>`)
+- **interface**: `api.events.proxy.ProxyExecuted.is`
+- **summary**:    A proxy was executed correctly, with the given \[result\]. 
+
+___
+
+
+## recovery
+ 
+### AccountRecovered(`AccountId32`, `AccountId32`)
+- **interface**: `api.events.recovery.AccountRecovered.is`
+- **summary**:    Lost account has been successfully recovered by rescuer account.  \[lost, rescuer\] 
+ 
+### RecoveryClosed(`AccountId32`, `AccountId32`)
+- **interface**: `api.events.recovery.RecoveryClosed.is`
+- **summary**:    A recovery process for lost account by rescuer account has been closed.  \[lost, rescuer\] 
+ 
+### RecoveryCreated(`AccountId32`)
+- **interface**: `api.events.recovery.RecoveryCreated.is`
+- **summary**:    A recovery process has been set up for an \[account\]. 
+ 
+### RecoveryInitiated(`AccountId32`, `AccountId32`)
+- **interface**: `api.events.recovery.RecoveryInitiated.is`
+- **summary**:    A recovery process has been initiated for lost account by rescuer account.  \[lost, rescuer\] 
+ 
+### RecoveryRemoved(`AccountId32`)
+- **interface**: `api.events.recovery.RecoveryRemoved.is`
+- **summary**:    A recovery process has been removed for an \[account\]. 
+ 
+### RecoveryVouched(`AccountId32`, `AccountId32`, `AccountId32`)
+- **interface**: `api.events.recovery.RecoveryVouched.is`
+- **summary**:    A recovery process for lost account by rescuer account has been vouched for by sender.  \[lost, rescuer, sender\] 
+
+___
+
+
+## scheduler
+ 
+### Canceled(`u32`, `u32`)
+- **interface**: `api.events.scheduler.Canceled.is`
+- **summary**:    Canceled some task. \[when, index\] 
+ 
+### Dispatched(`(u32,u32)`, `Option<Bytes>`, `Result<Null, SpRuntimeDispatchError>`)
+- **interface**: `api.events.scheduler.Dispatched.is`
+- **summary**:    Dispatched some task. \[task, id, result\] 
+ 
+### Scheduled(`u32`, `u32`)
+- **interface**: `api.events.scheduler.Scheduled.is`
+- **summary**:    Scheduled some task. \[when, index\] 
+
+___
+
+
+## session
+ 
+### NewSession(`u32`)
+- **interface**: `api.events.session.NewSession.is`
+- **summary**:    New session has happened. Note that the argument is the \[session_index\], not the  block number as the type might suggest. 
+
+___
+
+
+## staking
+ 
+### Bonded(`AccountId32`, `u128`)
+- **interface**: `api.events.staking.Bonded.is`
+- **summary**:    An account has bonded this amount. \[stash, amount\] 
+
+   NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably,  it will not be emitted for staking rewards when they are added to stake. 
+ 
+### Chilled(`AccountId32`)
+- **interface**: `api.events.staking.Chilled.is`
+- **summary**:    An account has stopped participating as either a validator or nominator.  \[stash\] 
+ 
+### EraPaid(`u32`, `u128`, `u128`)
+- **interface**: `api.events.staking.EraPaid.is`
+- **summary**:    The era payout has been set; the first balance is the validator-payout; the second is  the remainder from the maximum amount of reward.  \[era_index, validator_payout, remainder\] 
+ 
+### Kicked(`AccountId32`, `AccountId32`)
+- **interface**: `api.events.staking.Kicked.is`
+- **summary**:    A nominator has been kicked from a validator. \[nominator, stash\] 
+ 
+### OldSlashingReportDiscarded(`u32`)
+- **interface**: `api.events.staking.OldSlashingReportDiscarded.is`
+- **summary**:    An old slashing report from a prior era was discarded because it could  not be processed. \[session_index\] 
+ 
+### PayoutStarted(`u32`, `AccountId32`)
+- **interface**: `api.events.staking.PayoutStarted.is`
+- **summary**:    The stakers' rewards are getting paid. \[era_index, validator_stash\] 
+ 
+### Rewarded(`AccountId32`, `u128`)
+- **interface**: `api.events.staking.Rewarded.is`
+- **summary**:    The nominator has been rewarded by this amount. \[stash, amount\] 
+ 
+### Slashed(`AccountId32`, `u128`)
+- **interface**: `api.events.staking.Slashed.is`
+- **summary**:    One validator (and its nominators) has been slashed by the given amount.  \[validator, amount\] 
+ 
+### StakersElected()
+- **interface**: `api.events.staking.StakersElected.is`
+- **summary**:    A new set of stakers was elected. 
+ 
+### StakingElectionFailed()
+- **interface**: `api.events.staking.StakingElectionFailed.is`
+- **summary**:    The election failed. No new era is planned. 
+ 
+### Unbonded(`AccountId32`, `u128`)
+- **interface**: `api.events.staking.Unbonded.is`
+- **summary**:    An account has unbonded this amount. \[stash, amount\] 
+ 
+### Withdrawn(`AccountId32`, `u128`)
+- **interface**: `api.events.staking.Withdrawn.is`
+- **summary**:    An account has called `withdraw_unbonded` and removed unbonding chunks worth `Balance`  from the unlocking queue. \[stash, amount\] 
+
+___
+
+
+## swap
+ 
+### FeeChanged(`u128`)
+- **interface**: `api.events.swap.FeeChanged.is`
+- **summary**:    Swap service fee was changed 
+ 
+### FeeDestinationChanged(`AccountId32`)
+- **interface**: `api.events.swap.FeeDestinationChanged.is`
+- **summary**:    Swap fee destination was changed 
+
+___
+
+
+## system
+ 
+### CodeUpdated()
+- **interface**: `api.events.system.CodeUpdated.is`
+- **summary**:    `:code` was updated. 
+ 
+### ExtrinsicFailed(`SpRuntimeDispatchError`, `FrameSupportWeightsDispatchInfo`)
+- **interface**: `api.events.system.ExtrinsicFailed.is`
+- **summary**:    An extrinsic failed. \[error, info\] 
+ 
+### ExtrinsicSuccess(`FrameSupportWeightsDispatchInfo`)
+- **interface**: `api.events.system.ExtrinsicSuccess.is`
+- **summary**:    An extrinsic completed successfully. \[info\] 
+ 
+### KilledAccount(`AccountId32`)
+- **interface**: `api.events.system.KilledAccount.is`
+- **summary**:    An \[account\] was reaped. 
+ 
+### NewAccount(`AccountId32`)
+- **interface**: `api.events.system.NewAccount.is`
+- **summary**:    A new \[account\] was created. 
+ 
+### Remarked(`AccountId32`, `H256`)
+- **interface**: `api.events.system.Remarked.is`
+- **summary**:    On on-chain remark happened. \[origin, remark_hash\] 
+
+___
+
+
+## technicalCommittee
+ 
+### Approved(`H256`)
+- **interface**: `api.events.technicalCommittee.Approved.is`
+- **summary**:    A motion was approved by the required threshold.  \[proposal_hash\] 
+ 
+### Closed(`H256`, `u32`, `u32`)
+- **interface**: `api.events.technicalCommittee.Closed.is`
+- **summary**:    A proposal was closed because its threshold was reached or after its duration was up.  \[proposal_hash, yes, no\] 
+ 
+### Disapproved(`H256`)
+- **interface**: `api.events.technicalCommittee.Disapproved.is`
+- **summary**:    A motion was not approved by the required threshold.  \[proposal_hash\] 
+ 
+### Executed(`H256`, `Result<Null, SpRuntimeDispatchError>`)
+- **interface**: `api.events.technicalCommittee.Executed.is`
+- **summary**:    A motion was executed; result will be `Ok` if it returned without error.  \[proposal_hash, result\] 
+ 
+### MemberExecuted(`H256`, `Result<Null, SpRuntimeDispatchError>`)
+- **interface**: `api.events.technicalCommittee.MemberExecuted.is`
+- **summary**:    A single member did some action; result will be `Ok` if it returned without error.  \[proposal_hash, result\] 
+ 
+### Proposed(`AccountId32`, `u32`, `H256`, `u32`)
+- **interface**: `api.events.technicalCommittee.Proposed.is`
+- **summary**:    A motion (given hash) has been proposed (by given account) with a threshold (given  `MemberCount`).  \[account, proposal_index, proposal_hash, threshold\] 
+ 
+### Voted(`AccountId32`, `H256`, `bool`, `u32`, `u32`)
+- **interface**: `api.events.technicalCommittee.Voted.is`
+- **summary**:    A motion (given hash) has been voted on by given account, leaving  a tally (yes votes and no votes given respectively as `MemberCount`).  \[account, proposal_hash, voted, yes, no\] 
+
+___
+
+
+## technicalMembership
+ 
+### Dummy()
+- **interface**: `api.events.technicalMembership.Dummy.is`
+- **summary**:    Phantom member, never used. 
+ 
+### KeyChanged()
+- **interface**: `api.events.technicalMembership.KeyChanged.is`
+- **summary**:    One of the members' keys changed. 
+ 
+### MemberAdded()
+- **interface**: `api.events.technicalMembership.MemberAdded.is`
+- **summary**:    The given member was added; see the transaction for who. 
+ 
+### MemberRemoved()
+- **interface**: `api.events.technicalMembership.MemberRemoved.is`
+- **summary**:    The given member was removed; see the transaction for who. 
+ 
+### MembersReset()
+- **interface**: `api.events.technicalMembership.MembersReset.is`
+- **summary**:    The membership was reset; see the transaction for who the new set is. 
+ 
+### MembersSwapped()
+- **interface**: `api.events.technicalMembership.MembersSwapped.is`
+- **summary**:    Two members were swapped; see the transaction for who. 
+
+___
+
+
+## tips
+ 
+### NewTip(`H256`)
+- **interface**: `api.events.tips.NewTip.is`
+- **summary**:    A new tip suggestion has been opened. 
+ 
+### TipClosed(`H256`, `AccountId32`, `u128`)
+- **interface**: `api.events.tips.TipClosed.is`
+- **summary**:    A tip suggestion has been closed. 
+ 
+### TipClosing(`H256`)
+- **interface**: `api.events.tips.TipClosing.is`
+- **summary**:    A tip suggestion has reached threshold and is closing. 
+ 
+### TipRetracted(`H256`)
+- **interface**: `api.events.tips.TipRetracted.is`
+- **summary**:    A tip suggestion has been retracted. 
+ 
+### TipSlashed(`H256`, `AccountId32`, `u128`)
+- **interface**: `api.events.tips.TipSlashed.is`
+- **summary**:    A tip suggestion has been slashed. 
+
+___
+
+
+## treasury
+ 
+### Awarded(`u32`, `u128`, `AccountId32`)
+- **interface**: `api.events.treasury.Awarded.is`
+- **summary**:    Some funds have been allocated. \[proposal_index, award, beneficiary\] 
+ 
+### Burnt(`u128`)
+- **interface**: `api.events.treasury.Burnt.is`
+- **summary**:    Some of our funds have been burnt. \[burn\] 
+ 
+### Deposit(`u128`)
+- **interface**: `api.events.treasury.Deposit.is`
+- **summary**:    Some funds have been deposited. \[deposit\] 
+ 
+### Proposed(`u32`)
+- **interface**: `api.events.treasury.Proposed.is`
+- **summary**:    New proposal. \[proposal_index\] 
+ 
+### Rejected(`u32`, `u128`)
+- **interface**: `api.events.treasury.Rejected.is`
+- **summary**:    A proposal was rejected; funds were slashed. \[proposal_index, slashed\] 
+ 
+### Rollover(`u128`)
+- **interface**: `api.events.treasury.Rollover.is`
+- **summary**:    Spending has finished; this is the amount that rolls over until next spend.  \[budget_remaining\] 
+ 
+### Spending(`u128`)
+- **interface**: `api.events.treasury.Spending.is`
+- **summary**:    We have ended a spend period and will now allocate funds. \[budget_remaining\] 
+
+___
+
+
+## uniques
+ 
+### ApprovalCancelled(`u32`, `u32`, `AccountId32`, `AccountId32`)
+- **interface**: `api.events.uniques.ApprovalCancelled.is`
+- **summary**:    An approval for a `delegate` account to transfer the `instance` of an asset `class` was  cancelled by its `owner`.  \[ class, instance, owner, delegate \] 
+ 
+### ApprovedTransfer(`u32`, `u32`, `AccountId32`, `AccountId32`)
+- **interface**: `api.events.uniques.ApprovedTransfer.is`
+- **summary**:    An `instance` of an asset `class` has been approved by the `owner` for transfer by a  `delegate`.  \[ class, instance, owner, delegate \] 
+ 
+### AssetStatusChanged(`u32`)
+- **interface**: `api.events.uniques.AssetStatusChanged.is`
+- **summary**:    An asset `class` has had its attributes changed by the `Force` origin.  \[ class \] 
+ 
+### AttributeCleared(`u32`, `Option<u32>`, `Bytes`)
+- **interface**: `api.events.uniques.AttributeCleared.is`
+- **summary**:    Attribute metadata has been cleared for an asset class or instance.  \[ class, maybe_instance, key, maybe_value \] 
+ 
+### AttributeSet(`u32`, `Option<u32>`, `Bytes`, `Bytes`)
+- **interface**: `api.events.uniques.AttributeSet.is`
+- **summary**:    New attribute metadata has been set for an asset class or instance.  \[ class, maybe_instance, key, value \] 
+ 
+### Burned(`u32`, `u32`, `AccountId32`)
+- **interface**: `api.events.uniques.Burned.is`
+- **summary**:    An asset `instance` was destroyed. \[ class, instance, owner \] 
+ 
+### ClassFrozen(`u32`)
+- **interface**: `api.events.uniques.ClassFrozen.is`
+- **summary**:    Some asset `class` was frozen. \[ class \] 
+ 
+### ClassMetadataCleared(`u32`)
+- **interface**: `api.events.uniques.ClassMetadataCleared.is`
+- **summary**:    Metadata has been cleared for an asset class. \[ class \] 
+ 
+### ClassMetadataSet(`u32`, `Bytes`, `bool`)
+- **interface**: `api.events.uniques.ClassMetadataSet.is`
+- **summary**:    New metadata has been set for an asset class. \[ class, data, is_frozen \] 
+ 
+### ClassThawed(`u32`)
+- **interface**: `api.events.uniques.ClassThawed.is`
+- **summary**:    Some asset `class` was thawed. \[ class \] 
+ 
+### Created(`u32`, `AccountId32`, `AccountId32`)
+- **interface**: `api.events.uniques.Created.is`
+- **summary**:    An asset class was created. \[ class, creator, owner \] 
+ 
+### Destroyed(`u32`)
+- **interface**: `api.events.uniques.Destroyed.is`
+- **summary**:    An asset `class` was destroyed. \[ class \] 
+ 
+### ForceCreated(`u32`, `AccountId32`)
+- **interface**: `api.events.uniques.ForceCreated.is`
+- **summary**:    An asset class was force-created. \[ class, owner \] 
+ 
+### Frozen(`u32`, `u32`)
+- **interface**: `api.events.uniques.Frozen.is`
+- **summary**:    Some asset `instance` was frozen. \[ class, instance \] 
+ 
+### Issued(`u32`, `u32`, `AccountId32`)
+- **interface**: `api.events.uniques.Issued.is`
+- **summary**:    An asset `instance` was issued. \[ class, instance, owner \] 
+ 
+### MetadataCleared(`u32`, `u32`)
+- **interface**: `api.events.uniques.MetadataCleared.is`
+- **summary**:    Metadata has been cleared for an asset instance. \[ class, instance \] 
+ 
+### MetadataSet(`u32`, `u32`, `Bytes`, `bool`)
+- **interface**: `api.events.uniques.MetadataSet.is`
+- **summary**:    New metadata has been set for an asset instance.  \[ class, instance, data, is_frozen \] 
+ 
+### OwnerChanged(`u32`, `AccountId32`)
+- **interface**: `api.events.uniques.OwnerChanged.is`
+- **summary**:    The owner changed \[ class, new_owner \] 
+ 
+### Redeposited(`u32`, `Vec<u32>`)
+- **interface**: `api.events.uniques.Redeposited.is`
+- **summary**:    Metadata has been cleared for an asset instance. \[ class, successful_instances \] 
+ 
+### TeamChanged(`u32`, `AccountId32`, `AccountId32`, `AccountId32`)
+- **interface**: `api.events.uniques.TeamChanged.is`
+- **summary**:    The management team changed \[ class, issuer, admin, freezer \] 
+ 
+### Thawed(`u32`, `u32`)
+- **interface**: `api.events.uniques.Thawed.is`
+- **summary**:    Some asset `instance` was thawed. \[ class, instance \] 
+ 
+### Transferred(`u32`, `u32`, `AccountId32`, `AccountId32`)
+- **interface**: `api.events.uniques.Transferred.is`
+- **summary**:    An asset `instance` was transferred. \[ class, instance, from, to \] 
+
+___
+
+
+## utility
+ 
+### BatchCompleted()
+- **interface**: `api.events.utility.BatchCompleted.is`
+- **summary**:    Batch of dispatches completed fully with no error. 
+ 
+### BatchInterrupted(`u32`, `SpRuntimeDispatchError`)
+- **interface**: `api.events.utility.BatchInterrupted.is`
+- **summary**:    Batch of dispatches did not complete fully. Index of first failing dispatch given, as  well as the error. \[index, error\] 
+ 
+### DispatchedAs(`Result<Null, SpRuntimeDispatchError>`)
+- **interface**: `api.events.utility.DispatchedAs.is`
+- **summary**:    A call was dispatched. \[result\] 
+ 
+### ItemCompleted()
+- **interface**: `api.events.utility.ItemCompleted.is`
+- **summary**:    A single item within a Batch of dispatches has completed with no error. 
+
+___
+
+
+## vesting
+ 
+### VestingCompleted(`AccountId32`)
+- **interface**: `api.events.vesting.VestingCompleted.is`
+- **summary**:    An \[account\] has become fully vested. 
+ 
+### VestingUpdated(`AccountId32`, `u128`)
+- **interface**: `api.events.vesting.VestingUpdated.is`
+- **summary**:    The amount vested has been updated. This could indicate a change in funds available.  The balance given is the amount which is left unvested (and thus locked).  \[account, unvested\] 
+
+___
+
+
+## xxBetanetRewards
+ 
+### OptionSelected(`AccountId32`, `XxBetanetRewardsRewardOption`)
+- **interface**: `api.events.xxBetanetRewards.OptionSelected.is`
+- **summary**:    Reward option has been selected 
+ 
+### ProgramApproved()
+- **interface**: `api.events.xxBetanetRewards.ProgramApproved.is`
+- **summary**:    BetaNet Staking Program has been approved 
+ 
+### ProgramEnacted()
+- **interface**: `api.events.xxBetanetRewards.ProgramEnacted.is`
+- **summary**:    BetaNet Staking Program has been enacted 
+
+___
+
+
+## xxCmix
+ 
+### AdminPermissionUpdated(`u32`)
+- **interface**: `api.events.xxCmix.AdminPermissionUpdated.is`
+- **summary**:    Admin permission updated 
+ 
+### CmixAddressSpaceUpdated()
+- **interface**: `api.events.xxCmix.CmixAddressSpaceUpdated.is`
+- **summary**:    Cmix address space size updated 
+ 
+### CmixHashesUpdated()
+- **interface**: `api.events.xxCmix.CmixHashesUpdated.is`
+- **summary**:    Cmix hashes updated 
+ 
+### CmixPointsAdded()
+- **interface**: `api.events.xxCmix.CmixPointsAdded.is`
+- **summary**:    Cmix points data submitted to chain 
+ 
+### CmixPointsDeducted()
+- **interface**: `api.events.xxCmix.CmixPointsDeducted.is`
+- **summary**:    Cmix points deduction data submitted to chain 
+ 
+### CmixVariablesUpdated()
+- **interface**: `api.events.xxCmix.CmixVariablesUpdated.is`
+- **summary**:    Cmix variables updated 
+ 
+### SchedulingAccountUpdated()
+- **interface**: `api.events.xxCmix.SchedulingAccountUpdated.is`
+- **summary**:    Scheduling server account updated 
+
+___
+
+
+## xxCustody
+ 
+### CustodianAdded(`AccountId32`)
+- **interface**: `api.events.xxCustody.CustodianAdded.is`
+- **summary**:    Custodian added 
+ 
+### CustodianRemoved(`AccountId32`)
+- **interface**: `api.events.xxCustody.CustodianRemoved.is`
+- **summary**:    Custodian removed 
+ 
+### CustodyDone(`AccountId32`)
+- **interface**: `api.events.xxCustody.CustodyDone.is`
+- **summary**:    Custody finished for the given team account 
+ 
+### PayoutFromCustody(`AccountId32`, `u128`)
+- **interface**: `api.events.xxCustody.PayoutFromCustody.is`
+- **summary**:    Team payout was given from custody 
+ 
+### PayoutFromReserve(`AccountId32`, `u128`)
+- **interface**: `api.events.xxCustody.PayoutFromReserve.is`
+- **summary**:    Team payout was given from reserve 
+ 
+### TeamMemberUpdated(`AccountId32`, `AccountId32`)
+- **interface**: `api.events.xxCustody.TeamMemberUpdated.is`
+- **summary**:    Team member updated 
+
+___
+
+
+## xxEconomics
+ 
+### IdealLiquidityStakeChanged()
+- **interface**: `api.events.xxEconomics.IdealLiquidityStakeChanged.is`
+- **summary**:    Ideal liquidity rewards stake was changed 
+ 
+### InflationParamsChanged()
+- **interface**: `api.events.xxEconomics.InflationParamsChanged.is`
+- **summary**:    Inflation fixed parameters were changed 
+ 
+### InterestPointsChanged()
+- **interface**: `api.events.xxEconomics.InterestPointsChanged.is`
+- **summary**:    Ideal interest points were changed 
+ 
+### LiquidityRewardsBalanceChanged()
+- **interface**: `api.events.xxEconomics.LiquidityRewardsBalanceChanged.is`
+- **summary**:    Liquidity rewards balance was changed 
+ 
+### RewardFromPool(`u128`)
+- **interface**: `api.events.xxEconomics.RewardFromPool.is`
+- **summary**:    Rewards were given from the pool 
+ 
+### RewardMinted(`u128`)
+- **interface**: `api.events.xxEconomics.RewardMinted.is`
+- **summary**:    Rewards were minted 
+
+___
+
+
+## xxPublic
+ 
+### SaleManagerUpdated()
+- **interface**: `api.events.xxPublic.SaleManagerUpdated.is`
+- **summary**:    Sale Manager updated 
+ 
+### TestnetManagerUpdated()
+- **interface**: `api.events.xxPublic.TestnetManagerUpdated.is`
+- **summary**:    Testnet Manager updated 
diff --git a/website/docs/xxchain/API Documents/extrinsics.md b/website/docs/xxchain/API Documents/extrinsics.md
new file mode 100644
index 0000000000000000000000000000000000000000..d5bd54e0aaf9d2ef124f07171475ada14883e3e2
--- /dev/null
+++ b/website/docs/xxchain/API Documents/extrinsics.md	
@@ -0,0 +1,3388 @@
+---
+title: Extrinsics
+---
+
+The following sections contain Extrinsics methods are part of the default Substrate runtime. On the api, these are exposed via `api.tx.<module>.<method>`. 
+
+(NOTE: These were generated from a static/snapshot view of a recent Substrate master node. Some items may not be available in older nodes, or in any customized implementations.)
+
+- **[assets](#assets)**
+
+- **[authorship](#authorship)**
+
+- **[babe](#babe)**
+
+- **[balances](#balances)**
+
+- **[bounties](#bounties)**
+
+- **[chainBridge](#chainbridge)**
+
+- **[claims](#claims)**
+
+- **[council](#council)**
+
+- **[democracy](#democracy)**
+
+- **[electionProviderMultiPhase](#electionprovidermultiphase)**
+
+- **[elections](#elections)**
+
+- **[grandpa](#grandpa)**
+
+- **[identity](#identity)**
+
+- **[imOnline](#imonline)**
+
+- **[multisig](#multisig)**
+
+- **[proxy](#proxy)**
+
+- **[recovery](#recovery)**
+
+- **[scheduler](#scheduler)**
+
+- **[session](#session)**
+
+- **[staking](#staking)**
+
+- **[swap](#swap)**
+
+- **[system](#system)**
+
+- **[technicalCommittee](#technicalcommittee)**
+
+- **[technicalMembership](#technicalmembership)**
+
+- **[timestamp](#timestamp)**
+
+- **[tips](#tips)**
+
+- **[treasury](#treasury)**
+
+- **[uniques](#uniques)**
+
+- **[utility](#utility)**
+
+- **[vesting](#vesting)**
+
+- **[xxBetanetRewards](#xxbetanetrewards)**
+
+- **[xxCmix](#xxcmix)**
+
+- **[xxCustody](#xxcustody)**
+
+- **[xxEconomics](#xxeconomics)**
+
+- **[xxPublic](#xxpublic)**
+
+
+___
+
+
+## assets
+ 
+### approveTransfer(id: `Compact<u32>`, delegate: `MultiAddress`, amount: `Compact<u64>`)
+- **interface**: `api.tx.assets.approveTransfer`
+- **summary**:    Approve an amount of asset for transfer by a delegated third-party account. 
+
+   Origin must be Signed. 
+
+   Ensures that `ApprovalDeposit` worth of `Currency` is reserved from signing account  for the purpose of holding the approval. If some non-zero amount of assets is already  approved from signing account to `delegate`, then it is topped up or unreserved to  meet the right value. 
+
+   NOTE: The signing account does not need to own `amount` of assets at the point of  making this call. 
+
+   - `id`: The identifier of the asset. 
+
+  - `delegate`: The account to delegate permission to transfer asset.
+
+  - `amount`: The amount of asset that may be transferred by `delegate`. If there is already an approval in place, then this acts additively. 
+
+   Emits `ApprovedTransfer` on success. 
+
+   Weight: `O(1)` 
+ 
+### burn(id: `Compact<u32>`, who: `MultiAddress`, amount: `Compact<u64>`)
+- **interface**: `api.tx.assets.burn`
+- **summary**:    Reduce the balance of `who` by as much as possible up to `amount` assets of `id`. 
+
+   Origin must be Signed and the sender should be the Manager of the asset `id`. 
+
+   Bails with `BalanceZero` if the `who` is already dead. 
+
+   - `id`: The identifier of the asset to have some amount burned. 
+
+  - `who`: The account to be debited from.
+
+  - `amount`: The maximum amount by which `who`'s balance should be reduced.
+
+   Emits `Burned` with the actual amount burned. If this takes the balance to below the  minimum for the asset, then the amount burned is increased to take it to zero. 
+
+   Weight: `O(1)`  Modes: Post-existence of `who`; Pre & post Zombie-status of `who`. 
+ 
+### cancelApproval(id: `Compact<u32>`, delegate: `MultiAddress`)
+- **interface**: `api.tx.assets.cancelApproval`
+- **summary**:    Cancel all of some asset approved for delegated transfer by a third-party account. 
+
+   Origin must be Signed and there must be an approval in place between signer and  `delegate`. 
+
+   Unreserves any deposit previously reserved by `approve_transfer` for the approval. 
+
+   - `id`: The identifier of the asset. 
+
+  - `delegate`: The account delegated permission to transfer asset.
+
+   Emits `ApprovalCancelled` on success. 
+
+   Weight: `O(1)` 
+ 
+### clearMetadata(id: `Compact<u32>`)
+- **interface**: `api.tx.assets.clearMetadata`
+- **summary**:    Clear the metadata for an asset. 
+
+   Origin must be Signed and the sender should be the Owner of the asset `id`. 
+
+   Any deposit is freed for the asset owner. 
+
+   - `id`: The identifier of the asset to clear. 
+
+   Emits `MetadataCleared`. 
+
+   Weight: `O(1)` 
+ 
+### create(id: `Compact<u32>`, admin: `MultiAddress`, min_balance: `u64`)
+- **interface**: `api.tx.assets.create`
+- **summary**:    Issue a new class of fungible assets from a public origin. 
+
+   This new asset class has no assets initially and its owner is the origin. 
+
+   The origin must be Signed and the sender must have sufficient funds free. 
+
+   Funds of sender are reserved by `AssetDeposit`. 
+
+   Parameters: 
+
+  - `id`: The identifier of the new asset. This must not be currently in use to identify an existing asset. 
+
+  - `admin`: The admin of this class of assets. The admin is the initial address of each member of the asset class's admin team. 
+
+  - `min_balance`: The minimum balance of this new asset that any single account must have. If an account's balance is reduced below this, then it collapses to zero. 
+
+   Emits `Created` event when successful. 
+
+   Weight: `O(1)` 
+ 
+### destroy(id: `Compact<u32>`, witness: `PalletAssetsDestroyWitness`)
+- **interface**: `api.tx.assets.destroy`
+- **summary**:    Destroy a class of fungible assets. 
+
+   The origin must conform to `ForceOrigin` or must be Signed and the sender must be the  owner of the asset `id`. 
+
+   - `id`: The identifier of the asset to be destroyed. This must identify an existing  asset. 
+
+   Emits `Destroyed` event when successful. 
+
+   NOTE: It can be helpful to first freeze an asset before destroying it so that you  can provide accurate witness information and prevent users from manipulating state  in a way that can make it harder to destroy. 
+
+   Weight: `O(c + p + a)` where: 
+
+  - `c = (witness.accounts - witness.sufficients)`
+
+  - `s = witness.sufficients`
+
+  - `a = witness.approvals`
+ 
+### forceAssetStatus(id: `Compact<u32>`, owner: `MultiAddress`, issuer: `MultiAddress`, admin: `MultiAddress`, freezer: `MultiAddress`, min_balance: `Compact<u64>`, is_sufficient: `bool`, is_frozen: `bool`)
+- **interface**: `api.tx.assets.forceAssetStatus`
+- **summary**:    Alter the attributes of a given asset. 
+
+   Origin must be `ForceOrigin`. 
+
+   - `id`: The identifier of the asset. 
+
+  - `owner`: The new Owner of this asset.
+
+  - `issuer`: The new Issuer of this asset.
+
+  - `admin`: The new Admin of this asset.
+
+  - `freezer`: The new Freezer of this asset.
+
+  - `min_balance`: The minimum balance of this new asset that any single account must have. If an account's balance is reduced below this, then it collapses to zero. 
+
+  - `is_sufficient`: Whether a non-zero balance of this asset is deposit of sufficient value to account for the state bloat associated with its balance storage. If set to  `true`, then non-zero balances may be stored without a `consumer` reference (and thus  an ED in the Balances pallet or whatever else is used to control user-account state  growth). 
+
+  - `is_frozen`: Whether this asset class is frozen except for permissioned/admin instructions. 
+
+   Emits `AssetStatusChanged` with the identity of the asset. 
+
+   Weight: `O(1)` 
+ 
+### forceCancelApproval(id: `Compact<u32>`, owner: `MultiAddress`, delegate: `MultiAddress`)
+- **interface**: `api.tx.assets.forceCancelApproval`
+- **summary**:    Cancel all of some asset approved for delegated transfer by a third-party account. 
+
+   Origin must be either ForceOrigin or Signed origin with the signer being the Admin  account of the asset `id`. 
+
+   Unreserves any deposit previously reserved by `approve_transfer` for the approval. 
+
+   - `id`: The identifier of the asset. 
+
+  - `delegate`: The account delegated permission to transfer asset.
+
+   Emits `ApprovalCancelled` on success. 
+
+   Weight: `O(1)` 
+ 
+### forceClearMetadata(id: `Compact<u32>`)
+- **interface**: `api.tx.assets.forceClearMetadata`
+- **summary**:    Clear the metadata for an asset. 
+
+   Origin must be ForceOrigin. 
+
+   Any deposit is returned. 
+
+   - `id`: The identifier of the asset to clear. 
+
+   Emits `MetadataCleared`. 
+
+   Weight: `O(1)` 
+ 
+### forceCreate(id: `Compact<u32>`, owner: `MultiAddress`, is_sufficient: `bool`, min_balance: `Compact<u64>`)
+- **interface**: `api.tx.assets.forceCreate`
+- **summary**:    Issue a new class of fungible assets from a privileged origin. 
+
+   This new asset class has no assets initially. 
+
+   The origin must conform to `ForceOrigin`. 
+
+   Unlike `create`, no funds are reserved. 
+
+   - `id`: The identifier of the new asset. This must not be currently in use to identify  an existing asset. 
+
+  - `owner`: The owner of this class of assets. The owner has full superuser permissions over this asset, but may later change and configure the permissions using  `transfer_ownership` and `set_team`. 
+
+  - `min_balance`: The minimum balance of this new asset that any single account must have. If an account's balance is reduced below this, then it collapses to zero. 
+
+   Emits `ForceCreated` event when successful. 
+
+   Weight: `O(1)` 
+ 
+### forceSetMetadata(id: `Compact<u32>`, name: `Bytes`, symbol: `Bytes`, decimals: `u8`, is_frozen: `bool`)
+- **interface**: `api.tx.assets.forceSetMetadata`
+- **summary**:    Force the metadata for an asset to some value. 
+
+   Origin must be ForceOrigin. 
+
+   Any deposit is left alone. 
+
+   - `id`: The identifier of the asset to update. 
+
+  - `name`: The user friendly name of this asset. Limited in length by `StringLimit`.
+
+  - `symbol`: The exchange symbol for this asset. Limited in length by `StringLimit`.
+
+  - `decimals`: The number of decimals this asset uses to represent one unit.
+
+   Emits `MetadataSet`. 
+
+   Weight: `O(N + S)` where N and S are the length of the name and symbol respectively. 
+ 
+### forceTransfer(id: `Compact<u32>`, source: `MultiAddress`, dest: `MultiAddress`, amount: `Compact<u64>`)
+- **interface**: `api.tx.assets.forceTransfer`
+- **summary**:    Move some assets from one account to another. 
+
+   Origin must be Signed and the sender should be the Admin of the asset `id`. 
+
+   - `id`: The identifier of the asset to have some amount transferred. 
+
+  - `source`: The account to be debited.
+
+  - `dest`: The account to be credited.
+
+  - `amount`: The amount by which the `source`'s balance of assets should be reduced and `dest`'s balance increased. The amount actually transferred may be slightly greater in  the case that the transfer would otherwise take the `source` balance above zero but  below the minimum balance. Must be greater than zero. 
+
+   Emits `Transferred` with the actual amount transferred. If this takes the source balance  to below the minimum for the asset, then the amount transferred is increased to take it  to zero. 
+
+   Weight: `O(1)`  Modes: Pre-existence of `dest`; Post-existence of `source`; Account pre-existence of  `dest`. 
+ 
+### freeze(id: `Compact<u32>`, who: `MultiAddress`)
+- **interface**: `api.tx.assets.freeze`
+- **summary**:    Disallow further unprivileged transfers from an account. 
+
+   Origin must be Signed and the sender should be the Freezer of the asset `id`. 
+
+   - `id`: The identifier of the asset to be frozen. 
+
+  - `who`: The account to be frozen.
+
+   Emits `Frozen`. 
+
+   Weight: `O(1)` 
+ 
+### freezeAsset(id: `Compact<u32>`)
+- **interface**: `api.tx.assets.freezeAsset`
+- **summary**:    Disallow further unprivileged transfers for the asset class. 
+
+   Origin must be Signed and the sender should be the Freezer of the asset `id`. 
+
+   - `id`: The identifier of the asset to be frozen. 
+
+   Emits `Frozen`. 
+
+   Weight: `O(1)` 
+ 
+### mint(id: `Compact<u32>`, beneficiary: `MultiAddress`, amount: `Compact<u64>`)
+- **interface**: `api.tx.assets.mint`
+- **summary**:    Mint assets of a particular class. 
+
+   The origin must be Signed and the sender must be the Issuer of the asset `id`. 
+
+   - `id`: The identifier of the asset to have some amount minted. 
+
+  - `beneficiary`: The account to be credited with the minted assets.
+
+  - `amount`: The amount of the asset to be minted.
+
+   Emits `Issued` event when successful. 
+
+   Weight: `O(1)`  Modes: Pre-existing balance of `beneficiary`; Account pre-existence of `beneficiary`. 
+ 
+### setMetadata(id: `Compact<u32>`, name: `Bytes`, symbol: `Bytes`, decimals: `u8`)
+- **interface**: `api.tx.assets.setMetadata`
+- **summary**:    Set the metadata for an asset. 
+
+   Origin must be Signed and the sender should be the Owner of the asset `id`. 
+
+   Funds of sender are reserved according to the formula:  `MetadataDepositBase + MetadataDepositPerByte * (name.len + symbol.len)` taking into  account any already reserved funds. 
+
+   - `id`: The identifier of the asset to update. 
+
+  - `name`: The user friendly name of this asset. Limited in length by `StringLimit`.
+
+  - `symbol`: The exchange symbol for this asset. Limited in length by `StringLimit`.
+
+  - `decimals`: The number of decimals this asset uses to represent one unit.
+
+   Emits `MetadataSet`. 
+
+   Weight: `O(1)` 
+ 
+### setTeam(id: `Compact<u32>`, issuer: `MultiAddress`, admin: `MultiAddress`, freezer: `MultiAddress`)
+- **interface**: `api.tx.assets.setTeam`
+- **summary**:    Change the Issuer, Admin and Freezer of an asset. 
+
+   Origin must be Signed and the sender should be the Owner of the asset `id`. 
+
+   - `id`: The identifier of the asset to be frozen. 
+
+  - `issuer`: The new Issuer of this asset.
+
+  - `admin`: The new Admin of this asset.
+
+  - `freezer`: The new Freezer of this asset.
+
+   Emits `TeamChanged`. 
+
+   Weight: `O(1)` 
+ 
+### thaw(id: `Compact<u32>`, who: `MultiAddress`)
+- **interface**: `api.tx.assets.thaw`
+- **summary**:    Allow unprivileged transfers from an account again. 
+
+   Origin must be Signed and the sender should be the Admin of the asset `id`. 
+
+   - `id`: The identifier of the asset to be frozen. 
+
+  - `who`: The account to be unfrozen.
+
+   Emits `Thawed`. 
+
+   Weight: `O(1)` 
+ 
+### thawAsset(id: `Compact<u32>`)
+- **interface**: `api.tx.assets.thawAsset`
+- **summary**:    Allow unprivileged transfers for the asset again. 
+
+   Origin must be Signed and the sender should be the Admin of the asset `id`. 
+
+   - `id`: The identifier of the asset to be thawed. 
+
+   Emits `Thawed`. 
+
+   Weight: `O(1)` 
+ 
+### transfer(id: `Compact<u32>`, target: `MultiAddress`, amount: `Compact<u64>`)
+- **interface**: `api.tx.assets.transfer`
+- **summary**:    Move some assets from the sender account to another. 
+
+   Origin must be Signed. 
+
+   - `id`: The identifier of the asset to have some amount transferred. 
+
+  - `target`: The account to be credited.
+
+  - `amount`: The amount by which the sender's balance of assets should be reduced and `target`'s balance increased. The amount actually transferred may be slightly greater in  the case that the transfer would otherwise take the sender balance above zero but below  the minimum balance. Must be greater than zero. 
+
+   Emits `Transferred` with the actual amount transferred. If this takes the source balance  to below the minimum for the asset, then the amount transferred is increased to take it  to zero. 
+
+   Weight: `O(1)`  Modes: Pre-existence of `target`; Post-existence of sender; Account pre-existence of  `target`. 
+ 
+### transferApproved(id: `Compact<u32>`, owner: `MultiAddress`, destination: `MultiAddress`, amount: `Compact<u64>`)
+- **interface**: `api.tx.assets.transferApproved`
+- **summary**:    Transfer some asset balance from a previously delegated account to some third-party  account. 
+
+   Origin must be Signed and there must be an approval in place by the `owner` to the  signer. 
+
+   If the entire amount approved for transfer is transferred, then any deposit previously  reserved by `approve_transfer` is unreserved. 
+
+   - `id`: The identifier of the asset. 
+
+  - `owner`: The account which previously approved for a transfer of at least `amount` and from which the asset balance will be withdrawn. 
+
+  - `destination`: The account to which the asset balance of `amount` will be transferred.
+
+  - `amount`: The amount of assets to transfer.
+
+   Emits `TransferredApproved` on success. 
+
+   Weight: `O(1)` 
+ 
+### transferKeepAlive(id: `Compact<u32>`, target: `MultiAddress`, amount: `Compact<u64>`)
+- **interface**: `api.tx.assets.transferKeepAlive`
+- **summary**:    Move some assets from the sender account to another, keeping the sender account alive. 
+
+   Origin must be Signed. 
+
+   - `id`: The identifier of the asset to have some amount transferred. 
+
+  - `target`: The account to be credited.
+
+  - `amount`: The amount by which the sender's balance of assets should be reduced and `target`'s balance increased. The amount actually transferred may be slightly greater in  the case that the transfer would otherwise take the sender balance above zero but below  the minimum balance. Must be greater than zero. 
+
+   Emits `Transferred` with the actual amount transferred. If this takes the source balance  to below the minimum for the asset, then the amount transferred is increased to take it  to zero. 
+
+   Weight: `O(1)`  Modes: Pre-existence of `target`; Post-existence of sender; Account pre-existence of  `target`. 
+ 
+### transferOwnership(id: `Compact<u32>`, owner: `MultiAddress`)
+- **interface**: `api.tx.assets.transferOwnership`
+- **summary**:    Change the Owner of an asset. 
+
+   Origin must be Signed and the sender should be the Owner of the asset `id`. 
+
+   - `id`: The identifier of the asset. 
+
+  - `owner`: The new Owner of this asset.
+
+   Emits `OwnerChanged`. 
+
+   Weight: `O(1)` 
+
+___
+
+
+## authorship
+ 
+### setUncles(new_uncles: `Vec<SpRuntimeHeader>`)
+- **interface**: `api.tx.authorship.setUncles`
+- **summary**:    Provide a set of uncles. 
+
+___
+
+
+## babe
+ 
+### planConfigChange(config: `SpConsensusBabeDigestsNextConfigDescriptor`)
+- **interface**: `api.tx.babe.planConfigChange`
+- **summary**:    Plan an epoch config change. The epoch config change is recorded and will be enacted on  the next call to `enact_epoch_change`. The config will be activated one epoch after.  Multiple calls to this method will replace any existing planned config change that had  not been enacted yet. 
+ 
+### reportEquivocation(equivocation_proof: `SpConsensusSlotsEquivocationProof`, key_owner_proof: `SpSessionMembershipProof`)
+- **interface**: `api.tx.babe.reportEquivocation`
+- **summary**:    Report authority equivocation/misbehavior. This method will verify  the equivocation proof and validate the given key ownership proof  against the extracted offender. If both are valid, the offence will  be reported. 
+ 
+### reportEquivocationUnsigned(equivocation_proof: `SpConsensusSlotsEquivocationProof`, key_owner_proof: `SpSessionMembershipProof`)
+- **interface**: `api.tx.babe.reportEquivocationUnsigned`
+- **summary**:    Report authority equivocation/misbehavior. This method will verify  the equivocation proof and validate the given key ownership proof  against the extracted offender. If both are valid, the offence will  be reported.  This extrinsic must be called unsigned and it is expected that only  block authors will call it (validated in `ValidateUnsigned`), as such  if the block author is defined it will be defined as the equivocation  reporter. 
+
+___
+
+
+## balances
+ 
+### forceTransfer(source: `MultiAddress`, dest: `MultiAddress`, value: `Compact<u128>`)
+- **interface**: `api.tx.balances.forceTransfer`
+- **summary**:    Exactly as `transfer`, except the origin must be root and the source account may be  specified.   
+ 
+### forceUnreserve(who: `MultiAddress`, amount: `u128`)
+- **interface**: `api.tx.balances.forceUnreserve`
+- **summary**:    Unreserve some balance from a user by force. 
+
+   Can only be called by ROOT. 
+ 
+### setBalance(who: `MultiAddress`, new_free: `Compact<u128>`, new_reserved: `Compact<u128>`)
+- **interface**: `api.tx.balances.setBalance`
+- **summary**:    Set the balances of a given account. 
+
+   This will alter `FreeBalance` and `ReservedBalance` in storage. it will  also decrease the total issuance of the system (`TotalIssuance`).  If the new free or reserved balance is below the existential deposit,  it will reset the account nonce (`frame_system::AccountNonce`). 
+
+   The dispatch origin for this call is `root`. 
+
+    
+ 
+### transfer(dest: `MultiAddress`, value: `Compact<u128>`)
+- **interface**: `api.tx.balances.transfer`
+- **summary**:    Transfer some liquid free balance to another account. 
+
+   `transfer` will set the `FreeBalance` of the sender and receiver.  It will decrease the total issuance of the system by the `TransferFee`.  If the sender's account is below the existential deposit as a result  of the transfer, the account will be reaped. 
+
+   The dispatch origin for this call must be `Signed` by the transactor. 
+
+    
+ 
+### transferAll(dest: `MultiAddress`, keep_alive: `bool`)
+- **interface**: `api.tx.balances.transferAll`
+- **summary**:    Transfer the entire transferable balance from the caller account. 
+
+   NOTE: This function only attempts to transfer _transferable_ balances. This means that  any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be  transferred by this function. To ensure that this function results in a killed account,  you might need to prepare the account by removing any reference counters, storage  deposits, etc... 
+
+   The dispatch origin of this call must be Signed. 
+
+   - `dest`: The recipient of the transfer. 
+
+  - `keep_alive`: A boolean to determine if the `transfer_all` operation should send all of the funds the account has, causing the sender account to be killed (false), or  transfer everything except at least the existential deposit, which will guarantee to  keep the sender account alive (true). #  
+ 
+### transferKeepAlive(dest: `MultiAddress`, value: `Compact<u128>`)
+- **interface**: `api.tx.balances.transferKeepAlive`
+- **summary**:    Same as the [`transfer`] call, but with a check that the transfer will not kill the  origin account. 
+
+   99% of the time you want [`transfer`] instead. 
+
+   [`transfer`]: struct.Pallet.html#method.transfer   
+
+___
+
+
+## bounties
+ 
+### acceptCurator(bounty_id: `Compact<u32>`)
+- **interface**: `api.tx.bounties.acceptCurator`
+- **summary**:    Accept the curator role for a bounty.  A deposit will be reserved from curator and refund upon successful payout. 
+
+   May only be called from the curator. 
+
+    
+ 
+### approveBounty(bounty_id: `Compact<u32>`)
+- **interface**: `api.tx.bounties.approveBounty`
+- **summary**:    Approve a bounty proposal. At a later time, the bounty will be funded and become active  and the original deposit will be returned. 
+
+   May only be called from `T::ApproveOrigin`. 
+
+    
+ 
+### awardBounty(bounty_id: `Compact<u32>`, beneficiary: `MultiAddress`)
+- **interface**: `api.tx.bounties.awardBounty`
+- **summary**:    Award bounty to a beneficiary account. The beneficiary will be able to claim the funds  after a delay. 
+
+   The dispatch origin for this call must be the curator of this bounty. 
+
+   - `bounty_id`: Bounty ID to award. 
+
+  - `beneficiary`: The beneficiary account whom will receive the payout.
+
+    
+ 
+### claimBounty(bounty_id: `Compact<u32>`)
+- **interface**: `api.tx.bounties.claimBounty`
+- **summary**:    Claim the payout from an awarded bounty after payout delay. 
+
+   The dispatch origin for this call must be the beneficiary of this bounty. 
+
+   - `bounty_id`: Bounty ID to claim. 
+
+    
+ 
+### closeBounty(bounty_id: `Compact<u32>`)
+- **interface**: `api.tx.bounties.closeBounty`
+- **summary**:    Cancel a proposed or active bounty. All the funds will be sent to treasury and  the curator deposit will be unreserved if possible. 
+
+   Only `T::RejectOrigin` is able to cancel a bounty. 
+
+   - `bounty_id`: Bounty ID to cancel. 
+
+    
+ 
+### extendBountyExpiry(bounty_id: `Compact<u32>`, remark: `Bytes`)
+- **interface**: `api.tx.bounties.extendBountyExpiry`
+- **summary**:    Extend the expiry time of an active bounty. 
+
+   The dispatch origin for this call must be the curator of this bounty. 
+
+   - `bounty_id`: Bounty ID to extend. 
+
+  - `remark`: additional information.
+
+    
+ 
+### proposeBounty(value: `Compact<u128>`, description: `Bytes`)
+- **interface**: `api.tx.bounties.proposeBounty`
+- **summary**:    Propose a new bounty. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   Payment: `TipReportDepositBase` will be reserved from the origin account, as well as  `DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,  or slashed when rejected. 
+
+   - `curator`: The curator account whom will manage this bounty. 
+
+  - `fee`: The curator fee.
+
+  - `value`: The total payment amount of this bounty, curator fee included.
+
+  - `description`: The description of this bounty.
+ 
+### proposeCurator(bounty_id: `Compact<u32>`, curator: `MultiAddress`, fee: `Compact<u128>`)
+- **interface**: `api.tx.bounties.proposeCurator`
+- **summary**:    Assign a curator to a funded bounty. 
+
+   May only be called from `T::ApproveOrigin`. 
+
+    
+ 
+### unassignCurator(bounty_id: `Compact<u32>`)
+- **interface**: `api.tx.bounties.unassignCurator`
+- **summary**:    Unassign curator from a bounty. 
+
+   This function can only be called by the `RejectOrigin` a signed origin. 
+
+   If this function is called by the `RejectOrigin`, we assume that the curator is  malicious or inactive. As a result, we will slash the curator when possible. 
+
+   If the origin is the curator, we take this as a sign they are unable to do their job and  they willingly give up. We could slash them, but for now we allow them to recover their  deposit and exit without issue. (We may want to change this if it is abused.) 
+
+   Finally, the origin can be anyone if and only if the curator is "inactive". This allows  anyone in the community to call out that a curator is not doing their due diligence, and  we should pick a new curator. In this case the curator should also be slashed. 
+
+    
+
+___
+
+
+## chainBridge
+ 
+### acknowledgeProposal(nonce: `u64`, src_id: `u8`, r_id: `[u8;32]`, call: `Call`)
+- **interface**: `api.tx.chainBridge.acknowledgeProposal`
+- **summary**:    Commits a vote in favour of the provided proposal. 
+
+   If a proposal with the given nonce and source chain ID does not already exist, it will  be created with an initial vote in favour from the caller. 
+
+    
+ 
+### addRelayer(v: `AccountId32`)
+- **interface**: `api.tx.chainBridge.addRelayer`
+- **summary**:    Adds a new relayer to the relayer set. 
+
+    
+ 
+### evalVoteState(nonce: `u64`, src_id: `u8`, prop: `Call`)
+- **interface**: `api.tx.chainBridge.evalVoteState`
+- **summary**:    Evaluate the state of a proposal given the current vote threshold. 
+
+   A proposal with enough votes will be either executed or cancelled, and the status  will be updated accordingly. 
+
+    
+ 
+### rejectProposal(nonce: `u64`, src_id: `u8`, r_id: `[u8;32]`, call: `Call`)
+- **interface**: `api.tx.chainBridge.rejectProposal`
+- **summary**:    Commits a vote against a provided proposal. 
+
+    
+ 
+### removeRelayer(v: `AccountId32`)
+- **interface**: `api.tx.chainBridge.removeRelayer`
+- **summary**:    Removes an existing relayer from the set. 
+
+    
+ 
+### removeResource(id: `[u8;32]`)
+- **interface**: `api.tx.chainBridge.removeResource`
+- **summary**:    Removes a resource ID from the resource mapping. 
+
+   After this call, bridge transfers with the associated resource ID will  be rejected. 
+
+    
+ 
+### setResource(id: `[u8;32]`, method: `Bytes`)
+- **interface**: `api.tx.chainBridge.setResource`
+- **summary**:    Stores a method name on chain under an associated resource ID. 
+
+    
+ 
+### setThreshold(threshold: `u32`)
+- **interface**: `api.tx.chainBridge.setThreshold`
+- **summary**:    Sets the vote threshold for proposals. 
+
+   This threshold is used to determine how many votes are required  before a proposal is executed. 
+
+    
+ 
+### whitelistChain(id: `u8`)
+- **interface**: `api.tx.chainBridge.whitelistChain`
+- **summary**:    Enables a chain ID as a source or destination for a bridge transfer. 
+
+    
+
+___
+
+
+## claims
+ 
+### attest(statement: `Bytes`)
+- **interface**: `api.tx.claims.attest`
+- **summary**:    Attest to a statement, needed to finalize the claims process. 
+
+   WARNING: Insecure unless your chain includes `PrevalidateAttests` as a `SignedExtension`. 
+
+   Unsigned Validation:  A call to attest is deemed valid if the sender has a `Preclaim` registered  and provides a `statement` which is expected for the account. 
+
+   Parameters: 
+
+  - `statement`: The identity of the statement which is being attested to in the signature.
+
+    
+ 
+### claim(dest: `AccountId32`, ethereum_signature: `ClaimsEcdsaSignature`)
+- **interface**: `api.tx.claims.claim`
+- **summary**:    Make a claim to collect your coins. 
+
+   The dispatch origin for this call must be _None_. 
+
+   Unsigned Validation:  A call to claim is deemed valid if the signature provided matches  the expected signed message of: 
+
+   > Ethereum Signed Message:  > (configured prefix string)(address) 
+
+   and `address` matches the `dest` account. 
+
+   Parameters: 
+
+  - `dest`: The destination account to payout the claim.
+
+  - `ethereum_signature`: The signature of an ethereum signed message matching the format described above. 
+
+    
+ 
+### claimAttest(dest: `AccountId32`, ethereum_signature: `ClaimsEcdsaSignature`, statement: `Bytes`)
+- **interface**: `api.tx.claims.claimAttest`
+- **summary**:    Make a claim to collect your coins by signing a statement. 
+
+   The dispatch origin for this call must be _None_. 
+
+   Unsigned Validation:  A call to `claim_attest` is deemed valid if the signature provided matches  the expected signed message of: 
+
+   > Ethereum Signed Message:  > (configured prefix string)(address)(statement) 
+
+   and `address` matches the `dest` account; the `statement` must match that which is  expected according to your purchase arrangement. 
+
+   Parameters: 
+
+  - `dest`: The destination account to payout the claim.
+
+  - `ethereum_signature`: The signature of an ethereum signed message matching the format described above. 
+
+  - `statement`: The identity of the statement which is being attested to in the signature.
+
+    
+ 
+### mintClaim(who: `ClaimsEthereumAddress`, value: `u128`, vesting_schedules: `Option<Vec<(u128,u128,u32)>>`, statement: `Option<ClaimsStatementKind>`)
+- **interface**: `api.tx.claims.mintClaim`
+- **summary**:    Mint a new claim to collect coins. 
+
+   The dispatch origin for this call must be _Root_. 
+
+   Parameters: 
+
+  - `who`: The Ethereum address allowed to collect this claim.
+
+  - `value`: The number of coins that will be claimed.
+
+  - `vesting_schedules`: An optional list of vesting schedules for these coins.
+
+   NOTE: It is the responsibility of the caller to not list more vesting schedules  than supported by the Vesting pallet.  Any schedules specified above that limit will be ignored. 
+
+    
+ 
+### moveClaim(old: `ClaimsEthereumAddress`, new: `ClaimsEthereumAddress`, maybe_preclaim: `Option<AccountId32>`)
+- **interface**: `api.tx.claims.moveClaim`
+
+___
+
+
+## council
+ 
+### close(proposal_hash: `H256`, index: `Compact<u32>`, proposal_weight_bound: `Compact<u64>`, length_bound: `Compact<u32>`)
+- **interface**: `api.tx.council.close`
+- **summary**:    Close a vote that is either approved, disapproved or whose voting period has ended. 
+
+   May be called by any signed account in order to finish voting and close the proposal. 
+
+   If called before the end of the voting period it will only close the vote if it is  has enough votes to be approved or disapproved. 
+
+   If called after the end of the voting period abstentions are counted as rejections  unless there is a prime member set and the prime member cast an approval. 
+
+   If the close operation completes successfully with disapproval, the transaction fee will  be waived. Otherwise execution of the approved operation will be charged to the caller. 
+
+   + `proposal_weight_bound`: The maximum amount of weight consumed by executing the closed  proposal.  + `length_bound`: The upper bound for the length of the proposal in storage. Checked via  `storage::read` so it is `size_of::<u32>() == 4` larger than the pure length. 
+
+    
+ 
+### disapproveProposal(proposal_hash: `H256`)
+- **interface**: `api.tx.council.disapproveProposal`
+- **summary**:    Disapprove a proposal, close, and remove it from the system, regardless of its current  state. 
+
+   Must be called by the Root origin. 
+
+   Parameters: 
+
+  * `proposal_hash`: The hash of the proposal that should be disapproved.
+
+    
+ 
+### execute(proposal: `Call`, length_bound: `Compact<u32>`)
+- **interface**: `api.tx.council.execute`
+- **summary**:    Dispatch a proposal from a member using the `Member` origin. 
+
+   Origin must be a member of the collective. 
+
+    
+ 
+### propose(threshold: `Compact<u32>`, proposal: `Call`, length_bound: `Compact<u32>`)
+- **interface**: `api.tx.council.propose`
+- **summary**:    Add a new proposal to either be voted on or executed directly. 
+
+   Requires the sender to be member. 
+
+   `threshold` determines whether `proposal` is executed directly (`threshold < 2`)  or put up for voting. 
+
+    
+ 
+### setMembers(new_members: `Vec<AccountId32>`, prime: `Option<AccountId32>`, old_count: `u32`)
+- **interface**: `api.tx.council.setMembers`
+- **summary**:    Set the collective's membership. 
+
+   - `new_members`: The new member list. Be nice to the chain and provide it sorted. 
+
+  - `prime`: The prime member whose vote sets the default.
+
+  - `old_count`: The upper bound for the previous number of members in storage. Used for weight estimation. 
+
+   Requires root origin. 
+
+   NOTE: Does not enforce the expected `MaxMembers` limit on the amount of members, but  the weight estimations rely on it to estimate dispatchable weight. 
+
+   #### WARNING: 
+
+   The `pallet-collective` can also be managed by logic outside of the pallet through the  implementation of the trait [`ChangeMembers`].  Any call to `set_members` must be careful that the member set doesn't get out of sync  with other logic managing the member set. 
+
+    
+ 
+### vote(proposal: `H256`, index: `Compact<u32>`, approve: `bool`)
+- **interface**: `api.tx.council.vote`
+- **summary**:    Add an aye or nay vote for the sender to the given proposal. 
+
+   Requires the sender to be a member. 
+
+   Transaction fees will be waived if the member is voting on any particular proposal  for the first time and the call is successful. Subsequent vote changes will charge a  fee.   
+
+___
+
+
+## democracy
+ 
+### blacklist(proposal_hash: `H256`, maybe_ref_index: `Option<u32>`)
+- **interface**: `api.tx.democracy.blacklist`
+- **summary**:    Permanently place a proposal into the blacklist. This prevents it from ever being  proposed again. 
+
+   If called on a queued public or external proposal, then this will result in it being  removed. If the `ref_index` supplied is an active referendum with the proposal hash,  then it will be cancelled. 
+
+   The dispatch origin of this call must be `BlacklistOrigin`. 
+
+   - `proposal_hash`: The proposal hash to blacklist permanently. 
+
+  - `ref_index`: An ongoing referendum whose hash is `proposal_hash`, which will be cancelled. 
+
+   Weight: `O(p)` (though as this is an high-privilege dispatch, we assume it has a  reasonable value). 
+ 
+### cancelProposal(prop_index: `Compact<u32>`)
+- **interface**: `api.tx.democracy.cancelProposal`
+- **summary**:    Remove a proposal. 
+
+   The dispatch origin of this call must be `CancelProposalOrigin`. 
+
+   - `prop_index`: The index of the proposal to cancel. 
+
+   Weight: `O(p)` where `p = PublicProps::<T>::decode_len()` 
+ 
+### cancelQueued(which: `u32`)
+- **interface**: `api.tx.democracy.cancelQueued`
+- **summary**:    Cancel a proposal queued for enactment. 
+
+   The dispatch origin of this call must be _Root_. 
+
+   - `which`: The index of the referendum to cancel. 
+
+   Weight: `O(D)` where `D` is the items in the dispatch queue. Weighted as `D = 10`. 
+ 
+### cancelReferendum(ref_index: `Compact<u32>`)
+- **interface**: `api.tx.democracy.cancelReferendum`
+- **summary**:    Remove a referendum. 
+
+   The dispatch origin of this call must be _Root_. 
+
+   - `ref_index`: The index of the referendum to cancel. 
+
+   Weight: `O(1)`. 
+ 
+### clearPublicProposals()
+- **interface**: `api.tx.democracy.clearPublicProposals`
+- **summary**:    Clears all public proposals. 
+
+   The dispatch origin of this call must be _Root_. 
+
+   Weight: `O(1)`. 
+ 
+### delegate(to: `AccountId32`, conviction: `PalletDemocracyConviction`, balance: `u128`)
+- **interface**: `api.tx.democracy.delegate`
+- **summary**:    Delegate the voting power (with some given conviction) of the sending account. 
+
+   The balance delegated is locked for as long as it's delegated, and thereafter for the  time appropriate for the conviction's lock period. 
+
+   The dispatch origin of this call must be _Signed_, and the signing account must either: 
+
+  - be delegating already; or
+
+  - have no voting activity (if there is, then it will need to be removed/consolidated through `reap_vote` or `unvote`). 
+
+   - `to`: The account whose voting the `target` account's voting power will follow. 
+
+  - `conviction`: The conviction that will be attached to the delegated votes. When the account is undelegated, the funds will be locked for the corresponding period. 
+
+  - `balance`: The amount of the account's balance to be used in delegating. This must not be more than the account's current balance. 
+
+   Emits `Delegated`. 
+
+   Weight: `O(R)` where R is the number of referendums the voter delegating to has  voted on. Weight is charged as if maximum votes. 
+ 
+### emergencyCancel(ref_index: `u32`)
+- **interface**: `api.tx.democracy.emergencyCancel`
+- **summary**:    Schedule an emergency cancellation of a referendum. Cannot happen twice to the same  referendum. 
+
+   The dispatch origin of this call must be `CancellationOrigin`. 
+
+   -`ref_index`: The index of the referendum to cancel. 
+
+   Weight: `O(1)`. 
+ 
+### enactProposal(proposal_hash: `H256`, index: `u32`)
+- **interface**: `api.tx.democracy.enactProposal`
+- **summary**:    Enact a proposal from a referendum. For now we just make the weight be the maximum. 
+ 
+### externalPropose(proposal_hash: `H256`)
+- **interface**: `api.tx.democracy.externalPropose`
+- **summary**:    Schedule a referendum to be tabled once it is legal to schedule an external  referendum. 
+
+   The dispatch origin of this call must be `ExternalOrigin`. 
+
+   - `proposal_hash`: The preimage hash of the proposal. 
+
+   Weight: `O(V)` with V number of vetoers in the blacklist of proposal.  Decoding vec of length V. Charged as maximum 
+ 
+### externalProposeDefault(proposal_hash: `H256`)
+- **interface**: `api.tx.democracy.externalProposeDefault`
+- **summary**:    Schedule a negative-turnout-bias referendum to be tabled next once it is legal to  schedule an external referendum. 
+
+   The dispatch of this call must be `ExternalDefaultOrigin`. 
+
+   - `proposal_hash`: The preimage hash of the proposal. 
+
+   Unlike `external_propose`, blacklisting has no effect on this and it may replace a  pre-scheduled `external_propose` call. 
+
+   Weight: `O(1)` 
+ 
+### externalProposeMajority(proposal_hash: `H256`)
+- **interface**: `api.tx.democracy.externalProposeMajority`
+- **summary**:    Schedule a majority-carries referendum to be tabled next once it is legal to schedule  an external referendum. 
+
+   The dispatch of this call must be `ExternalMajorityOrigin`. 
+
+   - `proposal_hash`: The preimage hash of the proposal. 
+
+   Unlike `external_propose`, blacklisting has no effect on this and it may replace a  pre-scheduled `external_propose` call. 
+
+   Weight: `O(1)` 
+ 
+### fastTrack(proposal_hash: `H256`, voting_period: `u32`, delay: `u32`)
+- **interface**: `api.tx.democracy.fastTrack`
+- **summary**:    Schedule the currently externally-proposed majority-carries referendum to be tabled  immediately. If there is no externally-proposed referendum currently, or if there is one  but it is not a majority-carries referendum then it fails. 
+
+   The dispatch of this call must be `FastTrackOrigin`. 
+
+   - `proposal_hash`: The hash of the current external proposal. 
+
+  - `voting_period`: The period that is allowed for voting on this proposal. Increased to `FastTrackVotingPeriod` if too low. 
+
+  - `delay`: The number of block after voting has ended in approval and this should be enacted. This doesn't have a minimum amount. 
+
+   Emits `Started`. 
+
+   Weight: `O(1)` 
+ 
+### noteImminentPreimage(encoded_proposal: `Bytes`)
+- **interface**: `api.tx.democracy.noteImminentPreimage`
+- **summary**:    Register the preimage for an upcoming proposal. This requires the proposal to be  in the dispatch queue. No deposit is needed. When this call is successful, i.e.  the preimage has not been uploaded before and matches some imminent proposal,  no fee is paid. 
+
+   The dispatch origin of this call must be _Signed_. 
+
+   - `encoded_proposal`: The preimage of a proposal. 
+
+   Emits `PreimageNoted`. 
+
+   Weight: `O(E)` with E size of `encoded_proposal` (protected by a required deposit). 
+ 
+### noteImminentPreimageOperational(encoded_proposal: `Bytes`)
+- **interface**: `api.tx.democracy.noteImminentPreimageOperational`
+- **summary**:    Same as `note_imminent_preimage` but origin is `OperationalPreimageOrigin`. 
+ 
+### notePreimage(encoded_proposal: `Bytes`)
+- **interface**: `api.tx.democracy.notePreimage`
+- **summary**:    Register the preimage for an upcoming proposal. This doesn't require the proposal to be  in the dispatch queue but does require a deposit, returned once enacted. 
+
+   The dispatch origin of this call must be _Signed_. 
+
+   - `encoded_proposal`: The preimage of a proposal. 
+
+   Emits `PreimageNoted`. 
+
+   Weight: `O(E)` with E size of `encoded_proposal` (protected by a required deposit). 
+ 
+### notePreimageOperational(encoded_proposal: `Bytes`)
+- **interface**: `api.tx.democracy.notePreimageOperational`
+- **summary**:    Same as `note_preimage` but origin is `OperationalPreimageOrigin`. 
+ 
+### propose(proposal_hash: `H256`, value: `Compact<u128>`)
+- **interface**: `api.tx.democracy.propose`
+- **summary**:    Propose a sensitive action to be taken. 
+
+   The dispatch origin of this call must be _Signed_ and the sender must  have funds to cover the deposit. 
+
+   - `proposal_hash`: The hash of the proposal preimage. 
+
+  - `value`: The amount of deposit (must be at least `MinimumDeposit`).
+
+   Emits `Proposed`. 
+
+   Weight: `O(p)` 
+ 
+### reapPreimage(proposal_hash: `H256`, proposal_len_upper_bound: `Compact<u32>`)
+- **interface**: `api.tx.democracy.reapPreimage`
+- **summary**:    Remove an expired proposal preimage and collect the deposit. 
+
+   The dispatch origin of this call must be _Signed_. 
+
+   - `proposal_hash`: The preimage hash of a proposal. 
+
+  - `proposal_length_upper_bound`: an upper bound on length of the proposal. Extrinsic is weighted according to this value with no refund. 
+
+   This will only work after `VotingPeriod` blocks from the time that the preimage was  noted, if it's the same account doing it. If it's a different account, then it'll only  work an additional `EnactmentPeriod` later. 
+
+   Emits `PreimageReaped`. 
+
+   Weight: `O(D)` where D is length of proposal. 
+ 
+### removeOtherVote(target: `AccountId32`, index: `u32`)
+- **interface**: `api.tx.democracy.removeOtherVote`
+- **summary**:    Remove a vote for a referendum. 
+
+   If the `target` is equal to the signer, then this function is exactly equivalent to  `remove_vote`. If not equal to the signer, then the vote must have expired,  either because the referendum was cancelled, because the voter lost the referendum or  because the conviction period is over. 
+
+   The dispatch origin of this call must be _Signed_. 
+
+   - `target`: The account of the vote to be removed; this account must have voted for  referendum `index`. 
+
+  - `index`: The index of referendum of the vote to be removed.
+
+   Weight: `O(R + log R)` where R is the number of referenda that `target` has voted on.  Weight is calculated for the maximum number of vote. 
+ 
+### removeVote(index: `u32`)
+- **interface**: `api.tx.democracy.removeVote`
+- **summary**:    Remove a vote for a referendum. 
+
+   If: 
+
+  - the referendum was cancelled, or
+
+  - the referendum is ongoing, or
+
+  - the referendum has ended such that
+
+  - the vote of the account was in opposition to the result; or
+
+  - there was no conviction to the account's vote; or
+
+  - the account made a split vote ...then the vote is removed cleanly and a following call to `unlock` may result in more  funds being available. 
+
+   If, however, the referendum has ended and: 
+
+  - it finished corresponding to the vote of the account, and
+
+  - the account made a standard vote with conviction, and
+
+  - the lock period of the conviction is not over ...then the lock will be aggregated into the overall account's lock, which may involve 
+
+  *overlocking* (where the two locks are combined into a single lock that is the maximum of both the amount locked and the time is it locked for). 
+
+   The dispatch origin of this call must be _Signed_, and the signer must have a vote  registered for referendum `index`. 
+
+   - `index`: The index of referendum of the vote to be removed. 
+
+   Weight: `O(R + log R)` where R is the number of referenda that `target` has voted on.  Weight is calculated for the maximum number of vote. 
+ 
+### second(proposal: `Compact<u32>`, seconds_upper_bound: `Compact<u32>`)
+- **interface**: `api.tx.democracy.second`
+- **summary**:    Signals agreement with a particular proposal. 
+
+   The dispatch origin of this call must be _Signed_ and the sender  must have funds to cover the deposit, equal to the original deposit. 
+
+   - `proposal`: The index of the proposal to second. 
+
+  - `seconds_upper_bound`: an upper bound on the current number of seconds on this proposal. Extrinsic is weighted according to this value with no refund. 
+
+   Weight: `O(S)` where S is the number of seconds a proposal already has. 
+ 
+### undelegate()
+- **interface**: `api.tx.democracy.undelegate`
+- **summary**:    Undelegate the voting power of the sending account. 
+
+   Tokens may be unlocked following once an amount of time consistent with the lock period  of the conviction with which the delegation was issued. 
+
+   The dispatch origin of this call must be _Signed_ and the signing account must be  currently delegating. 
+
+   Emits `Undelegated`. 
+
+   Weight: `O(R)` where R is the number of referendums the voter delegating to has  voted on. Weight is charged as if maximum votes. 
+ 
+### unlock(target: `AccountId32`)
+- **interface**: `api.tx.democracy.unlock`
+- **summary**:    Unlock tokens that have an expired lock. 
+
+   The dispatch origin of this call must be _Signed_. 
+
+   - `target`: The account to remove the lock on. 
+
+   Weight: `O(R)` with R number of vote of target. 
+ 
+### vetoExternal(proposal_hash: `H256`)
+- **interface**: `api.tx.democracy.vetoExternal`
+- **summary**:    Veto and blacklist the external proposal hash. 
+
+   The dispatch origin of this call must be `VetoOrigin`. 
+
+   - `proposal_hash`: The preimage hash of the proposal to veto and blacklist. 
+
+   Emits `Vetoed`. 
+
+   Weight: `O(V + log(V))` where V is number of `existing vetoers` 
+ 
+### vote(ref_index: `Compact<u32>`, vote: `PalletDemocracyVoteAccountVote`)
+- **interface**: `api.tx.democracy.vote`
+- **summary**:    Vote in a referendum. If `vote.is_aye()`, the vote is to enact the proposal;  otherwise it is a vote to keep the status quo. 
+
+   The dispatch origin of this call must be _Signed_. 
+
+   - `ref_index`: The index of the referendum to vote for. 
+
+  - `vote`: The vote configuration.
+
+   Weight: `O(R)` where R is the number of referendums the voter has voted on. 
+
+___
+
+
+## electionProviderMultiPhase
+ 
+### setEmergencyElectionResult(supports: `Vec<(AccountId32,SpNposElectionsSupport)>`)
+- **interface**: `api.tx.electionProviderMultiPhase.setEmergencyElectionResult`
+- **summary**:    Set a solution in the queue, to be handed out to the client of this pallet in the next  call to `ElectionProvider::elect`. 
+
+   This can only be set by `T::ForceOrigin`, and only when the phase is `Emergency`. 
+
+   The solution is not checked for any feasibility and is assumed to be trustworthy, as any  feasibility check itself can in principle cause the election process to fail (due to  memory/weight constrains). 
+ 
+### setMinimumUntrustedScore(maybe_next_score: `Option<[u128;3]>`)
+- **interface**: `api.tx.electionProviderMultiPhase.setMinimumUntrustedScore`
+- **summary**:    Set a new value for `MinimumUntrustedScore`. 
+
+   Dispatch origin must be aligned with `T::ForceOrigin`. 
+
+   This check can be turned off by setting the value to `None`. 
+ 
+### submit(raw_solution: `PalletElectionProviderMultiPhaseRawSolution`, num_signed_submissions: `u32`)
+- **interface**: `api.tx.electionProviderMultiPhase.submit`
+- **summary**:    Submit a solution for the signed phase. 
+
+   The dispatch origin fo this call must be __signed__. 
+
+   The solution is potentially queued, based on the claimed score and processed at the end  of the signed phase. 
+
+   A deposit is reserved and recorded for the solution. Based on the outcome, the solution  might be rewarded, slashed, or get all or a part of the deposit back. 
+
+    
+ 
+### submitUnsigned(raw_solution: `PalletElectionProviderMultiPhaseRawSolution`, witness: `PalletElectionProviderMultiPhaseSolutionOrSnapshotSize`)
+- **interface**: `api.tx.electionProviderMultiPhase.submitUnsigned`
+- **summary**:    Submit a solution for the unsigned phase. 
+
+   The dispatch origin fo this call must be __none__. 
+
+   This submission is checked on the fly. Moreover, this unsigned solution is only  validated when submitted to the pool from the **local** node. Effectively, this means  that only active validators can submit this transaction when authoring a block (similar  to an inherent). 
+
+   To prevent any incorrect solution (and thus wasted time/weight), this transaction will  panic if the solution submitted by the validator is invalid in any way, effectively  putting their authoring reward at risk. 
+
+   No deposit or reward is associated with this submission. 
+
+___
+
+
+## elections
+ 
+### cleanDefunctVoters(num_voters: `u32`, num_defunct: `u32`)
+- **interface**: `api.tx.elections.cleanDefunctVoters`
+- **summary**:    Clean all voters who are defunct (i.e. they do not serve any purpose at all). The  deposit of the removed voters are returned. 
+
+   This is an root function to be used only for cleaning the state. 
+
+   The dispatch origin of this call must be root. 
+
+    
+ 
+### removeMember(who: `MultiAddress`, has_replacement: `bool`)
+- **interface**: `api.tx.elections.removeMember`
+- **summary**:    Remove a particular member from the set. This is effective immediately and the bond of  the outgoing member is slashed. 
+
+   If a runner-up is available, then the best runner-up will be removed and replaces the  outgoing member. Otherwise, a new phragmen election is started. 
+
+   The dispatch origin of this call must be root. 
+
+   Note that this does not affect the designated block number of the next election. 
+
+    
+ 
+### removeVoter()
+- **interface**: `api.tx.elections.removeVoter`
+- **summary**:    Remove `origin` as a voter. 
+
+   This removes the lock and returns the deposit. 
+
+   The dispatch origin of this call must be signed and be a voter. 
+ 
+### renounceCandidacy(renouncing: `PalletElectionsPhragmenRenouncing`)
+- **interface**: `api.tx.elections.renounceCandidacy`
+- **summary**:    Renounce one's intention to be a candidate for the next election round. 3 potential  outcomes exist: 
+
+   - `origin` is a candidate and not elected in any set. In this case, the deposit is  unreserved, returned and origin is removed as a candidate. 
+
+  - `origin` is a current runner-up. In this case, the deposit is unreserved, returned and origin is removed as a runner-up. 
+
+  - `origin` is a current member. In this case, the deposit is unreserved and origin is removed as a member, consequently not being a candidate for the next round anymore.  Similar to [`remove_member`](Self::remove_member), if replacement runners exists, they  are immediately used. If the prime is renouncing, then no prime will exist until the  next round. 
+
+   The dispatch origin of this call must be signed, and have one of the above roles. 
+
+    
+ 
+### submitCandidacy(candidate_count: `Compact<u32>`)
+- **interface**: `api.tx.elections.submitCandidacy`
+- **summary**:    Submit oneself for candidacy. A fixed amount of deposit is recorded. 
+
+   All candidates are wiped at the end of the term. They either become a member/runner-up,  or leave the system while their deposit is slashed. 
+
+   The dispatch origin of this call must be signed. 
+
+   #### Warning 
+
+   Even if a candidate ends up being a member, they must call [`Call::renounce_candidacy`]  to get their deposit back. Losing the spot in an election will always lead to a slash. 
+
+    
+ 
+### vote(votes: `Vec<AccountId32>`, value: `Compact<u128>`)
+- **interface**: `api.tx.elections.vote`
+- **summary**:    Vote for a set of candidates for the upcoming round of election. This can be called to  set the initial votes, or update already existing votes. 
+
+   Upon initial voting, `value` units of `who`'s balance is locked and a deposit amount is  reserved. The deposit is based on the number of votes and can be updated over time. 
+
+   The `votes` should: 
+
+  - not be empty.
+
+  - be less than the number of possible candidates. Note that all current members and runners-up are also automatically candidates for the next round. 
+
+   If `value` is more than `who`'s free balance, then the maximum of the two is used. 
+
+   The dispatch origin of this call must be signed. 
+
+   #### Warning 
+
+   It is the responsibility of the caller to **NOT** place all of their balance into the  lock and keep some for further operations. 
+
+    
+
+___
+
+
+## grandpa
+ 
+### noteStalled(delay: `u32`, best_finalized_block_number: `u32`)
+- **interface**: `api.tx.grandpa.noteStalled`
+- **summary**:    Note that the current authority set of the GRANDPA finality gadget has  stalled. This will trigger a forced authority set change at the beginning  of the next session, to be enacted `delay` blocks after that. The delay  should be high enough to safely assume that the block signalling the  forced change will not be re-orged (e.g. 1000 blocks). The GRANDPA voters  will start the new authority set using the given finalized block as base.  Only callable by root. 
+ 
+### reportEquivocation(equivocation_proof: `SpFinalityGrandpaEquivocationProof`, key_owner_proof: `SpSessionMembershipProof`)
+- **interface**: `api.tx.grandpa.reportEquivocation`
+- **summary**:    Report voter equivocation/misbehavior. This method will verify the  equivocation proof and validate the given key ownership proof  against the extracted offender. If both are valid, the offence  will be reported. 
+ 
+### reportEquivocationUnsigned(equivocation_proof: `SpFinalityGrandpaEquivocationProof`, key_owner_proof: `SpSessionMembershipProof`)
+- **interface**: `api.tx.grandpa.reportEquivocationUnsigned`
+- **summary**:    Report voter equivocation/misbehavior. This method will verify the  equivocation proof and validate the given key ownership proof  against the extracted offender. If both are valid, the offence  will be reported. 
+
+   This extrinsic must be called unsigned and it is expected that only  block authors will call it (validated in `ValidateUnsigned`), as such  if the block author is defined it will be defined as the equivocation  reporter. 
+
+___
+
+
+## identity
+ 
+### addRegistrar(account: `AccountId32`)
+- **interface**: `api.tx.identity.addRegistrar`
+- **summary**:    Add a registrar to the system. 
+
+   The dispatch origin for this call must be `T::RegistrarOrigin`. 
+
+   - `account`: the account of the registrar. 
+
+   Emits `RegistrarAdded` if successful. 
+
+    
+ 
+### addSub(sub: `MultiAddress`, data: `Data`)
+- **interface**: `api.tx.identity.addSub`
+- **summary**:    Add the given account to the sender's subs. 
+
+   Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated  to the sender. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must have a registered  sub identity of `sub`. 
+ 
+### cancelRequest(reg_index: `u32`)
+- **interface**: `api.tx.identity.cancelRequest`
+- **summary**:    Cancel a previous request. 
+
+   Payment: A previously reserved deposit is returned on success. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must have a  registered identity. 
+
+   - `reg_index`: The index of the registrar whose judgement is no longer requested. 
+
+   Emits `JudgementUnrequested` if successful. 
+
+    
+ 
+### clearIdentity()
+- **interface**: `api.tx.identity.clearIdentity`
+- **summary**:    Clear an account's identity info and all sub-accounts and return all deposits. 
+
+   Payment: All reserved balances on the account are returned. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must have a registered  identity. 
+
+   Emits `IdentityCleared` if successful. 
+
+    
+ 
+### killIdentity(target: `MultiAddress`)
+- **interface**: `api.tx.identity.killIdentity`
+- **summary**:    Remove an account's identity and sub-account information and slash the deposits. 
+
+   Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by  `Slash`. Verification request deposits are not returned; they should be cancelled  manually using `cancel_request`. 
+
+   The dispatch origin for this call must match `T::ForceOrigin`. 
+
+   - `target`: the account whose identity the judgement is upon. This must be an account  with a registered identity. 
+
+   Emits `IdentityKilled` if successful. 
+
+    
+ 
+### provideJudgement(reg_index: `Compact<u32>`, target: `MultiAddress`, judgement: `PalletIdentityJudgement`)
+- **interface**: `api.tx.identity.provideJudgement`
+- **summary**:    Provide a judgement for an account's identity. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must be the account  of the registrar whose index is `reg_index`. 
+
+   - `reg_index`: the index of the registrar whose judgement is being made. 
+
+  - `target`: the account whose identity the judgement is upon. This must be an account with a registered identity. 
+
+  - `judgement`: the judgement of the registrar of index `reg_index` about `target`.
+
+   Emits `JudgementGiven` if successful. 
+
+    
+ 
+### quitSub()
+- **interface**: `api.tx.identity.quitSub`
+- **summary**:    Remove the sender as a sub-account. 
+
+   Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated  to the sender (*not* the original depositor). 
+
+   The dispatch origin for this call must be _Signed_ and the sender must have a registered  super-identity. 
+
+   NOTE: This should not normally be used, but is provided in the case that the non-  controller of an account is maliciously registered as a sub-account. 
+ 
+### removeSub(sub: `MultiAddress`)
+- **interface**: `api.tx.identity.removeSub`
+- **summary**:    Remove the given account from the sender's subs. 
+
+   Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated  to the sender. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must have a registered  sub identity of `sub`. 
+ 
+### renameSub(sub: `MultiAddress`, data: `Data`)
+- **interface**: `api.tx.identity.renameSub`
+- **summary**:    Alter the associated name of the given sub-account. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must have a registered  sub identity of `sub`. 
+ 
+### requestJudgement(reg_index: `Compact<u32>`, max_fee: `Compact<u128>`)
+- **interface**: `api.tx.identity.requestJudgement`
+- **summary**:    Request a judgement from a registrar. 
+
+   Payment: At most `max_fee` will be reserved for payment to the registrar if judgement  given. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must have a  registered identity. 
+
+   - `reg_index`: The index of the registrar whose judgement is requested. 
+
+  - `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:
+
+   ```nocompile  Self::registrars().get(reg_index).unwrap().fee  ``` 
+
+   Emits `JudgementRequested` if successful. 
+
+    
+ 
+### setAccountId(index: `Compact<u32>`, new: `AccountId32`)
+- **interface**: `api.tx.identity.setAccountId`
+- **summary**:    Change the account associated with a registrar. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must be the account  of the registrar whose index is `index`. 
+
+   - `index`: the index of the registrar whose fee is to be set. 
+
+  - `new`: the new account ID.
+
+    
+ 
+### setFee(index: `Compact<u32>`, fee: `Compact<u128>`)
+- **interface**: `api.tx.identity.setFee`
+- **summary**:    Set the fee required for a judgement to be requested from a registrar. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must be the account  of the registrar whose index is `index`. 
+
+   - `index`: the index of the registrar whose fee is to be set. 
+
+  - `fee`: the new fee.
+
+    
+ 
+### setFields(index: `Compact<u32>`, fields: `PalletIdentityBitFlags`)
+- **interface**: `api.tx.identity.setFields`
+- **summary**:    Set the field information for a registrar. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must be the account  of the registrar whose index is `index`. 
+
+   - `index`: the index of the registrar whose fee is to be set. 
+
+  - `fields`: the fields that the registrar concerns themselves with.
+
+    
+ 
+### setIdentity(info: `PalletIdentityIdentityInfo`)
+- **interface**: `api.tx.identity.setIdentity`
+- **summary**:    Set an account's identity information and reserve the appropriate deposit. 
+
+   If the account already has identity information, the deposit is taken as part payment  for the new deposit. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   - `info`: The identity information. 
+
+   Emits `IdentitySet` if successful. 
+
+    
+ 
+### setSubs(subs: `Vec<(AccountId32,Data)>`)
+- **interface**: `api.tx.identity.setSubs`
+- **summary**:    Set the sub-accounts of the sender. 
+
+   Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned  and an amount `SubAccountDeposit` will be reserved for each item in `subs`. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must have a registered  identity. 
+
+   - `subs`: The identity's (new) sub-accounts. 
+
+    
+
+___
+
+
+## imOnline
+ 
+### heartbeat(heartbeat: `PalletImOnlineHeartbeat`, signature: `PalletImOnlineSr25519AppSr25519Signature`)
+- **interface**: `api.tx.imOnline.heartbeat`
+- **summary**:     
+
+___
+
+
+## multisig
+ 
+### approveAsMulti(threshold: `u16`, other_signatories: `Vec<AccountId32>`, maybe_timepoint: `Option<PalletMultisigTimepoint>`, call_hash: `[u8;32]`, max_weight: `u64`)
+- **interface**: `api.tx.multisig.approveAsMulti`
+- **summary**:    Register approval for a dispatch to be made from a deterministic composite account if  approved by a total of `threshold - 1` of `other_signatories`. 
+
+   Payment: `DepositBase` will be reserved if this is the first approval, plus  `threshold` times `DepositFactor`. It is returned once this dispatch happens or  is cancelled. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   - `threshold`: The total number of approvals for this dispatch before it is executed. 
+
+  - `other_signatories`: The accounts (other than the sender) who can approve this dispatch. May not be empty. 
+
+  - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is not the first approval, then it must be `Some`, with the timepoint (block number and  transaction index) of the first approval transaction. 
+
+  - `call_hash`: The hash of the call to be executed.
+
+   NOTE: If this is the final approval, you will want to use `as_multi` instead. 
+
+    
+ 
+### asMulti(threshold: `u16`, other_signatories: `Vec<AccountId32>`, maybe_timepoint: `Option<PalletMultisigTimepoint>`, call: `WrapperKeepOpaque<Call>`, store_call: `bool`, max_weight: `u64`)
+- **interface**: `api.tx.multisig.asMulti`
+- **summary**:    Register approval for a dispatch to be made from a deterministic composite account if  approved by a total of `threshold - 1` of `other_signatories`. 
+
+   If there are enough, then dispatch the call. 
+
+   Payment: `DepositBase` will be reserved if this is the first approval, plus  `threshold` times `DepositFactor`. It is returned once this dispatch happens or  is cancelled. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   - `threshold`: The total number of approvals for this dispatch before it is executed. 
+
+  - `other_signatories`: The accounts (other than the sender) who can approve this dispatch. May not be empty. 
+
+  - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is not the first approval, then it must be `Some`, with the timepoint (block number and  transaction index) of the first approval transaction. 
+
+  - `call`: The call to be executed.
+
+   NOTE: Unless this is the final approval, you will generally want to use  `approve_as_multi` instead, since it only requires a hash of the call. 
+
+   Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise  on success, result is `Ok` and the result from the interior call, if it was executed,  may be found in the deposited `MultisigExecuted` event. 
+
+    
+ 
+### asMultiThreshold1(other_signatories: `Vec<AccountId32>`, call: `Call`)
+- **interface**: `api.tx.multisig.asMultiThreshold1`
+- **summary**:    Immediately dispatch a multi-signature call using a single approval from the caller. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   - `other_signatories`: The accounts (other than the sender) who are part of the  multi-signature, but do not participate in the approval process. 
+
+  - `call`: The call to be executed.
+
+   Result is equivalent to the dispatched result. 
+
+    
+ 
+### cancelAsMulti(threshold: `u16`, other_signatories: `Vec<AccountId32>`, timepoint: `PalletMultisigTimepoint`, call_hash: `[u8;32]`)
+- **interface**: `api.tx.multisig.cancelAsMulti`
+- **summary**:    Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously  for this operation will be unreserved on success. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   - `threshold`: The total number of approvals for this dispatch before it is executed. 
+
+  - `other_signatories`: The accounts (other than the sender) who can approve this dispatch. May not be empty. 
+
+  - `timepoint`: The timepoint (block number and transaction index) of the first approval transaction for this dispatch. 
+
+  - `call_hash`: The hash of the call to be executed.
+
+    
+
+___
+
+
+## proxy
+ 
+### addProxy(delegate: `AccountId32`, proxy_type: `XxnetworkRuntimeProxyType`, delay: `u32`)
+- **interface**: `api.tx.proxy.addProxy`
+- **summary**:    Register a proxy account for the sender that is able to make calls on its behalf. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   Parameters: 
+
+  - `proxy`: The account that the `caller` would like to make a proxy.
+
+  - `proxy_type`: The permissions allowed for this proxy account.
+
+  - `delay`: The announcement period required of the initial proxy. Will generally be zero. 
+
+    
+ 
+### announce(real: `AccountId32`, call_hash: `H256`)
+- **interface**: `api.tx.proxy.announce`
+- **summary**:    Publish the hash of a proxy-call that will be made in the future. 
+
+   This must be called some number of blocks before the corresponding `proxy` is attempted  if the delay associated with the proxy relationship is greater than zero. 
+
+   No more than `MaxPending` announcements may be made at any one time. 
+
+   This will take a deposit of `AnnouncementDepositFactor` as well as  `AnnouncementDepositBase` if there are no other pending announcements. 
+
+   The dispatch origin for this call must be _Signed_ and a proxy of `real`. 
+
+   Parameters: 
+
+  - `real`: The account that the proxy will make a call on behalf of.
+
+  - `call_hash`: The hash of the call to be made by the `real` account.
+
+    
+ 
+### anonymous(proxy_type: `XxnetworkRuntimeProxyType`, delay: `u32`, index: `u16`)
+- **interface**: `api.tx.proxy.anonymous`
+- **summary**:    Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and  initialize it with a proxy of `proxy_type` for `origin` sender. 
+
+   Requires a `Signed` origin. 
+
+   - `proxy_type`: The type of the proxy that the sender will be registered as over the  new account. This will almost always be the most permissive `ProxyType` possible to  allow for maximum flexibility. 
+
+  - `index`: A disambiguation index, in case this is called multiple times in the same transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just  want to use `0`. 
+
+  - `delay`: The announcement period required of the initial proxy. Will generally be zero. 
+
+   Fails with `Duplicate` if this has already been called in this transaction, from the  same sender, with the same parameters. 
+
+   Fails if there are insufficient funds to pay for deposit. 
+
+     TODO: Might be over counting 1 read 
+ 
+### killAnonymous(spawner: `AccountId32`, proxy_type: `XxnetworkRuntimeProxyType`, index: `u16`, height: `Compact<u32>`, ext_index: `Compact<u32>`)
+- **interface**: `api.tx.proxy.killAnonymous`
+- **summary**:    Removes a previously spawned anonymous proxy. 
+
+   WARNING: **All access to this account will be lost.** Any funds held in it will be  inaccessible. 
+
+   Requires a `Signed` origin, and the sender account must have been created by a call to  `anonymous` with corresponding parameters. 
+
+   - `spawner`: The account that originally called `anonymous` to create this account. 
+
+  - `index`: The disambiguation index originally passed to `anonymous`. Probably `0`.
+
+  - `proxy_type`: The proxy type originally passed to `anonymous`.
+
+  - `height`: The height of the chain when the call to `anonymous` was processed.
+
+  - `ext_index`: The extrinsic index in which the call to `anonymous` was processed.
+
+   Fails with `NoPermission` in case the caller is not a previously created anonymous  account whose `anonymous` call has corresponding parameters. 
+
+    
+ 
+### proxy(real: `AccountId32`, force_proxy_type: `Option<XxnetworkRuntimeProxyType>`, call: `Call`)
+- **interface**: `api.tx.proxy.proxy`
+- **summary**:    Dispatch the given `call` from an account that the sender is authorised for through  `add_proxy`. 
+
+   Removes any corresponding announcement(s). 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   Parameters: 
+
+  - `real`: The account that the proxy will make a call on behalf of.
+
+  - `force_proxy_type`: Specify the exact proxy type to be used and checked for this call.
+
+  - `call`: The call to be made by the `real` account.
+
+    
+ 
+### proxyAnnounced(delegate: `AccountId32`, real: `AccountId32`, force_proxy_type: `Option<XxnetworkRuntimeProxyType>`, call: `Call`)
+- **interface**: `api.tx.proxy.proxyAnnounced`
+- **summary**:    Dispatch the given `call` from an account that the sender is authorized for through  `add_proxy`. 
+
+   Removes any corresponding announcement(s). 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   Parameters: 
+
+  - `real`: The account that the proxy will make a call on behalf of.
+
+  - `force_proxy_type`: Specify the exact proxy type to be used and checked for this call.
+
+  - `call`: The call to be made by the `real` account.
+
+    
+ 
+### rejectAnnouncement(delegate: `AccountId32`, call_hash: `H256`)
+- **interface**: `api.tx.proxy.rejectAnnouncement`
+- **summary**:    Remove the given announcement of a delegate. 
+
+   May be called by a target (proxied) account to remove a call that one of their delegates  (`delegate`) has announced they want to execute. The deposit is returned. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   Parameters: 
+
+  - `delegate`: The account that previously announced the call.
+
+  - `call_hash`: The hash of the call to be made.
+
+    
+ 
+### removeAnnouncement(real: `AccountId32`, call_hash: `H256`)
+- **interface**: `api.tx.proxy.removeAnnouncement`
+- **summary**:    Remove a given announcement. 
+
+   May be called by a proxy account to remove a call they previously announced and return  the deposit. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   Parameters: 
+
+  - `real`: The account that the proxy will make a call on behalf of.
+
+  - `call_hash`: The hash of the call to be made by the `real` account.
+
+    
+ 
+### removeProxies()
+- **interface**: `api.tx.proxy.removeProxies`
+- **summary**:    Unregister all proxy accounts for the sender. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   WARNING: This may be called on accounts created by `anonymous`, however if done, then  the unreserved fees will be inaccessible. **All access to this account will be lost.** 
+
+    
+ 
+### removeProxy(delegate: `AccountId32`, proxy_type: `XxnetworkRuntimeProxyType`, delay: `u32`)
+- **interface**: `api.tx.proxy.removeProxy`
+- **summary**:    Unregister a proxy account for the sender. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   Parameters: 
+
+  - `proxy`: The account that the `caller` would like to remove as a proxy.
+
+  - `proxy_type`: The permissions currently enabled for the removed proxy account.
+
+    
+
+___
+
+
+## recovery
+ 
+### asRecovered(account: `AccountId32`, call: `Call`)
+- **interface**: `api.tx.recovery.asRecovered`
+- **summary**:    Send a call through a recovered account. 
+
+   The dispatch origin for this call must be _Signed_ and registered to  be able to make calls on behalf of the recovered account. 
+
+   Parameters: 
+
+  - `account`: The recovered account you want to make a call on-behalf-of.
+
+  - `call`: The call you want to make with the recovered account.
+
+    
+ 
+### cancelRecovered(account: `AccountId32`)
+- **interface**: `api.tx.recovery.cancelRecovered`
+- **summary**:    Cancel the ability to use `as_recovered` for `account`. 
+
+   The dispatch origin for this call must be _Signed_ and registered to  be able to make calls on behalf of the recovered account. 
+
+   Parameters: 
+
+  - `account`: The recovered account you are able to call on-behalf-of.
+
+    
+ 
+### claimRecovery(account: `AccountId32`)
+- **interface**: `api.tx.recovery.claimRecovery`
+- **summary**:    Allow a successful rescuer to claim their recovered account. 
+
+   The dispatch origin for this call must be _Signed_ and must be a "rescuer"  who has successfully completed the account recovery process: collected  `threshold` or more vouches, waited `delay_period` blocks since initiation. 
+
+   Parameters: 
+
+  - `account`: The lost account that you want to claim has been successfully recovered by you. 
+
+    
+ 
+### closeRecovery(rescuer: `AccountId32`)
+- **interface**: `api.tx.recovery.closeRecovery`
+- **summary**:    As the controller of a recoverable account, close an active recovery  process for your account. 
+
+   Payment: By calling this function, the recoverable account will receive  the recovery deposit `RecoveryDeposit` placed by the rescuer. 
+
+   The dispatch origin for this call must be _Signed_ and must be a  recoverable account with an active recovery process for it. 
+
+   Parameters: 
+
+  - `rescuer`: The account trying to rescue this recoverable account.
+
+    
+ 
+### createRecovery(friends: `Vec<AccountId32>`, threshold: `u16`, delay_period: `u32`)
+- **interface**: `api.tx.recovery.createRecovery`
+- **summary**:    Create a recovery configuration for your account. This makes your account recoverable. 
+
+   Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance  will be reserved for storing the recovery configuration. This deposit is returned  in full when the user calls `remove_recovery`. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   Parameters: 
+
+  - `friends`: A list of friends you trust to vouch for recovery attempts. Should be ordered and contain no duplicate values. 
+
+  - `threshold`: The number of friends that must vouch for a recovery attempt before the account can be recovered. Should be less than or equal to the length of the list of  friends. 
+
+  - `delay_period`: The number of blocks after a recovery attempt is initialized that needs to pass before the account can be recovered. 
+
+    
+ 
+### initiateRecovery(account: `AccountId32`)
+- **interface**: `api.tx.recovery.initiateRecovery`
+- **summary**:    Initiate the process for recovering a recoverable account. 
+
+   Payment: `RecoveryDeposit` balance will be reserved for initiating the  recovery process. This deposit will always be repatriated to the account  trying to be recovered. See `close_recovery`. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   Parameters: 
+
+  - `account`: The lost account that you want to recover. This account needs to be recoverable (i.e. have a recovery configuration). 
+
+    
+ 
+### removeRecovery()
+- **interface**: `api.tx.recovery.removeRecovery`
+- **summary**:    Remove the recovery process for your account. Recovered accounts are still accessible. 
+
+   NOTE: The user must make sure to call `close_recovery` on all active  recovery attempts before calling this function else it will fail. 
+
+   Payment: By calling this function the recoverable account will unreserve  their recovery configuration deposit.  (`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends) 
+
+   The dispatch origin for this call must be _Signed_ and must be a  recoverable account (i.e. has a recovery configuration). 
+
+    
+ 
+### setRecovered(lost: `AccountId32`, rescuer: `AccountId32`)
+- **interface**: `api.tx.recovery.setRecovered`
+- **summary**:    Allow ROOT to bypass the recovery process and set an a rescuer account  for a lost account directly. 
+
+   The dispatch origin for this call must be _ROOT_. 
+
+   Parameters: 
+
+  - `lost`: The "lost account" to be recovered.
+
+  - `rescuer`: The "rescuer account" which can call as the lost account.
+
+    
+ 
+### vouchRecovery(lost: `AccountId32`, rescuer: `AccountId32`)
+- **interface**: `api.tx.recovery.vouchRecovery`
+- **summary**:    Allow a "friend" of a recoverable account to vouch for an active recovery  process for that account. 
+
+   The dispatch origin for this call must be _Signed_ and must be a "friend"  for the recoverable account. 
+
+   Parameters: 
+
+  - `lost`: The lost account that you want to recover.
+
+  - `rescuer`: The account trying to rescue the lost account that you want to vouch for.
+
+   The combination of these two parameters must point to an active recovery  process. 
+
+    
+
+___
+
+
+## scheduler
+ 
+### cancel(when: `u32`, index: `u32`)
+- **interface**: `api.tx.scheduler.cancel`
+- **summary**:    Cancel an anonymously scheduled task. 
+
+    
+ 
+### cancelNamed(id: `Bytes`)
+- **interface**: `api.tx.scheduler.cancelNamed`
+- **summary**:    Cancel a named scheduled task. 
+
+    
+ 
+### schedule(when: `u32`, maybe_periodic: `Option<(u32,u32)>`, priority: `u8`, call: `Call`)
+- **interface**: `api.tx.scheduler.schedule`
+- **summary**:    Anonymously schedule a task. 
+
+    
+ 
+### scheduleAfter(after: `u32`, maybe_periodic: `Option<(u32,u32)>`, priority: `u8`, call: `Call`)
+- **interface**: `api.tx.scheduler.scheduleAfter`
+- **summary**:    Anonymously schedule a task after a delay. 
+
+    
+ 
+### scheduleNamed(id: `Bytes`, when: `u32`, maybe_periodic: `Option<(u32,u32)>`, priority: `u8`, call: `Call`)
+- **interface**: `api.tx.scheduler.scheduleNamed`
+- **summary**:    Schedule a named task. 
+
+    
+ 
+### scheduleNamedAfter(id: `Bytes`, after: `u32`, maybe_periodic: `Option<(u32,u32)>`, priority: `u8`, call: `Call`)
+- **interface**: `api.tx.scheduler.scheduleNamedAfter`
+- **summary**:    Schedule a named task after a delay. 
+
+    
+
+___
+
+
+## session
+ 
+### purgeKeys()
+- **interface**: `api.tx.session.purgeKeys`
+- **summary**:    Removes any session key(s) of the function caller. 
+
+   This doesn't take effect until the next session. 
+
+   The dispatch origin of this function must be Signed and the account must be either be  convertible to a validator ID using the chain's typical addressing system (this usually  means being a controller account) or directly convertible into a validator ID (which  usually means being a stash account). 
+
+    
+ 
+### setKeys(keys: `XxnetworkRuntimeSessionKeys`, proof: `Bytes`)
+- **interface**: `api.tx.session.setKeys`
+- **summary**:    Sets the session key(s) of the function caller to `keys`.  Allows an account to set its session key prior to becoming a validator.  This doesn't take effect until the next session. 
+
+   The dispatch origin of this function must be signed. 
+
+    
+
+___
+
+
+## staking
+ 
+### bond(controller: `MultiAddress`, value: `Compact<u128>`, cmix_id: `Option<H256>`)
+- **interface**: `api.tx.staking.bond`
+- **summary**:    Take the origin account as a stash and lock up `value` of its balance. `controller` will  be the account that controls it. 
+
+   `value` must be more than the `minimum_balance` specified by `T::Currency`. 
+
+   The dispatch origin for this call must be _Signed_ by the stash account. 
+
+   Emits `Bonded`.   
+ 
+### bondExtra(max_additional: `Compact<u128>`)
+- **interface**: `api.tx.staking.bondExtra`
+- **summary**:    Add some extra amount that have appeared in the stash `free_balance` into the balance up  for staking. 
+
+   The dispatch origin for this call must be _Signed_ by the stash, not the controller. 
+
+   Use this if there are additional funds in your stash account that you wish to bond.  Unlike [`bond`](Self::bond) or [`unbond`](Self::unbond) this function does not impose  any limitation on the amount that can be added. 
+
+   Emits `Bonded`. 
+
+    
+ 
+### cancelDeferredSlash(era: `u32`, slash_indices: `Vec<u32>`)
+- **interface**: `api.tx.staking.cancelDeferredSlash`
+- **summary**:    Cancel enactment of a deferred slash. 
+
+   Can be called by the `T::SlashCancelOrigin`. 
+
+   Parameters: era and indices of the slashes for that era to kill. 
+
+    
+ 
+### chill()
+- **interface**: `api.tx.staking.chill`
+- **summary**:    Declare no desire to either validate or nominate. 
+
+   Effects will be felt at the beginning of the next era. 
+
+   The dispatch origin for this call must be _Signed_ by the controller, not the stash. 
+
+    
+ 
+### chillOther(controller: `AccountId32`)
+- **interface**: `api.tx.staking.chillOther`
+- **summary**:    Declare a `controller` to stop participating as either a validator or nominator. 
+
+   Effects will be felt at the beginning of the next era. 
+
+   The dispatch origin for this call must be _Signed_, but can be called by anyone. 
+
+   If the caller is the same as the controller being targeted, then no further checks are  enforced, and this function behaves just like `chill`. 
+
+   If the caller is different than the controller being targeted, the following conditions  must be met: 
+
+  * A `ChillThreshold` must be set and checked which defines how close to the max nominators or validators we must reach before users can start chilling one-another. 
+
+  * A `MaxNominatorCount` and `MaxValidatorCount` must be set which is used to determine how close we are to the threshold. 
+
+  * A `MinNominatorBond` and `MinValidatorBond` must be set and checked, which determines if this is a person that should be chilled because they have not met the threshold  bond required. 
+
+   This can be helpful if bond requirements are updated, and we need to remove old users  who do not satisfy these requirements. 
+ 
+### forceNewEra()
+- **interface**: `api.tx.staking.forceNewEra`
+- **summary**:    Force there to be a new era at the end of the next session. After this, it will be  reset to normal (non-forced) behaviour. 
+
+   The dispatch origin must be Root. 
+
+   #### Warning 
+
+   The election process starts multiple blocks before the end of the era.  If this is called just before a new era is triggered, the election process may not  have enough blocks to get a result. 
+
+    
+ 
+### forceNewEraAlways()
+- **interface**: `api.tx.staking.forceNewEraAlways`
+- **summary**:    Force there to be a new era at the end of sessions indefinitely. 
+
+   The dispatch origin must be Root. 
+
+   #### Warning 
+
+   The election process starts multiple blocks before the end of the era.  If this is called just before a new era is triggered, the election process may not  have enough blocks to get a result. 
+
+    
+ 
+### forceNoEras()
+- **interface**: `api.tx.staking.forceNoEras`
+- **summary**:    Force there to be no new eras indefinitely. 
+
+   The dispatch origin must be Root. 
+
+   #### Warning 
+
+   The election process starts multiple blocks before the end of the era.  Thus the election process may be ongoing when this is called. In this case the  election will continue until the next era is triggered. 
+
+    
+ 
+### forceUnstake(stash: `AccountId32`, num_slashing_spans: `u32`)
+- **interface**: `api.tx.staking.forceUnstake`
+- **summary**:    Force a current staker to become completely unstaked, immediately. 
+
+   The dispatch origin must be Root. 
+
+    
+ 
+### increaseValidatorCount(additional: `Compact<u32>`)
+- **interface**: `api.tx.staking.increaseValidatorCount`
+- **summary**:    Increments the ideal number of validators. 
+
+   The dispatch origin must be Root. 
+
+    
+ 
+### kick(who: `Vec<MultiAddress>`)
+- **interface**: `api.tx.staking.kick`
+- **summary**:    Remove the given nominations from the calling validator. 
+
+   Effects will be felt at the beginning of the next era. 
+
+   The dispatch origin for this call must be _Signed_ by the controller, not the stash. 
+
+   - `who`: A list of nominator stash accounts who are nominating this validator which  should no longer be nominating this validator. 
+
+   Note: Making this call only makes sense if you first set the validator preferences to  block any further nominations. 
+ 
+### nominate(targets: `Vec<MultiAddress>`)
+- **interface**: `api.tx.staking.nominate`
+- **summary**:    Declare the desire to nominate `targets` for the origin controller. 
+
+   Effects will be felt at the beginning of the next era. 
+
+   The dispatch origin for this call must be _Signed_ by the controller, not the stash. 
+
+    
+ 
+### payoutStakers(validator_stash: `AccountId32`, era: `u32`)
+- **interface**: `api.tx.staking.payoutStakers`
+- **summary**:    Pay out all the stakers behind a single validator for a single era. 
+
+   - `validator_stash` is the stash account of the validator. Their nominators, up to  `T::MaxNominatorRewardedPerValidator`, will also receive their rewards. 
+
+  - `era` may be any era between `[current_era - history_depth; current_era]`.
+
+   The origin of this call must be _Signed_. Any account can call this function, even if  it is not one of the stakers. 
+
+    
+ 
+### reapStash(stash: `AccountId32`, num_slashing_spans: `u32`)
+- **interface**: `api.tx.staking.reapStash`
+- **summary**:    Remove all data structure concerning a staker/stash once its balance is at the minimum.  This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone  and the target `stash` must have no funds left beyond the ED. 
+
+   This can be called from any origin. 
+
+   - `stash`: The stash account to reap. Its balance must be zero. 
+
+    
+ 
+### rebond(value: `Compact<u128>`)
+- **interface**: `api.tx.staking.rebond`
+- **summary**:    Rebond a portion of the stash scheduled to be unlocked. 
+
+   The dispatch origin must be signed by the controller. 
+
+    
+ 
+### scaleValidatorCount(factor: `Percent`)
+- **interface**: `api.tx.staking.scaleValidatorCount`
+- **summary**:    Scale up the ideal number of validators by a factor. 
+
+   The dispatch origin must be Root. 
+
+    
+ 
+### setCmixId(cmix_id: `H256`)
+- **interface**: `api.tx.staking.setCmixId`
+- **summary**:    Set the CMIX ID of a stash, if it doesn't have one already. 
+
+   The dispatch origin for this call must be _Signed_ by the stash, not the controller. 
+
+    
+ 
+### setController(controller: `MultiAddress`)
+- **interface**: `api.tx.staking.setController`
+- **summary**:    (Re-)set the controller of a stash. 
+
+   Effects will be felt at the beginning of the next era. 
+
+   The dispatch origin for this call must be _Signed_ by the stash, not the controller. 
+
+    
+ 
+### setHistoryDepth(new_history_depth: `Compact<u32>`, era_items_deleted: `Compact<u32>`)
+- **interface**: `api.tx.staking.setHistoryDepth`
+- **summary**:    Set `HistoryDepth` value. This function will delete any history information  when `HistoryDepth` is reduced. 
+
+   Parameters: 
+
+  - `new_history_depth`: The new history depth you would like to set.
+
+  - `era_items_deleted`: The number of items that will be deleted by this dispatch. This should report all the storage items that will be deleted by clearing old era history.  Needed to report an accurate weight for the dispatch. Trusted by `Root` to report an  accurate number. 
+
+   Origin must be root. 
+
+    
+ 
+### setInvulnerables(invulnerables: `Vec<AccountId32>`)
+- **interface**: `api.tx.staking.setInvulnerables`
+- **summary**:    Set the validators who cannot be slashed (if any). 
+
+   The dispatch origin must be Root. 
+
+    
+ 
+### setStakingLimits(min_nominator_bond: `u128`, min_validator_bond: `u128`, max_nominator_count: `Option<u32>`, max_validator_count: `Option<u32>`, threshold: `Option<Percent>`, min_commission: `Perbill`)
+- **interface**: `api.tx.staking.setStakingLimits`
+- **summary**:    Update the various staking limits this pallet. 
+
+   * `min_nominator_bond`: The minimum active bond needed to be a nominator. 
+
+  * `min_validator_bond`: The minimum active bond needed to be a validator.
+
+  * `max_nominator_count`: The max number of users who can be a nominator at once. When set to `None`, no limit is enforced. 
+
+  * `max_validator_count`: The max number of users who can be a validator at once. When set to `None`, no limit is enforced. 
+
+   Origin must be AdminOrigin to call this function. 
+
+   NOTE: Existing nominators and validators will not be affected by this update.  to kick people under the new limits, `chill_other` should be called. 
+ 
+### setValidatorCount(new: `Compact<u32>`)
+- **interface**: `api.tx.staking.setValidatorCount`
+- **summary**:    Sets the ideal number of validators. 
+
+   The dispatch origin must be AdminOrigin. 
+
+    
+ 
+### transferCmixId(dest: `AccountId32`)
+- **interface**: `api.tx.staking.transferCmixId`
+- **summary**:    Transfer the CMIX ID of a stash to a destination account. 
+
+   Function is only callable if the Election is NOT active. 
+
+   The origin account must be a stash and cannot be validating.  Furthermore, it cannot be an validator in the current era, neither  elected for the next era.  The destination account must be a stash, without a CMIX ID. 
+
+   The dispatch origin for this call must be _Signed_ by the stash, not the controller. 
+
+    
+ 
+### unbond(value: `Compact<u128>`)
+- **interface**: `api.tx.staking.unbond`
+- **summary**:    Schedule a portion of the stash to be unlocked ready for transfer out after the bond  period ends. If this leaves an amount actively bonded less than  T::Currency::minimum_balance(), then it is increased to the full amount. 
+
+   The dispatch origin for this call must be _Signed_ by the controller, not the stash. 
+
+   Once the unlock period is done, you can call `withdraw_unbonded` to actually move  the funds out of management ready for transfer. 
+
+   No more than a limited number of unlocking chunks (see `MAX_UNLOCKING_CHUNKS`)  can co-exists at the same time. In that case, [`Call::withdraw_unbonded`] need  to be called first to remove some of the chunks (if possible). 
+
+   If a user encounters the `InsufficientBond` error when calling this extrinsic,  they should call `chill` first in order to free up their bonded funds. 
+
+   Emits `Unbonded`. 
+
+   See also [`Call::withdraw_unbonded`]. 
+ 
+### validate(prefs: `PalletStakingValidatorPrefs`)
+- **interface**: `api.tx.staking.validate`
+- **summary**:    Declare the desire to validate for the origin controller. 
+
+   Effects will be felt at the beginning of the next era. 
+
+   The dispatch origin for this call must be _Signed_ by the controller, not the stash. 
+ 
+### withdrawUnbonded(num_slashing_spans: `u32`)
+- **interface**: `api.tx.staking.withdrawUnbonded`
+- **summary**:    Remove any unlocked chunks from the `unlocking` queue from our management. 
+
+   This essentially frees up that balance to be used by the stash account to do  whatever it wants. 
+
+   The dispatch origin for this call must be _Signed_ by the controller. 
+
+   Emits `Withdrawn`. 
+
+   See also [`Call::unbond`]. 
+
+    
+
+___
+
+
+## swap
+ 
+### setFeeDestination(dest: `AccountId32`)
+- **interface**: `api.tx.swap.setFeeDestination`
+- **summary**:    Set fee destination 
+ 
+### setSwapFee(fee: `Compact<u128>`)
+- **interface**: `api.tx.swap.setSwapFee`
+- **summary**:    Set swap fee 
+ 
+### transfer(to: `AccountId32`, amount: `u128`)
+- **interface**: `api.tx.swap.transfer`
+- **summary**:    Executes a currency transfer from the bridge account 
+ 
+### transferNative(amount: `u128`, recipient: `Bytes`, dest_id: `u8`)
+- **interface**: `api.tx.swap.transferNative`
+- **summary**:    Transfers an amount of the native token to some recipient on a (whitelisted) destination chain. 
+
+___
+
+
+## system
+ 
+### fillBlock(ratio: `Perbill`)
+- **interface**: `api.tx.system.fillBlock`
+- **summary**:    A dispatch that will fill the block weight up to the given ratio. 
+ 
+### killPrefix(prefix: `Bytes`, subkeys: `u32`)
+- **interface**: `api.tx.system.killPrefix`
+- **summary**:    Kill all storage items with a key that starts with the given prefix. 
+
+   **NOTE:** We rely on the Root origin to provide us the number of subkeys under  the prefix we are removing to accurately calculate the weight of this function. 
+
+    
+ 
+### killStorage(keys: `Vec<Bytes>`)
+- **interface**: `api.tx.system.killStorage`
+- **summary**:    Kill some items from storage. 
+
+    
+ 
+### remark(remark: `Bytes`)
+- **interface**: `api.tx.system.remark`
+- **summary**:    Make some on-chain remark. 
+
+    
+ 
+### remarkWithEvent(remark: `Bytes`)
+- **interface**: `api.tx.system.remarkWithEvent`
+- **summary**:    Make some on-chain remark and emit event. 
+
+    
+ 
+### setCode(code: `Bytes`)
+- **interface**: `api.tx.system.setCode`
+- **summary**:    Set the new runtime code. 
+
+    
+ 
+### setCodeWithoutChecks(code: `Bytes`)
+- **interface**: `api.tx.system.setCodeWithoutChecks`
+- **summary**:    Set the new runtime code without doing any checks of the given `code`. 
+
+    
+ 
+### setHeapPages(pages: `u64`)
+- **interface**: `api.tx.system.setHeapPages`
+- **summary**:    Set the number of pages in the WebAssembly environment's heap. 
+
+    
+ 
+### setStorage(items: `Vec<(Bytes,Bytes)>`)
+- **interface**: `api.tx.system.setStorage`
+- **summary**:    Set some items of storage. 
+
+    
+
+___
+
+
+## technicalCommittee
+ 
+### close(proposal_hash: `H256`, index: `Compact<u32>`, proposal_weight_bound: `Compact<u64>`, length_bound: `Compact<u32>`)
+- **interface**: `api.tx.technicalCommittee.close`
+- **summary**:    Close a vote that is either approved, disapproved or whose voting period has ended. 
+
+   May be called by any signed account in order to finish voting and close the proposal. 
+
+   If called before the end of the voting period it will only close the vote if it is  has enough votes to be approved or disapproved. 
+
+   If called after the end of the voting period abstentions are counted as rejections  unless there is a prime member set and the prime member cast an approval. 
+
+   If the close operation completes successfully with disapproval, the transaction fee will  be waived. Otherwise execution of the approved operation will be charged to the caller. 
+
+   + `proposal_weight_bound`: The maximum amount of weight consumed by executing the closed  proposal.  + `length_bound`: The upper bound for the length of the proposal in storage. Checked via  `storage::read` so it is `size_of::<u32>() == 4` larger than the pure length. 
+
+    
+ 
+### disapproveProposal(proposal_hash: `H256`)
+- **interface**: `api.tx.technicalCommittee.disapproveProposal`
+- **summary**:    Disapprove a proposal, close, and remove it from the system, regardless of its current  state. 
+
+   Must be called by the Root origin. 
+
+   Parameters: 
+
+  * `proposal_hash`: The hash of the proposal that should be disapproved.
+
+    
+ 
+### execute(proposal: `Call`, length_bound: `Compact<u32>`)
+- **interface**: `api.tx.technicalCommittee.execute`
+- **summary**:    Dispatch a proposal from a member using the `Member` origin. 
+
+   Origin must be a member of the collective. 
+
+    
+ 
+### propose(threshold: `Compact<u32>`, proposal: `Call`, length_bound: `Compact<u32>`)
+- **interface**: `api.tx.technicalCommittee.propose`
+- **summary**:    Add a new proposal to either be voted on or executed directly. 
+
+   Requires the sender to be member. 
+
+   `threshold` determines whether `proposal` is executed directly (`threshold < 2`)  or put up for voting. 
+
+    
+ 
+### setMembers(new_members: `Vec<AccountId32>`, prime: `Option<AccountId32>`, old_count: `u32`)
+- **interface**: `api.tx.technicalCommittee.setMembers`
+- **summary**:    Set the collective's membership. 
+
+   - `new_members`: The new member list. Be nice to the chain and provide it sorted. 
+
+  - `prime`: The prime member whose vote sets the default.
+
+  - `old_count`: The upper bound for the previous number of members in storage. Used for weight estimation. 
+
+   Requires root origin. 
+
+   NOTE: Does not enforce the expected `MaxMembers` limit on the amount of members, but  the weight estimations rely on it to estimate dispatchable weight. 
+
+   #### WARNING: 
+
+   The `pallet-collective` can also be managed by logic outside of the pallet through the  implementation of the trait [`ChangeMembers`].  Any call to `set_members` must be careful that the member set doesn't get out of sync  with other logic managing the member set. 
+
+    
+ 
+### vote(proposal: `H256`, index: `Compact<u32>`, approve: `bool`)
+- **interface**: `api.tx.technicalCommittee.vote`
+- **summary**:    Add an aye or nay vote for the sender to the given proposal. 
+
+   Requires the sender to be a member. 
+
+   Transaction fees will be waived if the member is voting on any particular proposal  for the first time and the call is successful. Subsequent vote changes will charge a  fee.   
+
+___
+
+
+## technicalMembership
+ 
+### addMember(who: `AccountId32`)
+- **interface**: `api.tx.technicalMembership.addMember`
+- **summary**:    Add a member `who` to the set. 
+
+   May only be called from `T::AddOrigin`. 
+ 
+### changeKey(new: `AccountId32`)
+- **interface**: `api.tx.technicalMembership.changeKey`
+- **summary**:    Swap out the sending member for some other key `new`. 
+
+   May only be called from `Signed` origin of a current member. 
+
+   Prime membership is passed from the origin account to `new`, if extant. 
+ 
+### clearPrime()
+- **interface**: `api.tx.technicalMembership.clearPrime`
+- **summary**:    Remove the prime member if it exists. 
+
+   May only be called from `T::PrimeOrigin`. 
+ 
+### removeMember(who: `AccountId32`)
+- **interface**: `api.tx.technicalMembership.removeMember`
+- **summary**:    Remove a member `who` from the set. 
+
+   May only be called from `T::RemoveOrigin`. 
+ 
+### resetMembers(members: `Vec<AccountId32>`)
+- **interface**: `api.tx.technicalMembership.resetMembers`
+- **summary**:    Change the membership to a new set, disregarding the existing membership. Be nice and  pass `members` pre-sorted. 
+
+   May only be called from `T::ResetOrigin`. 
+ 
+### setPrime(who: `AccountId32`)
+- **interface**: `api.tx.technicalMembership.setPrime`
+- **summary**:    Set the prime member. Must be a current member. 
+
+   May only be called from `T::PrimeOrigin`. 
+ 
+### swapMember(remove: `AccountId32`, add: `AccountId32`)
+- **interface**: `api.tx.technicalMembership.swapMember`
+- **summary**:    Swap out one member `remove` for another `add`. 
+
+   May only be called from `T::SwapOrigin`. 
+
+   Prime membership is *not* passed from `remove` to `add`, if extant. 
+
+___
+
+
+## timestamp
+ 
+### set(now: `Compact<u64>`)
+- **interface**: `api.tx.timestamp.set`
+- **summary**:    Set the current time. 
+
+   This call should be invoked exactly once per block. It will panic at the finalization  phase, if this call hasn't been invoked by that time. 
+
+   The timestamp should be greater than the previous one by the amount specified by  `MinimumPeriod`. 
+
+   The dispatch origin for this call must be `Inherent`. 
+
+    
+
+___
+
+
+## tips
+ 
+### closeTip(hash: `H256`)
+- **interface**: `api.tx.tips.closeTip`
+- **summary**:    Close and payout a tip. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   The tip identified by `hash` must have finished its countdown period. 
+
+   - `hash`: The identity of the open tip for which a tip value is declared. This is formed  as the hash of the tuple of the original tip `reason` and the beneficiary account ID. 
+
+    
+ 
+### reportAwesome(reason: `Bytes`, who: `AccountId32`)
+- **interface**: `api.tx.tips.reportAwesome`
+- **summary**:    Report something `reason` that deserves a tip and claim any eventual the finder's fee. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   Payment: `TipReportDepositBase` will be reserved from the origin account, as well as  `DataDepositPerByte` for each byte in `reason`. 
+
+   - `reason`: The reason for, or the thing that deserves, the tip; generally this will be  a UTF-8-encoded URL. 
+
+  - `who`: The account which should be credited for the tip.
+
+   Emits `NewTip` if successful. 
+
+    
+ 
+### retractTip(hash: `H256`)
+- **interface**: `api.tx.tips.retractTip`
+- **summary**:    Retract a prior tip-report from `report_awesome`, and cancel the process of tipping. 
+
+   If successful, the original deposit will be unreserved. 
+
+   The dispatch origin for this call must be _Signed_ and the tip identified by `hash`  must have been reported by the signing account through `report_awesome` (and not  through `tip_new`). 
+
+   - `hash`: The identity of the open tip for which a tip value is declared. This is formed  as the hash of the tuple of the original tip `reason` and the beneficiary account ID. 
+
+   Emits `TipRetracted` if successful. 
+
+    
+ 
+### slashTip(hash: `H256`)
+- **interface**: `api.tx.tips.slashTip`
+- **summary**:    Remove and slash an already-open tip. 
+
+   May only be called from `T::RejectOrigin`. 
+
+   As a result, the finder is slashed and the deposits are lost. 
+
+   Emits `TipSlashed` if successful. 
+
+    
+ 
+### tip(hash: `H256`, tip_value: `Compact<u128>`)
+- **interface**: `api.tx.tips.tip`
+- **summary**:    Declare a tip value for an already-open tip. 
+
+   The dispatch origin for this call must be _Signed_ and the signing account must be a  member of the `Tippers` set. 
+
+   - `hash`: The identity of the open tip for which a tip value is declared. This is formed  as the hash of the tuple of the hash of the original tip `reason` and the beneficiary  account ID. 
+
+  - `tip_value`: The amount of tip that the sender would like to give. The median tip value of active tippers will be given to the `who`. 
+
+   Emits `TipClosing` if the threshold of tippers has been reached and the countdown period  has started. 
+
+    
+ 
+### tipNew(reason: `Bytes`, who: `AccountId32`, tip_value: `Compact<u128>`)
+- **interface**: `api.tx.tips.tipNew`
+- **summary**:    Give a tip for something new; no finder's fee will be taken. 
+
+   The dispatch origin for this call must be _Signed_ and the signing account must be a  member of the `Tippers` set. 
+
+   - `reason`: The reason for, or the thing that deserves, the tip; generally this will be  a UTF-8-encoded URL. 
+
+  - `who`: The account which should be credited for the tip.
+
+  - `tip_value`: The amount of tip that the sender would like to give. The median tip value of active tippers will be given to the `who`. 
+
+   Emits `NewTip` if successful. 
+
+    
+
+___
+
+
+## treasury
+ 
+### approveProposal(proposal_id: `Compact<u32>`)
+- **interface**: `api.tx.treasury.approveProposal`
+- **summary**:    Approve a proposal. At a later time, the proposal will be allocated to the beneficiary  and the original deposit will be returned. 
+
+   May only be called from `T::ApproveOrigin`. 
+
+    
+ 
+### proposeSpend(value: `Compact<u128>`, beneficiary: `MultiAddress`)
+- **interface**: `api.tx.treasury.proposeSpend`
+- **summary**:    Put forward a suggestion for spending. A deposit proportional to the value  is reserved and slashed if the proposal is rejected. It is returned once the  proposal is awarded. 
+
+    
+ 
+### rejectProposal(proposal_id: `Compact<u32>`)
+- **interface**: `api.tx.treasury.rejectProposal`
+- **summary**:    Reject a proposed spend. The original deposit will be slashed. 
+
+   May only be called from `T::RejectOrigin`. 
+
+    
+
+___
+
+
+## uniques
+ 
+### approveTransfer(class: `Compact<u32>`, instance: `Compact<u32>`, delegate: `MultiAddress`)
+- **interface**: `api.tx.uniques.approveTransfer`
+- **summary**:    Approve an instance to be transferred by a delegated third-party account. 
+
+   Origin must be Signed and must be the owner of the asset `instance`. 
+
+   - `class`: The class of the asset to be approved for delegated transfer. 
+
+  - `instance`: The instance of the asset to be approved for delegated transfer.
+
+  - `delegate`: The account to delegate permission to transfer the asset.
+
+   Emits `ApprovedTransfer` on success. 
+
+   Weight: `O(1)` 
+ 
+### burn(class: `Compact<u32>`, instance: `Compact<u32>`, check_owner: `Option<MultiAddress>`)
+- **interface**: `api.tx.uniques.burn`
+- **summary**:    Destroy a single asset instance. 
+
+   Origin must be Signed and the sender should be the Admin of the asset `class`. 
+
+   - `class`: The class of the asset to be burned. 
+
+  - `instance`: The instance of the asset to be burned.
+
+  - `check_owner`: If `Some` then the operation will fail with `WrongOwner` unless the asset is owned by this value. 
+
+   Emits `Burned` with the actual amount burned. 
+
+   Weight: `O(1)`  Modes: `check_owner.is_some()`. 
+ 
+### cancelApproval(class: `Compact<u32>`, instance: `Compact<u32>`, maybe_check_delegate: `Option<MultiAddress>`)
+- **interface**: `api.tx.uniques.cancelApproval`
+- **summary**:    Cancel the prior approval for the transfer of an asset by a delegate. 
+
+   Origin must be either: 
+
+  - the `Force` origin;
+
+  - `Signed` with the signer being the Admin of the asset `class`;
+
+  - `Signed` with the signer being the Owner of the asset `instance`;
+
+   Arguments: 
+
+  - `class`: The class of the asset of whose approval will be cancelled.
+
+  - `instance`: The instance of the asset of whose approval will be cancelled.
+
+  - `maybe_check_delegate`: If `Some` will ensure that the given account is the one to which permission of transfer is delegated. 
+
+   Emits `ApprovalCancelled` on success. 
+
+   Weight: `O(1)` 
+ 
+### clearAttribute(class: `Compact<u32>`, maybe_instance: `Option<u32>`, key: `Bytes`)
+- **interface**: `api.tx.uniques.clearAttribute`
+- **summary**:    Set an attribute for an asset class or instance. 
+
+   Origin must be either `ForceOrigin` or Signed and the sender should be the Owner of the  asset `class`. 
+
+   If the origin is Signed, then funds of signer are reserved according to the formula:  `MetadataDepositBase + DepositPerByte * (key.len + value.len)` taking into  account any already reserved funds. 
+
+   - `class`: The identifier of the asset class whose instance's metadata to set. 
+
+  - `instance`: The identifier of the asset instance whose metadata to set.
+
+  - `key`: The key of the attribute.
+
+  - `value`: The value to which to set the attribute.
+
+   Emits `AttributeSet`. 
+
+   Weight: `O(1)` 
+ 
+### clearClassMetadata(class: `Compact<u32>`)
+- **interface**: `api.tx.uniques.clearClassMetadata`
+- **summary**:    Clear the metadata for an asset class. 
+
+   Origin must be either `ForceOrigin` or `Signed` and the sender should be the Owner of  the asset `class`. 
+
+   Any deposit is freed for the asset class owner. 
+
+   - `class`: The identifier of the asset class whose metadata to clear. 
+
+   Emits `ClassMetadataCleared`. 
+
+   Weight: `O(1)` 
+ 
+### clearMetadata(class: `Compact<u32>`, instance: `Compact<u32>`)
+- **interface**: `api.tx.uniques.clearMetadata`
+- **summary**:    Clear the metadata for an asset instance. 
+
+   Origin must be either `ForceOrigin` or Signed and the sender should be the Owner of the  asset `instance`. 
+
+   Any deposit is freed for the asset class owner. 
+
+   - `class`: The identifier of the asset class whose instance's metadata to clear. 
+
+  - `instance`: The identifier of the asset instance whose metadata to clear.
+
+   Emits `MetadataCleared`. 
+
+   Weight: `O(1)` 
+ 
+### create(class: `Compact<u32>`, admin: `MultiAddress`)
+- **interface**: `api.tx.uniques.create`
+- **summary**:    Issue a new class of non-fungible assets from a public origin. 
+
+   This new asset class has no assets initially and its owner is the origin. 
+
+   The origin must be Signed and the sender must have sufficient funds free. 
+
+   `AssetDeposit` funds of sender are reserved. 
+
+   Parameters: 
+
+  - `class`: The identifier of the new asset class. This must not be currently in use.
+
+  - `admin`: The admin of this class of assets. The admin is the initial address of each member of the asset class's admin team. 
+
+   Emits `Created` event when successful. 
+
+   Weight: `O(1)` 
+ 
+### destroy(class: `Compact<u32>`, witness: `PalletUniquesDestroyWitness`)
+- **interface**: `api.tx.uniques.destroy`
+- **summary**:    Destroy a class of fungible assets. 
+
+   The origin must conform to `ForceOrigin` or must be `Signed` and the sender must be the  owner of the asset `class`. 
+
+   - `class`: The identifier of the asset class to be destroyed. 
+
+  - `witness`: Information on the instances minted in the asset class. This must be correct. 
+
+   Emits `Destroyed` event when successful. 
+
+   Weight: `O(n + m)` where: 
+
+  - `n = witness.instances`
+
+  - `m = witness.instance_metadatas`
+
+  - `a = witness.attributes`
+ 
+### forceAssetStatus(class: `Compact<u32>`, owner: `MultiAddress`, issuer: `MultiAddress`, admin: `MultiAddress`, freezer: `MultiAddress`, free_holding: `bool`, is_frozen: `bool`)
+- **interface**: `api.tx.uniques.forceAssetStatus`
+- **summary**:    Alter the attributes of a given asset. 
+
+   Origin must be `ForceOrigin`. 
+
+   - `class`: The identifier of the asset. 
+
+  - `owner`: The new Owner of this asset.
+
+  - `issuer`: The new Issuer of this asset.
+
+  - `admin`: The new Admin of this asset.
+
+  - `freezer`: The new Freezer of this asset.
+
+  - `free_holding`: Whether a deposit is taken for holding an instance of this asset class. 
+
+  - `is_frozen`: Whether this asset class is frozen except for permissioned/admin instructions. 
+
+   Emits `AssetStatusChanged` with the identity of the asset. 
+
+   Weight: `O(1)` 
+ 
+### forceCreate(class: `Compact<u32>`, owner: `MultiAddress`, free_holding: `bool`)
+- **interface**: `api.tx.uniques.forceCreate`
+- **summary**:    Issue a new class of non-fungible assets from a privileged origin. 
+
+   This new asset class has no assets initially. 
+
+   The origin must conform to `ForceOrigin`. 
+
+   Unlike `create`, no funds are reserved. 
+
+   - `class`: The identifier of the new asset. This must not be currently in use. 
+
+  - `owner`: The owner of this class of assets. The owner has full superuser permissions over this asset, but may later change and configure the permissions using  `transfer_ownership` and `set_team`. 
+
+   Emits `ForceCreated` event when successful. 
+
+   Weight: `O(1)` 
+ 
+### freeze(class: `Compact<u32>`, instance: `Compact<u32>`)
+- **interface**: `api.tx.uniques.freeze`
+- **summary**:    Disallow further unprivileged transfer of an asset instance. 
+
+   Origin must be Signed and the sender should be the Freezer of the asset `class`. 
+
+   - `class`: The class of the asset to be frozen. 
+
+  - `instance`: The instance of the asset to be frozen.
+
+   Emits `Frozen`. 
+
+   Weight: `O(1)` 
+ 
+### freezeClass(class: `Compact<u32>`)
+- **interface**: `api.tx.uniques.freezeClass`
+- **summary**:    Disallow further unprivileged transfers for a whole asset class. 
+
+   Origin must be Signed and the sender should be the Freezer of the asset `class`. 
+
+   - `class`: The asset class to be frozen. 
+
+   Emits `ClassFrozen`. 
+
+   Weight: `O(1)` 
+ 
+### mint(class: `Compact<u32>`, instance: `Compact<u32>`, owner: `MultiAddress`)
+- **interface**: `api.tx.uniques.mint`
+- **summary**:    Mint an asset instance of a particular class. 
+
+   The origin must be Signed and the sender must be the Issuer of the asset `class`. 
+
+   - `class`: The class of the asset to be minted. 
+
+  - `instance`: The instance value of the asset to be minted.
+
+  - `beneficiary`: The initial owner of the minted asset.
+
+   Emits `Issued` event when successful. 
+
+   Weight: `O(1)` 
+ 
+### redeposit(class: `Compact<u32>`, instances: `Vec<u32>`)
+- **interface**: `api.tx.uniques.redeposit`
+- **summary**:    Reevaluate the deposits on some assets. 
+
+   Origin must be Signed and the sender should be the Owner of the asset `class`. 
+
+   - `class`: The class of the asset to be frozen. 
+
+  - `instances`: The instances of the asset class whose deposits will be reevaluated.
+
+   NOTE: This exists as a best-effort function. Any asset instances which are unknown or  in the case that the owner account does not have reservable funds to pay for a  deposit increase are ignored. Generally the owner isn't going to call this on instances  whose existing deposit is less than the refreshed deposit as it would only cost them,  so it's of little consequence. 
+
+   It will still return an error in the case that the class is unknown of the signer is  not permitted to call it. 
+
+   Weight: `O(instances.len())` 
+ 
+### setAttribute(class: `Compact<u32>`, maybe_instance: `Option<u32>`, key: `Bytes`, value: `Bytes`)
+- **interface**: `api.tx.uniques.setAttribute`
+- **summary**:    Set an attribute for an asset class or instance. 
+
+   Origin must be either `ForceOrigin` or Signed and the sender should be the Owner of the  asset `class`. 
+
+   If the origin is Signed, then funds of signer are reserved according to the formula:  `MetadataDepositBase + DepositPerByte * (key.len + value.len)` taking into  account any already reserved funds. 
+
+   - `class`: The identifier of the asset class whose instance's metadata to set. 
+
+  - `maybe_instance`: The identifier of the asset instance whose metadata to set.
+
+  - `key`: The key of the attribute.
+
+  - `value`: The value to which to set the attribute.
+
+   Emits `AttributeSet`. 
+
+   Weight: `O(1)` 
+ 
+### setClassMetadata(class: `Compact<u32>`, data: `Bytes`, is_frozen: `bool`)
+- **interface**: `api.tx.uniques.setClassMetadata`
+- **summary**:    Set the metadata for an asset class. 
+
+   Origin must be either `ForceOrigin` or `Signed` and the sender should be the Owner of  the asset `class`. 
+
+   If the origin is `Signed`, then funds of signer are reserved according to the formula:  `MetadataDepositBase + DepositPerByte * data.len` taking into  account any already reserved funds. 
+
+   - `class`: The identifier of the asset whose metadata to update. 
+
+  - `data`: The general information of this asset. Limited in length by `StringLimit`.
+
+  - `is_frozen`: Whether the metadata should be frozen against further changes.
+
+   Emits `ClassMetadataSet`. 
+
+   Weight: `O(1)` 
+ 
+### setMetadata(class: `Compact<u32>`, instance: `Compact<u32>`, data: `Bytes`, is_frozen: `bool`)
+- **interface**: `api.tx.uniques.setMetadata`
+- **summary**:    Set the metadata for an asset instance. 
+
+   Origin must be either `ForceOrigin` or Signed and the sender should be the Owner of the  asset `class`. 
+
+   If the origin is Signed, then funds of signer are reserved according to the formula:  `MetadataDepositBase + DepositPerByte * data.len` taking into  account any already reserved funds. 
+
+   - `class`: The identifier of the asset class whose instance's metadata to set. 
+
+  - `instance`: The identifier of the asset instance whose metadata to set.
+
+  - `data`: The general information of this asset. Limited in length by `StringLimit`.
+
+  - `is_frozen`: Whether the metadata should be frozen against further changes.
+
+   Emits `MetadataSet`. 
+
+   Weight: `O(1)` 
+ 
+### setTeam(class: `Compact<u32>`, issuer: `MultiAddress`, admin: `MultiAddress`, freezer: `MultiAddress`)
+- **interface**: `api.tx.uniques.setTeam`
+- **summary**:    Change the Issuer, Admin and Freezer of an asset class. 
+
+   Origin must be Signed and the sender should be the Owner of the asset `class`. 
+
+   - `class`: The asset class whose team should be changed. 
+
+  - `issuer`: The new Issuer of this asset class.
+
+  - `admin`: The new Admin of this asset class.
+
+  - `freezer`: The new Freezer of this asset class.
+
+   Emits `TeamChanged`. 
+
+   Weight: `O(1)` 
+ 
+### thaw(class: `Compact<u32>`, instance: `Compact<u32>`)
+- **interface**: `api.tx.uniques.thaw`
+- **summary**:    Re-allow unprivileged transfer of an asset instance. 
+
+   Origin must be Signed and the sender should be the Freezer of the asset `class`. 
+
+   - `class`: The class of the asset to be thawed. 
+
+  - `instance`: The instance of the asset to be thawed.
+
+   Emits `Thawed`. 
+
+   Weight: `O(1)` 
+ 
+### thawClass(class: `Compact<u32>`)
+- **interface**: `api.tx.uniques.thawClass`
+- **summary**:    Re-allow unprivileged transfers for a whole asset class. 
+
+   Origin must be Signed and the sender should be the Admin of the asset `class`. 
+
+   - `class`: The class to be thawed. 
+
+   Emits `ClassThawed`. 
+
+   Weight: `O(1)` 
+ 
+### transfer(class: `Compact<u32>`, instance: `Compact<u32>`, dest: `MultiAddress`)
+- **interface**: `api.tx.uniques.transfer`
+- **summary**:    Move an asset from the sender account to another. 
+
+   Origin must be Signed and the signing account must be either: 
+
+  - the Admin of the asset `class`;
+
+  - the Owner of the asset `instance`;
+
+  - the approved delegate for the asset `instance` (in this case, the approval is reset).
+
+   Arguments: 
+
+  - `class`: The class of the asset to be transferred.
+
+  - `instance`: The instance of the asset to be transferred.
+
+  - `dest`: The account to receive ownership of the asset.
+
+   Emits `Transferred`. 
+
+   Weight: `O(1)` 
+ 
+### transferOwnership(class: `Compact<u32>`, owner: `MultiAddress`)
+- **interface**: `api.tx.uniques.transferOwnership`
+- **summary**:    Change the Owner of an asset class. 
+
+   Origin must be Signed and the sender should be the Owner of the asset `class`. 
+
+   - `class`: The asset class whose owner should be changed. 
+
+  - `owner`: The new Owner of this asset class.
+
+   Emits `OwnerChanged`. 
+
+   Weight: `O(1)` 
+
+___
+
+
+## utility
+ 
+### asDerivative(index: `u16`, call: `Call`)
+- **interface**: `api.tx.utility.asDerivative`
+- **summary**:    Send a call through an indexed pseudonym of the sender. 
+
+   Filter from origin are passed along. The call will be dispatched with an origin which  use the same filter as the origin of this call. 
+
+   NOTE: If you need to ensure that any account-based filtering is not honored (i.e.  because you expect `proxy` to have been used prior in the call stack and you do not want  the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`  in the Multisig pallet instead. 
+
+   NOTE: Prior to version *12, this was called `as_limited_sub`. 
+
+   The dispatch origin for this call must be _Signed_. 
+ 
+### batch(calls: `Vec<Call>`)
+- **interface**: `api.tx.utility.batch`
+- **summary**:    Send a batch of dispatch calls. 
+
+   May be called from any origin. 
+
+   - `calls`: The calls to be dispatched from the same origin. The number of call must not  exceed the constant: `batched_calls_limit` (available in constant metadata). 
+
+   If origin is root then call are dispatch without checking origin filter. (This includes  bypassing `frame_system::Config::BaseCallFilter`). 
+
+    
+
+   This will return `Ok` in all circumstances. To determine the success of the batch, an  event is deposited. If a call failed and the batch was interrupted, then the  `BatchInterrupted` event is deposited, along with the number of successful calls made  and the error of the failed call. If all were successful, then the `BatchCompleted`  event is deposited. 
+ 
+### batchAll(calls: `Vec<Call>`)
+- **interface**: `api.tx.utility.batchAll`
+- **summary**:    Send a batch of dispatch calls and atomically execute them.  The whole transaction will rollback and fail if any of the calls failed. 
+
+   May be called from any origin. 
+
+   - `calls`: The calls to be dispatched from the same origin. The number of call must not  exceed the constant: `batched_calls_limit` (available in constant metadata). 
+
+   If origin is root then call are dispatch without checking origin filter. (This includes  bypassing `frame_system::Config::BaseCallFilter`). 
+
+    
+ 
+### dispatchAs(as_origin: `XxnetworkRuntimeOriginCaller`, call: `Call`)
+- **interface**: `api.tx.utility.dispatchAs`
+- **summary**:    Dispatches a function call with a provided origin. 
+
+   The dispatch origin for this call must be _Root_. 
+
+    
+
+___
+
+
+## vesting
+ 
+### forceVestedTransfer(source: `MultiAddress`, target: `MultiAddress`, schedule: `PalletVestingVestingInfo`)
+- **interface**: `api.tx.vesting.forceVestedTransfer`
+- **summary**:    Force a vested transfer. 
+
+   The dispatch origin for this call must be _Root_. 
+
+   - `source`: The account whose funds should be transferred. 
+
+  - `target`: The account that should be transferred the vested funds.
+
+  - `schedule`: The vesting schedule attached to the transfer.
+
+   Emits `VestingCreated`. 
+
+   NOTE: This will unlock all schedules through the current block. 
+
+    
+ 
+### mergeSchedules(schedule1_index: `u32`, schedule2_index: `u32`)
+- **interface**: `api.tx.vesting.mergeSchedules`
+- **summary**:    Merge two vesting schedules together, creating a new vesting schedule that unlocks over  the highest possible start and end blocks. If both schedules have already started the  current block will be used as the schedule start; with the caveat that if one schedule  is finished by the current block, the other will be treated as the new merged schedule,  unmodified. 
+
+   NOTE: If `schedule1_index == schedule2_index` this is a no-op.  NOTE: This will unlock all schedules through the current block prior to merging.  NOTE: If both schedules have ended by the current block, no new schedule will be created  and both will be removed. 
+
+   Merged schedule attributes: 
+
+  - `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block, current_block)`. 
+
+  - `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`.
+
+  - `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`.
+
+   The dispatch origin for this call must be _Signed_. 
+
+   - `schedule1_index`: index of the first schedule to merge. 
+
+  - `schedule2_index`: index of the second schedule to merge.
+ 
+### vest()
+- **interface**: `api.tx.vesting.vest`
+- **summary**:    Unlock any vested funds of the sender account. 
+
+   The dispatch origin for this call must be _Signed_ and the sender must have funds still  locked under this pallet. 
+
+   Emits either `VestingCompleted` or `VestingUpdated`. 
+
+    
+ 
+### vestOther(target: `MultiAddress`)
+- **interface**: `api.tx.vesting.vestOther`
+- **summary**:    Unlock any vested funds of a `target` account. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   - `target`: The account whose vested funds should be unlocked. Must have funds still  locked under this pallet. 
+
+   Emits either `VestingCompleted` or `VestingUpdated`. 
+
+    
+ 
+### vestedTransfer(target: `MultiAddress`, schedule: `PalletVestingVestingInfo`)
+- **interface**: `api.tx.vesting.vestedTransfer`
+- **summary**:    Create a vested transfer. 
+
+   The dispatch origin for this call must be _Signed_. 
+
+   - `target`: The account receiving the vested funds. 
+
+  - `schedule`: The vesting schedule attached to the transfer.
+
+   Emits `VestingCreated`. 
+
+   NOTE: This will unlock all schedules through the current block. 
+
+    
+
+___
+
+
+## xxBetanetRewards
+ 
+### approve()
+- **interface**: `api.tx.xxBetanetRewards.approve`
+- **summary**:    Approve the BetaNet Staking Rewards program 
+
+   The dispatch origin must be Root. 
+
+  
+ 
+### selectOption(option: `XxBetanetRewardsRewardOption`)
+- **interface**: `api.tx.xxBetanetRewards.selectOption`
+- **summary**:    Select desired option for BetaNet Staking Rewards 
+
+   Only callable by accounts that have rewards and no vesting period 
+
+  
+
+___
+
+
+## xxCmix
+ 
+### setAdminPermission(permission: `u32`)
+- **interface**: `api.tx.xxCmix.setAdminPermission`
+- **summary**:    Set admin permission 
+
+   `permission` is the block number up to which the AdminOrigin  will be allowed to call the `set_cmix_hashes` function.  It is expected that `permission` will be modified by Democracy  in 6-month periods. 
+
+    
+ 
+### setCmixAddressSpace(size: `u8`)
+- **interface**: `api.tx.xxCmix.setCmixAddressSpace`
+- **summary**:    Set cmix address space size 
+
+   The dispatch origin must be `SchedulingAccount` 
+
+    
+ 
+### setCmixHashes(hashes: `XxCmixCmixSoftwareHashes`)
+- **interface**: `api.tx.xxCmix.setCmixHashes`
+- **summary**:    Set cmix software hashes 
+
+   The dispatch origin must be AdminOrigin.  Furthermore, this call is only allowed if current block is lower than `AdminPermission`. 
+
+    
+ 
+### setNextCmixVariables(variables: `XxCmixCmixVariables`)
+- **interface**: `api.tx.xxCmix.setNextCmixVariables`
+- **summary**:    Set next cmix variables 
+
+   The dispatch origin must be `CmixVariablesOrigin`.  The new variables will be stored in `NextCmixVariables`.  Then, at the beginning of the next era, `NextCmixVariables` is emptied and the value  is written to `CmixVariables`. 
+
+    
+ 
+### setSchedulingAccount(who: `AccountId32`)
+- **interface**: `api.tx.xxCmix.setSchedulingAccount`
+- **summary**:    Set scheduling server account 
+
+   The dispatch origin must be AdminOrigin. 
+
+    
+ 
+### submitCmixDeductions(data: `Vec<(AccountId32,u32)>`)
+- **interface**: `api.tx.xxCmix.submitCmixDeductions`
+- **summary**:    Submit cmix performance points deductions 
+
+   `data` is a vector of tuples of (account, points)  The dispatch origin must be `SchedulingAccount` 
+
+    
+ 
+### submitCmixPoints(data: `Vec<(AccountId32,u32)>`)
+- **interface**: `api.tx.xxCmix.submitCmixPoints`
+- **summary**:    Submit cmix performance points 
+
+   `data` is a vector of tuples of (account, points)  The dispatch origin must be `SchedulingAccount` 
+
+    
+
+___
+
+
+## xxCustody
+ 
+### addCustodian(custodian: `AccountId32`)
+- **interface**: `api.tx.xxCustody.addCustodian`
+- **summary**:    Add a custodian account 
+
+   The dispatch origin must be AdminOrigin. 
+
+  
+ 
+### custodyBond(custody: `AccountId32`, controller: `AccountId32`, value: `Compact<u128>`)
+- **interface**: `api.tx.xxCustody.custodyBond`
+- **summary**:    Bond the given amount from the given custody account, with the specified controller 
+
+   During the Custody period, the function is callable by Custodians only. After the  Custody ends, the function is not callable anymore. 
+
+  
+ 
+### custodyBondExtra(custody: `AccountId32`, value: `Compact<u128>`)
+- **interface**: `api.tx.xxCustody.custodyBondExtra`
+- **summary**:    Bond extra amount from the given custody account 
+
+   During the Custody period, the function is callable by Custodians only. After the  Custody ends, the function is not callable anymore. 
+
+  
+ 
+### custodySetController(custody: `AccountId32`, controller: `AccountId32`)
+- **interface**: `api.tx.xxCustody.custodySetController`
+- **summary**:    Set the controller of a given custody account 
+
+   During the Custody period, the function is callable by Custodians only. After the  Custody ends, the function is not callable anymore. 
+
+  
+ 
+### custodySetProxy(custody: `AccountId32`, proxy: `AccountId32`)
+- **interface**: `api.tx.xxCustody.custodySetProxy`
+- **summary**:    Set the governance proxy of a given custody account 
+
+   Only one proxy account is allowed per custody account, so this function  removes any proxies first, and then adds the new proxy 
+
+   During the Governance Custody period, the function is callable by Custodians only.  After the Governance Custody ends, the function is not callable anymore. 
+
+  
+ 
+### payout(who: `AccountId32`)
+- **interface**: `api.tx.xxCustody.payout`
+- **summary**:    Payout the amount already vested to the given team member account 
+
+   Anyone can call this function since it is deterministic 
+
+  
+ 
+### removeCustodian(custodian: `AccountId32`)
+- **interface**: `api.tx.xxCustody.removeCustodian`
+- **summary**:    Remove a custodian account 
+
+   The dispatch origin must be AdminOrigin. 
+
+  
+ 
+### replaceTeamMember(who: `AccountId32`, new: `AccountId32`)
+- **interface**: `api.tx.xxCustody.replaceTeamMember`
+- **summary**:    Replace an existing team member account with a new account 
+
+   The dispatch origin must be AdminOrigin. 
+
+  
+ 
+### teamCustodySetProxy(proxy: `AccountId32`)
+- **interface**: `api.tx.xxCustody.teamCustodySetProxy`
+- **summary**:    Allow the team member to set a governance proxy of their own custody account 
+
+   During the Governance Custody period, the function is not callable.  After the Governance Custody ends, the function is callable by team members only. 
+
+  
+
+___
+
+
+## xxEconomics
+ 
+### setInflationParams(params: `XxEconomicsInflationInflationFixedParams`)
+- **interface**: `api.tx.xxEconomics.setInflationParams`
+- **summary**:    Set inflation fixed parameters 
+
+   The dispatch origin must be AdminOrigin. 
+
+  
+ 
+### setInterestPoints(points: `Vec<XxEconomicsInflationIdealInterestPoint>`)
+- **interface**: `api.tx.xxEconomics.setInterestPoints`
+- **summary**:    Set ideal interest points 
+
+   Overwrites the full list of points. Doesn't check if points are ordered per block.  It's up to the caller to ensure the ordering, otherwise leads to unexpected behavior. 
+
+   The dispatch origin must be AdminOrigin. 
+
+  
+ 
+### setLiquidityRewardsBalance(amount: `Compact<u128>`)
+- **interface**: `api.tx.xxEconomics.setLiquidityRewardsBalance`
+- **summary**:    Set balance of liquidity rewards 
+
+   The dispatch origin must be AdminOrigin.  This should only be used to make corrections to liquidity rewards balance  according to data from ETH chain 
+
+  
+ 
+### setLiquidityRewardsStake(amount: `Compact<u128>`)
+- **interface**: `api.tx.xxEconomics.setLiquidityRewardsStake`
+- **summary**:    Set ideal liquidity rewards stake amount 
+
+   The dispatch origin must be AdminOrigin.  This can be used to adjust the ideal liquidity reward stake 
+
+  
+
+___
+
+
+## xxPublic
+ 
+### saleDistribute(data: `Vec<XxPublicTransferData>`)
+- **interface**: `api.tx.xxPublic.saleDistribute`
+- **summary**:    Do a sale distribution 
+
+   `data` is a vector of TransferData  The dispatch origin must be `SaleManager` 
+
+  
+ 
+### setSaleManagerAccount(who: `AccountId32`)
+- **interface**: `api.tx.xxPublic.setSaleManagerAccount`
+- **summary**:    Set the Sale manager account 
+
+   The dispatch origin must be AdminOrigin. 
+
+  
+ 
+### setTestnetManagerAccount(who: `AccountId32`)
+- **interface**: `api.tx.xxPublic.setTestnetManagerAccount`
+- **summary**:    Set the Testnet manager account 
+
+   The dispatch origin must be AdminOrigin. 
+
+  
+ 
+### testnetDistribute(data: `Vec<XxPublicTransferData>`)
+- **interface**: `api.tx.xxPublic.testnetDistribute`
+- **summary**:    Do a tesnet distribution 
+
+   `data` is a vector of TransferData  The dispatch origin must be `TestnetManager` 
+
+  
diff --git a/website/docs/xxchain/API Documents/rpc.md b/website/docs/xxchain/API Documents/rpc.md
new file mode 100644
index 0000000000000000000000000000000000000000..dc733bbb57693ade265acaea4209e706803b5e51
--- /dev/null
+++ b/website/docs/xxchain/API Documents/rpc.md	
@@ -0,0 +1,794 @@
+---
+title: JSON-RPC
+---
+
+The following sections contain known RPC methods that may be available on specific nodes (depending on configuration and available pallets) and allow you to interact with the actual node, query, and submit.
+
+- **[author](#author)**
+
+- **[babe](#babe)**
+
+- **[beefy](#beefy)**
+
+- **[chain](#chain)**
+
+- **[childstate](#childstate)**
+
+- **[contracts](#contracts)**
+
+- **[dev](#dev)**
+
+- **[engine](#engine)**
+
+- **[eth](#eth)**
+
+- **[eth/net](#eth/net)**
+
+- **[eth/web3](#eth/web3)**
+
+- **[grandpa](#grandpa)**
+
+- **[mmr](#mmr)**
+
+- **[offchain](#offchain)**
+
+- **[payment](#payment)**
+
+- **[rpc](#rpc)**
+
+- **[state](#state)**
+
+- **[syncstate](#syncstate)**
+
+- **[system](#system)**
+
+
+___
+
+
+## author
+ 
+### hasKey(publicKey: `Bytes`, keyType: `Text`): `bool`
+- **interface**: `api.rpc.author.hasKey`
+- **jsonrpc**: `author_hasKey`
+- **summary**: Returns true if the keystore has private keys for the given public key and key type.
+ 
+### hasSessionKeys(sessionKeys: `Bytes`): `bool`
+- **interface**: `api.rpc.author.hasSessionKeys`
+- **jsonrpc**: `author_hasSessionKeys`
+- **summary**: Returns true if the keystore has private keys for the given session public keys.
+ 
+### insertKey(keyType: `Text`, suri: `Text`, publicKey: `Bytes`): `Bytes`
+- **interface**: `api.rpc.author.insertKey`
+- **jsonrpc**: `author_insertKey`
+- **summary**: Insert a key into the keystore.
+ 
+### pendingExtrinsics(): `Vec<Extrinsic>`
+- **interface**: `api.rpc.author.pendingExtrinsics`
+- **jsonrpc**: `author_pendingExtrinsics`
+- **summary**: Returns all pending extrinsics, potentially grouped by sender
+ 
+### removeExtrinsic(bytesOrHash: `Vec<ExtrinsicOrHash>`): `Vec<Hash>`
+- **interface**: `api.rpc.author.removeExtrinsic`
+- **jsonrpc**: `author_removeExtrinsic`
+- **summary**: Remove given extrinsic from the pool and temporarily ban it to prevent reimporting
+ 
+### rotateKeys(): `Bytes`
+- **interface**: `api.rpc.author.rotateKeys`
+- **jsonrpc**: `author_rotateKeys`
+- **summary**: Generate new session keys and returns the corresponding public keys
+ 
+### submitAndWatchExtrinsic(extrinsic: `Extrinsic`): `ExtrinsicStatus`
+- **interface**: `api.rpc.author.submitAndWatchExtrinsic`
+- **jsonrpc**: `author_submitAndWatchExtrinsic`
+- **summary**: Submit and subscribe to watch an extrinsic until unsubscribed
+ 
+### submitExtrinsic(extrinsic: `Extrinsic`): `Hash`
+- **interface**: `api.rpc.author.submitExtrinsic`
+- **jsonrpc**: `author_submitExtrinsic`
+- **summary**: Submit a fully formatted extrinsic for block inclusion
+
+___
+
+
+## babe
+ 
+### epochAuthorship(): `HashMap<AuthorityId, EpochAuthorship>`
+- **interface**: `api.rpc.babe.epochAuthorship`
+- **jsonrpc**: `babe_epochAuthorship`
+- **summary**: Returns data about which slots (primary or secondary) can be claimed in the current epoch with the keys in the keystore
+
+___
+
+
+## beefy
+ 
+### getFinalizedHead(): `H256`
+- **interface**: `api.rpc.beefy.getFinalizedHead`
+- **jsonrpc**: `beefy_getFinalizedHead`
+- **summary**: Returns hash of the latest BEEFY finalized block as seen by this client.
+ 
+### subscribeJustifications(): `BeefySignedCommitment`
+- **interface**: `api.rpc.beefy.subscribeJustifications`
+- **jsonrpc**: `beefy_subscribeJustifications`
+- **summary**: Returns the block most recently finalized by BEEFY, alongside side its justification.
+
+___
+
+
+## chain
+ 
+### getBlock(hash?: `BlockHash`): `SignedBlock`
+- **interface**: `api.rpc.chain.getBlock`
+- **jsonrpc**: `chain_getBlock`
+- **summary**: Get header and body of a relay chain block
+ 
+### getBlockHash(blockNumber?: `BlockNumber`): `BlockHash`
+- **interface**: `api.rpc.chain.getBlockHash`
+- **jsonrpc**: `chain_getBlockHash`
+- **summary**: Get the block hash for a specific block
+ 
+### getFinalizedHead(): `BlockHash`
+- **interface**: `api.rpc.chain.getFinalizedHead`
+- **jsonrpc**: `chain_getFinalizedHead`
+- **summary**: Get hash of the last finalized block in the canon chain
+ 
+### getHeader(hash?: `BlockHash`): `Header`
+- **interface**: `api.rpc.chain.getHeader`
+- **jsonrpc**: `chain_getHeader`
+- **summary**: Retrieves the header for a specific block
+ 
+### subscribeAllHeads(): `Header`
+- **interface**: `api.rpc.chain.subscribeAllHeads`
+- **jsonrpc**: `chain_subscribeAllHeads`
+- **summary**: Retrieves the newest header via subscription
+ 
+### subscribeFinalizedHeads(): `Header`
+- **interface**: `api.rpc.chain.subscribeFinalizedHeads`
+- **jsonrpc**: `chain_subscribeFinalizedHeads`
+- **summary**: Retrieves the best finalized header via subscription
+ 
+### subscribeNewHeads(): `Header`
+- **interface**: `api.rpc.chain.subscribeNewHeads`
+- **jsonrpc**: `chain_subscribeNewHeads`
+- **summary**: Retrieves the best header via subscription
+
+___
+
+
+## childstate
+ 
+### getKeys(childKey: `PrefixedStorageKey`, prefix: `StorageKey`, at?: `Hash`): `Vec<StorageKey>`
+- **interface**: `api.rpc.childstate.getKeys`
+- **jsonrpc**: `childstate_getKeys`
+- **summary**: Returns the keys with prefix from a child storage, leave empty to get all the keys
+ 
+### getKeysPaged(childKey: `PrefixedStorageKey`, prefix: `StorageKey`, count: `u32`, startKey?: `StorageKey`, at?: `Hash`): `Vec<StorageKey>`
+- **interface**: `api.rpc.childstate.getKeysPaged`
+- **jsonrpc**: `childstate_getKeysPaged`
+- **summary**: Returns the keys with prefix from a child storage with pagination support
+ 
+### getStorage(childKey: `PrefixedStorageKey`, key: `StorageKey`, at?: `Hash`): `Option<StorageData>`
+- **interface**: `api.rpc.childstate.getStorage`
+- **jsonrpc**: `childstate_getStorage`
+- **summary**: Returns a child storage entry at a specific block state
+ 
+### getStorageEntries(childKey: `PrefixedStorageKey`, keys: `Vec<StorageKey>`, at?: `Hash`): `Vec<Option<StorageData>>`
+- **interface**: `api.rpc.childstate.getStorageEntries`
+- **jsonrpc**: `childstate_getStorageEntries`
+- **summary**: Returns child storage entries for multiple keys at a specific block state
+ 
+### getStorageHash(childKey: `PrefixedStorageKey`, key: `StorageKey`, at?: `Hash`): `Option<Hash>`
+- **interface**: `api.rpc.childstate.getStorageHash`
+- **jsonrpc**: `childstate_getStorageHash`
+- **summary**: Returns the hash of a child storage entry at a block state
+ 
+### getStorageSize(childKey: `PrefixedStorageKey`, key: `StorageKey`, at?: `Hash`): `Option<u64>`
+- **interface**: `api.rpc.childstate.getStorageSize`
+- **jsonrpc**: `childstate_getStorageSize`
+- **summary**: Returns the size of a child storage entry at a block state
+
+___
+
+
+## contracts
+ 
+### call(callRequest: `ContractCallRequest`, at?: `BlockHash`): `ContractExecResult`
+- **interface**: `api.rpc.contracts.call`
+- **jsonrpc**: `contracts_call`
+- **summary**: Executes a call to a contract
+ 
+### getStorage(address: `AccountId`, key: `H256`, at?: `BlockHash`): `Option<Bytes>`
+- **interface**: `api.rpc.contracts.getStorage`
+- **jsonrpc**: `contracts_getStorage`
+- **summary**: Returns the value under a specified storage key in a contract
+ 
+### instantiate(request: `InstantiateRequest`, at?: `BlockHash`): `ContractInstantiateResult`
+- **interface**: `api.rpc.contracts.instantiate`
+- **jsonrpc**: `contracts_instantiate`
+- **summary**: Instantiate a new contract
+ 
+### rentProjection(address: `AccountId`, at?: `BlockHash`): `Option<BlockNumber>`
+- **interface**: `api.rpc.contracts.rentProjection`
+- **jsonrpc**: `contracts_rentProjection`
+- **summary**: Returns the projected time a given contract will be able to sustain paying its rent
+ 
+### uploadCode(uploadRequest: `CodeUploadRequest`, at?: `BlockHash`): `CodeUploadResult`
+- **interface**: `api.rpc.contracts.uploadCode`
+- **jsonrpc**: `contracts_upload_code`
+- **summary**: Upload new code without instantiating a contract from it
+
+___
+
+
+## dev
+ 
+### getBlockStats(at: `Hash`): `Option<BlockStats>`
+- **interface**: `api.rpc.dev.getBlockStats`
+- **jsonrpc**: `dev_getBlockStats`
+- **summary**: Reexecute the specified `block_hash` and gather statistics while doing so
+
+___
+
+
+## engine
+ 
+### createBlock(createEmpty: `bool`, finalize: `bool`, parentHash?: `BlockHash`): `CreatedBlock`
+- **interface**: `api.rpc.engine.createBlock`
+- **jsonrpc**: `engine_createBlock`
+- **summary**: Instructs the manual-seal authorship task to create a new block
+ 
+### finalizeBlock(hash: `BlockHash`, justification?: `Justification`): `bool`
+- **interface**: `api.rpc.engine.finalizeBlock`
+- **jsonrpc**: `engine_finalizeBlock`
+- **summary**: Instructs the manual-seal authorship task to finalize a block
+
+___
+
+
+## eth
+ 
+### accounts(): `Vec<H160>`
+- **interface**: `api.rpc.eth.accounts`
+- **jsonrpc**: `eth_accounts`
+- **summary**: Returns accounts list.
+ 
+### blockNumber(): `U256`
+- **interface**: `api.rpc.eth.blockNumber`
+- **jsonrpc**: `eth_blockNumber`
+- **summary**: Returns the blockNumber
+ 
+### call(request: `EthCallRequest`, number?: `BlockNumber`): `Bytes`
+- **interface**: `api.rpc.eth.call`
+- **jsonrpc**: `eth_call`
+- **summary**: Call contract, returning the output data.
+ 
+### chainId(): `U64`
+- **interface**: `api.rpc.eth.chainId`
+- **jsonrpc**: `eth_chainId`
+- **summary**: Returns the chain ID used for transaction signing at the current best block. None is returned if not available.
+ 
+### coinbase(): `H160`
+- **interface**: `api.rpc.eth.coinbase`
+- **jsonrpc**: `eth_coinbase`
+- **summary**: Returns block author.
+ 
+### estimateGas(request: `EthCallRequest`, number?: `BlockNumber`): `U256`
+- **interface**: `api.rpc.eth.estimateGas`
+- **jsonrpc**: `eth_estimateGas`
+- **summary**: Estimate gas needed for execution of given contract.
+ 
+### feeHistory(blockCount: `U256`, newestBlock: `BlockNumber`, rewardPercentiles: `Option<Vec<f64>>`): `EthFeeHistory`
+- **interface**: `api.rpc.eth.feeHistory`
+- **jsonrpc**: `eth_feeHistory`
+- **summary**: Returns fee history for given block count & reward percentiles
+ 
+### gasPrice(): `U256`
+- **interface**: `api.rpc.eth.gasPrice`
+- **jsonrpc**: `eth_gasPrice`
+- **summary**: Returns current gas price.
+ 
+### getBalance(address: `H160`, number?: `BlockNumber`): `U256`
+- **interface**: `api.rpc.eth.getBalance`
+- **jsonrpc**: `eth_getBalance`
+- **summary**: Returns balance of the given account.
+ 
+### getBlockByHash(hash: `H256`, full: `bool`): `Option<EthRichBlock>`
+- **interface**: `api.rpc.eth.getBlockByHash`
+- **jsonrpc**: `eth_getBlockByHash`
+- **summary**: Returns block with given hash.
+ 
+### getBlockByNumber(block: `BlockNumber`, full: `bool`): `Option<EthRichBlock>`
+- **interface**: `api.rpc.eth.getBlockByNumber`
+- **jsonrpc**: `eth_getBlockByNumber`
+- **summary**: Returns block with given number.
+ 
+### getBlockTransactionCountByHash(hash: `H256`): `U256`
+- **interface**: `api.rpc.eth.getBlockTransactionCountByHash`
+- **jsonrpc**: `eth_getBlockTransactionCountByHash`
+- **summary**: Returns the number of transactions in a block with given hash.
+ 
+### getBlockTransactionCountByNumber(block: `BlockNumber`): `U256`
+- **interface**: `api.rpc.eth.getBlockTransactionCountByNumber`
+- **jsonrpc**: `eth_getBlockTransactionCountByNumber`
+- **summary**: Returns the number of transactions in a block with given block number.
+ 
+### getCode(address: `H160`, number?: `BlockNumber`): `Bytes`
+- **interface**: `api.rpc.eth.getCode`
+- **jsonrpc**: `eth_getCode`
+- **summary**: Returns the code at given address at given time (block number).
+ 
+### getFilterChanges(index: `U256`): `EthFilterChanges`
+- **interface**: `api.rpc.eth.getFilterChanges`
+- **jsonrpc**: `eth_getFilterChanges`
+- **summary**: Returns filter changes since last poll.
+ 
+### getFilterLogs(index: `U256`): `Vec<EthLog>`
+- **interface**: `api.rpc.eth.getFilterLogs`
+- **jsonrpc**: `eth_getFilterLogs`
+- **summary**: Returns all logs matching given filter (in a range 'from' - 'to').
+ 
+### getLogs(filter: `EthFilter`): `Vec<EthLog>`
+- **interface**: `api.rpc.eth.getLogs`
+- **jsonrpc**: `eth_getLogs`
+- **summary**: Returns logs matching given filter object.
+ 
+### getProof(address: `H160`, storageKeys: `Vec<H256>`, number: `BlockNumber`): `EthAccount`
+- **interface**: `api.rpc.eth.getProof`
+- **jsonrpc**: `eth_getProof`
+- **summary**: Returns proof for account and storage.
+ 
+### getStorageAt(address: `H160`, index: `U256`, number?: `BlockNumber`): `H256`
+- **interface**: `api.rpc.eth.getStorageAt`
+- **jsonrpc**: `eth_getStorageAt`
+- **summary**: Returns content of the storage at given address.
+ 
+### getTransactionByBlockHashAndIndex(hash: `H256`, index: `U256`): `EthTransaction`
+- **interface**: `api.rpc.eth.getTransactionByBlockHashAndIndex`
+- **jsonrpc**: `eth_getTransactionByBlockHashAndIndex`
+- **summary**: Returns transaction at given block hash and index.
+ 
+### getTransactionByBlockNumberAndIndex(number: `BlockNumber`, index: `U256`): `EthTransaction`
+- **interface**: `api.rpc.eth.getTransactionByBlockNumberAndIndex`
+- **jsonrpc**: `eth_getTransactionByBlockNumberAndIndex`
+- **summary**: Returns transaction by given block number and index.
+ 
+### getTransactionByHash(hash: `H256`): `EthTransaction`
+- **interface**: `api.rpc.eth.getTransactionByHash`
+- **jsonrpc**: `eth_getTransactionByHash`
+- **summary**: Get transaction by its hash.
+ 
+### getTransactionCount(hash: `H256`, number?: `BlockNumber`): `U256`
+- **interface**: `api.rpc.eth.getTransactionCount`
+- **jsonrpc**: `eth_getTransactionCount`
+- **summary**: Returns the number of transactions sent from given address at given time (block number).
+ 
+### getTransactionReceipt(hash: `H256`): `EthReceipt`
+- **interface**: `api.rpc.eth.getTransactionReceipt`
+- **jsonrpc**: `eth_getTransactionReceipt`
+- **summary**: Returns transaction receipt by transaction hash.
+ 
+### getUncleByBlockHashAndIndex(hash: `H256`, index: `U256`): `EthRichBlock`
+- **interface**: `api.rpc.eth.getUncleByBlockHashAndIndex`
+- **jsonrpc**: `eth_getUncleByBlockHashAndIndex`
+- **summary**: Returns an uncles at given block and index.
+ 
+### getUncleByBlockNumberAndIndex(number: `BlockNumber`, index: `U256`): `EthRichBlock`
+- **interface**: `api.rpc.eth.getUncleByBlockNumberAndIndex`
+- **jsonrpc**: `eth_getUncleByBlockNumberAndIndex`
+- **summary**: Returns an uncles at given block and index.
+ 
+### getUncleCountByBlockHash(hash: `H256`): `U256`
+- **interface**: `api.rpc.eth.getUncleCountByBlockHash`
+- **jsonrpc**: `eth_getUncleCountByBlockHash`
+- **summary**: Returns the number of uncles in a block with given hash.
+ 
+### getUncleCountByBlockNumber(number: `BlockNumber`): `U256`
+- **interface**: `api.rpc.eth.getUncleCountByBlockNumber`
+- **jsonrpc**: `eth_getUncleCountByBlockNumber`
+- **summary**: Returns the number of uncles in a block with given block number.
+ 
+### getWork(): `EthWork`
+- **interface**: `api.rpc.eth.getWork`
+- **jsonrpc**: `eth_getWork`
+- **summary**: Returns the hash of the current block, the seedHash, and the boundary condition to be met.
+ 
+### hashrate(): `U256`
+- **interface**: `api.rpc.eth.hashrate`
+- **jsonrpc**: `eth_hashrate`
+- **summary**: Returns the number of hashes per second that the node is mining with.
+ 
+### maxPriorityFeePerGas(): `U256`
+- **interface**: `api.rpc.eth.maxPriorityFeePerGas`
+- **jsonrpc**: `eth_maxPriorityFeePerGas`
+- **summary**: Returns max priority fee per gas
+ 
+### mining(): `bool`
+- **interface**: `api.rpc.eth.mining`
+- **jsonrpc**: `eth_mining`
+- **summary**: Returns true if client is actively mining new blocks.
+ 
+### newBlockFilter(): `U256`
+- **interface**: `api.rpc.eth.newBlockFilter`
+- **jsonrpc**: `eth_newBlockFilter`
+- **summary**: Returns id of new block filter.
+ 
+### newFilter(filter: `EthFilter`): `U256`
+- **interface**: `api.rpc.eth.newFilter`
+- **jsonrpc**: `eth_newFilter`
+- **summary**: Returns id of new filter.
+ 
+### newPendingTransactionFilter(): `U256`
+- **interface**: `api.rpc.eth.newPendingTransactionFilter`
+- **jsonrpc**: `eth_newPendingTransactionFilter`
+- **summary**: Returns id of new block filter.
+ 
+### protocolVersion(): `u64`
+- **interface**: `api.rpc.eth.protocolVersion`
+- **jsonrpc**: `eth_protocolVersion`
+- **summary**: Returns protocol version encoded as a string (quotes are necessary).
+ 
+### sendRawTransaction(bytes: `Bytes`): `H256`
+- **interface**: `api.rpc.eth.sendRawTransaction`
+- **jsonrpc**: `eth_sendRawTransaction`
+- **summary**: Sends signed transaction, returning its hash.
+ 
+### sendTransaction(tx: `EthTransactionRequest`): `H256`
+- **interface**: `api.rpc.eth.sendTransaction`
+- **jsonrpc**: `eth_sendTransaction`
+- **summary**: Sends transaction; will block waiting for signer to return the transaction hash
+ 
+### submitHashrate(index: `U256`, hash: `H256`): `bool`
+- **interface**: `api.rpc.eth.submitHashrate`
+- **jsonrpc**: `eth_submitHashrate`
+- **summary**: Used for submitting mining hashrate.
+ 
+### submitWork(nonce: `H64`, headerHash: `H256`, mixDigest: `H256`): `bool`
+- **interface**: `api.rpc.eth.submitWork`
+- **jsonrpc**: `eth_submitWork`
+- **summary**: Used for submitting a proof-of-work solution.
+ 
+### subscribe(kind: `EthSubKind`, params?: `EthSubParams`): `Null`
+- **interface**: `api.rpc.eth.subscribe`
+- **jsonrpc**: `eth_subscribe`
+- **summary**: Subscribe to Eth subscription.
+ 
+### syncing(): `EthSyncStatus`
+- **interface**: `api.rpc.eth.syncing`
+- **jsonrpc**: `eth_syncing`
+- **summary**: Returns an object with data about the sync status or false.
+ 
+### uninstallFilter(index: `U256`): `bool`
+- **interface**: `api.rpc.eth.uninstallFilter`
+- **jsonrpc**: `eth_uninstallFilter`
+- **summary**: Uninstalls filter.
+
+___
+
+
+## eth/net
+ 
+### listening(): `bool`
+- **interface**: `api.rpc.net.listening`
+- **jsonrpc**: `net_listening`
+- **summary**: Returns true if client is actively listening for network connections. Otherwise false.
+ 
+### peerCount(): `String`
+- **interface**: `api.rpc.net.peerCount`
+- **jsonrpc**: `net_peerCount`
+- **summary**: Returns number of peers connected to node.
+ 
+### version(): `String`
+- **interface**: `api.rpc.net.version`
+- **jsonrpc**: `net_version`
+- **summary**: Returns protocol version.
+
+___
+
+
+## eth/web3
+ 
+### clientVersion(): `String`
+- **interface**: `api.rpc.web3.clientVersion`
+- **jsonrpc**: `web3_clientVersion`
+- **summary**: Returns current client version.
+ 
+### sha3(data: `Bytes`): `H256`
+- **interface**: `api.rpc.web3.sha3`
+- **jsonrpc**: `web3_sha3`
+- **summary**: Returns sha3 of the given data
+
+___
+
+
+## grandpa
+ 
+### proveFinality(blockNumber: `BlockNumber`): `Option<EncodedFinalityProofs>`
+- **interface**: `api.rpc.grandpa.proveFinality`
+- **jsonrpc**: `grandpa_proveFinality`
+- **summary**: Prove finality for the given block number, returning the Justification for the last block in the set.
+ 
+### roundState(): `ReportedRoundStates`
+- **interface**: `api.rpc.grandpa.roundState`
+- **jsonrpc**: `grandpa_roundState`
+- **summary**: Returns the state of the current best round state as well as the ongoing background rounds
+ 
+### subscribeJustifications(): `JustificationNotification`
+- **interface**: `api.rpc.grandpa.subscribeJustifications`
+- **jsonrpc**: `grandpa_subscribeJustifications`
+- **summary**: Subscribes to grandpa justifications
+
+___
+
+
+## mmr
+ 
+### generateBatchProof(leafIndices: `Vec<u64>`, at?: `BlockHash`): `MmrLeafProof`
+- **interface**: `api.rpc.mmr.generateBatchProof`
+- **jsonrpc**: `mmr_generateBatchProof`
+- **summary**: Generate MMR proof for the given leaf indices.
+ 
+### generateProof(leafIndex: `u64`, at?: `BlockHash`): `MmrLeafBatchProof`
+- **interface**: `api.rpc.mmr.generateProof`
+- **jsonrpc**: `mmr_generateProof`
+- **summary**: Generate MMR proof for given leaf index.
+
+___
+
+
+## offchain
+ 
+### localStorageGet(kind: `StorageKind`, key: `Bytes`): `Option<Bytes>`
+- **interface**: `api.rpc.offchain.localStorageGet`
+- **jsonrpc**: `offchain_localStorageGet`
+- **summary**: Get offchain local storage under given key and prefix
+ 
+### localStorageSet(kind: `StorageKind`, key: `Bytes`, value: `Bytes`): `Null`
+- **interface**: `api.rpc.offchain.localStorageSet`
+- **jsonrpc**: `offchain_localStorageSet`
+- **summary**: Set offchain local storage under given key and prefix
+
+___
+
+
+## payment
+ 
+### queryFeeDetails(extrinsic: `Bytes`, at?: `BlockHash`): `FeeDetails`
+- **interface**: `api.rpc.payment.queryFeeDetails`
+- **jsonrpc**: `payment_queryFeeDetails`
+- **summary**: Query the detailed fee of a given encoded extrinsic
+ 
+### queryInfo(extrinsic: `Bytes`, at?: `BlockHash`): `RuntimeDispatchInfo`
+- **interface**: `api.rpc.payment.queryInfo`
+- **jsonrpc**: `payment_queryInfo`
+- **summary**: Retrieves the fee information for an encoded extrinsic
+
+___
+
+
+## rpc
+ 
+### methods(): `RpcMethods`
+- **interface**: `api.rpc.rpc.methods`
+- **jsonrpc**: `rpc_methods`
+- **summary**: Retrieves the list of RPC methods that are exposed by the node
+
+___
+
+
+## state
+ 
+### call(method: `Text`, data: `Bytes`, at?: `BlockHash`): `Bytes`
+- **interface**: `api.rpc.state.call`
+- **jsonrpc**: `state_call`
+- **summary**: Perform a call to a builtin on the chain
+ 
+### getChildKeys(childStorageKey: `StorageKey`, childDefinition: `StorageKey`, childType: `u32`, key: `StorageKey`, at?: `BlockHash`): `Vec<StorageKey>`
+- **interface**: `api.rpc.state.getChildKeys`
+- **jsonrpc**: `state_getChildKeys`
+- **summary**: Retrieves the keys with prefix of a specific child storage
+ 
+### getChildReadProof(childStorageKey: `PrefixedStorageKey`, keys: `Vec<StorageKey>`, at?: `BlockHash`): `ReadProof`
+- **interface**: `api.rpc.state.getChildReadProof`
+- **jsonrpc**: `state_getChildReadProof`
+- **summary**: Returns proof of storage for child key entries at a specific block state.
+ 
+### getChildStorage(childStorageKey: `StorageKey`, childDefinition: `StorageKey`, childType: `u32`, key: `StorageKey`, at?: `BlockHash`): `StorageData`
+- **interface**: `api.rpc.state.getChildStorage`
+- **jsonrpc**: `state_getChildStorage`
+- **summary**: Retrieves the child storage for a key
+ 
+### getChildStorageHash(childStorageKey: `StorageKey`, childDefinition: `StorageKey`, childType: `u32`, key: `StorageKey`, at?: `BlockHash`): `Hash`
+- **interface**: `api.rpc.state.getChildStorageHash`
+- **jsonrpc**: `state_getChildStorageHash`
+- **summary**: Retrieves the child storage hash
+ 
+### getChildStorageSize(childStorageKey: `StorageKey`, childDefinition: `StorageKey`, childType: `u32`, key: `StorageKey`, at?: `BlockHash`): `u64`
+- **interface**: `api.rpc.state.getChildStorageSize`
+- **jsonrpc**: `state_getChildStorageSize`
+- **summary**: Retrieves the child storage size
+ 
+### getKeys(key: `StorageKey`, at?: `BlockHash`): `Vec<StorageKey>`
+- **interface**: `api.rpc.state.getKeys`
+- **jsonrpc**: `state_getKeys`
+- **summary**: Retrieves the keys with a certain prefix
+ 
+### getKeysPaged(key: `StorageKey`, count: `u32`, startKey?: `StorageKey`, at?: `BlockHash`): `Vec<StorageKey>`
+- **interface**: `api.rpc.state.getKeysPaged`
+- **jsonrpc**: `state_getKeysPaged`
+- **summary**: Returns the keys with prefix with pagination support.
+ 
+### getMetadata(at?: `BlockHash`): `Metadata`
+- **interface**: `api.rpc.state.getMetadata`
+- **jsonrpc**: `state_getMetadata`
+- **summary**: Returns the runtime metadata
+ 
+### getPairs(prefix: `StorageKey`, at?: `BlockHash`): `Vec<KeyValue>`
+- **interface**: `api.rpc.state.getPairs`
+- **jsonrpc**: `state_getPairs`
+- **summary**: Returns the keys with prefix, leave empty to get all the keys (deprecated: Use getKeysPaged)
+ 
+### getReadProof(keys: `Vec<StorageKey>`, at?: `BlockHash`): `ReadProof`
+- **interface**: `api.rpc.state.getReadProof`
+- **jsonrpc**: `state_getReadProof`
+- **summary**: Returns proof of storage entries at a specific block state
+ 
+### getRuntimeVersion(at?: `BlockHash`): `RuntimeVersion`
+- **interface**: `api.rpc.state.getRuntimeVersion`
+- **jsonrpc**: `state_getRuntimeVersion`
+- **summary**: Get the runtime version
+ 
+### getStorage(key: `StorageKey`, at?: `BlockHash`): `StorageData`
+- **interface**: `api.rpc.state.getStorage`
+- **jsonrpc**: `state_getStorage`
+- **summary**: Retrieves the storage for a key
+ 
+### getStorageHash(key: `StorageKey`, at?: `BlockHash`): `Hash`
+- **interface**: `api.rpc.state.getStorageHash`
+- **jsonrpc**: `state_getStorageHash`
+- **summary**: Retrieves the storage hash
+ 
+### getStorageSize(key: `StorageKey`, at?: `BlockHash`): `u64`
+- **interface**: `api.rpc.state.getStorageSize`
+- **jsonrpc**: `state_getStorageSize`
+- **summary**: Retrieves the storage size
+ 
+### queryStorage(keys: `Vec<StorageKey>`, fromBlock: `Hash`, toBlock?: `BlockHash`): `Vec<StorageChangeSet>`
+- **interface**: `api.rpc.state.queryStorage`
+- **jsonrpc**: `state_queryStorage`
+- **summary**: Query historical storage entries (by key) starting from a start block
+ 
+### queryStorageAt(keys: `Vec<StorageKey>`, at?: `BlockHash`): `Vec<StorageChangeSet>`
+- **interface**: `api.rpc.state.queryStorageAt`
+- **jsonrpc**: `state_queryStorageAt`
+- **summary**: Query storage entries (by key) starting at block hash given as the second parameter
+ 
+### subscribeRuntimeVersion(): `RuntimeVersion`
+- **interface**: `api.rpc.state.subscribeRuntimeVersion`
+- **jsonrpc**: `state_subscribeRuntimeVersion`
+- **summary**: Retrieves the runtime version via subscription
+ 
+### subscribeStorage(keys?: `Vec<StorageKey>`): `StorageChangeSet`
+- **interface**: `api.rpc.state.subscribeStorage`
+- **jsonrpc**: `state_subscribeStorage`
+- **summary**: Subscribes to storage changes for the provided keys
+ 
+### traceBlock(block: `Hash`, targets: `Option<Text>`, storageKeys: `Option<Text>`, methods: `Option<Text>`): `TraceBlockResponse`
+- **interface**: `api.rpc.state.traceBlock`
+- **jsonrpc**: `state_traceBlock`
+- **summary**: Provides a way to trace the re-execution of a single block
+ 
+### trieMigrationStatus(at?: `BlockHash`): `MigrationStatusResult`
+- **interface**: `api.rpc.state.trieMigrationStatus`
+- **jsonrpc**: `state_trieMigrationStatus`
+- **summary**: Check current migration state
+
+___
+
+
+## syncstate
+ 
+### genSyncSpec(raw: `bool`): `Json`
+- **interface**: `api.rpc.syncstate.genSyncSpec`
+- **jsonrpc**: `sync_state_genSyncSpec`
+- **summary**: Returns the json-serialized chainspec running the node, with a sync state.
+
+___
+
+
+## system
+ 
+### accountNextIndex(accountId: `AccountId`): `Index`
+- **interface**: `api.rpc.system.accountNextIndex`
+- **jsonrpc**: `system_accountNextIndex`
+- **summary**: Retrieves the next accountIndex as available on the node
+ 
+### addLogFilter(directives: `Text`): `Null`
+- **interface**: `api.rpc.system.addLogFilter`
+- **jsonrpc**: `system_addLogFilter`
+- **summary**: Adds the supplied directives to the current log filter
+ 
+### addReservedPeer(peer: `Text`): `Text`
+- **interface**: `api.rpc.system.addReservedPeer`
+- **jsonrpc**: `system_addReservedPeer`
+- **summary**: Adds a reserved peer
+ 
+### chain(): `Text`
+- **interface**: `api.rpc.system.chain`
+- **jsonrpc**: `system_chain`
+- **summary**: Retrieves the chain
+ 
+### chainType(): `ChainType`
+- **interface**: `api.rpc.system.chainType`
+- **jsonrpc**: `system_chainType`
+- **summary**: Retrieves the chain type
+ 
+### dryRun(extrinsic: `Bytes`, at?: `BlockHash`): `ApplyExtrinsicResult`
+- **interface**: `api.rpc.system.dryRun`
+- **jsonrpc**: `system_dryRun`
+- **summary**: Dry run an extrinsic at a given block
+ 
+### health(): `Health`
+- **interface**: `api.rpc.system.health`
+- **jsonrpc**: `system_health`
+- **summary**: Return health status of the node
+ 
+### localListenAddresses(): `Vec<Text>`
+- **interface**: `api.rpc.system.localListenAddresses`
+- **jsonrpc**: `system_localListenAddresses`
+- **summary**: The addresses include a trailing /p2p/ with the local PeerId, and are thus suitable to be passed to addReservedPeer or as a bootnode address for example
+ 
+### localPeerId(): `Text`
+- **interface**: `api.rpc.system.localPeerId`
+- **jsonrpc**: `system_localPeerId`
+- **summary**: Returns the base58-encoded PeerId of the node
+ 
+### name(): `Text`
+- **interface**: `api.rpc.system.name`
+- **jsonrpc**: `system_name`
+- **summary**: Retrieves the node name
+ 
+### networkState(): `NetworkState`
+- **interface**: `api.rpc.system.networkState`
+- **jsonrpc**: `system_networkState`
+- **summary**: Returns current state of the network
+ 
+### nodeRoles(): `Vec<NodeRole>`
+- **interface**: `api.rpc.system.nodeRoles`
+- **jsonrpc**: `system_nodeRoles`
+- **summary**: Returns the roles the node is running as
+ 
+### peers(): `Vec<PeerInfo>`
+- **interface**: `api.rpc.system.peers`
+- **jsonrpc**: `system_peers`
+- **summary**: Returns the currently connected peers
+ 
+### properties(): `ChainProperties`
+- **interface**: `api.rpc.system.properties`
+- **jsonrpc**: `system_properties`
+- **summary**: Get a custom set of properties as a JSON object, defined in the chain spec
+ 
+### removeReservedPeer(peerId: `Text`): `Text`
+- **interface**: `api.rpc.system.removeReservedPeer`
+- **jsonrpc**: `system_removeReservedPeer`
+- **summary**: Remove a reserved peer
+ 
+### reservedPeers(): `Vec<Text>`
+- **interface**: `api.rpc.system.reservedPeers`
+- **jsonrpc**: `system_reservedPeers`
+- **summary**: Returns the list of reserved peers
+ 
+### resetLogFilter(): `Null`
+- **interface**: `api.rpc.system.resetLogFilter`
+- **jsonrpc**: `system_resetLogFilter`
+- **summary**: Resets the log filter to Substrate defaults
+ 
+### syncState(): `SyncState`
+- **interface**: `api.rpc.system.syncState`
+- **jsonrpc**: `system_syncState`
+- **summary**: Returns the state of the syncing of the node
+ 
+### version(): `Text`
+- **interface**: `api.rpc.system.version`
+- **jsonrpc**: `system_version`
+- **summary**: Retrieves the version of the node
diff --git a/website/docs/xxchain/API Documents/runtime.md b/website/docs/xxchain/API Documents/runtime.md
new file mode 100644
index 0000000000000000000000000000000000000000..ec69598b03b86cfb445bf7c91ab07b93c085b30d
--- /dev/null
+++ b/website/docs/xxchain/API Documents/runtime.md	
@@ -0,0 +1,731 @@
+---
+title: Runtime
+---
+
+The following section contains known runtime calls that may be available on specific runtimes (depending on configuration and available pallets). These call directly into the WASM runtime for queries and operations.
+
+- **[accountNonceApi](#accountnonceapi)**
+
+- **[auraApi](#auraapi)**
+
+- **[authorFilterAPI](#authorfilterapi)**
+
+- **[authorityDiscoveryApi](#authoritydiscoveryapi)**
+
+- **[babeApi](#babeapi)**
+
+- **[beefyApi](#beefyapi)**
+
+- **[beefyMmrApi](#beefymmrapi)**
+
+- **[benchmark](#benchmark)**
+
+- **[blockBuilder](#blockbuilder)**
+
+- **[collectCollationInfo](#collectcollationinfo)**
+
+- **[contractsApi](#contractsapi)**
+
+- **[convertTransactionRuntimeApi](#converttransactionruntimeapi)**
+
+- **[core](#core)**
+
+- **[debugRuntimeApi](#debugruntimeapi)**
+
+- **[difficultyApi](#difficultyapi)**
+
+- **[ethereumRuntimeRPCApi](#ethereumruntimerpcapi)**
+
+- **[grandpaApi](#grandpaapi)**
+
+- **[kusamaFinalityApi](#kusamafinalityapi)**
+
+- **[metadata](#metadata)**
+
+- **[mmrApi](#mmrapi)**
+
+- **[nimbusApi](#nimbusapi)**
+
+- **[nominationPoolsApi](#nominationpoolsapi)**
+
+- **[offchainWorkerApi](#offchainworkerapi)**
+
+- **[oracleApi](#oracleapi)**
+
+- **[parachainHost](#parachainhost)**
+
+- **[polkadotFinalityApi](#polkadotfinalityapi)**
+
+- **[rococoFinalityApi](#rococofinalityapi)**
+
+- **[sessionKeys](#sessionkeys)**
+
+- **[taggedTransactionQueue](#taggedtransactionqueue)**
+
+- **[timestampApi](#timestampapi)**
+
+- **[tokensApi](#tokensapi)**
+
+- **[transactionPaymentApi](#transactionpaymentapi)**
+
+- **[transactionPaymentCallApi](#transactionpaymentcallapi)**
+
+- **[tryRuntime](#tryruntime)**
+
+- **[westendFinalityApi](#westendfinalityapi)**
+
+
+___
+
+
+## AccountNonceApi
+ 
+### accountNonce(accountId: `AccountId`): `Index`
+- **interface**: `api.call.accountNonceApi.accountNonce`
+- **runtime**: `AccountNonceApi_account_nonce`
+- **summary**: The API to query account nonce (aka transaction index)
+
+___
+
+
+## AuraApi
+ 
+### authorities(): `Vec<AuthorityId>`
+- **interface**: `api.call.auraApi.authorities`
+- **runtime**: `AuraApi_authorities`
+- **summary**: Return the current set of authorities.
+ 
+### slotDuration(): `SlotDuration`
+- **interface**: `api.call.auraApi.slotDuration`
+- **runtime**: `AuraApi_slot_duration`
+- **summary**: Returns the slot duration for Aura.
+
+___
+
+
+## AuthorFilterAPI
+ 
+### canAuthor(author: `AccountId`, relayParent: `u32`, parentHeader: `Header`): `bool`
+- **interface**: `api.call.authorFilterAPI.canAuthor`
+- **runtime**: `AuthorFilterAPI_can_author`
+- **summary**: The runtime api used to predict whether an author will be eligible in the given slot
+
+___
+
+
+## AuthorityDiscoveryApi
+ 
+### authorities(): `Vec<AuthorityId>`
+- **interface**: `api.call.authorityDiscoveryApi.authorities`
+- **runtime**: `AuthorityDiscoveryApi_authorities`
+- **summary**: Retrieve authority identifiers of the current and next authority set.
+
+___
+
+
+## BabeApi
+ 
+### configuration(): `BabeGenesisConfiguration`
+- **interface**: `api.call.babeApi.configuration`
+- **runtime**: `BabeApi_configuration`
+- **summary**: Return the genesis configuration for BABE. The configuration is only read on genesis.
+ 
+### currentEpoch(): `Epoch`
+- **interface**: `api.call.babeApi.currentEpoch`
+- **runtime**: `BabeApi_current_epoch`
+- **summary**: Returns information regarding the current epoch.
+ 
+### currentEpochStart(): `Slot`
+- **interface**: `api.call.babeApi.currentEpochStart`
+- **runtime**: `BabeApi_current_epoch_start`
+- **summary**: Returns the slot that started the current epoch.
+ 
+### generateKeyOwnershipProof(slot: `Slot`, authorityId: `AuthorityId`): `Option<OpaqueKeyOwnershipProof>`
+- **interface**: `api.call.babeApi.generateKeyOwnershipProof`
+- **runtime**: `BabeApi_generate_key_ownership_proof`
+- **summary**: Generates a proof of key ownership for the given authority in the current epoch.
+ 
+### nextEpoch(): `Epoch`
+- **interface**: `api.call.babeApi.nextEpoch`
+- **runtime**: `BabeApi_next_epoch`
+- **summary**: Returns information regarding the next epoch (which was already previously announced).
+ 
+### submitReportEquivocationUnsignedExtrinsic(equivocationProof: `BabeEquivocationProof`, keyOwnerProof: `OpaqueKeyOwnershipProof`): `Option<Null>`
+- **interface**: `api.call.babeApi.submitReportEquivocationUnsignedExtrinsic`
+- **runtime**: `BabeApi_submit_report_equivocation_unsigned_extrinsic`
+- **summary**: Submits an unsigned extrinsic to report an equivocation.
+
+___
+
+
+## BeefyApi
+ 
+### validatorSet(): `Option<ValidatorSet>`
+- **interface**: `api.call.beefyApi.validatorSet`
+- **runtime**: `BeefyApi_validator_set`
+- **summary**: Return the current active BEEFY validator set
+
+___
+
+
+## BeefyMmrApi
+ 
+### authoritySetProof(): `BeefyAuthoritySet`
+- **interface**: `api.call.beefyMmrApi.authoritySetProof`
+- **runtime**: `BeefyMmrApi_authority_set_proof`
+- **summary**: Return the currently active BEEFY authority set proof.
+ 
+### nextAuthoritySetProof(): `BeefyNextAuthoritySet`
+- **interface**: `api.call.beefyMmrApi.nextAuthoritySetProof`
+- **runtime**: `BeefyMmrApi_next_authority_set_proof`
+- **summary**: Return the next/queued BEEFY authority set proof.
+
+___
+
+
+## Benchmark
+ 
+### benchmarkMetadata(extra: `bool`): `(Vec<BenchmarkList>, Vec<StorageInfo>)`
+- **interface**: `api.call.benchmark.benchmarkMetadata`
+- **runtime**: `Benchmark_benchmark_metadata`
+- **summary**: Get the benchmark metadata available for this runtime.
+ 
+### dispatchBenchmark(config: `BenchmarkConfig`): `Result<Vec<BenchmarkBatch>, Text>`
+- **interface**: `api.call.benchmark.dispatchBenchmark`
+- **runtime**: `Benchmark_dispatch_benchmark`
+- **summary**: Dispatch the given benchmark.
+
+___
+
+
+## BlockBuilder
+ 
+### applyExtrinsic(extrinsic: `Extrinsic`): `ApplyExtrinsicResult`
+- **interface**: `api.call.blockBuilder.applyExtrinsic`
+- **runtime**: `BlockBuilder_apply_extrinsic`
+- **summary**: Apply the given extrinsic.
+ 
+### checkInherents(block: `Block`, data: `InherentData`): `CheckInherentsResult`
+- **interface**: `api.call.blockBuilder.checkInherents`
+- **runtime**: `BlockBuilder_check_inherents`
+- **summary**: Check that the inherents are valid.
+ 
+### finalizeBlock(): `Header`
+- **interface**: `api.call.blockBuilder.finalizeBlock`
+- **runtime**: `BlockBuilder_finalize_block`
+- **summary**: Finish the current block.
+ 
+### inherentExtrinsics(inherent: `InherentData`): `Vec<Extrinsic>`
+- **interface**: `api.call.blockBuilder.inherentExtrinsics`
+- **runtime**: `BlockBuilder_inherent_extrinsics`
+- **summary**: Generate inherent extrinsics.
+
+___
+
+
+## CollectCollationInfo
+ 
+### collectCollationInfo(header: `Header`): `CollationInfo`
+- **interface**: `api.call.collectCollationInfo.collectCollationInfo`
+- **runtime**: `CollectCollationInfo_collect_collation_info`
+- **summary**: Collect information about a collation.
+
+___
+
+
+## ContractsApi
+ 
+### call(origin: `AccountId`, dest: `AccountId`, value: `Balance`, gasLimit: `u64`, storageDepositLimit: `Option<Balance>`, inputData: `Vec<u8>`): `ContractExecResult`
+- **interface**: `api.call.contractsApi.call`
+- **runtime**: `ContractsApi_call`
+- **summary**: Perform a call from a specified account to a given contract.
+ 
+### getStorage(address: `AccountId`, key: `Bytes`): `Option<Bytes>`
+- **interface**: `api.call.contractsApi.getStorage`
+- **runtime**: `ContractsApi_get_storage`
+- **summary**: Query a given storage key in a given contract.
+ 
+### instantiate(origin: `AccountId`, value: `Balance`, gasLimit: `u64`, storageDepositLimit: `Option<Balance>`, code: `Bytes`, data: `Bytes`, salt: `Bytes`): `ContractInstantiateResult`
+- **interface**: `api.call.contractsApi.instantiate`
+- **runtime**: `ContractsApi_instantiate`
+- **summary**: Instantiate a new contract.
+ 
+### uploadCode(origin: `AccountId`, code: `Bytes`, storageDepositLimit: `Option<Balance>`): `CodeUploadResult`
+- **interface**: `api.call.contractsApi.uploadCode`
+- **runtime**: `ContractsApi_upload_code`
+- **summary**: Upload new code without instantiating a contract from it.
+
+___
+
+
+## ConvertTransactionRuntimeApi
+ 
+### convertTransaction(transaction: `TransactionV2`): `Extrinsic`
+- **interface**: `api.call.convertTransactionRuntimeApi.convertTransaction`
+- **runtime**: `ConvertTransactionRuntimeApi_convert_transaction`
+- **summary**: Converts an Ethereum-style transaction to Extrinsic
+
+___
+
+
+## Core
+ 
+### executeBlock(block: `Block`): `Null`
+- **interface**: `api.call.core.executeBlock`
+- **runtime**: `Core_execute_block`
+- **summary**: Execute the given block.
+ 
+### initializeBlock(header: `Header`): `Null`
+- **interface**: `api.call.core.initializeBlock`
+- **runtime**: `Core_initialize_block`
+- **summary**: Initialize a block with the given header.
+ 
+### version(): `RuntimeVersion`
+- **interface**: `api.call.core.version`
+- **runtime**: `Core_version`
+- **summary**: Returns the version of the runtime.
+
+___
+
+
+## DebugRuntimeApi
+ 
+### traceBlock(extrinsics: `Vec<Extrinsic>`, knownTransactions: `Vec<H256>`): `Result<(), DispatchError>`
+- **interface**: `api.call.debugRuntimeApi.traceBlock`
+- **runtime**: `DebugRuntimeApi_trace_block`
+- **summary**: Trace all block extrinsics
+ 
+### traceTransaction(extrinsics: `Vec<Extrinsic>`, transaction: `EthTransaction`): `Result<(), DispatchError>`
+- **interface**: `api.call.debugRuntimeApi.traceTransaction`
+- **runtime**: `DebugRuntimeApi_trace_transaction`
+- **summary**: Trace transaction extrinsics
+
+___
+
+
+## DifficultyApi
+ 
+### difficulty(): `Raw`
+- **interface**: `api.call.difficultyApi.difficulty`
+- **runtime**: `DifficultyApi_difficulty`
+- **summary**: Return the target difficulty of the next block.
+
+___
+
+
+## EthereumRuntimeRPCApi
+ 
+### accountBasic(address: `H160`): `EvmAccount`
+- **interface**: `api.call.ethereumRuntimeRPCApi.accountBasic`
+- **runtime**: `EthereumRuntimeRPCApi_account_basic`
+- **summary**: Returns pallet_evm::Accounts by address.
+ 
+### accountCodeAt(address: `H160`): `Bytes`
+- **interface**: `api.call.ethereumRuntimeRPCApi.accountCodeAt`
+- **runtime**: `EthereumRuntimeRPCApi_account_code_at`
+- **summary**: For a given account address, returns pallet_evm::AccountCodes.
+ 
+### author(): `H160`
+- **interface**: `api.call.ethereumRuntimeRPCApi.author`
+- **runtime**: `EthereumRuntimeRPCApi_author`
+- **summary**: Returns the converted FindAuthor::find_author authority id.
+ 
+### call(from: `H160`, to: `H160`, data: `Vec<u8>`, value: `U256`, gasLimit: `U256`, maxFeePerGas: `Option<U256>`, maxPriorityFeePerGas: `Option<U256>`, nonce: `Option<U256>`, estimate: `bool`, accessList: `Option<Vec<(H160, Vec<H256>)>>`): `Result<EvmCallInfo, DispatchError>`
+- **interface**: `api.call.ethereumRuntimeRPCApi.call`
+- **runtime**: `EthereumRuntimeRPCApi_call`
+- **summary**: Returns a frame_ethereum::call response. If `estimate` is true,
+ 
+### chainId(): `u64`
+- **interface**: `api.call.ethereumRuntimeRPCApi.chainId`
+- **runtime**: `EthereumRuntimeRPCApi_chain_id`
+- **summary**: Returns runtime defined pallet_evm::ChainId.
+ 
+### create(from: `H160`, data: `Vec<u8>`, value: `U256`, gasLimit: `U256`, maxFeePerGas: `Option<U256>`, maxPriorityFeePerGas: `Option<U256>`, nonce: `Option<U256>`, estimate: `bool`, accessList: `Option<Vec<(H160, Vec<H256>)>>`): `Result<EvmCreateInfo, DispatchError>`
+- **interface**: `api.call.ethereumRuntimeRPCApi.create`
+- **runtime**: `EthereumRuntimeRPCApi_create`
+- **summary**: Returns a frame_ethereum::call response. If `estimate` is true,
+ 
+### currentAll(): `(Option<BlockV2>, Option<Vec<ReceiptV0>>, Option<Vec<TransactionStatus>>)`
+- **interface**: `api.call.ethereumRuntimeRPCApi.currentAll`
+- **runtime**: `EthereumRuntimeRPCApi_current_all`
+- **summary**: Return all the current data for a block in a single runtime call.
+ 
+### currentBlock(): `BlockV2`
+- **interface**: `api.call.ethereumRuntimeRPCApi.currentBlock`
+- **runtime**: `EthereumRuntimeRPCApi_current_block`
+- **summary**: Return the current block.
+ 
+### currentReceipts(): `Option<Vec<EthReceiptV3>>`
+- **interface**: `api.call.ethereumRuntimeRPCApi.currentReceipts`
+- **runtime**: `EthereumRuntimeRPCApi_current_receipts`
+- **summary**: Return the current receipt.
+ 
+### currentTransactionStatuses(): `Option<Vec<EthTransactionStatus>>`
+- **interface**: `api.call.ethereumRuntimeRPCApi.currentTransactionStatuses`
+- **runtime**: `EthereumRuntimeRPCApi_current_transaction_statuses`
+- **summary**: Return the current transaction status.
+ 
+### elasticity(): `Option<Permill>`
+- **interface**: `api.call.ethereumRuntimeRPCApi.elasticity`
+- **runtime**: `EthereumRuntimeRPCApi_elasticity`
+- **summary**: Return the elasticity multiplier.
+ 
+### extrinsicFilter(xts: `Vec<Extrinsic>`): `Vec<TransactionV2>`
+- **interface**: `api.call.ethereumRuntimeRPCApi.extrinsicFilter`
+- **runtime**: `EthereumRuntimeRPCApi_extrinsic_filter`
+- **summary**: Receives a `Vec<OpaqueExtrinsic>` and filters all the ethereum transactions.
+ 
+### gasPrice(): `u256`
+- **interface**: `api.call.ethereumRuntimeRPCApi.gasPrice`
+- **runtime**: `EthereumRuntimeRPCApi_gas_price`
+- **summary**: Returns FixedGasPrice::min_gas_price
+ 
+### storageAt(address: `H160`, index: `u256`): `H256`
+- **interface**: `api.call.ethereumRuntimeRPCApi.storageAt`
+- **runtime**: `EthereumRuntimeRPCApi_storage_at`
+- **summary**: For a given account address and index, returns pallet_evm::AccountStorages.
+
+___
+
+
+## GrandpaApi
+ 
+### currentSetId(): `SetId`
+- **interface**: `api.call.grandpaApi.currentSetId`
+- **runtime**: `GrandpaApi_current_set_id`
+- **summary**: Get current GRANDPA authority set id.
+ 
+### generateKeyOwnershipProof(setId: `SetId`, authorityId: `AuthorityId`): `Option<OpaqueKeyOwnershipProof>`
+- **interface**: `api.call.grandpaApi.generateKeyOwnershipProof`
+- **runtime**: `GrandpaApi_generate_key_ownership_proof`
+- **summary**: Generates a proof of key ownership for the given authority in the given set.
+ 
+### grandpaAuthorities(): `AuthorityList`
+- **interface**: `api.call.grandpaApi.grandpaAuthorities`
+- **runtime**: `GrandpaApi_grandpa_authorities`
+- **summary**: Get the current GRANDPA authorities and weights. This should not change except for when changes are scheduled and the corresponding delay has passed.
+ 
+### submitReportEquivocationUnsignedExtrinsic(equivocationProof: `GrandpaEquivocationProof`, keyOwnerProof: `OpaqueKeyOwnershipProof`): `Option<Null>`
+- **interface**: `api.call.grandpaApi.submitReportEquivocationUnsignedExtrinsic`
+- **runtime**: `GrandpaApi_submit_report_equivocation_unsigned_extrinsic`
+- **summary**: Submits an unsigned extrinsic to report an equivocation.
+
+___
+
+
+## KusamaFinalityApi
+ 
+### bestFinalized(): `(BlockNumber, Hash)`
+- **interface**: `api.call.kusamaFinalityApi.bestFinalized`
+- **runtime**: `KusamaFinalityApi_best_finalized`
+- **summary**: Returns number and hash of the best finalized header known to the bridge module.
+
+___
+
+
+## Metadata
+ 
+### metadata(): `OpaqueMetadata`
+- **interface**: `api.call.metadata.metadata`
+- **runtime**: `Metadata_metadata`
+- **summary**: Returns the metadata of a runtime
+
+___
+
+
+## MmrApi
+ 
+### generateBatchProof(leafIndices: `Vec<MmrLeafIndex>`): `Result<(Vec<MmrEncodableOpaqueLeaf>, MmrBatchProof), MmrError>`
+- **interface**: `api.call.mmrApi.generateBatchProof`
+- **runtime**: `MmrApi_generate_batch_proof`
+- **summary**: Generate MMR proof for a series of leaves under given indices.
+ 
+### generateProof(leafIndex: `MmrLeafIndex`): `Result<(MmrEncodableOpaqueLeaf, MmrProof), MmrError>`
+- **interface**: `api.call.mmrApi.generateProof`
+- **runtime**: `MmrApi_generate_proof`
+- **summary**: Generate MMR proof for a leaf under given index.
+ 
+### mmrRoot(): `Result<Hash, MmrError>`
+- **interface**: `api.call.mmrApi.mmrRoot`
+- **runtime**: `MmrApi_mmr_root`
+- **summary**: Return the on-chain MMR root hash.
+ 
+### verifyBatchProof(leaves: `Vec<MmrEncodableOpaqueLeaf>`, proof: `MmrBatchProof`): `Result<(), MmrError>`
+- **interface**: `api.call.mmrApi.verifyBatchProof`
+- **runtime**: `MmrApi_verify_batch_proof`
+- **summary**: Verify MMR proof against on-chain MMR for a batch of leaves.
+ 
+### verifyBatchProofStateless(root: `Hash`, leaves: `Vec<MmrEncodableOpaqueLeaf>`, proof: `MmrBatchProof`): `Result<(), MmrError>`
+- **interface**: `api.call.mmrApi.verifyBatchProofStateless`
+- **runtime**: `MmrApi_verify_batch_proof_stateless`
+- **summary**: Verify MMR proof against given root hash or a batch of leaves.
+ 
+### verifyProof(leaf: `MmrEncodableOpaqueLeaf`, proof: `MmrProof`): `Result<(), MmrError>`
+- **interface**: `api.call.mmrApi.verifyProof`
+- **runtime**: `MmrApi_verify_proof`
+- **summary**: Verify MMR proof against on-chain MMR.
+ 
+### verifyProofStateless(root: `Hash`, leaf: `MmrEncodableOpaqueLeaf`, proof: `MmrProof`): `Result<(), MmrError>`
+- **interface**: `api.call.mmrApi.verifyProofStateless`
+- **runtime**: `MmrApi_verify_proof_stateless`
+- **summary**: Verify MMR proof against given root hash.
+
+___
+
+
+## NimbusApi
+ 
+### canAuthor(author: `AccountId`, relayParent: `u32`, parentHeader: `Header`): `bool`
+- **interface**: `api.call.nimbusApi.canAuthor`
+- **runtime**: `NimbusApi_can_author`
+- **summary**: The runtime api used to predict whether a Nimbus author will be eligible in the given slot
+
+___
+
+
+## NominationPoolsApi
+ 
+### pendingRewards(member: `AccountId`): `Result<Balance, NpApiError>`
+- **interface**: `api.call.nominationPoolsApi.pendingRewards`
+- **runtime**: `NominationPoolsApi_pending_rewards`
+- **summary**: Returns the pending rewards for the given member.
+
+___
+
+
+## OffchainWorkerApi
+ 
+### offchainWorker(header: `Header`): `Null`
+- **interface**: `api.call.offchainWorkerApi.offchainWorker`
+- **runtime**: `OffchainWorkerApi_offchain_worker`
+- **summary**: Starts the off-chain task for given block header.
+
+___
+
+
+## OracleApi
+ 
+### getAllValues(providerId: `Raw`): `Raw`
+- **interface**: `api.call.oracleApi.getAllValues`
+- **runtime**: `OracleApi_get_all_values`
+- **summary**: Retrieves all values
+ 
+### getValue(providerId: `Raw`, key: `Raw`): `Option<Raw>`
+- **interface**: `api.call.oracleApi.getValue`
+- **runtime**: `OracleApi_get_value`
+- **summary**: Retrieves a single value
+
+___
+
+
+## ParachainHost
+ 
+### assumedValidationData(paraId: `ParaId`, hash: `Hash`): `Option<(PersistedValidationData, ValidationCodeHash)>`
+- **interface**: `api.call.parachainHost.assumedValidationData`
+- **runtime**: `ParachainHost_assumed_validation_data`
+- **summary**: Returns the persisted validation data for the given `ParaId` along with the corresponding validation code hash.
+ 
+### availabilityCores(): `Vec<CoreState>`
+- **interface**: `api.call.parachainHost.availabilityCores`
+- **runtime**: `ParachainHost_availability_cores`
+- **summary**: Yields information on all availability cores as relevant to the child block.
+ 
+### candidateEvents(): `Vec<CandidateEvent>`
+- **interface**: `api.call.parachainHost.candidateEvents`
+- **runtime**: `ParachainHost_candidate_events`
+- **summary**: Get a vector of events concerning candidates that occurred within a block.
+ 
+### candidatePendingAvailability(paraId: `ParaId`): `Option<CommittedCandidateReceipt>`
+- **interface**: `api.call.parachainHost.candidatePendingAvailability`
+- **runtime**: `ParachainHost_candidate_pending_availability`
+- **summary**: Get the receipt of a candidate pending availability.
+ 
+### checkValidationOutputs(paraId: `ParaId`, outputs: `CandidateCommitments`): `bool`
+- **interface**: `api.call.parachainHost.checkValidationOutputs`
+- **runtime**: `ParachainHost_check_validation_outputs`
+- **summary**: Checks if the given validation outputs pass the acceptance criteria.
+ 
+### dmqContents(paraId: `ParaId`): `Vec<InboundDownwardMessage>`
+- **interface**: `api.call.parachainHost.dmqContents`
+- **runtime**: `ParachainHost_dmq_contents`
+- **summary**: Get all the pending inbound messages in the downward message queue for a para.
+ 
+### inboundHrmpChannelsContents(paraId: `ParaId`): `Vec<InboundHrmpMessage>`
+- **interface**: `api.call.parachainHost.inboundHrmpChannelsContents`
+- **runtime**: `ParachainHost_inbound_hrmp_channels_contents`
+- **summary**: Get the contents of all channels addressed to the given recipient.
+ 
+### onChainVotes(): `Option<ScrapedOnChainVotes>`
+- **interface**: `api.call.parachainHost.onChainVotes`
+- **runtime**: `ParachainHost_on_chain_votes`
+- **summary**: Scrape dispute relevant from on-chain, backing votes and resolved disputes.
+ 
+### persistedValidationData(paraId: `ParaId`, assumption: `OccupiedCoreAssumption`): `Option<PersistedValidationData>`
+- **interface**: `api.call.parachainHost.persistedValidationData`
+- **runtime**: `ParachainHost_persisted_validation_data`
+- **summary**: Yields the persisted validation data for the given `ParaId` along with an assumption that should be used if the para currently occupies a core.
+ 
+### pvfsRequirePrecheck(): `Vec<ValidationCodeHash>`
+- **interface**: `api.call.parachainHost.pvfsRequirePrecheck`
+- **runtime**: `ParachainHost_pvfs_require_precheck`
+- **summary**: Returns code hashes of PVFs that require pre-checking by validators in the active set.
+ 
+### sessionIndexForChild(): `SessionIndex`
+- **interface**: `api.call.parachainHost.sessionIndexForChild`
+- **runtime**: `ParachainHost_session_index_for_child`
+- **summary**: Returns the session index expected at a child of the block.
+ 
+### sessionInfo(index: `SessionIndex`): `Option<SessionInfo>`
+- **interface**: `api.call.parachainHost.sessionInfo`
+- **runtime**: `ParachainHost_session_info`
+- **summary**: Get the session info for the given session, if stored.
+ 
+### submitPvfCheckStatement(stmt: `PvfCheckStatement`, signature: `ValidatorSignature`): `Null`
+- **interface**: `api.call.parachainHost.submitPvfCheckStatement`
+- **runtime**: `ParachainHost_submit_pvf_check_statement`
+- **summary**: Submits a PVF pre-checking statement into the transaction pool.
+ 
+### validationCode(paraId: `ParaId`, assumption: `OccupiedCoreAssumption`): `ValidationCode`
+- **interface**: `api.call.parachainHost.validationCode`
+- **runtime**: `ParachainHost_validation_code`
+- **summary**: Fetch the validation code used by a para, making the given `OccupiedCoreAssumption`.
+ 
+### validationCodeByHash(hash: `ValidationCodeHash`): `Option<ValidationCode>`
+- **interface**: `api.call.parachainHost.validationCodeByHash`
+- **runtime**: `ParachainHost_validation_code_by_hash`
+- **summary**: Get the validation code from its hash.
+ 
+### validationCodeHash(paraId: `ParaId`, assumption: `OccupiedCoreAssumption`): `Option<ValidationCodeHash>`
+- **interface**: `api.call.parachainHost.validationCodeHash`
+- **runtime**: `ParachainHost_validation_code_hash`
+- **summary**: Fetch the hash of the validation code used by a para, making the given `OccupiedCoreAssumption`.
+ 
+### validatorGroups(): `(Vec<Vec<ParaValidatorIndex>>, GroupRotationInfo)`
+- **interface**: `api.call.parachainHost.validatorGroups`
+- **runtime**: `ParachainHost_validator_groups`
+- **summary**: Returns the validator groups and rotation info localized based on the hypothetical child of a block whose state  this is invoked on
+ 
+### validators(): `Vec<ValidatorId>`
+- **interface**: `api.call.parachainHost.validators`
+- **runtime**: `ParachainHost_validators`
+- **summary**: Get the current validators.
+
+___
+
+
+## PolkadotFinalityApi
+ 
+### bestFinalized(): `(BlockNumber, Hash)`
+- **interface**: `api.call.polkadotFinalityApi.bestFinalized`
+- **runtime**: `PolkadotFinalityApi_best_finalized`
+- **summary**: Returns number and hash of the best finalized header known to the bridge module.
+
+___
+
+
+## RococoFinalityApi
+ 
+### bestFinalized(): `(BlockNumber, Hash)`
+- **interface**: `api.call.rococoFinalityApi.bestFinalized`
+- **runtime**: `RococoFinalityApi_best_finalized`
+- **summary**: Returns number and hash of the best finalized header known to the bridge module.
+
+___
+
+
+## SessionKeys
+ 
+### decodeSessionKeys(encoded: `Bytes`): `Option<Vec<(Bytes, KeyTypeId)>>`
+- **interface**: `api.call.sessionKeys.decodeSessionKeys`
+- **runtime**: `SessionKeys_decode_session_keys`
+- **summary**: Decode the given public session keys.
+ 
+### generateSessionKeys(seed: `Option<Bytes>`): `Bytes`
+- **interface**: `api.call.sessionKeys.generateSessionKeys`
+- **runtime**: `SessionKeys_generate_session_keys`
+- **summary**: Generate a set of session keys with optionally using the given seed.
+
+___
+
+
+## TaggedTransactionQueue
+ 
+### validateTransaction(source: `TransactionSource`, tx: `Extrinsic`, blockHash: `BlockHash`): `TransactionValidity`
+- **interface**: `api.call.taggedTransactionQueue.validateTransaction`
+- **runtime**: `TaggedTransactionQueue_validate_transaction`
+- **summary**: Validate the transaction.
+
+___
+
+
+## TimestampApi
+ 
+### timestamp(): `Moment`
+- **interface**: `api.call.timestampApi.timestamp`
+- **runtime**: `TimestampApi_timestamp`
+- **summary**: API necessary for timestamp-based difficulty adjustment algorithms.
+
+___
+
+
+## TokensApi
+ 
+### queryExistentialDeposit(currencyId: `Raw`): `u128`
+- **interface**: `api.call.tokensApi.queryExistentialDeposit`
+- **runtime**: `TokensApi_query_existential_deposit`
+- **summary**: Query the existential amount for a specific currency
+
+___
+
+
+## TransactionPaymentApi
+ 
+### queryFeeDetails(uxt: `Extrinsic`, len: `u32`): `FeeDetails`
+- **interface**: `api.call.transactionPaymentApi.queryFeeDetails`
+- **runtime**: `TransactionPaymentApi_query_fee_details`
+- **summary**: The transaction fee details
+ 
+### queryInfo(uxt: `Extrinsic`, len: `u32`): `RuntimeDispatchInfo`
+- **interface**: `api.call.transactionPaymentApi.queryInfo`
+- **runtime**: `TransactionPaymentApi_query_info`
+- **summary**: The transaction info
+
+___
+
+
+## TransactionPaymentCallApi
+ 
+### queryCallFeeDetails(call: `Call`, len: `u32`): `FeeDetails`
+- **interface**: `api.call.transactionPaymentCallApi.queryCallFeeDetails`
+- **runtime**: `TransactionPaymentCallApi_query_call_fee_details`
+- **summary**: The call fee details
+ 
+### queryCallInfo(call: `Call`, len: `u32`): `RuntimeDispatchInfo`
+- **interface**: `api.call.transactionPaymentCallApi.queryCallInfo`
+- **runtime**: `TransactionPaymentCallApi_query_call_info`
+- **summary**: The call info
+
+___
+
+
+## TryRuntime
+ 
+### executeBlockNoCheck(block: `Block`): `Weight`
+- **interface**: `api.call.tryRuntime.executeBlockNoCheck`
+- **runtime**: `TryRuntime_execute_block_no_check`
+- **summary**: Execute the given block, but don't check that its state root matches that of yours.
+ 
+### onRuntimeUpgrade(): `(Weight, Weight)`
+- **interface**: `api.call.tryRuntime.onRuntimeUpgrade`
+- **runtime**: `TryRuntime_on_runtime_upgrade`
+- **summary**: dry-run runtime upgrades, returning the total weight consumed.
+
+___
+
+
+## WestendFinalityApi
+ 
+### bestFinalized(): `(BlockNumber, Hash)`
+- **interface**: `api.call.westendFinalityApi.bestFinalized`
+- **runtime**: `WestendFinalityApi_best_finalized`
+- **summary**: Returns number and hash of the best finalized header known to the bridge module.
diff --git a/website/docs/xxchain/API Documents/storage.md b/website/docs/xxchain/API Documents/storage.md
new file mode 100644
index 0000000000000000000000000000000000000000..1c5939d4c3747b9d42c6896a79e2877e70ec9a1d
--- /dev/null
+++ b/website/docs/xxchain/API Documents/storage.md	
@@ -0,0 +1,1282 @@
+---
+title: Storage
+---
+
+The following sections contain Storage methods are part of the default Substrate runtime. On the api, these are exposed via `api.query.<module>.<method>`. 
+
+(NOTE: These were generated from a static/snapshot view of a recent Substrate master node. Some items may not be available in older nodes, or in any customized implementations.)
+
+- **[assets](#assets)**
+
+- **[authorship](#authorship)**
+
+- **[babe](#babe)**
+
+- **[balances](#balances)**
+
+- **[bounties](#bounties)**
+
+- **[chainBridge](#chainbridge)**
+
+- **[claims](#claims)**
+
+- **[council](#council)**
+
+- **[democracy](#democracy)**
+
+- **[electionProviderMultiPhase](#electionprovidermultiphase)**
+
+- **[elections](#elections)**
+
+- **[grandpa](#grandpa)**
+
+- **[identity](#identity)**
+
+- **[imOnline](#imonline)**
+
+- **[multisig](#multisig)**
+
+- **[offences](#offences)**
+
+- **[proxy](#proxy)**
+
+- **[recovery](#recovery)**
+
+- **[scheduler](#scheduler)**
+
+- **[session](#session)**
+
+- **[staking](#staking)**
+
+- **[substrate](#substrate)**
+
+- **[swap](#swap)**
+
+- **[system](#system)**
+
+- **[technicalCommittee](#technicalcommittee)**
+
+- **[technicalMembership](#technicalmembership)**
+
+- **[timestamp](#timestamp)**
+
+- **[tips](#tips)**
+
+- **[transactionPayment](#transactionpayment)**
+
+- **[treasury](#treasury)**
+
+- **[uniques](#uniques)**
+
+- **[vesting](#vesting)**
+
+- **[xXBetanetRewards](#xxbetanetrewards)**
+
+- **[xXCmix](#xxcmix)**
+
+- **[xXCustody](#xxcustody)**
+
+- **[xXEconomics](#xxeconomics)**
+
+- **[xXPublic](#xxpublic)**
+
+
+___
+
+
+## assets
+ 
+### account(`u32, AccountId32`): `PalletAssetsAssetBalance`
+- **interface**: `api.query.assets.account`
+- **summary**:    The number of units of assets held by any given account. 
+ 
+### approvals(`u32, AccountId32, AccountId32`): `Option<PalletAssetsApproval>`
+- **interface**: `api.query.assets.approvals`
+- **summary**:    Approved balance transfers. First balance is the amount approved for transfer. Second  is the amount of `T::Currency` reserved for storing this.  First key is the asset ID, second key is the owner and third key is the delegate. 
+ 
+### asset(`u32`): `Option<PalletAssetsAssetDetails>`
+- **interface**: `api.query.assets.asset`
+- **summary**:    Details of an asset. 
+ 
+### metadata(`u32`): `PalletAssetsAssetMetadata`
+- **interface**: `api.query.assets.metadata`
+- **summary**:    Metadata of an asset. 
+
+___
+
+
+## authorship
+ 
+### author(): `Option<AccountId32>`
+- **interface**: `api.query.authorship.author`
+- **summary**:    Author of current block. 
+ 
+### didSetUncles(): `bool`
+- **interface**: `api.query.authorship.didSetUncles`
+- **summary**:    Whether uncles were already set in this block. 
+ 
+### uncles(): `Vec<PalletAuthorshipUncleEntryItem>`
+- **interface**: `api.query.authorship.uncles`
+- **summary**:    Uncles 
+
+___
+
+
+## babe
+ 
+### authorities(): `Vec<(SpConsensusBabeAppPublic,u64)>`
+- **interface**: `api.query.babe.authorities`
+- **summary**:    Current epoch authorities. 
+ 
+### authorVrfRandomness(): `Option<[u8;32]>`
+- **interface**: `api.query.babe.authorVrfRandomness`
+- **summary**:    This field should always be populated during block processing unless  secondary plain slots are enabled (which don't contain a VRF output). 
+
+   It is set in `on_initialize`, before it will contain the value from the last block. 
+ 
+### currentSlot(): `u64`
+- **interface**: `api.query.babe.currentSlot`
+- **summary**:    Current slot number. 
+ 
+### epochConfig(): `Option<SpConsensusBabeBabeEpochConfiguration>`
+- **interface**: `api.query.babe.epochConfig`
+- **summary**:    The configuration for the current epoch. Should never be `None` as it is initialized in  genesis. 
+ 
+### epochIndex(): `u64`
+- **interface**: `api.query.babe.epochIndex`
+- **summary**:    Current epoch index. 
+ 
+### epochStart(): `(u32,u32)`
+- **interface**: `api.query.babe.epochStart`
+- **summary**:    The block numbers when the last and current epoch have started, respectively `N-1` and  `N`.  NOTE: We track this is in order to annotate the block number when a given pool of  entropy was fixed (i.e. it was known to chain observers). Since epochs are defined in  slots, which may be skipped, the block numbers may not line up with the slot numbers. 
+ 
+### genesisSlot(): `u64`
+- **interface**: `api.query.babe.genesisSlot`
+- **summary**:    The slot at which the first epoch actually started. This is 0  until the first block of the chain. 
+ 
+### initialized(): `Option<Option<[u8;32]>>`
+- **interface**: `api.query.babe.initialized`
+- **summary**:    Temporary value (cleared at block finalization) which is `Some`  if per-block initialization has already been called for current block. 
+ 
+### lateness(): `u32`
+- **interface**: `api.query.babe.lateness`
+- **summary**:    How late the current block is compared to its parent. 
+
+   This entry is populated as part of block execution and is cleaned up  on block finalization. Querying this storage entry outside of block  execution context should always yield zero. 
+ 
+### nextAuthorities(): `Vec<(SpConsensusBabeAppPublic,u64)>`
+- **interface**: `api.query.babe.nextAuthorities`
+- **summary**:    Next epoch authorities. 
+ 
+### nextEpochConfig(): `Option<SpConsensusBabeBabeEpochConfiguration>`
+- **interface**: `api.query.babe.nextEpochConfig`
+- **summary**:    The configuration for the next epoch, `None` if the config will not change  (you can fallback to `EpochConfig` instead in that case). 
+ 
+### nextRandomness(): `[u8;32]`
+- **interface**: `api.query.babe.nextRandomness`
+- **summary**:    Next epoch randomness. 
+ 
+### pendingEpochConfigChange(): `Option<SpConsensusBabeDigestsNextConfigDescriptor>`
+- **interface**: `api.query.babe.pendingEpochConfigChange`
+- **summary**:    Pending epoch configuration change that will be applied when the next epoch is enacted. 
+ 
+### randomness(): `[u8;32]`
+- **interface**: `api.query.babe.randomness`
+- **summary**:    The epoch randomness for the *current* epoch. 
+
+   #### Security 
+
+   This MUST NOT be used for gambling, as it can be influenced by a  malicious validator in the short term. It MAY be used in many  cryptographic protocols, however, so long as one remembers that this  (like everything else on-chain) it is public. For example, it can be  used where a number is needed that cannot have been chosen by an  adversary, for purposes such as public-coin zero-knowledge proofs. 
+ 
+### segmentIndex(): `u32`
+- **interface**: `api.query.babe.segmentIndex`
+- **summary**:    Randomness under construction. 
+
+   We make a trade-off between storage accesses and list length.  We store the under-construction randomness in segments of up to  `UNDER_CONSTRUCTION_SEGMENT_LENGTH`. 
+
+   Once a segment reaches this length, we begin the next one.  We reset all segments and return to `0` at the beginning of every  epoch. 
+ 
+### underConstruction(`u32`): `Vec<[u8;32]>`
+- **interface**: `api.query.babe.underConstruction`
+- **summary**:    TWOX-NOTE: `SegmentIndex` is an increasing integer, so this is okay. 
+
+___
+
+
+## balances
+ 
+### account(`AccountId32`): `PalletBalancesAccountData`
+- **interface**: `api.query.balances.account`
+- **summary**:    The balance of an account. 
+
+   NOTE: This is only used in the case that this pallet is used to store balances. 
+ 
+### locks(`AccountId32`): `Vec<PalletBalancesBalanceLock>`
+- **interface**: `api.query.balances.locks`
+- **summary**:    Any liquidity locks on some account balances.  NOTE: Should only be accessed when setting, changing and freeing a lock. 
+ 
+### reserves(`AccountId32`): `Vec<PalletBalancesReserveData>`
+- **interface**: `api.query.balances.reserves`
+- **summary**:    Named reserves on some account balances. 
+ 
+### storageVersion(): `PalletBalancesReleases`
+- **interface**: `api.query.balances.storageVersion`
+- **summary**:    Storage version of the pallet. 
+
+   This is set to v2.0.0 for new networks. 
+ 
+### totalIssuance(): `u128`
+- **interface**: `api.query.balances.totalIssuance`
+- **summary**:    The total units issued in the system. 
+
+___
+
+
+## bounties
+ 
+### bounties(`u32`): `Option<PalletBountiesBounty>`
+- **interface**: `api.query.bounties.bounties`
+- **summary**:    Bounties that have been made. 
+ 
+### bountyApprovals(): `Vec<u32>`
+- **interface**: `api.query.bounties.bountyApprovals`
+- **summary**:    Bounty indices that have been approved but not yet funded. 
+ 
+### bountyCount(): `u32`
+- **interface**: `api.query.bounties.bountyCount`
+- **summary**:    Number of bounty proposals that have been made. 
+ 
+### bountyDescriptions(`u32`): `Option<Bytes>`
+- **interface**: `api.query.bounties.bountyDescriptions`
+- **summary**:    The description of each bounty. 
+
+___
+
+
+## chainBridge
+ 
+### chainNonces(`u8`): `Option<u64>`
+- **interface**: `api.query.chainBridge.chainNonces`
+- **summary**:    All whitelisted chains and their respective transaction counts 
+ 
+### relayerCount(): `u32`
+- **interface**: `api.query.chainBridge.relayerCount`
+- **summary**:    Number of relayers in set 
+ 
+### relayers(`AccountId32`): `bool`
+- **interface**: `api.query.chainBridge.relayers`
+- **summary**:    Tracks current relayer set 
+ 
+### relayerThreshold(): `u32`
+- **interface**: `api.query.chainBridge.relayerThreshold`
+- **summary**:    Number of votes required for a proposal to execute 
+ 
+### resources(`[u8;32]`): `Option<Bytes>`
+- **interface**: `api.query.chainBridge.resources`
+- **summary**:    Utilized by the bridge software to map resource IDs to actual methods 
+ 
+### votes(`u8, (u64,Call)`): `Option<ChainbridgeProposalVotes>`
+- **interface**: `api.query.chainBridge.votes`
+- **summary**:    All known proposals.  The key is the hash of the call and the deposit ID, to ensure it's unique. 
+
+___
+
+
+## claims
+ 
+### claims(`ClaimsEthereumAddress`): `Option<u128>`
+- **interface**: `api.query.claims.claims`
+ 
+### preclaims(`AccountId32`): `Option<ClaimsEthereumAddress>`
+- **interface**: `api.query.claims.preclaims`
+- **summary**:    Pre-claimed Ethereum accounts, by the Account ID that they are claimed to. 
+ 
+### rewards(`ClaimsEthereumAddress`): `Option<u128>`
+- **interface**: `api.query.claims.rewards`
+- **summary**:    Proposed amount of BetaNet staking rewards 
+ 
+### signing(`ClaimsEthereumAddress`): `Option<ClaimsStatementKind>`
+- **interface**: `api.query.claims.signing`
+- **summary**:    The statement kind that must be signed, if any. 
+ 
+### total(): `u128`
+- **interface**: `api.query.claims.total`
+ 
+### vesting(`ClaimsEthereumAddress`): `Option<Vec<(u128,u128,u32)>>`
+- **interface**: `api.query.claims.vesting`
+- **summary**:    Vesting schedules for a claim.  NOTE: It is the responsibility of the caller to not set more genesis  config vesting schedules than supported by the Vesting pallet.  Any schedules specified above that limit will be ignored. 
+
+   First balance is the total amount that should be held for vesting.  Second balance is how much should be unlocked per block.  The block number is when the vesting should start. 
+
+___
+
+
+## council
+ 
+### members(): `Vec<AccountId32>`
+- **interface**: `api.query.council.members`
+- **summary**:    The current members of the collective. This is stored sorted (just by value). 
+ 
+### prime(): `Option<AccountId32>`
+- **interface**: `api.query.council.prime`
+- **summary**:    The prime member that helps determine the default vote behavior in case of absentations. 
+ 
+### proposalCount(): `u32`
+- **interface**: `api.query.council.proposalCount`
+- **summary**:    Proposals so far. 
+ 
+### proposalOf(`H256`): `Option<Call>`
+- **interface**: `api.query.council.proposalOf`
+- **summary**:    Actual proposal for a given hash, if it's current. 
+ 
+### proposals(): `Vec<H256>`
+- **interface**: `api.query.council.proposals`
+- **summary**:    The hashes of the active proposals. 
+ 
+### voting(`H256`): `Option<PalletCollectiveVotes>`
+- **interface**: `api.query.council.voting`
+- **summary**:    Votes on a given proposal, if it is ongoing. 
+
+___
+
+
+## democracy
+ 
+### blacklist(`H256`): `Option<(u32,Vec<AccountId32>)>`
+- **interface**: `api.query.democracy.blacklist`
+- **summary**:    A record of who vetoed what. Maps proposal hash to a possible existent block number  (until when it may not be resubmitted) and who vetoed it. 
+ 
+### cancellations(`H256`): `bool`
+- **interface**: `api.query.democracy.cancellations`
+- **summary**:    Record of all proposals that have been subject to emergency cancellation. 
+ 
+### depositOf(`u32`): `Option<(Vec<AccountId32>,u128)>`
+- **interface**: `api.query.democracy.depositOf`
+- **summary**:    Those who have locked a deposit. 
+
+   TWOX-NOTE: Safe, as increasing integer keys are safe. 
+ 
+### lastTabledWasExternal(): `bool`
+- **interface**: `api.query.democracy.lastTabledWasExternal`
+- **summary**:    True if the last referendum tabled was submitted externally. False if it was a public  proposal. 
+ 
+### locks(`AccountId32`): `Option<u32>`
+- **interface**: `api.query.democracy.locks`
+- **summary**:    Accounts for which there are locks in action which may be removed at some point in the  future. The value is the block number at which the lock expires and may be removed. 
+
+   TWOX-NOTE: OK ― `AccountId` is a secure hash. 
+ 
+### lowestUnbaked(): `u32`
+- **interface**: `api.query.democracy.lowestUnbaked`
+- **summary**:    The lowest referendum index representing an unbaked referendum. Equal to  `ReferendumCount` if there isn't a unbaked referendum. 
+ 
+### nextExternal(): `Option<(H256,PalletDemocracyVoteThreshold)>`
+- **interface**: `api.query.democracy.nextExternal`
+- **summary**:    The referendum to be tabled whenever it would be valid to table an external proposal.  This happens when a referendum needs to be tabled and one of two conditions are met: 
+
+  - `LastTabledWasExternal` is `false`; or
+
+  - `PublicProps` is empty.
+ 
+### preimages(`H256`): `Option<PalletDemocracyPreimageStatus>`
+- **interface**: `api.query.democracy.preimages`
+- **summary**:    Map of hashes to the proposal preimage, along with who registered it and their deposit.  The block number is the block at which it was deposited. 
+ 
+### publicPropCount(): `u32`
+- **interface**: `api.query.democracy.publicPropCount`
+- **summary**:    The number of (public) proposals that have been made so far. 
+ 
+### publicProps(): `Vec<(u32,H256,AccountId32)>`
+- **interface**: `api.query.democracy.publicProps`
+- **summary**:    The public proposals. Unsorted. The second item is the proposal's hash. 
+ 
+### referendumCount(): `u32`
+- **interface**: `api.query.democracy.referendumCount`
+- **summary**:    The next free referendum index, aka the number of referenda started so far. 
+ 
+### referendumInfoOf(`u32`): `Option<PalletDemocracyReferendumInfo>`
+- **interface**: `api.query.democracy.referendumInfoOf`
+- **summary**:    Information concerning any given referendum. 
+
+   TWOX-NOTE: SAFE as indexes are not under an attacker’s control. 
+ 
+### storageVersion(): `Option<PalletDemocracyReleases>`
+- **interface**: `api.query.democracy.storageVersion`
+- **summary**:    Storage version of the pallet. 
+
+   New networks start with last version. 
+ 
+### votingOf(`AccountId32`): `PalletDemocracyVoteVoting`
+- **interface**: `api.query.democracy.votingOf`
+- **summary**:    All votes for a particular voter. We store the balance for the number of votes that we  have recorded. The second item is the total amount of delegations, that will be added. 
+
+   TWOX-NOTE: SAFE as `AccountId`s are crypto hashes anyway. 
+
+___
+
+
+## electionProviderMultiPhase
+ 
+### currentPhase(): `PalletElectionProviderMultiPhasePhase`
+- **interface**: `api.query.electionProviderMultiPhase.currentPhase`
+- **summary**:    Current phase. 
+ 
+### desiredTargets(): `Option<u32>`
+- **interface**: `api.query.electionProviderMultiPhase.desiredTargets`
+- **summary**:    Desired number of targets to elect for this round. 
+
+   Only exists when [`Snapshot`] is present. 
+ 
+### minimumUntrustedScore(): `Option<[u128;3]>`
+- **interface**: `api.query.electionProviderMultiPhase.minimumUntrustedScore`
+- **summary**:    The minimum score that each 'untrusted' solution must attain in order to be considered  feasible. 
+
+   Can be set via `set_minimum_untrusted_score`. 
+ 
+### queuedSolution(): `Option<PalletElectionProviderMultiPhaseReadySolution>`
+- **interface**: `api.query.electionProviderMultiPhase.queuedSolution`
+- **summary**:    Current best solution, signed or unsigned, queued to be returned upon `elect`. 
+ 
+### round(): `u32`
+- **interface**: `api.query.electionProviderMultiPhase.round`
+- **summary**:    Internal counter for the number of rounds. 
+
+   This is useful for de-duplication of transactions submitted to the pool, and general  diagnostics of the pallet. 
+
+   This is merely incremented once per every time that an upstream `elect` is called. 
+ 
+### signedSubmissionIndices(): `BTreeMap<[u128;3], u32>`
+- **interface**: `api.query.electionProviderMultiPhase.signedSubmissionIndices`
+- **summary**:    A sorted, bounded set of `(score, index)`, where each `index` points to a value in  `SignedSubmissions`. 
+
+   We never need to process more than a single signed submission at a time. Signed submissions  can be quite large, so we're willing to pay the cost of multiple database accesses to access  them one at a time instead of reading and decoding all of them at once. 
+ 
+### signedSubmissionNextIndex(): `u32`
+- **interface**: `api.query.electionProviderMultiPhase.signedSubmissionNextIndex`
+- **summary**:    The next index to be assigned to an incoming signed submission. 
+
+   Every accepted submission is assigned a unique index; that index is bound to that particular  submission for the duration of the election. On election finalization, the next index is  reset to 0. 
+
+   We can't just use `SignedSubmissionIndices.len()`, because that's a bounded set; past its  capacity, it will simply saturate. We can't just iterate over `SignedSubmissionsMap`,  because iteration is slow. Instead, we store the value here. 
+ 
+### signedSubmissionsMap(`u32`): `PalletElectionProviderMultiPhaseSignedSignedSubmission`
+- **interface**: `api.query.electionProviderMultiPhase.signedSubmissionsMap`
+- **summary**:    Unchecked, signed solutions. 
+
+   Together with `SubmissionIndices`, this stores a bounded set of `SignedSubmissions` while  allowing us to keep only a single one in memory at a time. 
+
+   Twox note: the key of the map is an auto-incrementing index which users cannot inspect or  affect; we shouldn't need a cryptographically secure hasher. 
+ 
+### snapshot(): `Option<PalletElectionProviderMultiPhaseRoundSnapshot>`
+- **interface**: `api.query.electionProviderMultiPhase.snapshot`
+- **summary**:    Snapshot data of the round. 
+
+   This is created at the beginning of the signed phase and cleared upon calling `elect`. 
+ 
+### snapshotMetadata(): `Option<PalletElectionProviderMultiPhaseSolutionOrSnapshotSize>`
+- **interface**: `api.query.electionProviderMultiPhase.snapshotMetadata`
+- **summary**:    The metadata of the [`RoundSnapshot`] 
+
+   Only exists when [`Snapshot`] is present. 
+
+___
+
+
+## elections
+ 
+### candidates(): `Vec<(AccountId32,u128)>`
+- **interface**: `api.query.elections.candidates`
+- **summary**:    The present candidate list. A current member or runner-up can never enter this vector  and is always implicitly assumed to be a candidate. 
+
+   Second element is the deposit. 
+
+   Invariant: Always sorted based on account id. 
+ 
+### electionRounds(): `u32`
+- **interface**: `api.query.elections.electionRounds`
+- **summary**:    The total number of vote rounds that have happened, excluding the upcoming one. 
+ 
+### members(): `Vec<PalletElectionsPhragmenSeatHolder>`
+- **interface**: `api.query.elections.members`
+- **summary**:    The current elected members. 
+
+   Invariant: Always sorted based on account id. 
+ 
+### runnersUp(): `Vec<PalletElectionsPhragmenSeatHolder>`
+- **interface**: `api.query.elections.runnersUp`
+- **summary**:    The current reserved runners-up. 
+
+   Invariant: Always sorted based on rank (worse to best). Upon removal of a member, the  last (i.e. _best_) runner-up will be replaced. 
+ 
+### voting(`AccountId32`): `PalletElectionsPhragmenVoter`
+- **interface**: `api.query.elections.voting`
+- **summary**:    Votes and locked stake of a particular voter. 
+
+   TWOX-NOTE: SAFE as `AccountId` is a crypto hash. 
+
+___
+
+
+## grandpa
+ 
+### currentSetId(): `u64`
+- **interface**: `api.query.grandpa.currentSetId`
+- **summary**:    The number of changes (both in terms of keys and underlying economic responsibilities)  in the "set" of Grandpa validators from genesis. 
+ 
+### nextForced(): `Option<u32>`
+- **interface**: `api.query.grandpa.nextForced`
+- **summary**:    next block number where we can force a change. 
+ 
+### pendingChange(): `Option<PalletGrandpaStoredPendingChange>`
+- **interface**: `api.query.grandpa.pendingChange`
+- **summary**:    Pending change: (signaled at, scheduled change). 
+ 
+### setIdSession(`u64`): `Option<u32>`
+- **interface**: `api.query.grandpa.setIdSession`
+- **summary**:    A mapping from grandpa set ID to the index of the *most recent* session for which its  members were responsible. 
+
+   TWOX-NOTE: `SetId` is not under user control. 
+ 
+### stalled(): `Option<(u32,u32)>`
+- **interface**: `api.query.grandpa.stalled`
+- **summary**:    `true` if we are currently stalled. 
+ 
+### state(): `PalletGrandpaStoredState`
+- **interface**: `api.query.grandpa.state`
+- **summary**:    State of the current authority set. 
+
+___
+
+
+## identity
+ 
+### identityOf(`AccountId32`): `Option<PalletIdentityRegistration>`
+- **interface**: `api.query.identity.identityOf`
+- **summary**:    Information that is pertinent to identify the entity behind an account. 
+
+   TWOX-NOTE: OK ― `AccountId` is a secure hash. 
+ 
+### registrars(): `Vec<Option<PalletIdentityRegistrarInfo>>`
+- **interface**: `api.query.identity.registrars`
+- **summary**:    The set of registrars. Not expected to get very big as can only be added through a  special origin (likely a council motion). 
+
+   The index into this can be cast to `RegistrarIndex` to get a valid value. 
+ 
+### subsOf(`AccountId32`): `(u128,Vec<AccountId32>)`
+- **interface**: `api.query.identity.subsOf`
+- **summary**:    Alternative "sub" identities of this account. 
+
+   The first item is the deposit, the second is a vector of the accounts. 
+
+   TWOX-NOTE: OK ― `AccountId` is a secure hash. 
+ 
+### superOf(`AccountId32`): `Option<(AccountId32,Data)>`
+- **interface**: `api.query.identity.superOf`
+- **summary**:    The super-identity of an alternative "sub" identity together with its name, within that  context. If the account is not some other account's sub-identity, then just `None`. 
+
+___
+
+
+## imOnline
+ 
+### authoredBlocks(`u32, AccountId32`): `u32`
+- **interface**: `api.query.imOnline.authoredBlocks`
+- **summary**:    For each session index, we keep a mapping of `ValidatorId<T>` to the  number of blocks authored by the given authority. 
+ 
+### heartbeatAfter(): `u32`
+- **interface**: `api.query.imOnline.heartbeatAfter`
+- **summary**:    The block number after which it's ok to send heartbeats in the current  session. 
+
+   At the beginning of each session we set this to a value that should fall  roughly in the middle of the session duration. The idea is to first wait for  the validators to produce a block in the current session, so that the  heartbeat later on will not be necessary. 
+
+   This value will only be used as a fallback if we fail to get a proper session  progress estimate from `NextSessionRotation`, as those estimates should be  more accurate then the value we calculate for `HeartbeatAfter`. 
+ 
+### keys(): `Vec<PalletImOnlineSr25519AppSr25519Public>`
+- **interface**: `api.query.imOnline.keys`
+- **summary**:    The current set of keys that may issue a heartbeat. 
+ 
+### receivedHeartbeats(`u32, u32`): `Option<WrapperOpaque<PalletImOnlineBoundedOpaqueNetworkState>>`
+- **interface**: `api.query.imOnline.receivedHeartbeats`
+- **summary**:    For each session index, we keep a mapping of `SessionIndex` and `AuthIndex` to  `WrapperOpaque<BoundedOpaqueNetworkState>`. 
+
+___
+
+
+## multisig
+ 
+### calls(`[u8;32]`): `Option<(WrapperKeepOpaque<Call>,AccountId32,u128)>`
+- **interface**: `api.query.multisig.calls`
+ 
+### multisigs(`AccountId32, [u8;32]`): `Option<PalletMultisigMultisig>`
+- **interface**: `api.query.multisig.multisigs`
+- **summary**:    The set of open multisig operations. 
+
+___
+
+
+## offences
+ 
+### concurrentReportsIndex(`[u8;16], Bytes`): `Vec<H256>`
+- **interface**: `api.query.offences.concurrentReportsIndex`
+- **summary**:    A vector of reports of the same kind that happened at the same time slot. 
+ 
+### reports(`H256`): `Option<SpStakingOffenceOffenceDetails>`
+- **interface**: `api.query.offences.reports`
+- **summary**:    The primary structure that holds all offence records keyed by report identifiers. 
+ 
+### reportsByKindIndex(`[u8;16]`): `Bytes`
+- **interface**: `api.query.offences.reportsByKindIndex`
+- **summary**:    Enumerates all reports of a kind along with the time they happened. 
+
+   All reports are sorted by the time of offence. 
+
+   Note that the actual type of this mapping is `Vec<u8>`, this is because values of  different types are not supported at the moment so we are doing the manual serialization. 
+
+___
+
+
+## proxy
+ 
+### announcements(`AccountId32`): `(Vec<PalletProxyAnnouncement>,u128)`
+- **interface**: `api.query.proxy.announcements`
+- **summary**:    The announcements made by the proxy (key). 
+ 
+### proxies(`AccountId32`): `(Vec<PalletProxyProxyDefinition>,u128)`
+- **interface**: `api.query.proxy.proxies`
+- **summary**:    The set of account proxies. Maps the account which has delegated to the accounts  which are being delegated to, together with the amount held on deposit. 
+
+___
+
+
+## recovery
+ 
+### activeRecoveries(`AccountId32, AccountId32`): `Option<PalletRecoveryActiveRecovery>`
+- **interface**: `api.query.recovery.activeRecoveries`
+- **summary**:    Active recovery attempts. 
+
+   First account is the account to be recovered, and the second account  is the user trying to recover the account. 
+ 
+### proxy(`AccountId32`): `Option<AccountId32>`
+- **interface**: `api.query.recovery.proxy`
+- **summary**:    The list of allowed proxy accounts. 
+
+   Map from the user who can access it to the recovered account. 
+ 
+### recoverable(`AccountId32`): `Option<PalletRecoveryRecoveryConfig>`
+- **interface**: `api.query.recovery.recoverable`
+- **summary**:    The set of recoverable accounts and their recovery configuration. 
+
+___
+
+
+## scheduler
+ 
+### agenda(`u32`): `Vec<Option<PalletSchedulerScheduledV2>>`
+- **interface**: `api.query.scheduler.agenda`
+- **summary**:    Items to be executed, indexed by the block number that they should be executed on. 
+ 
+### lookup(`Bytes`): `Option<(u32,u32)>`
+- **interface**: `api.query.scheduler.lookup`
+- **summary**:    Lookup from identity to the block number and index of the task. 
+ 
+### storageVersion(): `PalletSchedulerReleases`
+- **interface**: `api.query.scheduler.storageVersion`
+- **summary**:    Storage version of the pallet. 
+
+   New networks start with last version. 
+
+___
+
+
+## session
+ 
+### currentIndex(): `u32`
+- **interface**: `api.query.session.currentIndex`
+- **summary**:    Current index of the session. 
+ 
+### disabledValidators(): `Vec<u32>`
+- **interface**: `api.query.session.disabledValidators`
+- **summary**:    Indices of disabled validators. 
+
+   The vec is always kept sorted so that we can find whether a given validator is  disabled using binary search. It gets cleared when `on_session_ending` returns  a new set of identities. 
+ 
+### keyOwner(`(SpCoreCryptoKeyTypeId,Bytes)`): `Option<AccountId32>`
+- **interface**: `api.query.session.keyOwner`
+- **summary**:    The owner of a key. The key is the `KeyTypeId` + the encoded key. 
+ 
+### nextKeys(`AccountId32`): `Option<XxnetworkRuntimeSessionKeys>`
+- **interface**: `api.query.session.nextKeys`
+- **summary**:    The next session keys for a validator. 
+ 
+### queuedChanged(): `bool`
+- **interface**: `api.query.session.queuedChanged`
+- **summary**:    True if the underlying economic identities or weighting behind the validators  has changed in the queued validator set. 
+ 
+### queuedKeys(): `Vec<(AccountId32,XxnetworkRuntimeSessionKeys)>`
+- **interface**: `api.query.session.queuedKeys`
+- **summary**:    The queued keys for the next session. When the next session begins, these keys  will be used to determine the validator's session keys. 
+ 
+### validators(): `Vec<AccountId32>`
+- **interface**: `api.query.session.validators`
+- **summary**:    The current set of validators. 
+
+___
+
+
+## staking
+ 
+### activeEra(): `Option<PalletStakingActiveEraInfo>`
+- **interface**: `api.query.staking.activeEra`
+- **summary**:    The active era information, it holds index and start. 
+
+   The active era is the era being currently rewarded. Validator set of this era must be  equal to [`SessionInterface::validators`]. 
+ 
+### bonded(`AccountId32`): `Option<AccountId32>`
+- **interface**: `api.query.staking.bonded`
+- **summary**:    Map from all locked "stash" accounts to the controller account. 
+ 
+### bondedEras(): `Vec<(u32,u32)>`
+- **interface**: `api.query.staking.bondedEras`
+- **summary**:    A mapping from still-bonded eras to the first session index of that era. 
+
+   Must contains information for eras for the range:  `[active_era - bounding_duration; active_era]` 
+ 
+### canceledSlashPayout(): `u128`
+- **interface**: `api.query.staking.canceledSlashPayout`
+- **summary**:    The amount of currency given to reporters of a slash event which was  canceled by extraordinary circumstances (e.g. governance). 
+ 
+### chillThreshold(): `Option<Percent>`
+- **interface**: `api.query.staking.chillThreshold`
+- **summary**:    The threshold for when users can start calling `chill_other` for other validators /  nominators. The threshold is compared to the actual number of validators / nominators  (`CountFor*`) in the system compared to the configured max (`Max*Count`). 
+ 
+### cmixIds(`H256`): `Null`
+- **interface**: `api.query.staking.cmixIds`
+- **summary**:    The map tracking cmix ids for all (wannabe) validators. 
+ 
+### counterForNominators(): `u32`
+- **interface**: `api.query.staking.counterForNominators`
+- **summary**:    A tracker to keep count of the number of items in the `Nominators` map. 
+ 
+### counterForValidators(): `u32`
+- **interface**: `api.query.staking.counterForValidators`
+- **summary**:    A tracker to keep count of the number of items in the `Validators` map. 
+ 
+### currentEra(): `Option<u32>`
+- **interface**: `api.query.staking.currentEra`
+- **summary**:    The current era index. 
+
+   This is the latest planned era, depending on how the Session pallet queues the validator  set, it might be active or not. 
+ 
+### currentPlannedSession(): `u32`
+- **interface**: `api.query.staking.currentPlannedSession`
+- **summary**:    The last planned session scheduled by the session pallet. 
+
+   This is basically in sync with the call to [`pallet_session::SessionManager::new_session`]. 
+ 
+### earliestUnappliedSlash(): `Option<u32>`
+- **interface**: `api.query.staking.earliestUnappliedSlash`
+- **summary**:    The earliest era for which we have a pending, unapplied slash. 
+ 
+### electionActive(): `bool`
+- **interface**: `api.query.staking.electionActive`
+- **summary**:    True if election is off-chain active, i.e., snapshot was taken  Election is active. 
+ 
+### erasRewardPoints(`u32`): `PalletStakingEraRewardPoints`
+- **interface**: `api.query.staking.erasRewardPoints`
+- **summary**:    Rewards for the last `HISTORY_DEPTH` eras.  If reward hasn't been set or has been removed then 0 reward is returned. 
+ 
+### erasStakers(`u32, AccountId32`): `PalletStakingExposure`
+- **interface**: `api.query.staking.erasStakers`
+- **summary**:    Exposure of validator at era. 
+
+   This is keyed first by the era index to allow bulk deletion and then the stash account. 
+
+   Is it removed after `HISTORY_DEPTH` eras.  If stakers hasn't been set or has been removed then empty exposure is returned. 
+ 
+### erasStakersClipped(`u32, AccountId32`): `PalletStakingExposure`
+- **interface**: `api.query.staking.erasStakersClipped`
+- **summary**:    Clipped Exposure of validator at era. 
+
+   This is similar to [`ErasStakers`] but number of nominators exposed is reduced to the  `T::MaxNominatorRewardedPerValidator` biggest stakers.  (Note: the field `total` and `own` of the exposure remains unchanged).  This is used to limit the i/o cost for the nominator payout. 
+
+   This is keyed fist by the era index to allow bulk deletion and then the stash account. 
+
+   Is it removed after `HISTORY_DEPTH` eras.  If stakers hasn't been set or has been removed then empty exposure is returned. 
+ 
+### erasStartSessionIndex(`u32`): `Option<u32>`
+- **interface**: `api.query.staking.erasStartSessionIndex`
+- **summary**:    The session index at which the era start for the last `HISTORY_DEPTH` eras. 
+
+   Note: This tracks the starting session (i.e. session index when era start being active)  for the eras in `[CurrentEra - HISTORY_DEPTH, CurrentEra]`. 
+ 
+### erasTotalStake(`u32`): `u128`
+- **interface**: `api.query.staking.erasTotalStake`
+- **summary**:    The total amount staked for the last `HISTORY_DEPTH` eras.  If total hasn't been set or has been removed then 0 stake is returned. 
+ 
+### erasValidatorPrefs(`u32, AccountId32`): `PalletStakingValidatorPrefs`
+- **interface**: `api.query.staking.erasValidatorPrefs`
+- **summary**:    Similar to `ErasStakers`, this holds the preferences of validators. 
+
+   This is keyed first by the era index to allow bulk deletion and then the stash account. 
+
+   Is it removed after `HISTORY_DEPTH` eras. 
+ 
+### erasValidatorReward(`u32`): `Option<u128>`
+- **interface**: `api.query.staking.erasValidatorReward`
+- **summary**:    The total validator era payout for the last `HISTORY_DEPTH` eras. 
+
+   Eras that haven't finished yet or has been removed doesn't have reward. 
+ 
+### forceEra(): `PalletStakingForcing`
+- **interface**: `api.query.staking.forceEra`
+- **summary**:    Mode of era forcing. 
+ 
+### historyDepth(): `u32`
+- **interface**: `api.query.staking.historyDepth`
+- **summary**:    Number of eras to keep in history. 
+
+   Information is kept for eras in `[current_era - history_depth; current_era]`. 
+
+   Must be more than the number of eras delayed by session otherwise. I.e. active era must  always be in history. I.e. `active_era > current_era - history_depth` must be  guaranteed. 
+ 
+### invulnerables(): `Vec<AccountId32>`
+- **interface**: `api.query.staking.invulnerables`
+- **summary**:    Any validators that may never be slashed or forcibly kicked. It's a Vec since they're  easy to initialize and the performance hit is minimal (we expect no more than four  invulnerables) and restricted to testnets. 
+ 
+### ledger(`AccountId32`): `Option<PalletStakingStakingLedger>`
+- **interface**: `api.query.staking.ledger`
+- **summary**:    Map from all (unlocked) "controller" accounts to the info regarding the staking. 
+ 
+### maxNominatorsCount(): `Option<u32>`
+- **interface**: `api.query.staking.maxNominatorsCount`
+- **summary**:    The maximum nominator count before we stop allowing new validators to join. 
+
+   When this value is not set, no limits are enforced. 
+ 
+### maxValidatorsCount(): `Option<u32>`
+- **interface**: `api.query.staking.maxValidatorsCount`
+- **summary**:    The maximum validator count before we stop allowing new validators to join. 
+
+   When this value is not set, no limits are enforced. 
+ 
+### minimumValidatorCount(): `u32`
+- **interface**: `api.query.staking.minimumValidatorCount`
+- **summary**:    Minimum number of staking participants before emergency conditions are imposed. 
+ 
+### minNominatorBond(): `u128`
+- **interface**: `api.query.staking.minNominatorBond`
+- **summary**:    The minimum active bond to become and maintain the role of a nominator. 
+ 
+### minValidatorBond(): `u128`
+- **interface**: `api.query.staking.minValidatorBond`
+- **summary**:    The minimum active bond to become and maintain the role of a validator. 
+ 
+### minValidatorCommission(): `Perbill`
+- **interface**: `api.query.staking.minValidatorCommission`
+- **summary**:    The minimum commission that a validator can have. 
+ 
+### nominators(`AccountId32`): `Option<PalletStakingNominations>`
+- **interface**: `api.query.staking.nominators`
+- **summary**:    The map from nominator stash key to the set of stash keys of all validators to nominate. 
+
+   When updating this storage item, you must also update the `CounterForNominators`. 
+ 
+### nominatorSlashInEra(`u32, AccountId32`): `Option<u128>`
+- **interface**: `api.query.staking.nominatorSlashInEra`
+- **summary**:    All slashing events on nominators, mapped by era to the highest slash value of the era. 
+ 
+### offendingValidators(): `Vec<(u32,bool)>`
+- **interface**: `api.query.staking.offendingValidators`
+- **summary**:    Indices of validators that have offended in the active era and whether they are currently  disabled. 
+
+   This value should be a superset of disabled validators since not all offences lead to the  validator being disabled (if there was no slash). This is needed to track the percentage of  validators that have offended in the current era, ensuring a new era is forced if  `OffendingValidatorsThreshold` is reached. The vec is always kept sorted so that we can find  whether a given validator has previously offended using binary search. It gets cleared when  the era ends. 
+ 
+### slashingSpans(`AccountId32`): `Option<PalletStakingSlashingSlashingSpans>`
+- **interface**: `api.query.staking.slashingSpans`
+- **summary**:    Slashing spans for stash accounts. 
+ 
+### slashRewardFraction(): `Perbill`
+- **interface**: `api.query.staking.slashRewardFraction`
+- **summary**:    The percentage of the slash that is distributed to reporters. 
+
+   The rest of the slashed value is handled by the `Slash`. 
+ 
+### spanSlash(`(AccountId32,u32)`): `PalletStakingSlashingSpanRecord`
+- **interface**: `api.query.staking.spanSlash`
+- **summary**:    Records information about the maximum slash of a stash within a slashing span,  as well as how much reward has been paid out. 
+ 
+### storageVersion(): `PalletStakingReleases`
+- **interface**: `api.query.staking.storageVersion`
+- **summary**:    True if network has been upgraded to this version.  Storage version of the pallet. 
+
+   This is set to v7.5.0 for new networks. 
+ 
+### unappliedSlashes(`u32`): `Vec<PalletStakingUnappliedSlash>`
+- **interface**: `api.query.staking.unappliedSlashes`
+- **summary**:    All unapplied slashes that are queued for later. 
+ 
+### validatorCount(): `u32`
+- **interface**: `api.query.staking.validatorCount`
+- **summary**:    The ideal number of staking participants. 
+ 
+### validators(`AccountId32`): `PalletStakingValidatorPrefs`
+- **interface**: `api.query.staking.validators`
+- **summary**:    The map from (wannabe) validator stash key to the preferences of that validator. 
+
+   When updating this storage item, you must also update the `CounterForValidators`. 
+ 
+### validatorSlashInEra(`u32, AccountId32`): `Option<(Perbill,u128)>`
+- **interface**: `api.query.staking.validatorSlashInEra`
+- **summary**:    All slashing events on validators, mapped by era to the highest slash proportion  and slash value of the era. 
+
+___
+
+
+## substrate
+
+_These are well-known keys that are always available to the runtime implementation of any Substrate-based network._
+ 
+### changesTrieConfig(): `u32`
+- **interface**: `api.query.substrate.changesTrieConfig`
+- **summary**:    Changes trie configuration is stored under this key. 
+ 
+### childStorageKeyPrefix(): `u32`
+- **interface**: `api.query.substrate.childStorageKeyPrefix`
+- **summary**:    Prefix of child storage keys. 
+ 
+### code(): `Bytes`
+- **interface**: `api.query.substrate.code`
+- **summary**:    Wasm code of the runtime. 
+ 
+### extrinsicIndex(): `u32`
+- **interface**: `api.query.substrate.extrinsicIndex`
+- **summary**:    Current extrinsic index (u32) is stored under this key. 
+ 
+### heapPages(): `u64`
+- **interface**: `api.query.substrate.heapPages`
+- **summary**:    Number of wasm linear memory pages required for execution of the runtime. 
+
+___
+
+
+## swap
+ 
+### feeDestination(): `AccountId32`
+- **interface**: `api.query.swap.feeDestination`
+- **summary**:    Account to which the fee is paid to 
+ 
+### swapFee(): `u128`
+- **interface**: `api.query.swap.swapFee`
+- **summary**:    Swap service fee charged when moving native tokens out of the chain 
+
+___
+
+
+## system
+ 
+### account(`AccountId32`): `FrameSystemAccountInfo`
+- **interface**: `api.query.system.account`
+- **summary**:    The full account information for a particular account ID. 
+ 
+### allExtrinsicsLen(): `Option<u32>`
+- **interface**: `api.query.system.allExtrinsicsLen`
+- **summary**:    Total length (in bytes) for all extrinsics put together, for the current block. 
+ 
+### blockHash(`u32`): `H256`
+- **interface**: `api.query.system.blockHash`
+- **summary**:    Map of block numbers to block hashes. 
+ 
+### blockWeight(): `FrameSupportWeightsPerDispatchClassU64`
+- **interface**: `api.query.system.blockWeight`
+- **summary**:    The current weight for the block. 
+ 
+### digest(): `SpRuntimeDigest`
+- **interface**: `api.query.system.digest`
+- **summary**:    Digest of the current block, also part of the block header. 
+ 
+### eventCount(): `u32`
+- **interface**: `api.query.system.eventCount`
+- **summary**:    The number of events in the `Events<T>` list. 
+ 
+### events(): `Vec<FrameSystemEventRecord>`
+- **interface**: `api.query.system.events`
+- **summary**:    Events deposited for the current block. 
+
+   NOTE: This storage item is explicitly unbounded since it is never intended to be read  from within the runtime. 
+ 
+### eventTopics(`H256`): `Vec<(u32,u32)>`
+- **interface**: `api.query.system.eventTopics`
+- **summary**:    Mapping between a topic (represented by T::Hash) and a vector of indexes  of events in the `<Events<T>>` list. 
+
+   All topic vectors have deterministic storage locations depending on the topic. This  allows light-clients to leverage the changes trie storage tracking mechanism and  in case of changes fetch the list of events of interest. 
+
+   The value has the type `(T::BlockNumber, EventIndex)` because if we used only just  the `EventIndex` then in case if the topic has the same contents on the next block  no notification will be triggered thus the event might be lost. 
+ 
+### executionPhase(): `Option<FrameSystemPhase>`
+- **interface**: `api.query.system.executionPhase`
+- **summary**:    The execution phase of the block. 
+ 
+### extrinsicCount(): `Option<u32>`
+- **interface**: `api.query.system.extrinsicCount`
+- **summary**:    Total extrinsics count for the current block. 
+ 
+### extrinsicData(`u32`): `Bytes`
+- **interface**: `api.query.system.extrinsicData`
+- **summary**:    Extrinsics data for the current block (maps an extrinsic's index to its data). 
+ 
+### lastRuntimeUpgrade(): `Option<FrameSystemLastRuntimeUpgradeInfo>`
+- **interface**: `api.query.system.lastRuntimeUpgrade`
+- **summary**:    Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened. 
+ 
+### number(): `u32`
+- **interface**: `api.query.system.number`
+- **summary**:    The current block number being processed. Set by `execute_block`. 
+ 
+### parentHash(): `H256`
+- **interface**: `api.query.system.parentHash`
+- **summary**:    Hash of the previous block. 
+ 
+### upgradedToTripleRefCount(): `bool`
+- **interface**: `api.query.system.upgradedToTripleRefCount`
+- **summary**:    True if we have upgraded so that AccountInfo contains three types of `RefCount`. False  (default) if not. 
+ 
+### upgradedToU32RefCount(): `bool`
+- **interface**: `api.query.system.upgradedToU32RefCount`
+- **summary**:    True if we have upgraded so that `type RefCount` is `u32`. False (default) if not. 
+
+___
+
+
+## technicalCommittee
+ 
+### members(): `Vec<AccountId32>`
+- **interface**: `api.query.technicalCommittee.members`
+- **summary**:    The current members of the collective. This is stored sorted (just by value). 
+ 
+### prime(): `Option<AccountId32>`
+- **interface**: `api.query.technicalCommittee.prime`
+- **summary**:    The prime member that helps determine the default vote behavior in case of absentations. 
+ 
+### proposalCount(): `u32`
+- **interface**: `api.query.technicalCommittee.proposalCount`
+- **summary**:    Proposals so far. 
+ 
+### proposalOf(`H256`): `Option<Call>`
+- **interface**: `api.query.technicalCommittee.proposalOf`
+- **summary**:    Actual proposal for a given hash, if it's current. 
+ 
+### proposals(): `Vec<H256>`
+- **interface**: `api.query.technicalCommittee.proposals`
+- **summary**:    The hashes of the active proposals. 
+ 
+### voting(`H256`): `Option<PalletCollectiveVotes>`
+- **interface**: `api.query.technicalCommittee.voting`
+- **summary**:    Votes on a given proposal, if it is ongoing. 
+
+___
+
+
+## technicalMembership
+ 
+### members(): `Vec<AccountId32>`
+- **interface**: `api.query.technicalMembership.members`
+- **summary**:    The current membership, stored as an ordered Vec. 
+ 
+### prime(): `Option<AccountId32>`
+- **interface**: `api.query.technicalMembership.prime`
+- **summary**:    The current prime member, if one exists. 
+
+___
+
+
+## timestamp
+ 
+### didUpdate(): `bool`
+- **interface**: `api.query.timestamp.didUpdate`
+- **summary**:    Did the timestamp get updated in this block? 
+ 
+### now(): `u64`
+- **interface**: `api.query.timestamp.now`
+- **summary**:    Current time for the current block. 
+
+___
+
+
+## tips
+ 
+### reasons(`H256`): `Option<Bytes>`
+- **interface**: `api.query.tips.reasons`
+- **summary**:    Simple preimage lookup from the reason's hash to the original data. Again, has an  insecure enumerable hash since the key is guaranteed to be the result of a secure hash. 
+ 
+### tips(`H256`): `Option<PalletTipsOpenTip>`
+- **interface**: `api.query.tips.tips`
+- **summary**:    TipsMap that are not yet completed. Keyed by the hash of `(reason, who)` from the value.  This has the insecure enumerable hash function since the key itself is already  guaranteed to be a secure hash. 
+
+___
+
+
+## transactionPayment
+ 
+### nextFeeMultiplier(): `u128`
+- **interface**: `api.query.transactionPayment.nextFeeMultiplier`
+ 
+### storageVersion(): `PalletTransactionPaymentReleases`
+- **interface**: `api.query.transactionPayment.storageVersion`
+
+___
+
+
+## treasury
+ 
+### approvals(): `Vec<u32>`
+- **interface**: `api.query.treasury.approvals`
+- **summary**:    Proposal indices that have been approved but not yet awarded. 
+ 
+### proposalCount(): `u32`
+- **interface**: `api.query.treasury.proposalCount`
+- **summary**:    Number of proposals that have been made. 
+ 
+### proposals(`u32`): `Option<PalletTreasuryProposal>`
+- **interface**: `api.query.treasury.proposals`
+- **summary**:    Proposals that have been made. 
+
+___
+
+
+## uniques
+ 
+### account(`AccountId32, u32, u32`): `Option<Null>`
+- **interface**: `api.query.uniques.account`
+- **summary**:    The assets held by any given account; set out this way so that assets owned by a single  account can be enumerated. 
+ 
+### asset(`u32, u32`): `Option<PalletUniquesInstanceDetails>`
+- **interface**: `api.query.uniques.asset`
+- **summary**:    The assets in existence and their ownership details. 
+ 
+### attribute(`u32, Option<u32>, Bytes`): `Option<(Bytes,u128)>`
+- **interface**: `api.query.uniques.attribute`
+- **summary**:    Metadata of an asset class. 
+ 
+### class(`u32`): `Option<PalletUniquesClassDetails>`
+- **interface**: `api.query.uniques.class`
+- **summary**:    Details of an asset class. 
+ 
+### classMetadataOf(`u32`): `Option<PalletUniquesClassMetadata>`
+- **interface**: `api.query.uniques.classMetadataOf`
+- **summary**:    Metadata of an asset class. 
+ 
+### instanceMetadataOf(`u32, u32`): `Option<PalletUniquesInstanceMetadata>`
+- **interface**: `api.query.uniques.instanceMetadataOf`
+- **summary**:    Metadata of an asset instance. 
+
+___
+
+
+## vesting
+ 
+### storageVersion(): `PalletVestingReleases`
+- **interface**: `api.query.vesting.storageVersion`
+- **summary**:    Storage version of the pallet. 
+
+   New networks start with latest version, as determined by the genesis build. 
+ 
+### vesting(`AccountId32`): `Option<Vec<PalletVestingVestingInfo>>`
+- **interface**: `api.query.vesting.vesting`
+- **summary**:    Information regarding the vesting of a given account. 
+
+___
+
+
+## xXBetanetRewards
+ 
+### accounts(`AccountId32`): `XxBetanetRewardsUserInfo`
+- **interface**: `api.query.xXBetanetRewards.accounts`
+- **summary**:    Store user info 
+ 
+### approved(): `bool`
+- **interface**: `api.query.xXBetanetRewards.approved`
+- **summary**:    Store if the rewards program is approved 
+
+___
+
+
+## xXCmix
+ 
+### adminPermission(): `u32`
+- **interface**: `api.query.xXCmix.adminPermission`
+- **summary**:    Highest block number that AdminOrigin is allowed to change cmix hashes 
+ 
+### cmixAddressSpace(): `u8`
+- **interface**: `api.query.xXCmix.cmixAddressSpace`
+- **summary**:    Cmix user ephemeral reception IDs address space size in bits 
+ 
+### cmixHashes(): `XxCmixCmixSoftwareHashes`
+- **interface**: `api.query.xXCmix.cmixHashes`
+- **summary**:    Cmix software hashes 
+ 
+### cmixVariables(): `XxCmixCmixVariables`
+- **interface**: `api.query.xXCmix.cmixVariables`
+- **summary**:    Current cmix variables 
+ 
+### nextCmixVariables(): `Option<XxCmixCmixVariables>`
+- **interface**: `api.query.xXCmix.nextCmixVariables`
+- **summary**:    Next cmix variables 
+ 
+### schedulingAccount(): `AccountId32`
+- **interface**: `api.query.xXCmix.schedulingAccount`
+- **summary**:    Scheduling server account 
+
+___
+
+
+## xXCustody
+ 
+### custodians(`AccountId32`): `Null`
+- **interface**: `api.query.xXCustody.custodians`
+- **summary**:    Keep track of custodians 
+ 
+### custodyAccounts(`AccountId32`): `Null`
+- **interface**: `api.query.xXCustody.custodyAccounts`
+- **summary**:    Keep track of custody accounts 
+ 
+### teamAccounts(`AccountId32`): `XxTeamCustodyCustodyCustodyInfo`
+- **interface**: `api.query.xXCustody.teamAccounts`
+- **summary**:    Keep track of team members'accounts custody info 
+ 
+### totalCustody(): `u128`
+- **interface**: `api.query.xXCustody.totalCustody`
+- **summary**:    Total amount under custody 
+
+___
+
+
+## xXEconomics
+ 
+### idealLiquidityStake(): `u128`
+- **interface**: `api.query.xXEconomics.idealLiquidityStake`
+- **summary**:    Ideal liquidity rewards staked amount 
+ 
+### inflationParams(): `XxEconomicsInflationInflationFixedParams`
+- **interface**: `api.query.xXEconomics.inflationParams`
+- **summary**:    Inflation fixed parameters: minimum inflation, ideal stake and curve falloff 
+ 
+### interestPoints(): `Vec<XxEconomicsInflationIdealInterestPoint>`
+- **interface**: `api.query.xXEconomics.interestPoints`
+- **summary**:    List of ideal interest points, defined as a tuple of block number and idea interest 
+ 
+### liquidityRewards(): `u128`
+- **interface**: `api.query.xXEconomics.liquidityRewards`
+- **summary**:    Liquidity rewards balance 
+
+___
+
+
+## xXPublic
+ 
+### saleManager(): `AccountId32`
+- **interface**: `api.query.xXPublic.saleManager`
+- **summary**:    Sale Manager account 
+ 
+### testnetManager(): `AccountId32`
+- **interface**: `api.query.xXPublic.testnetManager`
+- **summary**:    Testnet Manager account 
diff --git a/website/docs/xxchain/_category_.json b/website/docs/xxchain/_category_.json
new file mode 100644
index 0000000000000000000000000000000000000000..ba2ab12b297cdd8e4e715e99577b98978be2d378
--- /dev/null
+++ b/website/docs/xxchain/_category_.json
@@ -0,0 +1,8 @@
+{
+  "label": "xxChain",
+  "position": 3,
+  "link": {
+    "type": "generated-index",
+    "description": "All things related to xxChain"
+  }
+}
diff --git a/website/docs/xxchain/governance.md b/website/docs/xxchain/governance.md
new file mode 100644
index 0000000000000000000000000000000000000000..7e47fbcb5885de8991f8ff1595bce14e05ce251b
--- /dev/null
+++ b/website/docs/xxchain/governance.md
@@ -0,0 +1,226 @@
+# Governance
+The xx Network uses stake-based governance based upon the standard
+governance within the Substrate Ecosystem.
+
+The primary goal of governance is to allow the network to evolve over
+time at the direction of the network's stakeholders. Fundamentally,
+governance strives to balance the will of the coin holders with the
+needs of a user-driven blockchain.
+
+In general, there are three structures within the platform for decision
+making:
+
+1.  The Coin Holders
+2.  The Council
+3.  The Technical Committee
+
+The general flow of the network is that the coin Holders elect the
+Council, and the Council elects the Technical Committee. Thus, the coin
+Holders are the root of all authority within the xx Network.
+
+Coin Holders use their coins to nominate nodes, pass referenda, and
+elect the Council. 
+
+`Boxed values` are configurable and subject to change before release or by governance.
+
+## Referenda
+
+Referenda are changes to the network. Each referendum is a proposal to
+alter anything from network parameters, code, or state all the way to
+triggering a hard fork of the network.
+
+In general, there are three types of referenda:
+
+1.  **Public Referenda:** Referenda submitted and propagated by coin
+    holders
+2.  **Council Referenda:** Referenda submitted by the Council
+3.  **Scheduled Referenda:** Referenda triggered as part of a previously
+    passed referenda
+
+Outside of fast-tracked referenda (see the section below), only one
+referendum is active for voting at any given time. These referenda occur
+in a fixed time window that will be, on network launch, `7 days`. All referenda
+are binary, giving voters a choice between either “yay” or “nay.”
+
+All referenda have an enactment delay, a period of time after the
+referendum is accepted but before it is enacted. Outside of fast-tracked
+referenda, the enactment period is `7 days`.
+
+The network alternates between putting up a public referendum and a
+council referendum for a vote every 7 days. If only one kind of proposal
+is waiting to become a referendum, then it is selected regardless of the
+kind of the previous one.
+
+## Proposal Mechanism
+
+### Public Referenda
+
+Any coin holder can propose a public referendum. To do so, the proposer
+deposits a number of coins of at least `100` xx coins. Then, any other coin holder
+may second the proposal by depositing the same amount of coins on the
+proposal.
+
+The proposal with the highest deposit will be voted on during the next
+public referenda period (as described above).
+
+The public proposal queue has a maximum size of `100` proposals.
+
+Proposals that become a referendum have a passing threshold that is
+computed according to the standard *positive turnout biasing* within the
+Substrate Ecosystem. In this type of voting, as the turnout increases,
+the passing threshold for the referendum decreases.
+
+### Council Referenda
+
+Every other referendum period is dedicated to proposals put forward by
+the Council. Council members vote internally on a motion and when it is
+approved, it becomes a referendum. Depending on the support found within
+the Council when passing the motion, the Council proposed referendum has
+different voting requirements.
+
+ * **Majority**
+    > When a simple majority (>50%) of Council members approves the motion, the resulting referendum has the same passing threshold as for public referenda (described above).  
+ * **Supermajority**
+    > When a supermajority (>60.0%) of Council members approves the motion, the resulting referendum has a simple majority passing threshold. meaning that it requires \>50% of positive votes to pass.  
+    
+ * **Unanimity**
+    > When all members of the Council support approve a motion, the resulting referendum has a passing threshold computed according to the standard *negative turnout biasing* within the Substrate Ecosystem. Negative turnout biasing is a voting system where the rejecting threshold for the referendum decreases as the turnout increases.  
+
+Any member Technical Committee can veto a Council referendum. However,
+the veto only applies once to any unique referendum, and for a cool-down
+period of `7 days`. After this period, the same referendum can be resubmitted.
+
+### Fast-Track Referenda
+
+The Technical Committee has the power to fast-track Council referenda
+that were passed with either supermajority or unanimity. In the
+fast-track process, the Technical Committee selects the enactment
+period.
+
+If the Technical Committee has a two-thirds supermajority, the
+referendum enters a fast-track voting period with a minimum of `3 hours`. If
+unanimity is achieved, a voting period smaller than `3 hours` is possible.
+
+### Proposal Cancellation
+
+The Technical Committee can cancel any public proposal with an unanimous
+vote before it becomes an active referendum. Doing so slashes the total
+deposit associated with the proposal (proposer and seconders).
+
+### Referendum Cancellation
+
+A supermajority, 2/3<sup>rd</sup> of the Council, can cancel any active referendum. This is
+designed to be used as a last resort if a malicious referendum is ever
+brought up to voting.
+
+## Council
+
+The Council is an on-chain representative body designed to represent
+passive stakeholders within the xx Network. At launch, the Council will
+have `13` members.
+
+All Council members are selected via the Phragmén election process
+standard within the Substrate Ecosystem. All coin holders can vote on
+Council members in each period. These terms will last `7 days`. The election
+selects the `13` Council members and the `10` runners-up, which keep their votes in the
+election.
+
+The Council has the power to propose referenda (See [Council
+Referenda](#council-referenda)), control the treasury, cancel
+Active Referenda, and elect the Technical Committee. Individual members
+have limited veto power over proposals presented to the Council, but an
+individual member cannot veto the same proposal more than once.
+
+### Treasury
+
+The treasury consists of funds collected through transaction fees,
+slashing, staking, and inefficiency (i.e., the network missing the ideal
+staking ratio). Any coin holder may make proposals to the Council to
+access funds by staking a minimum of `5`% of the request, or 100 coins,
+whichever is higher. The stake is slashed if the proposal is rejected
+and returned if it is accepted.
+
+To accept a proposal, at least 3/5<sup>th</sup> of the Council must support it. The
+threshold to reject a proposal is a simple majority.
+
+If there are unspent funds at the end of a `24` day treasury period, a portion
+will be burned. At network launch, this burn rate will be set at `1`%.
+
+Along with the proposal system, any coin holder can suggest a tip. Any
+Council member can back the tip by recommending an amount the recipient
+of the tip can receive. Once more than half the Council backs a tip, it
+enters a closing phase where Council members can still submit their
+backing, but the tip has already passed. Once closed, the amount awarded
+is equal to the median suggested tip amount.
+
+When tips are started by the public, they must be accompanied by a
+deposit, and the suggester receives `20`% of the total tip award.
+
+### Electing the Technical Committee
+
+A motion with 50% support by Council members can add or remove members
+from the technical committee. Any referendum can do so as well.
+
+### Others
+
+The Council can perform the following on-chain decisions, requiring
+different levels of acceptance of its members:
+
+-   2/3 of the Council can set the on-chain CmixVariables. This
+    includes, for example, points assigned to blocks produced, cMixx
+    rounds completed and penalty for realtime failures; and the
+    geographic multipliers.
+-   3/4 of the Council can cancel a Slash on a validator.
+-   2/3 of the Council can set a Phragmen election solution for the
+    validator set selection, in case of failure of the on-chain election
+    algorithm.
+-   Half of the Council can set an identity pallet registrar.
+
+## Technical Committee
+
+The technical committee, as described above, is elected by the Council
+by a simple majority vote. The technical committee’s primary
+responsibilities are to manage a series of on-chain values to ensure the
+proper functioning of the xx Network, veto power of council proposals
+(as described in [Council Referenda](#council-referenda), and the ability to fast-track
+and expedite council proposals (as described above). Any of these
+on-chain values can also be changed via a referendum.
+
+### Cmix Hashes
+
+The Technical Committee has, with democracy’s permission, the ability to
+change the on-chain version hashes of the cMixx software and its
+services. It requires 2/3 approval to enact a change.
+
+At launch, this ability expires after 6 months, and it must be renewed
+via a referendum.
+
+### Economics
+
+Technical committee unanimity is required to make any changes to the
+chain's economic parameters: inflation parameters, interest points and
+liquidity rewards.
+
+### Custody
+
+Technical committee unanimity is required to make any changes to the
+custody pallet, which includes altering a team member's account and
+adding/removing custodian accounts.
+
+### Staking
+
+Technical committee unanimity is required to make any changes to Staking
+parameters, which includes setting the desired validator set size,
+minimum validator and nominator bonds, minimum commission, etc.
+
+### Claims
+
+Two thirds of the Technical committee is required to move a claim from
+one ETH address to another.
+
+### Bridge
+
+At MainNet launch a bridge pallet is included but not active yet. Once
+active, two thirds of the Technical committee is required to make any
+changes to the bridge parameters, which includes adding/removing
+resources and relayers.
diff --git a/website/docs/xxchain/runtimeUpdate.md b/website/docs/xxchain/runtimeUpdate.md
new file mode 100644
index 0000000000000000000000000000000000000000..e78fdf7d4fd82bae71c58bb9684df445e639b3d1
--- /dev/null
+++ b/website/docs/xxchain/runtimeUpdate.md
@@ -0,0 +1,130 @@
+# Runtime Update Tutorial
+This page describes how to perform a runtime update (code change)
+in the xx Network blockchain.
+
+## Versioning
+
+xx Chain version follows the standard Semantic versioning of
+`v[major].[minor].[patch]`
+
+Runtime versioning stays inline with the xx Chain version, using a 6
+digit string.
+
+For example:
+
+-   v0.2.0 -> runtime 00 02 00 = 200
+-   v0.2.3 -> runtime 00 02 03 = 203
+-   v1.0.0 -> runtime 01 00 00 = 10000
+-   v1.1.0 -> runtime 01 01 00 = 10100
+
+If a particular change in xx Chain is client side only (no runtime
+changes), then the runtime version stays the same. These sort of changes
+should always be patches.
+
+## Runtime Compilation
+
+Steps:
+
+1.  Create a branch containing the desired changes to the runtime
+    (example:
+    [xxnetwork-runtime-203](https://github.com/xx-labs/xxchain/tree/xxnetwork-runtime-203))
+    -   Naming should follow the standard:
+        \[spec_name\]-runtime-\[spec_version\]
+    -   Make sure the spec version is correctly increased for the
+        runtime
+        -   Example: current runtime spec version is 202, so the new version
+            needs to be at least 203 for the upgrade to be performed
+    -   Make sure Cargo.toml versions are also increased for the cli and
+        runtime packages. Also, any packages that import the runtime
+        should be updated to import the new version
+2.  Commit changes to git, and create a tag following the Semantic
+    versioning rules described above
+3.  Compile the binary (which compiles the runtime)
+
+Alternatively, if a release already exists, you can get the necessary
+binary, runtime code and subwasm information from the release notes.
+
+Example:
+[v0.2.3](https://github.com/xx-labs/xxchain/releases/tag/v0.2.3)
+
+## Democracy Proposal
+
+Steps:
+
+1.  In the wallet go to the
+    [Democracy](https://wallet.xx.network/#/democracy)
+2.  Click the “Submit proposal” button
+
+![](@site/static/img/Screen_Shot_2022-04-26_at_2.06.27_PM.png)
+
+3.  Fill in the preimage hash with the system.setCode hash from the
+    previous steps![](@site/static/img/Screen_Shot_2022-04-26_at_2.07.48_PM.png)
+4.  Click "Submit proposal" and then on the next screen sign and submit
+    the transaction
+
+Now that the proposal is up, go to the xx Network community channels
+([discord](https://discord.com/invite/Y8pCkbK) and
+[telegram](https://t.me/xxnetwork)) and inform other members of the
+community about the proposed code change. It is important that
+information about the code change is included (references to github
+release), since the actual code won’t be put on chain until the
+referendum passes.
+
+Once the proposal becomes a referendum, anyone can vote for it. Voting
+period is one week.
+
+## Verifying Code Changes
+
+While the referendum is ongoing, community members might wish to verify
+that the proposer was truthful.
+
+Steps:
+
+1.  Checkout the branch with the new runtime
+2.  Compile the binary (which compiles the runtime)
+3.  Use subwasm to get the system.setCode hash for the new runtime in
+    compact compressed format (see above for example)
+4.  Verify that the proposal preimage hash that is on-chain matches the
+    system.setCode hash output in the previous step
+
+## Uploading Code
+
+If the referendum passes, the enactment period is one week as well,
+meaning the change is only performed one week after the referendum ends.
+Before the end of this enactment period, the code changes must be
+uploaded on chain, otherwise the enactment will fail.
+
+This can be done by anyone, without needing to reserve coins, since the
+preimage is imminent.
+
+Steps:
+
+1.  In the wallet go to the
+    [Democracy/Dispatch](https://wallet.xx.network/#/democracy/dispatch)
+2.  Click the “Image” button
+3.  Select ”system” and “setCode” from the dropdown menus and click on
+    the “file upload” toggle![](@site/static/img/Screen_Shot_2022-04-26_at_2.19.45_PM.png)
+4.  Click on the code field (where it says “click to select …”) which
+    opens your OS file explorer. Find the runtime file containing the
+    new code and open it![](@site/static/img/Screen_Shot_2022-04-26_at_2.20.26_PM.png)
+5.  If the code is correct, the preimage hash matches what was approved
+    in the referendum (this was highlighted in red before the file was
+    selected). This makes it impossible to change the code to upload
+    after the referendum has been approved![](@site/static/img/Screen_Shot_2022-04-26_at_2.20.37_PM.png)
+6.  Click the “Submit preimage” button
+7.  Review the information
+:::note
+Since the code change is a large file, the transaction
+        fees shown could be close to 100 xx. However, since this
+        referendum is imminent, the fee is refunded at the end of the
+        transaction processing. Still, the funds still need to be
+        available in the account to be able to submit the transaction
+:::
+
+![](@site/static/img/Screen_Shot_2022-04-26_at_2.20.49_PM.png)
+8.  Sign and submit the transaction
+9.  When the transaction is in a block it’s possible to see the
+    transaction fee being Withdraw and then Deposited back into the
+    account![](@site/static/img/Screen_Shot_2022-04-26_at_2.21.51_PM.png)
+10. In the democracy dispatch queue, now it’s possible to see the exact
+    proposal data instead of only the preimage![](@site/static/img/Screen_Shot_2022-04-26_at_2.21.07_PM.png)
diff --git a/website/docs/xxchain/xxchain.md b/website/docs/xxchain/xxchain.md
new file mode 100644
index 0000000000000000000000000000000000000000..fe403d7bc96a9c8a0f3f0fb18ab2b5dd8c28d8f8
--- /dev/null
+++ b/website/docs/xxchain/xxchain.md
@@ -0,0 +1,11 @@
+---
+sidebar_position: 1
+---
+
+# Overview
+
+The initial version of the xx Chain is built on Substrate, an open-source framework for efficiently and securely creating blockchain networks. For its consensus algorithm, xx Chain uses the most secure BFT approach offered by Substrate, which consists of BABE for block authoring and GRANDPA for block finality.
+
+The xx Chain uses Nominated Proof of Stake (NPoS) to secure the network economically. Anyone wishing to become a validator must stake coins, with a network governed minimum, expected to start at 1000 coins. Users of the network that do not want to become validators can still contribute by staking their coins and nominating validators. Each era (a period currently defined as 24 hours) an election determines which validators get selected based on their staked amounts, the nominations they have received, and the size of the validator set. Once elected, every validator is equal, i.e., rewards are not proportional to the validator’s stake. Instead, a point-based system measures general blockchain performance: uptime, block production, and each validator get a percentage of the total reward based on their point total for each era. To find out more about these topics, please visit the xx Network Economics and Staking pages.
+
+The xx Chain has decentralized governance that allows every coin holder to propose, second, and vote in referendums. There is also a Council with a limited number of seats that can propose motions and other essential decisions that users can vote on. In addition, any user can run and become a candidate to the Council, and all users of the network can vote on candidates, with a fixed number getting elected each week. Finally, a smaller Technical Committee, appointed by the Council, carries out technical decisions that are of significant importance to a smooth and secure operation of the network. To find out more about this topic, please visit the Governance page.
\ No newline at end of file
diff --git a/website/static/img/Account.jpg b/website/static/img/Account.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5fe532f0768140aa8ad60b625489dad5939fd642
Binary files /dev/null and b/website/static/img/Account.jpg differ
diff --git a/website/static/img/Active_&_Waiting_Nominations.png b/website/static/img/Active_&_Waiting_Nominations.png
new file mode 100644
index 0000000000000000000000000000000000000000..e1e06e55af686c5b524084d58a1f90485197adf8
Binary files /dev/null and b/website/static/img/Active_&_Waiting_Nominations.png differ
diff --git a/website/static/img/Add_an_Account_Via_Seed.png b/website/static/img/Add_an_Account_Via_Seed.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a71cf58ca1ad059920aa59fbf2411a4db2f8041
Binary files /dev/null and b/website/static/img/Add_an_Account_Via_Seed.png differ
diff --git a/website/static/img/Add_an_Account_Via_Seed_-_Account_details.png b/website/static/img/Add_an_Account_Via_Seed_-_Account_details.png
new file mode 100644
index 0000000000000000000000000000000000000000..a172b7f867bdb58c5857e66f3c90a2ee4f87ca94
Binary files /dev/null and b/website/static/img/Add_an_Account_Via_Seed_-_Account_details.png differ
diff --git a/website/static/img/Add_an_Account_Via_Seed_-_Checkbox.png b/website/static/img/Add_an_Account_Via_Seed_-_Checkbox.png
new file mode 100644
index 0000000000000000000000000000000000000000..b033d187e2e525b1dfa63ea83503c9ec81c51ae4
Binary files /dev/null and b/website/static/img/Add_an_Account_Via_Seed_-_Checkbox.png differ
diff --git a/website/static/img/Add_an_Account_Via_Seed_-_Enter_Mnemonic_Seed.png b/website/static/img/Add_an_Account_Via_Seed_-_Enter_Mnemonic_Seed.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bb6a90c33c38bc004379d6aa61ec9fcae73874a
Binary files /dev/null and b/website/static/img/Add_an_Account_Via_Seed_-_Enter_Mnemonic_Seed.png differ
diff --git a/website/static/img/Add_an_Account_Via_Seed_-_Enter_Mnemonic_Seed_(Top).png b/website/static/img/Add_an_Account_Via_Seed_-_Enter_Mnemonic_Seed_(Top).png
new file mode 100644
index 0000000000000000000000000000000000000000..00d3a5380b15c5b074b22563c1e1fce59f6c133a
Binary files /dev/null and b/website/static/img/Add_an_Account_Via_Seed_-_Enter_Mnemonic_Seed_(Top).png differ
diff --git a/website/static/img/Add_an_Account_Via_Seed_-_Next_Button.png b/website/static/img/Add_an_Account_Via_Seed_-_Next_Button.png
new file mode 100644
index 0000000000000000000000000000000000000000..0695513f6118209b806981dc33b060c520101757
Binary files /dev/null and b/website/static/img/Add_an_Account_Via_Seed_-_Next_Button.png differ
diff --git a/website/static/img/Add_an_Account_Via_Seed_-_Save.png b/website/static/img/Add_an_Account_Via_Seed_-_Save.png
new file mode 100644
index 0000000000000000000000000000000000000000..b10d768e998f8414c44bcb385d9b1e2b5cf8ac25
Binary files /dev/null and b/website/static/img/Add_an_Account_Via_Seed_-_Save.png differ
diff --git a/website/static/img/Add_via_ledger.png b/website/static/img/Add_via_ledger.png
new file mode 100644
index 0000000000000000000000000000000000000000..ebaa6bd8a801fd21ea2147d9a9a51848ef8e9797
Binary files /dev/null and b/website/static/img/Add_via_ledger.png differ
diff --git a/website/static/img/Addmultisig.jpg b/website/static/img/Addmultisig.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3517a54f673300ecc480348c4a1d2f8ca70661ff
Binary files /dev/null and b/website/static/img/Addmultisig.jpg differ
diff --git a/website/static/img/Authorize_Transaction_-_Claim_xx_Tokens.png b/website/static/img/Authorize_Transaction_-_Claim_xx_Tokens.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ae29130c9745930b8a961978a1249ae09e08fb7
Binary files /dev/null and b/website/static/img/Authorize_Transaction_-_Claim_xx_Tokens.png differ
diff --git a/website/static/img/Authorize_Transaction_Windows_-_BetaNet_Rewards.png b/website/static/img/Authorize_Transaction_Windows_-_BetaNet_Rewards.png
new file mode 100644
index 0000000000000000000000000000000000000000..97de5a75cf1534a8fec6cfe49e806df0b927552c
Binary files /dev/null and b/website/static/img/Authorize_Transaction_Windows_-_BetaNet_Rewards.png differ
diff --git a/website/static/img/BadPercentageP.png b/website/static/img/BadPercentageP.png
new file mode 100644
index 0000000000000000000000000000000000000000..db894e6b63bea5e5bbedb65ec4af542781ed9362
Binary files /dev/null and b/website/static/img/BadPercentageP.png differ
diff --git a/website/static/img/BadValidator.png b/website/static/img/BadValidator.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8d17b63f22cc405be79d0f30126c611b55e1b0e
Binary files /dev/null and b/website/static/img/BadValidator.png differ
diff --git a/website/static/img/BetaNet_Hierarchy.svg b/website/static/img/BetaNet_Hierarchy.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b8404d5e801e6643056d03aca91fd6233c88244a
--- /dev/null
+++ b/website/static/img/BetaNet_Hierarchy.svg
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by Microsoft Visio, SVG Export BetaNet_Hierarchy.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
+		xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="7.01042in" height="3.69792in"
+		viewBox="0 0 504.75 266.25" xml:space="preserve" color-interpolation-filters="sRGB" class="st17">
+	<v:documentProperties v:langID="1033" v:viewMarkup="false">
+		<v:userDefs>
+			<v:ud v:nameU="msvNoAutoConnect" v:val="VT0(1):26"/>
+		</v:userDefs>
+	</v:documentProperties>
+
+	<style type="text/css">
+	<![CDATA[
+		.st1 {fill:#037281;stroke:#3d3d3d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+		.st2 {fill:#f6f4f4;font-family:DejaVu Sans Condensed;font-size:0.916672em}
+		.st3 {fill:#3594a1;stroke:#3d3d3d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+		.st4 {fill:#014650;stroke:#3d3d3d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+		.st5 {marker-end:url(#mrkr5-28);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st6 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.40983606557377}
+		.st7 {marker-end:url(#mrkr5-28);marker-start:url(#mrkr5-60);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st8 {marker-end:url(#mrkr5-74);stroke:#000000;stroke-dasharray:3.75,3.75;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st9 {fill:#f6f4f4;stroke:#3d3d3d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st10 {fill:#3d3d3d;font-family:DejaVu Sans Condensed;font-size:0.833336em}
+		.st11 {font-size:0.799995em}
+		.st12 {marker-end:url(#mrkr5-28);stroke:#000000;stroke-dasharray:3.75,3.75;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st13 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st14 {fill:#000000;font-family:DejaVu Sans Condensed;font-size:0.833336em}
+		.st15 {fill:#69c0cd;stroke:#535353;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+		.st16 {fill:#ffffff;font-family:DejaVu Sans Condensed;font-size:0.666664em}
+		.st17 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	]]>
+	</style>
+
+	<defs id="Markers">
+		<g id="lend5">
+			<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"/>
+		</g>
+		<marker id="mrkr5-28" class="st6" v:arrowType="5" v:arrowSize="1" v:setback="4.27" refX="-4.27" orient="auto"
+				markerUnits="strokeWidth" overflow="visible">
+			<use xlink:href="#lend5" transform="scale(-2.44,-2.44) "/>
+		</marker>
+		<marker id="mrkr5-60" class="st6" v:arrowType="5" v:arrowSize="1" v:setback="3.982" refX="3.982" orient="auto"
+				markerUnits="strokeWidth" overflow="visible">
+			<use xlink:href="#lend5" transform="scale(2.44) "/>
+		</marker>
+		<marker id="mrkr5-74" class="st6" v:arrowType="5" v:arrowSize="1" v:setback="3.982" refX="-3.982" orient="auto"
+				markerUnits="strokeWidth" overflow="visible">
+			<use xlink:href="#lend5" transform="scale(-2.44,-2.44) "/>
+		</marker>
+	</defs>
+	<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
+		<title>Page-1</title>
+		<v:pageProperties v:drawingScale="1" v:pageScale="1" v:drawingUnits="19" v:shadowOffsetX="9" v:shadowOffsetY="-9"/>
+		<v:layer v:name="Connector" v:index="0"/>
+		<g id="group65-1" transform="translate(31.875,-34.125)" v:mID="65" v:groupContext="group">
+			<title>Sheet.65</title>
+			<g id="shape4-2" v:mID="4" v:groupContext="shape" transform="translate(99,-108)">
+				<title>Sheet.4</title>
+				<desc>Node</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="18" cy="248.25" width="36" height="36"/>
+				<rect x="0" y="230.25" width="36" height="36" class="st1"/>
+				<text x="5.09" y="251.55" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Node</text>			</g>
+			<g id="shape6-5" v:mID="6" v:groupContext="shape" transform="translate(90,-54)">
+				<title>Sheet.6</title>
+				<desc>Gateway</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="27" cy="248.25" width="54.01" height="36"/>
+				<rect x="0" y="230.25" width="54" height="36" class="st3"/>
+				<text x="5.14" y="251.55" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Gateway</text>			</g>
+			<g id="shape14-8" v:mID="14" v:groupContext="shape" transform="translate(90,-162)">
+				<title>Sheet.14</title>
+				<desc>Permissioning</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="99" cy="248.25" width="198" height="36"/>
+				<rect x="0" y="230.25" width="198" height="36" class="st4"/>
+				<text x="64.39" y="251.55" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Permissioning</text>			</g>
+			<g id="shape15-11" v:mID="15" v:groupContext="shape" transform="translate(171,-108)">
+				<title>Sheet.15</title>
+				<desc>Node</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="18" cy="248.25" width="36" height="36"/>
+				<rect x="0" y="230.25" width="36" height="36" class="st1"/>
+				<text x="5.09" y="251.55" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Node</text>			</g>
+			<g id="shape16-14" v:mID="16" v:groupContext="shape" transform="translate(162,-54)">
+				<title>Sheet.16</title>
+				<desc>Gateway</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="27" cy="248.25" width="54.01" height="36"/>
+				<rect x="0" y="230.25" width="54" height="36" class="st3"/>
+				<text x="5.14" y="251.55" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Gateway</text>			</g>
+			<g id="shape17-17" v:mID="17" v:groupContext="shape" transform="translate(243,-108)">
+				<title>Sheet.17</title>
+				<desc>Node</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="18" cy="248.25" width="36" height="36"/>
+				<rect x="0" y="230.25" width="36" height="36" class="st1"/>
+				<text x="5.09" y="251.55" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Node</text>			</g>
+			<g id="shape18-20" v:mID="18" v:groupContext="shape" transform="translate(234,-54)">
+				<title>Sheet.18</title>
+				<desc>Gateway</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="27" cy="248.25" width="54.01" height="36"/>
+				<rect x="0" y="230.25" width="54" height="36" class="st3"/>
+				<text x="5.14" y="251.55" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Gateway</text>			</g>
+			<g id="shape23-23" v:mID="23" v:groupContext="shape" v:layerMember="0" transform="translate(108,-144)">
+				<title>Dynamic connector</title>
+				<path d="M9 264 L9 255.84" class="st5"/>
+			</g>
+			<g id="shape28-29" v:mID="28" v:groupContext="shape" v:layerMember="0" transform="translate(180,-144)">
+				<title>Dynamic connector.28</title>
+				<path d="M9 264 L9 255.84" class="st5"/>
+			</g>
+			<g id="shape29-34" v:mID="29" v:groupContext="shape" v:layerMember="0" transform="translate(252,-144)">
+				<title>Dynamic connector.29</title>
+				<path d="M9 264 L9 255.84" class="st5"/>
+			</g>
+			<g id="shape30-39" v:mID="30" v:groupContext="shape" v:layerMember="0" transform="translate(252,-90)">
+				<title>Dynamic connector.30</title>
+				<path d="M9 264 L9 255.84" class="st5"/>
+			</g>
+			<g id="shape31-44" v:mID="31" v:groupContext="shape" v:layerMember="0" transform="translate(180,-90)">
+				<title>Dynamic connector.31</title>
+				<path d="M9 264 L9 255.84" class="st5"/>
+			</g>
+			<g id="shape32-49" v:mID="32" v:groupContext="shape" v:layerMember="0" transform="translate(126,-90)">
+				<title>Dynamic connector.32</title>
+				<path d="M-9 264 L-9 255.84" class="st5"/>
+			</g>
+			<g id="shape33-54" v:mID="33" v:groupContext="shape" v:layerMember="0" transform="translate(168.75,-115.875)">
+				<title>Dynamic connector.33</title>
+				<path d="M-4.98 257.25 L-5.34 257.25 L-26.16 257.25" class="st7"/>
+			</g>
+			<g id="shape35-62" v:mID="35" v:groupContext="shape" v:layerMember="0" transform="translate(240.75,-117)">
+				<title>Dynamic connector.35</title>
+				<path d="M-4.98 257.25 L-5.34 257.25 L-26.16 257.25" class="st7"/>
+			</g>
+			<g id="shape48-69" v:mID="48" v:groupContext="shape" v:layerMember="0" transform="translate(75.4687,-17.5)">
+				<title>Dynamic connector.48</title>
+				<path d="M5.72 266.25 C1.03 265.75 -21.48 225.23 -21.47 184.71 C-21.46 149.55 -4.5 114.4 7.34 105.76 L7.67 105.62"
+						class="st8"/>
+			</g>
+			<g id="shape49-75" v:mID="49" v:groupContext="shape" transform="translate(315,-63)">
+				<title>Sheet.49</title>
+				<desc>Legend Polling Bi-directional Comms Registration/Startup</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="63" cy="237" width="126.01" height="58.5"/>
+				<rect x="0" y="207.75" width="126" height="58.5" class="st9"/>
+				<text x="4" y="219" class="st10" v:langID="1033"><v:paragraph v:spAfter="4"/><v:tabList/>Legend<v:newlineChar/><v:paragraph
+							v:indentLeft="36" v:spAfter="4"/><tspan x="40" dy="1.775em" class="st11">Polling<v:newlineChar/></tspan><tspan
+							x="40" dy="1.7em" class="st11">Bi</tspan><tspan class="st11">-</tspan><tspan class="st11">directional Comms<v:newlineChar/></tspan><tspan
+							x="40" dy="1.813em" class="st11">Registration/Startup</tspan></text>			</g>
+			<g id="shape52-83" v:mID="52" v:groupContext="shape" transform="translate(319.5,-99)">
+				<title>Sheet.52</title>
+				<path d="M0 266.25 L26.16 266.25" class="st5"/>
+			</g>
+			<g id="shape53-88" v:mID="53" v:groupContext="shape" transform="translate(319.5,-84.9375)">
+				<title>Sheet.53</title>
+				<path d="M4.98 266.25 L5.34 266.25 L26.16 266.25" class="st7"/>
+			</g>
+			<g id="shape54-95" v:mID="54" v:groupContext="shape" transform="translate(319.5,-70.875)">
+				<title>Sheet.54</title>
+				<path d="M0 266.25 L26.16 266.25" class="st12"/>
+			</g>
+			<g id="shape57-100" v:mID="57" v:groupContext="shape" transform="translate(0,-170)">
+				<title>Sheet.57</title>
+				<desc>Level 0</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="22.5" cy="256.25" width="45" height="20"/>
+				<rect x="0" y="246.25" width="45" height="20" class="st13"/>
+				<text x="4" y="259.25" class="st14" v:langID="1033"><v:paragraph/><v:tabList/>Level 0</text>			</g>
+			<g id="shape58-103" v:mID="58" v:groupContext="shape" transform="translate(0,-116)">
+				<title>Sheet.58</title>
+				<desc>Level 1</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="22.5" cy="256.25" width="45" height="20"/>
+				<rect x="0" y="246.25" width="45" height="20" class="st13"/>
+				<text x="4" y="259.25" class="st14" v:langID="1033"><v:paragraph/><v:tabList/>Level 1</text>			</g>
+			<g id="shape59-106" v:mID="59" v:groupContext="shape" transform="translate(0,-62)">
+				<title>Sheet.59</title>
+				<desc>Level 2</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="22.5" cy="256.25" width="45" height="20"/>
+				<rect x="0" y="246.25" width="45" height="20" class="st13"/>
+				<text x="4" y="259.25" class="st14" v:langID="1033"><v:paragraph/><v:tabList/>Level 2</text>			</g>
+			<g id="shape60-109" v:mID="60" v:groupContext="shape" transform="translate(0,-8)">
+				<title>Sheet.60</title>
+				<desc>Level 3</desc>
+				<v:textBlock v:margins="rect(4,4,4,4)"/>
+				<v:textRect cx="22.5" cy="256.25" width="45" height="20"/>
+				<rect x="0" y="246.25" width="45" height="20" class="st13"/>
+				<text x="4" y="259.25" class="st14" v:langID="1033"><v:paragraph/><v:tabList/>Level 3</text>			</g>
+			<g id="group64-112" transform="translate(85.125,5.68434E-14)" v:mID="64" v:groupContext="group">
+				<title>Sheet.64</title>
+				<g id="shape12-113" v:mID="12" v:groupContext="shape">
+					<title>Sheet.12</title>
+					<desc>Client</desc>
+					<v:textBlock v:margins="rect(4,4,4,4)"/>
+					<v:textRect cx="14.6693" cy="248.25" width="29.34" height="36"/>
+					<rect x="0" y="230.25" width="29.3386" height="36" class="st15"/>
+					<text x="4.25" y="250.65" class="st16" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Client</text>				</g>
+				<g id="shape38-116" v:mID="38" v:groupContext="shape" transform="translate(142.129,0)">
+					<title>Sheet.38</title>
+					<desc>Client</desc>
+					<v:textBlock v:margins="rect(4,4,4,4)"/>
+					<v:textRect cx="14.6693" cy="248.25" width="29.34" height="36"/>
+					<rect x="0" y="230.25" width="29.3386" height="36" class="st15"/>
+					<text x="4.25" y="250.65" class="st16" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Client</text>				</g>
+				<g id="shape39-119" v:mID="39" v:groupContext="shape" transform="translate(35.5323,0)">
+					<title>Sheet.39</title>
+					<desc>Client</desc>
+					<v:textBlock v:margins="rect(4,4,4,4)"/>
+					<v:textRect cx="14.6693" cy="248.25" width="29.34" height="36"/>
+					<rect x="0" y="230.25" width="29.3386" height="36" class="st15"/>
+					<text x="4.25" y="250.65" class="st16" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Client</text>				</g>
+				<g id="shape40-122" v:mID="40" v:groupContext="shape" transform="translate(71.0646,0)">
+					<title>Sheet.40</title>
+					<desc>Client</desc>
+					<v:textBlock v:margins="rect(4,4,4,4)"/>
+					<v:textRect cx="14.6693" cy="248.25" width="29.34" height="36"/>
+					<rect x="0" y="230.25" width="29.3386" height="36" class="st15"/>
+					<text x="4.25" y="250.65" class="st16" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Client</text>				</g>
+				<g id="shape41-125" v:mID="41" v:groupContext="shape" transform="translate(106.597,0)">
+					<title>Sheet.41</title>
+					<desc>Client</desc>
+					<v:textBlock v:margins="rect(4,4,4,4)"/>
+					<v:textRect cx="14.6693" cy="248.25" width="29.34" height="36"/>
+					<rect x="0" y="230.25" width="29.3386" height="36" class="st15"/>
+					<text x="4.25" y="250.65" class="st16" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Client</text>				</g>
+				<g id="shape42-128" v:mID="42" v:groupContext="shape" v:layerMember="0" transform="translate(5.66929,-36.185)">
+					<title>Dynamic connector.42</title>
+					<path d="M9 264.1 L9 255.74" class="st5"/>
+				</g>
+				<g id="shape44-133" v:mID="44" v:groupContext="shape" v:layerMember="0" transform="translate(76.7339,-36.185)">
+					<title>Dynamic connector.44</title>
+					<path d="M9 264.1 L9 255.74" class="st5"/>
+				</g>
+				<g id="shape45-138" v:mID="45" v:groupContext="shape" v:layerMember="0" transform="translate(147.798,-36.185)">
+					<title>Dynamic connector.45</title>
+					<path d="M9 264.1 L9 255.74" class="st5"/>
+				</g>
+				<g id="shape46-143" v:mID="46" v:groupContext="shape" v:layerMember="0" transform="translate(112.266,-35.7283)">
+					<title>Dynamic connector.46</title>
+					<path d="M9 264.56 L9 255.28" class="st5"/>
+				</g>
+				<g id="shape47-148" v:mID="47" v:groupContext="shape" v:layerMember="0" transform="translate(41.2016,-35.7283)">
+					<title>Dynamic connector.47</title>
+					<path d="M9 264.56 L9 255.28" class="st5"/>
+				</g>
+				<g id="shape61-153" v:mID="61" v:groupContext="shape" transform="translate(177.661,0)">
+					<title>Sheet.61</title>
+					<desc>Client</desc>
+					<v:textBlock v:margins="rect(4,4,4,4)"/>
+					<v:textRect cx="14.6693" cy="248.25" width="29.34" height="36"/>
+					<rect x="0" y="230.25" width="29.3386" height="36" class="st15"/>
+					<text x="4.25" y="250.65" class="st16" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Client</text>				</g>
+				<g id="shape62-156" v:mID="62" v:groupContext="shape" v:layerMember="0" transform="translate(183.331,-36.185)">
+					<title>Dynamic connector.62</title>
+					<path d="M9 264.1 L9 255.74" class="st5"/>
+				</g>
+			</g>
+		</g>
+	</g>
+</svg>
diff --git a/website/static/img/BetaNet_Rewards_Expired.png b/website/static/img/BetaNet_Rewards_Expired.png
new file mode 100644
index 0000000000000000000000000000000000000000..718ae86452d240e97c3acc16c8da981e14fae669
Binary files /dev/null and b/website/static/img/BetaNet_Rewards_Expired.png differ
diff --git a/website/static/img/BetaNet_Rewards_Transaction_Notifications.png b/website/static/img/BetaNet_Rewards_Transaction_Notifications.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab7507984ca5ade805dfdbe1d935cb0723a80881
Binary files /dev/null and b/website/static/img/BetaNet_Rewards_Transaction_Notifications.png differ
diff --git a/website/static/img/Bins_WorldMap-1030x612.png b/website/static/img/Bins_WorldMap-1030x612.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0f06f1d8a03fe4e04dc4258320f658b98389f9a
Binary files /dev/null and b/website/static/img/Bins_WorldMap-1030x612.png differ
diff --git a/website/static/img/Bins_WorldMap.png b/website/static/img/Bins_WorldMap.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6d2a40230017adafaafb97f8b93fd9281a86f21
Binary files /dev/null and b/website/static/img/Bins_WorldMap.png differ
diff --git a/website/static/img/Bracket_Arrow_1.svg b/website/static/img/Bracket_Arrow_1.svg
new file mode 100644
index 0000000000000000000000000000000000000000..5e044d4ecf544526d098749b42d35a70130b5733
--- /dev/null
+++ b/website/static/img/Bracket_Arrow_1.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="75.416px" height="94.5px" viewBox="29.012 9.113 75.416 94.5" enable-background="new 29.012 9.113 75.416 94.5"
+	 xml:space="preserve">
+<g>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="8" points="29.012,10.113 37.762,10.113 
+		37.762,102.613 29.012,102.613 	"/>
+	<g>
+		<g>
+			<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="8" x1="53.039" y1="56.363" x2="104.428" y2="56.363"/>
+			<g>
+				<polygon fill="#FFFFFF" points="54.79,62.347 44.428,56.363 54.79,50.38 				"/>
+			</g>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/website/static/img/ChainDB_Look.png b/website/static/img/ChainDB_Look.png
new file mode 100644
index 0000000000000000000000000000000000000000..87cbccbd2ea77d88963a7409e62c3034c0caab21
Binary files /dev/null and b/website/static/img/ChainDB_Look.png differ
diff --git a/website/static/img/ChainDB_MD5.png b/website/static/img/ChainDB_MD5.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9085f79998628379cf4aa50a572c8ee095425c0
Binary files /dev/null and b/website/static/img/ChainDB_MD5.png differ
diff --git a/website/static/img/ChainDB_Overload.png b/website/static/img/ChainDB_Overload.png
new file mode 100644
index 0000000000000000000000000000000000000000..ebefb2b17d623851e715c8719d37e20a480a62bc
Binary files /dev/null and b/website/static/img/ChainDB_Overload.png differ
diff --git a/website/static/img/Choose_How_to_Sign_to_Claim_Tokens.png b/website/static/img/Choose_How_to_Sign_to_Claim_Tokens.png
new file mode 100644
index 0000000000000000000000000000000000000000..343e8745851e1b67e0981aae375d404f0721ac31
Binary files /dev/null and b/website/static/img/Choose_How_to_Sign_to_Claim_Tokens.png differ
diff --git a/website/static/img/Claiming_xx_Token_Transaction_Notifications.png b/website/static/img/Claiming_xx_Token_Transaction_Notifications.png
new file mode 100644
index 0000000000000000000000000000000000000000..3950cf0c15f1720302aac6ccf54f56412fc0c795
Binary files /dev/null and b/website/static/img/Claiming_xx_Token_Transaction_Notifications.png differ
diff --git a/website/static/img/Codebase_Overview.svg b/website/static/img/Codebase_Overview.svg
new file mode 100644
index 0000000000000000000000000000000000000000..0d925f3e77b0fb49d5a67736265d49f3f1f93244
--- /dev/null
+++ b/website/static/img/Codebase_Overview.svg
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by Microsoft Visio, SVG Export Codebase Overview Figure [v3.0].svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
+		width="8.5in" height="7.3in" viewBox="0 0 612 525.6" xml:space="preserve" color-interpolation-filters="sRGB" class="st24">
+	<style type="text/css">
+	<![CDATA[
+		.st1 {fill:none;stroke:#008aaf;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
+		.st2 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st3 {fill:#008aaf;font-family:Noto Sans;font-size:1.00001em;font-weight:bold}
+		.st4 {marker-end:url(#mrkr3-11);stroke:#00ffe0;stroke-dasharray:3.75,3.75;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st5 {fill:#00ffe0;fill-opacity:1;stroke:#00ffe0;stroke-opacity:1;stroke-width:0.40983606557377}
+		.st6 {stroke:#00ffe0;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
+		.st7 {fill:#ffffff;stroke:#d0f5ff;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st8 {fill:#a5a5a5;font-family:Noto Sans;font-size:0.916672em}
+		.st9 {stroke:#00ccff;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
+		.st10 {fill:#ffffff;stroke:#669aff;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st11 {fill:#3d3d3d;font-family:Noto Sans;font-size:0.916672em}
+		.st12 {font-size:1em}
+		.st13 {fill:#ffffff;stroke:#00ccff;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st14 {fill:#3d3d3d;font-family:Noto Sans;font-size:1.00001em}
+		.st15 {stroke:#669aff;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
+		.st16 {fill:#ffffff;stroke:#008aaf;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st17 {stroke:#008aaf;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
+		.st18 {marker-end:url(#mrkr3-77);stroke:#008aaf;stroke-dasharray:3.75,3.75;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st19 {fill:#008aaf;fill-opacity:1;stroke:#008aaf;stroke-opacity:1;stroke-width:0.40983606557377}
+		.st20 {fill:none;stroke:#0db9cb;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
+		.st21 {fill:#0db9cb;font-family:Noto Sans;font-size:1.00001em;font-weight:bold}
+		.st22 {fill:#ffffff;stroke:#00ffe0;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}
+		.st23 {font-size:0.909089em}
+		.st24 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	]]>
+	</style>
+
+	<defs id="Markers">
+		<g id="lend3">
+			<path d="M 2 1 L 0 0 L 2 -1 " style="stroke-linecap:round;stroke-linejoin:round;fill:none"/>
+		</g>
+		<marker id="mrkr3-11" class="st5" orient="auto" markerUnits="strokeWidth" overflow="visible">
+			<use xlink:href="#lend3" transform="scale(-2.44,-2.44) "/>
+		</marker>
+		<marker id="mrkr3-77" class="st19" orient="auto" markerUnits="strokeWidth" overflow="visible">
+			<use xlink:href="#lend3" transform="scale(-2.44,-2.44) "/>
+		</marker>
+	</defs>
+	<g>
+		<title>Page-1</title>
+		<g id="shape1-1" transform="translate(18,-18)">
+			<title>Sheet.1</title>
+			<rect x="0" y="152.1" width="432" height="373.5" class="st1"/>
+		</g>
+		<g id="shape2-3" transform="translate(18,-373.5)">
+			<title>Sheet.2</title>
+			<desc>Elixxir Repositories</desc>
+			<rect x="0" y="507.6" width="432" height="18" class="st2"/>
+			<text x="313.38" y="520.2" class="st3">Elixxir Repositories</text>		</g>
+		<g id="shape5-6" transform="translate(139.5,-360)">
+			<title>Dynamic connector.66</title>
+			<path d="M0 525.6 L-18 525.6 L-18 543.6" class="st4"/>
+		</g>
+		<g id="shape8-12" transform="translate(119.25,-306)">
+			<title>Dynamic connector.69</title>
+			<path d="M-2.25 525.6 L-2.25 543.6 L-15.75 543.6" class="st4"/>
+		</g>
+		<g id="shape9-17" transform="translate(123.75,-306)">
+			<title>Dynamic connector.70</title>
+			<path d="M2.25 525.6 L2.25 543.6 L15.75 543.6" class="st4"/>
+		</g>
+		<g id="shape10-22" transform="translate(31.5,-265.5)">
+			<title>Sheet.10</title>
+			<path d="M0 525.6 L180 525.6" class="st6"/>
+		</g>
+		<g id="shape11-25" transform="translate(243,-310.5)">
+			<title>Sheet.11</title>
+			<desc>Devops</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st7"/>
+			<text x="25.74" y="515.4" class="st8">Devops</text>		</g>
+		<g id="shape12-28" transform="translate(238.5,-265.5)">
+			<title>Sheet.12</title>
+			<path d="M0 525.6 L198 525.6" class="st9"/>
+		</g>
+		<g id="shape13-31" transform="translate(243,-274.5)">
+			<title>Sheet.13</title>
+			<desc>Local Environment</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st10"/>
+			<text x="31.65" y="508.8" class="st11">Local <tspan x="11.7" dy="1.2em" class="st12">Environment</tspan></text>		</g>
+		<g id="shape14-35" transform="translate(342,-274.5)">
+			<title>Sheet.14</title>
+			<desc>Wrapper Script</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st13"/>
+			<text x="6.24" y="515.4" class="st11">Wrapper Script</text>		</g>
+		<g id="shape15-38" transform="translate(342,-310.5)">
+			<title>Sheet.15</title>
+			<desc>Integration</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st10"/>
+			<text x="15.78" y="515.4" class="st11">Integration</text>		</g>
+		<g id="shape16-41" transform="translate(166.4,-247.5)">
+			<title>Sheet.16</title>
+			<desc>Core</desc>
+			<rect x="0" y="507.6" width="45.1" height="18" class="st2"/>
+			<text x="11.33" y="522" class="st14">Core</text>		</g>
+		<g id="shape17-44" transform="translate(374.9,-247.5)">
+			<title>Sheet.17</title>
+			<desc>Tools</desc>
+			<rect x="0" y="507.6" width="61.6" height="18" class="st2"/>
+			<text x="24.36" y="522" class="st14">Tools</text>		</g>
+		<g id="shape21-47" transform="translate(139.5,-121.5)">
+			<title>Sheet.21</title>
+			<path d="M0 525.6 L297 525.6" class="st15"/>
+		</g>
+		<g id="shape22-50" transform="translate(374.9,-103.5)">
+			<title>Sheet.22</title>
+			<desc>Services</desc>
+			<rect x="0" y="507.6" width="61.6" height="18" class="st2"/>
+			<text x="8.63" y="522" class="st14">Services</text>		</g>
+		<g id="shape24-53" transform="translate(63,-261)">
+			<title>Dynamic connector.87</title>
+			<path d="M9 525.6 L9 624.6" class="st4"/>
+		</g>
+		<g id="shape25-58" transform="translate(153,-261)">
+			<title>Dynamic connector.89</title>
+			<path d="M9 525.6 L9 588.6" class="st4"/>
+		</g>
+		<g id="shape26-63" transform="translate(144,-58.5)">
+			<title>Sheet.26</title>
+			<desc>User Discovery</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st16"/>
+			<text x="6.54" y="515.4" class="st11">User Discovery</text>		</g>
+		<g id="shape29-66" transform="translate(139.5,-49.5)">
+			<title>Sheet.29</title>
+			<path d="M0 525.6 L297 525.6" class="st17"/>
+		</g>
+		<g id="shape30-69" transform="translate(374.9,-31.5)">
+			<title>Sheet.30</title>
+			<desc>Clients</desc>
+			<rect x="0" y="507.6" width="61.6" height="18" class="st2"/>
+			<text x="16.37" y="522" class="st14">Clients</text>		</g>
+		<g id="shape31-72" transform="translate(72,-126)">
+			<title>Dynamic connector.96</title>
+			<path d="M0 525.6 L0 579.6 L67.5 579.6" class="st18"/>
+		</g>
+		<g id="shape34-78" transform="translate(18,-409.5)">
+			<title>Sheet.34</title>
+			<rect x="0" y="426.6" width="432" height="99" class="st20"/>
+		</g>
+		<g id="shape35-80" transform="translate(18,-490.5)">
+			<title>Sheet.35</title>
+			<desc>xx network Repositories</desc>
+			<rect x="0" y="507.6" width="432" height="18" class="st2"/>
+			<text x="282.65" y="520.2" class="st21">xx network Repositories</text>		</g>
+		<g id="shape37-83" transform="translate(144,-346.5)">
+			<title>Sheet.37</title>
+			<desc>Primitives</desc>
+			<rect x="0" y="498.6" width="63" height="27" class="st22"/>
+			<text x="5.99" y="515.4" class="st11">Primitives</text>		</g>
+		<g id="shape39-86" transform="translate(90,-310.5)">
+			<title>Sheet.39</title>
+			<desc>Crypto</desc>
+			<rect x="0" y="498.6" width="63" height="27" class="st22"/>
+			<text x="14.25" y="515.4" class="st11">Crypto</text>		</g>
+		<g id="shape41-89" transform="translate(36,-274.5)">
+			<title>Sheet.41</title>
+			<desc>Comms</desc>
+			<rect x="0" y="498.6" width="63" height="27" class="st22"/>
+			<text x="11.78" y="515.4" class="st11">Comms</text>		</g>
+		<g id="shape42-92" transform="translate(144,-274.5)">
+			<title>Sheet.42</title>
+			<desc>GPUMaths</desc>
+			<rect x="0" y="498.6" width="63" height="27" class="st22"/>
+			<text x="4.05" y="515.4" class="st11">GPUMaths</text>		</g>
+		<g id="shape49-95" transform="translate(31.5,-445.5)">
+			<title>Sheet.49</title>
+			<path d="M0 525.6 L252 525.6" class="st6"/>
+		</g>
+		<g id="shape50-98" transform="translate(238.45,-427.5)">
+			<title>Sheet.50</title>
+			<desc>Core</desc>
+			<rect x="0" y="507.6" width="45.1" height="18" class="st2"/>
+			<text x="11.33" y="522" class="st14">Core</text>		</g>
+		<g id="shape51-101" transform="translate(36,-454.5)">
+			<title>Sheet.51</title>
+			<desc>Comms</desc>
+			<rect x="0" y="498.6" width="63" height="27" class="st22"/>
+			<text x="11.78" y="515.4" class="st11">Comms</text>		</g>
+		<g id="shape60-104" transform="translate(144,-130.5)">
+			<title>Sheet.60</title>
+			<desc>Server</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st22"/>
+			<text x="28.44" y="515.4" class="st11">Server</text>		</g>
+		<g id="shape63-107" transform="translate(243,-130.5)">
+			<title>Sheet.63</title>
+			<desc>Gateway</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st22"/>
+			<text x="22.61" y="515.4" class="st11">Gateway</text>		</g>
+		<g id="shape108-110" transform="translate(36,-130.5)">
+			<title>Sheet.108</title>
+			<desc>Client API (xxDK)</desc>
+			<rect x="0" y="498.6" width="72" height="27" class="st16"/>
+			<text x="11.07" y="508.8" class="st11">Client API <tspan x="20.43" dy="1.32em" class="st23">(xxDK)</tspan></text>		</g>
+		<g id="shape113-114" transform="translate(63,-441)">
+			<title>Dynamic connector.113</title>
+			<path d="M9 525.6 L9 611.1" class="st4"/>
+		</g>
+		<g id="shape114-119" transform="translate(216,-454.5)">
+			<title>Sheet.114</title>
+			<desc>Primitives</desc>
+			<rect x="0" y="498.6" width="63" height="27" class="st22"/>
+			<text x="5.99" y="515.4" class="st11">Primitives</text>		</g>
+		<g id="shape115-122" transform="translate(126,-454.5)">
+			<title>Sheet.115</title>
+			<desc>Crypto</desc>
+			<rect x="0" y="498.6" width="63" height="27" class="st22"/>
+			<text x="14.25" y="515.4" class="st11">Crypto</text>		</g>
+		<g id="shape117-125" transform="translate(211.5,-459)">
+			<title>Dynamic connector.117</title>
+			<path d="M0 516.6 L-18 516.6" class="st4"/>
+		</g>
+		<g id="shape118-130" transform="translate(121.5,-459)">
+			<title>Dynamic connector.118</title>
+			<path d="M0 516.6 L-18 516.6" class="st4"/>
+		</g>
+		<g id="shape119-135" transform="translate(342,-130.5)">
+			<title>Sheet.119</title>
+			<desc>Registration</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st22"/>
+			<text x="13.57" y="515.4" class="st11">Registration</text>		</g>
+		<g id="shape161-138" transform="translate(342,-202.5)">
+			<title>Sheet.161</title>
+			<desc>Client Registrar</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st22"/>
+			<text x="5.2" y="515.4" class="st11">Client Registrar</text>		</g>
+		<g id="shape162-141" transform="translate(243,-166.5)">
+			<title>Sheet.162</title>
+			<desc>Notifications</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st22"/>
+			<text x="12.29" y="515.4" class="st11">Notifications</text>		</g>
+		<g id="shape163-144" transform="translate(342,-166.5)">
+			<title>Sheet.163</title>
+			<desc>Authorizor</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st22"/>
+			<text x="17.5" y="515.4" class="st11">Authorizor</text>		</g>
+		<g id="shape164-147" transform="translate(144,-166.5)">
+			<title>Sheet.164</title>
+			<desc>Scheduling Scripts</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st22"/>
+			<text x="16.44" y="508.8" class="st11">Scheduling <tspan x="27.65" dy="1.2em" class="st12">Scripts</tspan></text>		</g>
+		<g id="shape165-151" transform="translate(243,-58.5)">
+			<title>Sheet.165</title>
+			<desc>iOS Client</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st16"/>
+			<text x="20.04" y="515.4" class="st11">iOS Client</text>		</g>
+		<g id="shape166-154" transform="translate(342,-58.5)">
+			<title>Sheet.166</title>
+			<desc>Android Client</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st16"/>
+			<text x="8.07" y="515.4" class="st11">Android Client</text>		</g>
+		<g id="shape167-157" transform="translate(468,-238.5)">
+			<title>Sheet.167</title>
+			<rect x="0" y="372.6" width="126" height="153" class="st20"/>
+		</g>
+		<g id="shape168-159" transform="translate(486,-324)">
+			<title>Sheet.168</title>
+			<desc>Sleeve</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st22"/>
+			<text x="28.47" y="515.4" class="st11">Sleeve</text>		</g>
+		<g id="shape169-162" transform="translate(486,-288)">
+			<title>Sheet.169</title>
+			<desc>xx-substrate</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st22"/>
+			<text x="12.83" y="515.4" class="st11">xx-substrate</text>		</g>
+		<g id="shape170-165" transform="translate(486,-252)">
+			<title>Sheet.170</title>
+			<desc>Xx-chain</desc>
+			<rect x="0" y="498.6" width="90" height="27" class="st22"/>
+			<text x="23.06" y="515.4" class="st11">Xx-chain</text>		</g>
+		<g id="shape171-168" transform="translate(468,-360)">
+			<title>Sheet.171</title>
+			<desc>xx labs Repositories</desc>
+			<rect x="0" y="494.1" width="126" height="31.5" class="st2"/>
+			<text x="80.54" y="506.25" class="st21">xx labs <tspan x="47.53" dy="1.2em" class="st12">Repositories</tspan></text>		</g>
+	</g>
+</svg>
diff --git a/website/static/img/Codebase_Overview_Figure_-v3.0-.png b/website/static/img/Codebase_Overview_Figure_-v3.0-.png
new file mode 100644
index 0000000000000000000000000000000000000000..9e58b35be543393a80212f60d2561f37ba3f42f2
Binary files /dev/null and b/website/static/img/Codebase_Overview_Figure_-v3.0-.png differ
diff --git a/website/static/img/Commission_column.png b/website/static/img/Commission_column.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7ac9f7a141f51494ac74d70f1d04cf957eba1e1
Binary files /dev/null and b/website/static/img/Commission_column.png differ
diff --git a/website/static/img/Commitment-paste-submit.png b/website/static/img/Commitment-paste-submit.png
new file mode 100644
index 0000000000000000000000000000000000000000..b409fdf34f7240f342476afe32c3bcf6066e9f14
Binary files /dev/null and b/website/static/img/Commitment-paste-submit.png differ
diff --git a/website/static/img/Confirm_Ethereum_Address_to_Claim_Tokens.png b/website/static/img/Confirm_Ethereum_Address_to_Claim_Tokens.png
new file mode 100644
index 0000000000000000000000000000000000000000..736b88ae8716879b3a8c9497e38b84efd244ad8e
Binary files /dev/null and b/website/static/img/Confirm_Ethereum_Address_to_Claim_Tokens.png differ
diff --git a/website/static/img/Connect_MetaMask_Account_with_Explorer.png b/website/static/img/Connect_MetaMask_Account_with_Explorer.png
new file mode 100644
index 0000000000000000000000000000000000000000..b42df226d7b5b7406a8ae7d14c5f3bef8730b3a3
Binary files /dev/null and b/website/static/img/Connect_MetaMask_Account_with_Explorer.png differ
diff --git a/website/static/img/Connect_with_MetaMask.png b/website/static/img/Connect_with_MetaMask.png
new file mode 100644
index 0000000000000000000000000000000000000000..b244e677771ca453e24768337ef3cd8aea1e9de5
Binary files /dev/null and b/website/static/img/Connect_with_MetaMask.png differ
diff --git a/website/static/img/Connecting_to_CMIX.png b/website/static/img/Connecting_to_CMIX.png
new file mode 100644
index 0000000000000000000000000000000000000000..98da69382b4999e7fdcd3451515c2d88d0b94192
Binary files /dev/null and b/website/static/img/Connecting_to_CMIX.png differ
diff --git a/website/static/img/Context_Menu_Open_Quantum-Ready_Wallet_Generator.png b/website/static/img/Context_Menu_Open_Quantum-Ready_Wallet_Generator.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2b3c44e70f208f78a347e07b09845c093c52a90
Binary files /dev/null and b/website/static/img/Context_Menu_Open_Quantum-Ready_Wallet_Generator.png differ
diff --git a/website/static/img/Controller_wallet.png b/website/static/img/Controller_wallet.png
new file mode 100644
index 0000000000000000000000000000000000000000..e90e0967c556c5c06d6d71b0266a8f59a1270f4e
Binary files /dev/null and b/website/static/img/Controller_wallet.png differ
diff --git a/website/static/img/CouncilVote.png b/website/static/img/CouncilVote.png
new file mode 100644
index 0000000000000000000000000000000000000000..7550b8706c6f2e264c527a3c5dc119e15f775acb
Binary files /dev/null and b/website/static/img/CouncilVote.png differ
diff --git a/website/static/img/CountilVote.png b/website/static/img/CountilVote.png
new file mode 100644
index 0000000000000000000000000000000000000000..ddaff9f1174957319fdb4bdbd1a377ee56fa8eb0
Binary files /dev/null and b/website/static/img/CountilVote.png differ
diff --git a/website/static/img/Curve_Arrow_2.svg b/website/static/img/Curve_Arrow_2.svg
new file mode 100644
index 0000000000000000000000000000000000000000..2fbb16146a35793eba53b4a12411ec9fa5a8e120
--- /dev/null
+++ b/website/static/img/Curve_Arrow_2.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="50" height="16.298" viewBox="45.457 55.701 50 16.298">
+  <path fill="none" stroke="#FFF" stroke-miterlimit="8" stroke-width="2" d="M95.457 56.701c-20.522 0-24.261 7.585-41.396 9.543"/>
+  <path fill="#FFF" d="M55.408 60.057l-9.951 6.644 10.73 5.298z"/>
+</svg>
diff --git a/website/static/img/Curve_Arrow_3.svg b/website/static/img/Curve_Arrow_3.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f2551f86175a8f95b179f51a5c978f4561e9d4e1
--- /dev/null
+++ b/website/static/img/Curve_Arrow_3.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="58.524px" height="23.969px" viewBox="0 -7.525 58.524 23.969" enable-background="new 0 -7.525 58.524 23.969"
+	 xml:space="preserve">
+<g>
+	<g>
+		<path fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="8" d="M5.677,1c0.658,4.617,2.567,11.021,8.045,12.827
+			c8.849,2.921,26.781,1.302,44.713-0.317"/>
+		<g>
+			<polygon fill="#FFFFFF" points="0,3.578 4.462,-7.525 11.848,1.889 			"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/website/static/img/Curve_Arrow_4.svg b/website/static/img/Curve_Arrow_4.svg
new file mode 100644
index 0000000000000000000000000000000000000000..6a782f11c33a5e64d4edb3c9a8fae307797d24ed
--- /dev/null
+++ b/website/static/img/Curve_Arrow_4.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="50.026px" height="16.604px" viewBox="-88.639 -8.329 50.026 16.604" enable-background="new -88.639 -8.329 50.026 16.604"
+	 xml:space="preserve">
+<g>
+	<g>
+		<path fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="8" d="M-83.296,0c0.658,2.507,2.567,5.983,8.045,6.964
+			c8.849,1.586,18.138-3.41,36.638-3.41"/>
+		<g>
+			<polygon fill="#FFFFFF" points="-88.639,3.213 -85.483,-8.329 -77.064,0.174 			"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/website/static/img/Curve_Arrow_5.svg b/website/static/img/Curve_Arrow_5.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1c0bed1591df54990f056cf49057777532117478
--- /dev/null
+++ b/website/static/img/Curve_Arrow_5.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="38.733px" height="55.361px" viewBox="-91.096 -29.516 38.733 55.361"
+	 enable-background="new -91.096 -29.516 38.733 55.361" xml:space="preserve">
+<g>
+	<g>
+		<path fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="8" d="M-85.113,17.234c0-25.76,31.75-27.5,31.75-46.75"/>
+		<g>
+			<polygon fill="#FFFFFF" points="-79.13,15.483 -85.113,25.846 -91.096,15.483 			"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/website/static/img/Dashboard_-_Uptime_and_Round_Success_Rate_Graphs.png b/website/static/img/Dashboard_-_Uptime_and_Round_Success_Rate_Graphs.png
new file mode 100644
index 0000000000000000000000000000000000000000..3027bc593ee48455d6950bc70e09f3d5823e3c73
Binary files /dev/null and b/website/static/img/Dashboard_-_Uptime_and_Round_Success_Rate_Graphs.png differ
diff --git a/website/static/img/DeriveAccount.png b/website/static/img/DeriveAccount.png
new file mode 100644
index 0000000000000000000000000000000000000000..54b87d1987bc12c1f97ca09fd5c4fcf595266e9d
Binary files /dev/null and b/website/static/img/DeriveAccount.png differ
diff --git a/website/static/img/DeriveAccountFromPairPassword.png b/website/static/img/DeriveAccountFromPairPassword.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e01cf489cab5cadb5a81fe30cf050af226e953b
Binary files /dev/null and b/website/static/img/DeriveAccountFromPairPassword.png differ
diff --git a/website/static/img/Developer_Cannot_be_Verified_Warning_-_Quantum-Ready_Wallet_Generator_App.png b/website/static/img/Developer_Cannot_be_Verified_Warning_-_Quantum-Ready_Wallet_Generator_App.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1b9526846bc3d68ac936e4c3412d8a7b9a95fec
Binary files /dev/null and b/website/static/img/Developer_Cannot_be_Verified_Warning_-_Quantum-Ready_Wallet_Generator_App.png differ
diff --git a/website/static/img/Download_Ubuntu_Server.png b/website/static/img/Download_Ubuntu_Server.png
new file mode 100644
index 0000000000000000000000000000000000000000..075127262b8828c8ecea1c50cd198854d015a4e0
Binary files /dev/null and b/website/static/img/Download_Ubuntu_Server.png differ
diff --git a/website/static/img/Downloaded_Proxxy_Exe_file.png b/website/static/img/Downloaded_Proxxy_Exe_file.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d22019351923d88222cc881504df65e245778dc
Binary files /dev/null and b/website/static/img/Downloaded_Proxxy_Exe_file.png differ
diff --git a/website/static/img/Drag_Quantum-Ready_Wallet_Generator_to_the_Applications_Folder.png b/website/static/img/Drag_Quantum-Ready_Wallet_Generator_to_the_Applications_Folder.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4800523b004758684ab4ebcd37acf623f22522b
Binary files /dev/null and b/website/static/img/Drag_Quantum-Ready_Wallet_Generator_to_the_Applications_Folder.png differ
diff --git a/website/static/img/Dropped Text.txt b/website/static/img/Dropped Text.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7302e3bfd1fd0f4e8426f0d5bbf0514410451352
--- /dev/null
+++ b/website/static/img/Dropped Text.txt	
@@ -0,0 +1 @@
+Keith's DocuSign
\ No newline at end of file
diff --git a/website/static/img/Era_Timer.png b/website/static/img/Era_Timer.png
new file mode 100644
index 0000000000000000000000000000000000000000..6975ed145adf0c3ba39c0cb2c5c49462a74553bf
Binary files /dev/null and b/website/static/img/Era_Timer.png differ
diff --git a/website/static/img/Ethereum_Account_has_Valid_Claim_for_xx.png b/website/static/img/Ethereum_Account_has_Valid_Claim_for_xx.png
new file mode 100644
index 0000000000000000000000000000000000000000..7662a7602ca41d0621f1fab883009181f510fc5f
Binary files /dev/null and b/website/static/img/Ethereum_Account_has_Valid_Claim_for_xx.png differ
diff --git a/website/static/img/Explorer_-_Account_Actions,_Add_Stash.png b/website/static/img/Explorer_-_Account_Actions,_Add_Stash.png
new file mode 100644
index 0000000000000000000000000000000000000000..c7b4a5e57ab3b76f36b78a90d9f8769d646f335b
Binary files /dev/null and b/website/static/img/Explorer_-_Account_Actions,_Add_Stash.png differ
diff --git a/website/static/img/Explorer_-_Account_Actions,_Add_Validator.png b/website/static/img/Explorer_-_Account_Actions,_Add_Validator.png
new file mode 100644
index 0000000000000000000000000000000000000000..c620aec975e5b58f9956c4e9c0fa4e1cce4749bd
Binary files /dev/null and b/website/static/img/Explorer_-_Account_Actions,_Add_Validator.png differ
diff --git a/website/static/img/Explorer_-_Account_Actions_Nav.png b/website/static/img/Explorer_-_Account_Actions_Nav.png
new file mode 100644
index 0000000000000000000000000000000000000000..45f0779746b748a6532900b2cdfa6e4c3ea74d2a
Binary files /dev/null and b/website/static/img/Explorer_-_Account_Actions_Nav.png differ
diff --git a/website/static/img/Explorer_-_Add_Stash,_Bonding_Preferences.png b/website/static/img/Explorer_-_Add_Stash,_Bonding_Preferences.png
new file mode 100644
index 0000000000000000000000000000000000000000..a98a82245d01c97a866dc29298dec94ce2606227
Binary files /dev/null and b/website/static/img/Explorer_-_Add_Stash,_Bonding_Preferences.png differ
diff --git a/website/static/img/Explorer_-_Add_an_Address_Window.png b/website/static/img/Explorer_-_Add_an_Address_Window.png
new file mode 100644
index 0000000000000000000000000000000000000000..542a0cee58688cc1a6ddc981a25183f4264ed81e
Binary files /dev/null and b/website/static/img/Explorer_-_Add_an_Address_Window.png differ
diff --git a/website/static/img/Explorer_-_Address_book,_Add_contact_button.png b/website/static/img/Explorer_-_Address_book,_Add_contact_button.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b23a70a059fd205ee221784af27709ca5bc5234
Binary files /dev/null and b/website/static/img/Explorer_-_Address_book,_Add_contact_button.png differ
diff --git a/website/static/img/Explorer_-_Address_book,_send_button.png b/website/static/img/Explorer_-_Address_book,_send_button.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1ef424101d524ed91967124a3ea00ddf1fcd42d
Binary files /dev/null and b/website/static/img/Explorer_-_Address_book,_send_button.png differ
diff --git a/website/static/img/Explorer_-_Address_book_nav.png b/website/static/img/Explorer_-_Address_book_nav.png
new file mode 100644
index 0000000000000000000000000000000000000000..7cafb829e7488d6105377ae80e9f5dfdc8668bb2
Binary files /dev/null and b/website/static/img/Explorer_-_Address_book_nav.png differ
diff --git a/website/static/img/Explorer_-_Authorize_Transaction.png b/website/static/img/Explorer_-_Authorize_Transaction.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a38c6369f37b4a8c7a3199a8d7194e863db27e9
Binary files /dev/null and b/website/static/img/Explorer_-_Authorize_Transaction.png differ
diff --git a/website/static/img/Explorer_-_Authorize_Transaction_(Bond_Tokens_for_Stash).png b/website/static/img/Explorer_-_Authorize_Transaction_(Bond_Tokens_for_Stash).png
new file mode 100644
index 0000000000000000000000000000000000000000..bb9652567710f69fd02c2a65aecf55eaf4043a51
Binary files /dev/null and b/website/static/img/Explorer_-_Authorize_Transaction_(Bond_Tokens_for_Stash).png differ
diff --git a/website/static/img/Explorer_-_Authorize_Transaction_(Council_Vote).png b/website/static/img/Explorer_-_Authorize_Transaction_(Council_Vote).png
new file mode 100644
index 0000000000000000000000000000000000000000..b90a2cfe6f52779acd53bbfd7fb41f72df1a9ae2
Binary files /dev/null and b/website/static/img/Explorer_-_Authorize_Transaction_(Council_Vote).png differ
diff --git a/website/static/img/Explorer_-_Authorize_Transaction_(Nominating).png b/website/static/img/Explorer_-_Authorize_Transaction_(Nominating).png
new file mode 100644
index 0000000000000000000000000000000000000000..4004dc2b6ecfc94d2bdcb04c945306eb58c5e2aa
Binary files /dev/null and b/website/static/img/Explorer_-_Authorize_Transaction_(Nominating).png differ
diff --git a/website/static/img/Explorer_-_Authorize_Transaction_(Sending).png b/website/static/img/Explorer_-_Authorize_Transaction_(Sending).png
new file mode 100644
index 0000000000000000000000000000000000000000..e769e411416385fe20e7775d637caa8df399da56
Binary files /dev/null and b/website/static/img/Explorer_-_Authorize_Transaction_(Sending).png differ
diff --git a/website/static/img/Explorer_-_Authorize_Transaction_(Sending_to_Contact).png b/website/static/img/Explorer_-_Authorize_Transaction_(Sending_to_Contact).png
new file mode 100644
index 0000000000000000000000000000000000000000..5c6b2e1ee3dcdf1a4789cdfec242192a6401d669
Binary files /dev/null and b/website/static/img/Explorer_-_Authorize_Transaction_(Sending_to_Contact).png differ
diff --git a/website/static/img/Explorer_-_Authorize_Transaction_(Submit_Candidacy).png b/website/static/img/Explorer_-_Authorize_Transaction_(Submit_Candidacy).png
new file mode 100644
index 0000000000000000000000000000000000000000..ccdee8029d6d49c9443eb5f9aa17e9bc9c97c2a0
Binary files /dev/null and b/website/static/img/Explorer_-_Authorize_Transaction_(Submit_Candidacy).png differ
diff --git a/website/static/img/Explorer_-_Claim_Tokens_Contract.png b/website/static/img/Explorer_-_Claim_Tokens_Contract.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce31c048e50c80226c5a4ace9a908e4021b2999b
Binary files /dev/null and b/website/static/img/Explorer_-_Claim_Tokens_Contract.png differ
diff --git a/website/static/img/Explorer_-_Copy_wallet_address.png b/website/static/img/Explorer_-_Copy_wallet_address.png
new file mode 100644
index 0000000000000000000000000000000000000000..6cb2035a5af3e6404732358096dc3161a53352f6
Binary files /dev/null and b/website/static/img/Explorer_-_Copy_wallet_address.png differ
diff --git a/website/static/img/Explorer_-_Derive_Account_from_Pair.png b/website/static/img/Explorer_-_Derive_Account_from_Pair.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b5ab4258d2e6c50b5434680d6c7f2e7fde38cde
Binary files /dev/null and b/website/static/img/Explorer_-_Derive_Account_from_Pair.png differ
diff --git a/website/static/img/Explorer_-_Governance,_Council,_Submit_candidacy_Button.png b/website/static/img/Explorer_-_Governance,_Council,_Submit_candidacy_Button.png
new file mode 100644
index 0000000000000000000000000000000000000000..fddad1f2e753259e628bcd799d49aafc90024cbb
Binary files /dev/null and b/website/static/img/Explorer_-_Governance,_Council,_Submit_candidacy_Button.png differ
diff --git a/website/static/img/Explorer_-_Governance,_Council,_Vote_Button.png b/website/static/img/Explorer_-_Governance,_Council,_Vote_Button.png
new file mode 100644
index 0000000000000000000000000000000000000000..5785a696ef0bf6ae1dfc62d0c22dbaf999b16373
Binary files /dev/null and b/website/static/img/Explorer_-_Governance,_Council,_Vote_Button.png differ
diff --git a/website/static/img/Explorer_-_List_of_Validators.png b/website/static/img/Explorer_-_List_of_Validators.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe6a99fb34862d1394cce608769d0648e4474692
Binary files /dev/null and b/website/static/img/Explorer_-_List_of_Validators.png differ
diff --git a/website/static/img/Explorer_-_My_accounts_page.png b/website/static/img/Explorer_-_My_accounts_page.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd6bf65b473f507e901a1394cae8e88fd00f056d
Binary files /dev/null and b/website/static/img/Explorer_-_My_accounts_page.png differ
diff --git a/website/static/img/Explorer_-_My_accounts_three_dot_menu_derive_account_via_derivation_path.png b/website/static/img/Explorer_-_My_accounts_three_dot_menu_derive_account_via_derivation_path.png
new file mode 100644
index 0000000000000000000000000000000000000000..162f64d648defd279c404e6f1d0067c60568dbf8
Binary files /dev/null and b/website/static/img/Explorer_-_My_accounts_three_dot_menu_derive_account_via_derivation_path.png differ
diff --git a/website/static/img/Explorer_-_Nominate_validators_windows.png b/website/static/img/Explorer_-_Nominate_validators_windows.png
new file mode 100644
index 0000000000000000000000000000000000000000..5ae02f528c1e96ab3b0798808fd5a37a45a65089
Binary files /dev/null and b/website/static/img/Explorer_-_Nominate_validators_windows.png differ
diff --git a/website/static/img/Explorer_-_Oversubscribed_Icon.svg b/website/static/img/Explorer_-_Oversubscribed_Icon.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4583199ee56feda5452f0e81044092bfb4b85b8c
--- /dev/null
+++ b/website/static/img/Explorer_-_Oversubscribed_Icon.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" focusable="false" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+	 x="0px" y="0px" width="22px" height="22.001px" viewBox="292.291 50.167 22 22.001"
+	 enable-background="new 292.291 50.167 22 22.001" xml:space="preserve">
+<circle fill="#8B0000" cx="303.291" cy="61.167" r="11"/>
+<path fill="#FFFFFF" d="M299.091,65.067v0.601c0,0.165,0.135,0.299,0.301,0.299h4.199c0.167,0,0.301-0.134,0.301-0.299v-6.427
+	c0.084-0.037,0.167-0.082,0.243-0.134L306.799,60c0.156,0.053,0.328-0.032,0.38-0.189l0.19-0.569c0.052-0.157-0.031-0.327-0.19-0.38
+	l-2.406-0.807c0.008-0.063,0.018-0.124,0.018-0.188c0-0.828-0.672-1.5-1.499-1.5c-0.558,0-1.037,0.307-1.296,0.757l-2.211-0.742
+	c-0.158-0.053-0.328,0.032-0.38,0.189l-0.191,0.569c-0.052,0.157,0.033,0.328,0.19,0.38l2.474,0.83
+	c0.137,0.398,0.431,0.723,0.813,0.89v5.527h-3.299C299.226,64.768,299.091,64.902,299.091,65.067z M297.291,62.067
+	c0,0.828,1.074,1.5,2.4,1.5s2.4-0.672,2.4-1.5l0,0c0-0.293,0.039-0.135-1.595-3.403c-0.331-0.664-1.279-0.663-1.609,0
+	C297.267,61.903,297.291,61.764,297.291,62.067L297.291,62.067z M298.341,61.767l1.35-2.7l1.351,2.7H298.341z M304.491,64.467
+	L304.491,64.467c0,0.828,1.076,1.5,2.401,1.5c1.325,0,2.398-0.672,2.398-1.5l0,0c0-0.293,0.039-0.135-1.594-3.403
+	c-0.334-0.663-1.279-0.661-1.612,0C304.468,64.305,304.491,64.164,304.491,64.467z M305.541,64.168l1.352-2.701l1.349,2.701H305.541
+	z"/>
+</svg>
diff --git a/website/static/img/Explorer_-_Overview_Submenu_Nav.png b/website/static/img/Explorer_-_Overview_Submenu_Nav.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d494a34ebe9456d1ab07ea4fcc2a61655f095b6
Binary files /dev/null and b/website/static/img/Explorer_-_Overview_Submenu_Nav.png differ
diff --git a/website/static/img/Explorer_-_Payouts_Nav.png b/website/static/img/Explorer_-_Payouts_Nav.png
new file mode 100644
index 0000000000000000000000000000000000000000..948b3ba5d224e3396a8d556aaf1a83cc2405a6f1
Binary files /dev/null and b/website/static/img/Explorer_-_Payouts_Nav.png differ
diff --git a/website/static/img/Explorer_-_Save_derived_account.png b/website/static/img/Explorer_-_Save_derived_account.png
new file mode 100644
index 0000000000000000000000000000000000000000..5cef0ea963cf66b45056d52a281f955d8ae08b49
Binary files /dev/null and b/website/static/img/Explorer_-_Save_derived_account.png differ
diff --git a/website/static/img/Explorer_-_Send_Funds_Window.png b/website/static/img/Explorer_-_Send_Funds_Window.png
new file mode 100644
index 0000000000000000000000000000000000000000..01dfe1c7082aa772d8db552fa4c5c54d21040ba6
Binary files /dev/null and b/website/static/img/Explorer_-_Send_Funds_Window.png differ
diff --git a/website/static/img/Explorer_-_Setup_Validator_1-2.png b/website/static/img/Explorer_-_Setup_Validator_1-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..73e6216cca4e9211ba1c829be6fd76219da7c3ba
Binary files /dev/null and b/website/static/img/Explorer_-_Setup_Validator_1-2.png differ
diff --git a/website/static/img/Explorer_-_Setup_Validator_2-2.png b/website/static/img/Explorer_-_Setup_Validator_2-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..c99a50e8c45f0580cc50e492c54e09d3e257219e
Binary files /dev/null and b/website/static/img/Explorer_-_Setup_Validator_2-2.png differ
diff --git a/website/static/img/Explorer_-_Staking_Nav.png b/website/static/img/Explorer_-_Staking_Nav.png
new file mode 100644
index 0000000000000000000000000000000000000000..4633194ed48331ea46652480a2b657343b38d037
Binary files /dev/null and b/website/static/img/Explorer_-_Staking_Nav.png differ
diff --git a/website/static/img/Explorer_-_Stats_Icon.svg b/website/static/img/Explorer_-_Stats_Icon.svg
new file mode 100644
index 0000000000000000000000000000000000000000..eccafcfb6c52bb33aaf543ca0c8e73ae7d342a92
--- /dev/null
+++ b/website/static/img/Explorer_-_Stats_Icon.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" focusable="false" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+	 x="0px" y="0px" width="14px" height="10.5px" viewBox="192.176 397.5 14 10.5" enable-background="new 192.176 397.5 14 10.5"
+	 xml:space="preserve">
+<path fill="#037281" d="M205.738,406.25h-11.813v-8.313c0-0.241-0.196-0.438-0.438-0.438h-0.875c-0.242,0-0.438,0.196-0.438,0.438
+	v9.188c0,0.483,0.392,0.875,0.875,0.875h12.688c0.242,0,0.438-0.195,0.438-0.438v-0.875
+	C206.176,406.445,205.98,406.25,205.738,406.25z"/>
+<path fill="#037281" d="M204.863,398.375h-3.228c-0.585,0-0.877,0.707-0.464,1.12l0.885,0.887l-2.006,2.006l-2.006-2.006
+	c-0.342-0.342-0.896-0.342-1.238,0l-1.878,1.877c-0.171,0.172-0.171,0.448,0,0.62l0.618,0.618c0.171,0.171,0.448,0.171,0.619,0
+	l1.259-1.26l2.006,2.006c0.342,0.342,0.896,0.342,1.238,0l2.625-2.625l0.886,0.886c0.414,0.414,1.121,0.121,1.121-0.464v-3.228
+	C205.301,398.571,205.105,398.375,204.863,398.375z"/>
+</svg>
diff --git a/website/static/img/Explorer_-_Submit_council_candidacy.png b/website/static/img/Explorer_-_Submit_council_candidacy.png
new file mode 100644
index 0000000000000000000000000000000000000000..c57d0a91cc8aec5bd4aeb34cdb3831aafb253a92
Binary files /dev/null and b/website/static/img/Explorer_-_Submit_council_candidacy.png differ
diff --git a/website/static/img/Explorer_-_Targets,_Nominate_Checkbox.png b/website/static/img/Explorer_-_Targets,_Nominate_Checkbox.png
new file mode 100644
index 0000000000000000000000000000000000000000..ec1fa389c696aac92e3a86229392b98b0ae12007
Binary files /dev/null and b/website/static/img/Explorer_-_Targets,_Nominate_Checkbox.png differ
diff --git a/website/static/img/Explorer_-_Targets,_Nominate_selected.png b/website/static/img/Explorer_-_Targets,_Nominate_selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..94280b85fdf471b2ffe273afd9b68ab3b1b92499
Binary files /dev/null and b/website/static/img/Explorer_-_Targets,_Nominate_selected.png differ
diff --git a/website/static/img/Explorer_-_Targets,_Stats_icon_link.png b/website/static/img/Explorer_-_Targets,_Stats_icon_link.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf967578a6e754d5b994fb8ae3826e6ab84e501c
Binary files /dev/null and b/website/static/img/Explorer_-_Targets,_Stats_icon_link.png differ
diff --git a/website/static/img/Explorer_-_Targets,_cmix_id.png b/website/static/img/Explorer_-_Targets,_cmix_id.png
new file mode 100644
index 0000000000000000000000000000000000000000..b56a09602aaa01e9841e9e0294173c2d4b313446
Binary files /dev/null and b/website/static/img/Explorer_-_Targets,_cmix_id.png differ
diff --git a/website/static/img/Explorer_-_Targets,_cmix_id_link.png b/website/static/img/Explorer_-_Targets,_cmix_id_link.png
new file mode 100644
index 0000000000000000000000000000000000000000..95b9975649a4f2caa4b3c3e03f8cdfc6b5f52250
Binary files /dev/null and b/website/static/img/Explorer_-_Targets,_cmix_id_link.png differ
diff --git a/website/static/img/Explorer_-_Targets_Submenu_Nav.png b/website/static/img/Explorer_-_Targets_Submenu_Nav.png
new file mode 100644
index 0000000000000000000000000000000000000000..2235ff30b709a59bd5d255e1a23b3b34dc00821c
Binary files /dev/null and b/website/static/img/Explorer_-_Targets_Submenu_Nav.png differ
diff --git a/website/static/img/Explorer_-_Top_Menu_Accounts_-_Accounts.png b/website/static/img/Explorer_-_Top_Menu_Accounts_-_Accounts.png
new file mode 100644
index 0000000000000000000000000000000000000000..0298170fe59b7a90911ad2fad5f51ca90d4e5b3b
Binary files /dev/null and b/website/static/img/Explorer_-_Top_Menu_Accounts_-_Accounts.png differ
diff --git a/website/static/img/Explorer_-_Transfer_Nav.png b/website/static/img/Explorer_-_Transfer_Nav.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a300c6061ae0e41f7a90b907c93a13ef9170ee0
Binary files /dev/null and b/website/static/img/Explorer_-_Transfer_Nav.png differ
diff --git a/website/static/img/Explorer_-_Unlock_account_to_derive_account_from_pair.png b/website/static/img/Explorer_-_Unlock_account_to_derive_account_from_pair.png
new file mode 100644
index 0000000000000000000000000000000000000000..8492f854f9009ab5e2a0b669a88ee82059aef4d9
Binary files /dev/null and b/website/static/img/Explorer_-_Unlock_account_to_derive_account_from_pair.png differ
diff --git a/website/static/img/Explorer_-_Validator_stats.png b/website/static/img/Explorer_-_Validator_stats.png
new file mode 100644
index 0000000000000000000000000000000000000000..e145444496dea6ab840cc1c0f83ae5440d980a5e
Binary files /dev/null and b/website/static/img/Explorer_-_Validator_stats.png differ
diff --git a/website/static/img/Explorer_-_Vote_for_Current_Candidates.png b/website/static/img/Explorer_-_Vote_for_Current_Candidates.png
new file mode 100644
index 0000000000000000000000000000000000000000..5014a185666061c16cd361a732a21969fbbe57ed
Binary files /dev/null and b/website/static/img/Explorer_-_Vote_for_Current_Candidates.png differ
diff --git a/website/static/img/Explorer_-_Waiting_Submenu_Nav.png b/website/static/img/Explorer_-_Waiting_Submenu_Nav.png
new file mode 100644
index 0000000000000000000000000000000000000000..9c0b56a19265ce1f823389db62754ea26277e04c
Binary files /dev/null and b/website/static/img/Explorer_-_Waiting_Submenu_Nav.png differ
diff --git a/website/static/img/Explorer_-_address_copied_notification.png b/website/static/img/Explorer_-_address_copied_notification.png
new file mode 100644
index 0000000000000000000000000000000000000000..b3470afcb92c97a7eb506c230def4fdfeaaf802d
Binary files /dev/null and b/website/static/img/Explorer_-_address_copied_notification.png differ
diff --git a/website/static/img/Explorer_Add_Account_Button.png b/website/static/img/Explorer_Add_Account_Button.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8c33bdbfe4367dad1a8e87a782f02e8cb6b6c25
Binary files /dev/null and b/website/static/img/Explorer_Add_Account_Button.png differ
diff --git a/website/static/img/Explorer_Add_account_button.svg b/website/static/img/Explorer_Add_account_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..8860005b1df15d61b6175898d763cd3455d78554
--- /dev/null
+++ b/website/static/img/Explorer_Add_account_button.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="112px" height="27.98px" viewBox="0 0 112 27.98" enable-background="new 0 0 112 27.98" xml:space="preserve">
+<circle fill="#037281" cx="13.99" cy="13.99" r="13.99"/>
+<path opacity="0.8745" fill="#FFFDFB" d="M19.236,12.679h-3.935V8.744c0-0.483-0.392-0.875-0.875-0.875h-0.874
+	c-0.483,0-0.875,0.392-0.875,0.875v3.935H8.744c-0.483,0-0.875,0.392-0.875,0.874v0.875c0,0.483,0.392,0.874,0.875,0.874h3.935
+	v3.935c0,0.484,0.392,0.875,0.875,0.875h0.874c0.483,0,0.875-0.391,0.875-0.875v-3.935h3.935c0.483,0,0.875-0.391,0.875-0.874
+	v-0.875C20.111,13.07,19.719,12.679,19.236,12.679z"/>
+<g>
+	<path fill="#4E4E4E" d="M42.718,18.986h-1.271l-1.038-2.746h-4.153l-0.977,2.746h-1.277l3.757-9.796h1.188L42.718,18.986z
+		 M40.033,15.209l-1.537-4.174c-0.05-0.136-0.1-0.355-0.149-0.656h-0.027c-0.046,0.278-0.099,0.497-0.157,0.656l-1.523,4.174H40.033
+		z"/>
+	<path fill="#4E4E4E" d="M49.979,18.986h-1.12v-1.188h-0.027c-0.52,0.901-1.32,1.353-2.404,1.353c-0.879,0-1.582-0.313-2.107-0.939
+		c-0.526-0.626-0.789-1.479-0.789-2.559c0-1.156,0.291-2.083,0.874-2.78c0.583-0.696,1.359-1.045,2.329-1.045
+		c0.961,0,1.66,0.378,2.098,1.134h0.027V8.63h1.12V18.986z M48.859,15.823v-1.031c0-0.564-0.187-1.043-0.561-1.435
+		c-0.373-0.392-0.847-0.588-1.421-0.588c-0.683,0-1.22,0.251-1.611,0.752c-0.393,0.501-0.588,1.193-0.588,2.076
+		c0,0.807,0.188,1.443,0.563,1.91s0.88,0.7,1.513,0.7c0.624,0,1.131-0.226,1.521-0.677S48.859,16.511,48.859,15.823z"/>
+	<path fill="#4E4E4E" d="M58.218,18.986h-1.12v-1.188H57.07c-0.52,0.901-1.32,1.353-2.404,1.353c-0.879,0-1.582-0.313-2.107-0.939
+		c-0.526-0.626-0.789-1.479-0.789-2.559c0-1.156,0.291-2.083,0.874-2.78c0.583-0.696,1.359-1.045,2.329-1.045
+		c0.961,0,1.66,0.378,2.098,1.134h0.027V8.63h1.12V18.986z M57.098,15.823v-1.031c0-0.564-0.187-1.043-0.561-1.435
+		c-0.373-0.392-0.847-0.588-1.421-0.588c-0.683,0-1.22,0.251-1.611,0.752c-0.393,0.501-0.588,1.193-0.588,2.076
+		c0,0.807,0.188,1.443,0.563,1.91s0.88,0.7,1.513,0.7c0.624,0,1.131-0.226,1.521-0.677S57.098,16.511,57.098,15.823z"/>
+	<path fill="#4E4E4E" d="M69.326,18.986h-1.121v-1.093h-0.027c-0.487,0.838-1.204,1.257-2.151,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.395-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.842,0-1.603,0.287-2.281,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.645,0,2.467,0.87,2.467,2.609V18.986z M68.205,15.448l-1.687,0.231c-0.52,0.073-0.911,0.202-1.176,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.121,0.621,0.365,0.837c0.243,0.217,0.568,0.325,0.974,0.325
+		c0.556,0,1.015-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M76.205,18.665c-0.538,0.323-1.175,0.485-1.913,0.485c-0.997,0-1.802-0.324-2.415-0.974
+		c-0.612-0.648-0.918-1.49-0.918-2.524c0-1.151,0.33-2.077,0.99-2.776s1.541-1.049,2.644-1.049c0.614,0,1.156,0.114,1.626,0.342
+		v1.147c-0.52-0.364-1.075-0.547-1.667-0.547c-0.715,0-1.302,0.257-1.759,0.769c-0.458,0.513-0.687,1.186-0.687,2.019
+		c0,0.82,0.215,1.467,0.646,1.94c0.43,0.474,1.008,0.711,1.731,0.711c0.61,0,1.184-0.203,1.722-0.608V18.665z"/>
+	<path fill="#4E4E4E" d="M82.667,18.665c-0.538,0.323-1.175,0.485-1.913,0.485c-0.997,0-1.802-0.324-2.415-0.974
+		c-0.612-0.648-0.918-1.49-0.918-2.524c0-1.151,0.33-2.077,0.99-2.776s1.541-1.049,2.644-1.049c0.614,0,1.156,0.114,1.626,0.342
+		v1.147c-0.52-0.364-1.075-0.547-1.667-0.547c-0.715,0-1.302,0.257-1.759,0.769c-0.458,0.513-0.687,1.186-0.687,2.019
+		c0,0.82,0.215,1.467,0.646,1.94c0.43,0.474,1.008,0.711,1.731,0.711c0.61,0,1.184-0.203,1.722-0.608V18.665z"/>
+	<path fill="#4E4E4E" d="M87.285,19.15c-1.034,0-1.859-0.327-2.477-0.98s-0.925-1.52-0.925-2.6c0-1.175,0.32-2.092,0.963-2.753
+		c0.642-0.66,1.51-0.99,2.603-0.99c1.043,0,1.856,0.321,2.442,0.963c0.585,0.643,0.878,1.533,0.878,2.672
+		c0,1.115-0.315,2.009-0.946,2.681S88.347,19.15,87.285,19.15z M87.367,12.77c-0.72,0-1.289,0.245-1.708,0.734
+		c-0.419,0.49-0.628,1.165-0.628,2.025c0,0.829,0.212,1.482,0.635,1.961c0.424,0.479,0.991,0.718,1.701,0.718
+		c0.725,0,1.281-0.235,1.67-0.704c0.39-0.469,0.584-1.136,0.584-2.002c0-0.874-0.194-1.548-0.584-2.021
+		C88.648,13.007,88.092,12.77,87.367,12.77z"/>
+	<path fill="#4E4E4E" d="M98.215,18.986h-1.12V17.88h-0.027c-0.465,0.847-1.185,1.271-2.158,1.271c-1.667,0-2.501-0.993-2.501-2.979
+		v-4.181h1.114v4.003c0,1.476,0.564,2.214,1.693,2.214c0.547,0,0.996-0.202,1.35-0.605c0.353-0.402,0.529-0.93,0.529-1.581v-4.03
+		h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M106.282,18.986h-1.12v-3.989c0-1.484-0.542-2.228-1.626-2.228c-0.561,0-1.023,0.211-1.391,0.632
+		c-0.366,0.422-0.55,0.953-0.55,1.596v3.989h-1.12v-6.995h1.12v1.161h0.027c0.528-0.883,1.294-1.325,2.296-1.325
+		c0.765,0,1.35,0.247,1.755,0.741s0.608,1.208,0.608,2.142V18.986z"/>
+	<path fill="#4E4E4E" d="M111.639,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.14h-1.202
+		v-0.956h1.202v-1.708l1.12-0.362v2.07h1.763v0.956h-1.763v3.941c0,0.47,0.08,0.805,0.239,1.005s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/website/static/img/Explorer_Add_contact_button.svg b/website/static/img/Explorer_Add_contact_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..3da930f64df8e8b8f452ce350252e150236c5e3e
--- /dev/null
+++ b/website/static/img/Explorer_Add_contact_button.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="108.823px" height="27.98px" viewBox="0 0 108.823 27.98" enable-background="new 0 0 108.823 27.98" xml:space="preserve">
+<circle fill="#037281" cx="13.99" cy="13.99" r="13.99"/>
+<path opacity="0.8745" fill="#FFFDFB" d="M19.236,12.679h-3.935V8.744c0-0.483-0.392-0.875-0.875-0.875h-0.874
+	c-0.483,0-0.875,0.392-0.875,0.875v3.935H8.744c-0.483,0-0.875,0.392-0.875,0.874v0.875c0,0.483,0.392,0.874,0.875,0.874h3.935
+	v3.935c0,0.484,0.392,0.875,0.875,0.875h0.874c0.483,0,0.875-0.391,0.875-0.875v-3.935h3.935c0.483,0,0.875-0.391,0.875-0.874
+	v-0.875C20.111,13.07,19.719,12.679,19.236,12.679z"/>
+<g>
+	<path fill="#4E4E4E" d="M42.718,18.986h-1.271L40.41,16.24h-4.153l-0.977,2.746h-1.277l3.757-9.796h1.189L42.718,18.986z
+		 M40.034,15.209l-1.537-4.174c-0.05-0.136-0.1-0.355-0.15-0.656h-0.027c-0.046,0.278-0.098,0.497-0.157,0.656l-1.523,4.174H40.034z
+		"/>
+	<path fill="#4E4E4E" d="M49.98,18.986h-1.121v-1.188h-0.027c-0.519,0.901-1.32,1.353-2.404,1.353c-0.879,0-1.582-0.313-2.107-0.939
+		s-0.789-1.479-0.789-2.559c0-1.156,0.292-2.083,0.875-2.78c0.583-0.696,1.359-1.045,2.329-1.045c0.961,0,1.66,0.378,2.097,1.134
+		h0.027V8.63h1.121V18.986z M48.859,15.823v-1.031c0-0.564-0.187-1.043-0.56-1.435s-0.847-0.588-1.421-0.588
+		c-0.683,0-1.22,0.251-1.612,0.752c-0.392,0.501-0.588,1.193-0.588,2.076c0,0.807,0.188,1.443,0.564,1.91
+		c0.375,0.467,0.88,0.7,1.513,0.7c0.624,0,1.131-0.226,1.52-0.677C48.665,17.08,48.859,16.511,48.859,15.823z"/>
+	<path fill="#4E4E4E" d="M58.218,18.986h-1.121v-1.188H57.07c-0.519,0.901-1.32,1.353-2.404,1.353c-0.879,0-1.582-0.313-2.107-0.939
+		s-0.789-1.479-0.789-2.559c0-1.156,0.292-2.083,0.875-2.78c0.583-0.696,1.359-1.045,2.329-1.045c0.961,0,1.66,0.378,2.097,1.134
+		h0.027V8.63h1.121V18.986z M57.098,15.823v-1.031c0-0.564-0.187-1.043-0.56-1.435s-0.847-0.588-1.421-0.588
+		c-0.683,0-1.22,0.251-1.612,0.752c-0.392,0.501-0.588,1.193-0.588,2.076c0,0.807,0.188,1.443,0.564,1.91
+		c0.375,0.467,0.88,0.7,1.513,0.7c0.624,0,1.131-0.226,1.52-0.677C56.903,17.08,57.098,16.511,57.098,15.823z"/>
+	<path fill="#4E4E4E" d="M69.087,18.665c-0.538,0.323-1.175,0.485-1.913,0.485c-0.997,0-1.802-0.324-2.415-0.974
+		c-0.612-0.648-0.918-1.49-0.918-2.524c0-1.151,0.33-2.077,0.99-2.776s1.541-1.049,2.644-1.049c0.614,0,1.156,0.114,1.626,0.342
+		v1.147c-0.52-0.364-1.075-0.547-1.667-0.547c-0.715,0-1.302,0.257-1.759,0.769c-0.458,0.513-0.687,1.186-0.687,2.019
+		c0,0.82,0.215,1.467,0.646,1.94c0.43,0.474,1.008,0.711,1.731,0.711c0.61,0,1.184-0.203,1.722-0.608V18.665z"/>
+	<path fill="#4E4E4E" d="M73.704,19.15c-1.034,0-1.859-0.327-2.477-0.98s-0.925-1.52-0.925-2.6c0-1.175,0.32-2.092,0.963-2.753
+		c0.642-0.66,1.51-0.99,2.603-0.99c1.043,0,1.856,0.321,2.442,0.963c0.585,0.643,0.878,1.533,0.878,2.672
+		c0,1.115-0.315,2.009-0.946,2.681S74.766,19.15,73.704,19.15z M73.786,12.77c-0.72,0-1.289,0.245-1.708,0.734
+		c-0.419,0.49-0.628,1.165-0.628,2.025c0,0.829,0.212,1.482,0.635,1.961c0.424,0.479,0.991,0.718,1.701,0.718
+		c0.725,0,1.281-0.235,1.67-0.704c0.39-0.469,0.584-1.136,0.584-2.002c0-0.874-0.194-1.548-0.584-2.021
+		C75.067,13.007,74.511,12.77,73.786,12.77z"/>
+	<path fill="#4E4E4E" d="M84.785,18.986h-1.12v-3.989c0-1.484-0.542-2.228-1.626-2.228c-0.561,0-1.023,0.211-1.391,0.632
+		c-0.366,0.422-0.55,0.953-0.55,1.596v3.989h-1.12v-6.995h1.12v1.161h0.027c0.528-0.883,1.294-1.325,2.296-1.325
+		c0.765,0,1.35,0.247,1.755,0.741s0.608,1.208,0.608,2.142V18.986z"/>
+	<path fill="#4E4E4E" d="M90.141,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.14h-1.202v-0.956
+		h1.202v-1.708l1.12-0.362v2.07h1.763v0.956h-1.763v3.941c0,0.47,0.08,0.805,0.239,1.005s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+	<path fill="#4E4E4E" d="M96.644,18.986h-1.121v-1.093h-0.027c-0.487,0.838-1.204,1.257-2.151,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.395-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.842,0-1.603,0.287-2.281,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.645,0,2.467,0.87,2.467,2.609V18.986z M95.522,15.448l-1.687,0.231c-0.52,0.073-0.911,0.202-1.176,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.121,0.621,0.365,0.837c0.243,0.217,0.568,0.325,0.974,0.325
+		c0.556,0,1.015-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M103.522,18.665c-0.538,0.323-1.175,0.485-1.913,0.485c-0.997,0-1.802-0.324-2.415-0.974
+		c-0.612-0.648-0.918-1.49-0.918-2.524c0-1.151,0.33-2.077,0.99-2.776s1.541-1.049,2.644-1.049c0.614,0,1.156,0.114,1.626,0.342
+		v1.147c-0.52-0.364-1.075-0.547-1.667-0.547c-0.715,0-1.302,0.257-1.759,0.769c-0.458,0.513-0.687,1.186-0.687,2.019
+		c0,0.82,0.215,1.467,0.646,1.94c0.43,0.474,1.008,0.711,1.731,0.711c0.61,0,1.184-0.203,1.722-0.608V18.665z"/>
+	<path fill="#4E4E4E" d="M108.462,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.14h-1.202
+		v-0.956h1.202v-1.708l1.12-0.362v2.07h1.763v0.956h-1.763v3.941c0,0.47,0.08,0.805,0.239,1.005s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/website/static/img/Explorer_Bond_&_Validate_button.svg b/website/static/img/Explorer_Bond_&_Validate_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c508aae98c4dc560db4b547a32f3a1b71641d403
--- /dev/null
+++ b/website/static/img/Explorer_Bond_&_Validate_button.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="135.083px" height="27.98px" viewBox="0 0 135.083 27.98" enable-background="new 0 0 135.083 27.98" xml:space="preserve">
+<circle fill="#037281" cx="13.99" cy="13.99" r="13.99"/>
+<g>
+	<path fill="#4E4E4E" d="M35.136,18.986V9.19h2.787c0.847,0,1.519,0.208,2.015,0.622c0.497,0.415,0.745,0.954,0.745,1.619
+		c0,0.555-0.15,1.039-0.451,1.448c-0.301,0.41-0.715,0.702-1.243,0.875v0.027c0.66,0.077,1.188,0.326,1.584,0.748
+		c0.396,0.421,0.595,0.969,0.595,1.643c0,0.838-0.301,1.517-0.902,2.036c-0.601,0.519-1.359,0.778-2.275,0.778H35.136z
+		 M36.284,10.229v3.163h1.175c0.628,0,1.123-0.151,1.482-0.454c0.359-0.303,0.54-0.729,0.54-1.281c0-0.952-0.626-1.427-1.878-1.427
+		H36.284z M36.284,14.423v3.525h1.557c0.674,0,1.197-0.159,1.568-0.479c0.371-0.318,0.557-0.756,0.557-1.312
+		c0-1.156-0.788-1.735-2.363-1.735H36.284z"/>
+	<path fill="#4E4E4E" d="M45.929,19.15c-1.034,0-1.859-0.327-2.476-0.98c-0.617-0.653-0.926-1.52-0.926-2.6
+		c0-1.175,0.321-2.092,0.963-2.753c0.642-0.66,1.51-0.99,2.603-0.99c1.043,0,1.857,0.321,2.442,0.963
+		c0.585,0.643,0.878,1.533,0.878,2.672c0,1.115-0.315,2.009-0.946,2.681C47.836,18.814,46.99,19.15,45.929,19.15z M46.011,12.77
+		c-0.72,0-1.289,0.245-1.708,0.734c-0.419,0.49-0.629,1.165-0.629,2.025c0,0.829,0.212,1.482,0.636,1.961
+		c0.423,0.479,0.99,0.718,1.701,0.718c0.724,0,1.281-0.235,1.67-0.704c0.389-0.469,0.584-1.136,0.584-2.002
+		c0-0.874-0.195-1.548-0.584-2.021C47.292,13.007,46.735,12.77,46.011,12.77z"/>
+	<path fill="#4E4E4E" d="M57.01,18.986h-1.121v-3.989c0-1.484-0.541-2.228-1.625-2.228c-0.561,0-1.023,0.211-1.391,0.632
+		c-0.367,0.422-0.55,0.953-0.55,1.596v3.989h-1.121v-6.995h1.121v1.161h0.027c0.528-0.883,1.293-1.325,2.295-1.325
+		c0.765,0,1.351,0.247,1.756,0.741s0.608,1.208,0.608,2.142V18.986z"/>
+	<path fill="#4E4E4E" d="M65.09,18.986h-1.119v-1.188h-0.027c-0.52,0.901-1.321,1.353-2.405,1.353c-0.879,0-1.581-0.313-2.107-0.939
+		s-0.789-1.479-0.789-2.559c0-1.156,0.292-2.083,0.874-2.78c0.584-0.696,1.359-1.045,2.33-1.045c0.961,0,1.66,0.378,2.098,1.134
+		h0.027V8.63h1.119V18.986z M63.971,15.823v-1.031c0-0.564-0.188-1.043-0.561-1.435s-0.848-0.588-1.422-0.588
+		c-0.683,0-1.22,0.251-1.611,0.752c-0.393,0.501-0.588,1.193-0.588,2.076c0,0.807,0.188,1.443,0.564,1.91
+		c0.375,0.467,0.879,0.7,1.512,0.7c0.625,0,1.131-0.226,1.521-0.677C63.775,17.08,63.971,16.511,63.971,15.823z"/>
+	<path fill="#4E4E4E" d="M79.928,19.144c-0.26,0-0.488-0.035-0.687-0.106c-0.198-0.07-0.382-0.17-0.55-0.3
+		c-0.169-0.13-0.331-0.288-0.488-0.475c-0.157-0.188-0.322-0.398-0.495-0.636c-0.183,0.196-0.394,0.385-0.633,0.567
+		c-0.238,0.182-0.504,0.344-0.795,0.484c-0.292,0.142-0.61,0.254-0.957,0.338c-0.346,0.085-0.722,0.127-1.127,0.127
+		c-0.492,0-0.942-0.062-1.353-0.185s-0.761-0.304-1.052-0.543c-0.292-0.239-0.519-0.534-0.68-0.885
+		c-0.162-0.351-0.243-0.754-0.243-1.209c0-0.697,0.198-1.292,0.595-1.786s0.956-0.898,1.681-1.213
+		c-0.137-0.1-0.273-0.218-0.41-0.352c-0.137-0.135-0.259-0.287-0.365-0.458c-0.107-0.171-0.193-0.359-0.26-0.566
+		s-0.099-0.434-0.099-0.68c0-0.36,0.064-0.679,0.194-0.957c0.13-0.277,0.309-0.512,0.536-0.704c0.228-0.191,0.496-0.335,0.807-0.434
+		c0.31-0.098,0.644-0.147,1.004-0.147c0.355,0,0.68,0.049,0.974,0.147c0.293,0.098,0.546,0.238,0.758,0.42
+		c0.212,0.183,0.377,0.401,0.495,0.656c0.118,0.255,0.178,0.54,0.178,0.854c0,0.546-0.156,1-0.468,1.363
+		c-0.313,0.362-0.78,0.671-1.404,0.926c0.314,0.123,0.6,0.273,0.854,0.451s0.49,0.375,0.707,0.594
+		c0.216,0.219,0.418,0.453,0.604,0.704c0.187,0.25,0.371,0.51,0.553,0.778c0.369-0.515,0.647-1.081,0.834-1.701
+		c0.187-0.619,0.28-1.268,0.28-1.946c0-0.173-0.011-0.336-0.031-0.488s-0.049-0.304-0.085-0.455h1.086
+		c0.036,0.15,0.058,0.292,0.064,0.427s0.016,0.295,0.024,0.481c0,0.414-0.043,0.831-0.13,1.25s-0.203,0.825-0.349,1.22
+		c-0.146,0.394-0.315,0.769-0.509,1.123c-0.193,0.355-0.397,0.681-0.611,0.978c0.159,0.218,0.305,0.408,0.438,0.57
+		c0.132,0.161,0.265,0.297,0.399,0.406c0.134,0.109,0.273,0.19,0.417,0.242c0.144,0.053,0.306,0.079,0.488,0.079
+		c0.137,0,0.275-0.019,0.417-0.055c0.141-0.037,0.286-0.082,0.437-0.137v1.038c-0.164,0.063-0.336,0.111-0.516,0.144
+		C80.277,19.127,80.101,19.144,79.928,19.144z M74.196,18.174c0.346,0,0.665-0.038,0.956-0.113c0.292-0.075,0.561-0.175,0.807-0.301
+		c0.246-0.125,0.469-0.271,0.669-0.437s0.383-0.341,0.547-0.522c-0.278-0.433-0.534-0.803-0.769-1.11s-0.472-0.573-0.711-0.796
+		c-0.238-0.224-0.494-0.414-0.765-0.574c-0.271-0.159-0.584-0.307-0.939-0.443c-0.287,0.113-0.551,0.24-0.792,0.379
+		s-0.45,0.303-0.625,0.492c-0.176,0.188-0.313,0.408-0.414,0.659c-0.1,0.25-0.149,0.544-0.149,0.881c0,0.31,0.057,0.583,0.17,0.819
+		c0.114,0.237,0.271,0.435,0.469,0.591c0.198,0.157,0.429,0.276,0.693,0.355C73.606,18.134,73.892,18.174,74.196,18.174z
+		 M75.904,11.199c0-0.228-0.042-0.421-0.127-0.581c-0.084-0.159-0.19-0.292-0.32-0.396c-0.13-0.105-0.274-0.181-0.435-0.229
+		c-0.159-0.048-0.316-0.072-0.471-0.072c-0.446,0-0.803,0.121-1.069,0.362c-0.267,0.242-0.402,0.569-0.406,0.984
+		c0,0.187,0.028,0.362,0.085,0.526c0.058,0.164,0.137,0.316,0.239,0.458c0.103,0.141,0.222,0.267,0.358,0.376
+		c0.137,0.108,0.282,0.202,0.438,0.279c0.574-0.2,1.002-0.434,1.284-0.7S75.904,11.604,75.904,11.199z"/>
+	<path fill="#4E4E4E" d="M93.651,9.19l-3.628,9.796H88.76L85.208,9.19h1.277l2.712,7.767c0.087,0.251,0.152,0.54,0.198,0.868h0.027
+		c0.036-0.273,0.111-0.567,0.226-0.882l2.767-7.753H93.651z"/>
+	<path fill="#4E4E4E" d="M99.916,18.986h-1.121v-1.093h-0.027c-0.487,0.838-1.204,1.257-2.151,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.395-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.842,0-1.603,0.287-2.281,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.645,0,2.467,0.87,2.467,2.609V18.986z M98.795,15.448l-1.687,0.231c-0.52,0.073-0.911,0.202-1.176,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.121,0.621,0.365,0.837c0.243,0.217,0.568,0.325,0.974,0.325
+		c0.556,0,1.015-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M103.146,18.986h-1.12V8.63h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M105.989,10.215c-0.2,0-0.371-0.068-0.513-0.205c-0.141-0.137-0.212-0.31-0.212-0.519
+		s0.071-0.384,0.212-0.523c0.142-0.139,0.313-0.208,0.513-0.208c0.205,0,0.379,0.069,0.522,0.208
+		c0.144,0.139,0.215,0.313,0.215,0.523c0,0.2-0.071,0.371-0.215,0.512S106.194,10.215,105.989,10.215z M106.535,18.986h-1.12v-6.995
+		h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M114.773,18.986h-1.12v-1.188h-0.027c-0.52,0.901-1.321,1.353-2.405,1.353
+		c-0.879,0-1.581-0.313-2.107-0.939c-0.525-0.626-0.788-1.479-0.788-2.559c0-1.156,0.291-2.083,0.874-2.78
+		c0.583-0.696,1.359-1.045,2.329-1.045c0.961,0,1.66,0.378,2.098,1.134h0.027V8.63h1.12V18.986z M113.653,15.823v-1.031
+		c0-0.564-0.188-1.043-0.561-1.435s-0.847-0.588-1.421-0.588c-0.683,0-1.221,0.251-1.612,0.752s-0.587,1.193-0.587,2.076
+		c0,0.807,0.188,1.443,0.563,1.91s0.88,0.7,1.513,0.7c0.624,0,1.131-0.226,1.521-0.677C113.458,17.08,113.653,16.511,113.653,15.823
+		z"/>
+	<path fill="#4E4E4E" d="M122.049,18.986h-1.121v-1.093H120.9c-0.487,0.838-1.204,1.257-2.151,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.395-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.842,0-1.603,0.287-2.281,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.645,0,2.467,0.87,2.467,2.609V18.986z M120.928,15.448l-1.687,0.231c-0.52,0.073-0.911,0.202-1.176,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.121,0.621,0.365,0.837c0.243,0.217,0.568,0.325,0.974,0.325
+		c0.556,0,1.015-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M127.404,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.14h-1.202
+		v-0.956h1.202v-1.708l1.12-0.362v2.07h1.763v0.956h-1.763v3.941c0,0.47,0.08,0.805,0.239,1.005s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+	<path fill="#4E4E4E" d="M134.522,15.769h-4.938c0.018,0.779,0.228,1.38,0.628,1.804c0.401,0.424,0.952,0.636,1.653,0.636
+		c0.788,0,1.512-0.26,2.173-0.779v1.052c-0.615,0.446-1.428,0.67-2.439,0.67c-0.988,0-1.765-0.317-2.329-0.953
+		c-0.564-0.635-0.847-1.529-0.847-2.682c0-1.088,0.308-1.975,0.925-2.66s1.384-1.028,2.299-1.028c0.916,0,1.624,0.296,2.125,0.888
+		c0.501,0.593,0.751,1.414,0.751,2.467V15.769z M133.375,14.819c-0.005-0.646-0.16-1.149-0.468-1.51
+		c-0.308-0.359-0.734-0.54-1.281-0.54c-0.528,0-0.977,0.189-1.346,0.567s-0.597,0.872-0.683,1.482H133.375z"/>
+</g>
+<path opacity="0.8745" fill="#FFFDFB" d="M18.354,19.117h-2.29c-0.181,0-0.327-0.146-0.327-0.327v-1.091
+	c0-0.18,0.146-0.327,0.327-0.327h2.29c0.483,0,0.873-0.39,0.873-0.873v-5.236c0-0.483-0.39-0.873-0.873-0.873h-2.29
+	c-0.181,0-0.327-0.147-0.327-0.328V8.971c0-0.18,0.146-0.327,0.327-0.327h2.29c1.446,0,2.618,1.173,2.618,2.619v5.236
+	C20.972,17.945,19.8,19.117,18.354,19.117z M17.072,13.636L12.49,9.053c-0.409-0.409-1.118-0.122-1.118,0.464v2.619H7.663
+	c-0.362,0-0.654,0.292-0.654,0.655v2.617c0,0.363,0.292,0.654,0.654,0.654h3.709v2.619c0,0.586,0.709,0.872,1.118,0.463l4.582-4.582
+	C17.326,14.307,17.326,13.893,17.072,13.636z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/website/static/img/Explorer_Nominate_button.svg b/website/static/img/Explorer_Nominate_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..663022687108d663eeb7d44310a571fa7465f286
--- /dev/null
+++ b/website/static/img/Explorer_Nominate_button.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="95.044px" height="27.98px" viewBox="0 0 95.044 27.98" enable-background="new 0 0 95.044 27.98" xml:space="preserve">
+<path fill="#037281" d="M27.98,13.99c0,7.727-6.264,13.99-13.99,13.99C6.263,27.98,0,21.717,0,13.99C0,6.263,6.263,0,13.99,0
+	C21.716,0,27.98,6.263,27.98,13.99"/>
+<g>
+	<path fill="#4E4E4E" d="M43.032,18.986h-1.407l-5.041-7.808c-0.128-0.196-0.232-0.4-0.314-0.615h-0.041
+		c0.037,0.209,0.055,0.658,0.055,1.346v7.077h-1.147V9.19h1.489l4.904,7.686c0.205,0.318,0.338,0.537,0.396,0.655h0.027
+		c-0.045-0.282-0.068-0.763-0.068-1.441V9.19h1.147V18.986z"/>
+	<path fill="#4E4E4E" d="M48.374,19.15c-1.034,0-1.859-0.327-2.477-0.98s-0.925-1.52-0.925-2.6c0-1.174,0.32-2.092,0.963-2.752
+		c0.642-0.66,1.51-0.991,2.603-0.991c1.043,0,1.856,0.321,2.442,0.963c0.585,0.642,0.878,1.533,0.878,2.671
+		c0,1.115-0.315,2.009-0.946,2.681S49.435,19.15,48.374,19.15z M48.456,12.77c-0.72,0-1.289,0.245-1.708,0.734
+		s-0.628,1.165-0.628,2.025c0,0.829,0.212,1.482,0.635,1.961c0.424,0.479,0.991,0.718,1.701,0.718c0.725,0,1.281-0.235,1.67-0.704
+		c0.39-0.469,0.584-1.136,0.584-2.002c0-0.874-0.194-1.548-0.584-2.021C49.737,13.007,49.18,12.77,48.456,12.77z"/>
+	<path fill="#4E4E4E" d="M63.581,18.986h-1.12V14.97c0-0.774-0.12-1.334-0.358-1.681c-0.239-0.346-0.642-0.519-1.206-0.519
+		c-0.479,0-0.885,0.219-1.22,0.656c-0.334,0.437-0.502,0.961-0.502,1.571v3.989h-1.12v-4.153c0-1.375-0.53-2.063-1.592-2.063
+		c-0.491,0-0.897,0.206-1.216,0.618s-0.479,0.948-0.479,1.609v3.989h-1.12v-6.995h1.12v1.106h0.027
+		c0.497-0.847,1.221-1.271,2.173-1.271c0.478,0,0.895,0.133,1.25,0.4c0.355,0.266,0.599,0.616,0.73,1.048
+		c0.52-0.965,1.294-1.448,2.323-1.448c1.539,0,2.309,0.95,2.309,2.849V18.986z"/>
+	<path fill="#4E4E4E" d="M66.272,10.215c-0.2,0-0.371-0.068-0.513-0.205c-0.141-0.137-0.212-0.31-0.212-0.519
+		s0.071-0.384,0.212-0.523c0.142-0.139,0.313-0.208,0.513-0.208c0.205,0,0.379,0.069,0.522,0.208
+		c0.144,0.139,0.215,0.313,0.215,0.523c0,0.2-0.071,0.371-0.215,0.512S66.477,10.215,66.272,10.215z M66.818,18.986h-1.12v-6.995
+		h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M74.893,18.986h-1.12v-3.989c0-1.485-0.542-2.227-1.626-2.227c-0.561,0-1.023,0.21-1.391,0.632
+		c-0.366,0.421-0.55,0.953-0.55,1.595v3.989h-1.12v-6.995h1.12v1.161h0.027c0.528-0.883,1.294-1.325,2.296-1.325
+		c0.765,0,1.35,0.247,1.755,0.741s0.608,1.208,0.608,2.142V18.986z"/>
+	<path fill="#4E4E4E" d="M82.011,18.986H80.89v-1.093h-0.027c-0.487,0.838-1.204,1.257-2.151,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.395-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.842,0-1.603,0.287-2.281,0.861v-1.148c0.688-0.437,1.48-0.656,2.377-0.656
+		c1.645,0,2.467,0.87,2.467,2.61V18.986z M80.89,15.448l-1.687,0.231c-0.52,0.073-0.911,0.202-1.176,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.121,0.621,0.365,0.837c0.243,0.217,0.568,0.325,0.974,0.325
+		c0.556,0,1.015-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M87.367,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.139h-1.202
+		v-0.957h1.202v-1.708l1.12-0.362v2.07h1.763v0.957h-1.763v3.942c0,0.469,0.08,0.804,0.239,1.004s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+	<path fill="#4E4E4E" d="M94.484,15.769h-4.938c0.018,0.779,0.228,1.38,0.628,1.804c0.401,0.424,0.952,0.636,1.653,0.636
+		c0.788,0,1.512-0.26,2.173-0.779v1.052c-0.615,0.446-1.428,0.67-2.439,0.67c-0.988,0-1.765-0.317-2.329-0.953
+		c-0.564-0.635-0.847-1.529-0.847-2.682c0-1.088,0.308-1.975,0.925-2.66s1.384-1.028,2.299-1.028c0.916,0,1.624,0.296,2.125,0.888
+		c0.501,0.592,0.751,1.414,0.751,2.466V15.769z M93.336,14.819c-0.005-0.646-0.16-1.15-0.468-1.51s-0.734-0.54-1.281-0.54
+		c-0.528,0-0.977,0.189-1.346,0.567s-0.597,0.872-0.683,1.482H93.336z"/>
+</g>
+<path opacity="0.8745" fill="#FFFDFB" d="M11.775,18.938l-4.489-4.489c-0.269-0.269-0.269-0.707,0-0.976l0.977-0.977
+	c0.27-0.27,0.707-0.27,0.976,0l3.024,3.024l6.477-6.477c0.27-0.27,0.707-0.27,0.977,0l0.976,0.977c0.27,0.269,0.27,0.707,0,0.976
+	l-7.941,7.942C12.482,19.208,12.045,19.208,11.775,18.938z"/>
+</svg>
diff --git a/website/static/img/Explorer_Nominate_selected_button.svg b/website/static/img/Explorer_Nominate_selected_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b7e4dec2bcfee162a0909fa7e7e15442e279a66b
--- /dev/null
+++ b/website/static/img/Explorer_Nominate_selected_button.svg
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="149.591px" height="27.98px" viewBox="0 0 149.591 27.98" enable-background="new 0 0 149.591 27.98" xml:space="preserve">
+<path fill="#037281" d="M27.98,13.99c0,7.727-6.264,13.99-13.99,13.99C6.263,27.98,0,21.717,0,13.99C0,6.263,6.263,0,13.99,0
+	C21.716,0,27.98,6.263,27.98,13.99"/>
+<g>
+	<path fill="#4E4E4E" d="M43.032,18.986h-1.407l-5.041-7.808c-0.128-0.196-0.232-0.4-0.314-0.615h-0.041
+		c0.037,0.209,0.055,0.658,0.055,1.346v7.077h-1.147V9.19h1.489l4.904,7.686c0.205,0.318,0.338,0.537,0.396,0.655h0.027
+		c-0.045-0.282-0.068-0.763-0.068-1.441V9.19h1.147V18.986z"/>
+	<path fill="#4E4E4E" d="M48.374,19.15c-1.034,0-1.859-0.327-2.477-0.98s-0.925-1.52-0.925-2.6c0-1.174,0.32-2.092,0.963-2.752
+		c0.642-0.66,1.51-0.991,2.603-0.991c1.043,0,1.856,0.321,2.442,0.963c0.585,0.642,0.878,1.533,0.878,2.671
+		c0,1.115-0.315,2.009-0.946,2.681S49.435,19.15,48.374,19.15z M48.456,12.77c-0.72,0-1.289,0.245-1.708,0.734
+		s-0.628,1.165-0.628,2.025c0,0.829,0.212,1.482,0.635,1.961c0.424,0.479,0.991,0.718,1.701,0.718c0.725,0,1.281-0.235,1.67-0.704
+		c0.39-0.469,0.584-1.136,0.584-2.002c0-0.874-0.194-1.548-0.584-2.021C49.737,13.007,49.18,12.77,48.456,12.77z"/>
+	<path fill="#4E4E4E" d="M63.581,18.986h-1.12V14.97c0-0.774-0.12-1.334-0.358-1.681c-0.239-0.346-0.642-0.519-1.206-0.519
+		c-0.479,0-0.885,0.219-1.22,0.656c-0.334,0.437-0.502,0.961-0.502,1.571v3.989h-1.12v-4.153c0-1.375-0.53-2.063-1.592-2.063
+		c-0.491,0-0.897,0.206-1.216,0.618s-0.479,0.948-0.479,1.609v3.989h-1.12v-6.995h1.12v1.106h0.027
+		c0.497-0.847,1.221-1.271,2.173-1.271c0.478,0,0.895,0.133,1.25,0.4c0.355,0.266,0.599,0.616,0.73,1.048
+		c0.52-0.965,1.294-1.448,2.323-1.448c1.539,0,2.309,0.95,2.309,2.849V18.986z"/>
+	<path fill="#4E4E4E" d="M66.272,10.215c-0.2,0-0.371-0.068-0.513-0.205c-0.141-0.137-0.212-0.31-0.212-0.519
+		s0.071-0.384,0.212-0.523c0.142-0.139,0.313-0.208,0.513-0.208c0.205,0,0.379,0.069,0.522,0.208
+		c0.144,0.139,0.215,0.313,0.215,0.523c0,0.2-0.071,0.371-0.215,0.512S66.477,10.215,66.272,10.215z M66.818,18.986h-1.12v-6.995
+		h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M74.893,18.986h-1.12v-3.989c0-1.485-0.542-2.227-1.626-2.227c-0.561,0-1.023,0.21-1.391,0.632
+		c-0.366,0.421-0.55,0.953-0.55,1.595v3.989h-1.12v-6.995h1.12v1.161h0.027c0.528-0.883,1.294-1.325,2.296-1.325
+		c0.765,0,1.35,0.247,1.755,0.741s0.608,1.208,0.608,2.142V18.986z"/>
+	<path fill="#4E4E4E" d="M82.011,18.986H80.89v-1.093h-0.027c-0.487,0.838-1.204,1.257-2.151,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.395-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.842,0-1.603,0.287-2.281,0.861v-1.148c0.688-0.437,1.48-0.656,2.377-0.656
+		c1.645,0,2.467,0.87,2.467,2.61V18.986z M80.89,15.448l-1.687,0.231c-0.52,0.073-0.911,0.202-1.176,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.121,0.621,0.365,0.837c0.243,0.217,0.568,0.325,0.974,0.325
+		c0.556,0,1.015-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M87.367,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.139h-1.202
+		v-0.957h1.202v-1.708l1.12-0.362v2.07h1.763v0.957h-1.763v3.942c0,0.469,0.08,0.804,0.239,1.004s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+	<path fill="#4E4E4E" d="M94.484,15.769h-4.938c0.018,0.779,0.228,1.38,0.628,1.804c0.401,0.424,0.952,0.636,1.653,0.636
+		c0.788,0,1.512-0.26,2.173-0.779v1.052c-0.615,0.446-1.428,0.67-2.439,0.67c-0.988,0-1.765-0.317-2.329-0.953
+		c-0.564-0.635-0.847-1.529-0.847-2.682c0-1.088,0.308-1.975,0.925-2.66s1.384-1.028,2.299-1.028c0.916,0,1.624,0.296,2.125,0.888
+		c0.501,0.592,0.751,1.414,0.751,2.466V15.769z M93.336,14.819c-0.005-0.646-0.16-1.15-0.468-1.51s-0.734-0.54-1.281-0.54
+		c-0.528,0-0.977,0.189-1.346,0.567s-0.597,0.872-0.683,1.482H93.336z"/>
+	<path fill="#4E4E4E" d="M99.586,18.733v-1.202c0.61,0.451,1.282,0.677,2.016,0.677c0.983,0,1.476-0.328,1.476-0.984
+		c0-0.187-0.042-0.345-0.126-0.475c-0.085-0.13-0.198-0.245-0.342-0.345c-0.144-0.101-0.313-0.19-0.506-0.27
+		c-0.193-0.08-0.401-0.163-0.625-0.25c-0.31-0.123-0.582-0.247-0.816-0.372s-0.43-0.267-0.587-0.424
+		c-0.157-0.157-0.276-0.335-0.355-0.536c-0.08-0.2-0.12-0.435-0.12-0.704c0-0.328,0.075-0.618,0.226-0.871
+		c0.15-0.253,0.351-0.465,0.602-0.635c0.25-0.171,0.536-0.3,0.857-0.386s0.652-0.13,0.994-0.13c0.605,0,1.147,0.105,1.625,0.314
+		v1.134c-0.515-0.337-1.106-0.505-1.775-0.505c-0.21,0-0.398,0.024-0.567,0.072s-0.313,0.115-0.434,0.202
+		c-0.121,0.086-0.214,0.19-0.28,0.311s-0.099,0.254-0.099,0.4c0,0.182,0.032,0.334,0.099,0.458s0.163,0.232,0.29,0.328
+		c0.128,0.096,0.282,0.183,0.465,0.26c0.183,0.078,0.39,0.162,0.622,0.253c0.31,0.118,0.587,0.24,0.833,0.365
+		s0.455,0.267,0.629,0.424c0.173,0.157,0.306,0.338,0.399,0.543c0.093,0.205,0.14,0.448,0.14,0.73c0,0.347-0.076,0.647-0.229,0.902
+		s-0.356,0.467-0.611,0.635c-0.255,0.169-0.549,0.294-0.882,0.376c-0.332,0.082-0.681,0.123-1.045,0.123
+		C100.739,19.15,100.115,19.012,99.586,18.733z"/>
+	<path fill="#4E4E4E" d="M111.569,15.769h-4.938c0.018,0.779,0.228,1.38,0.628,1.804c0.401,0.424,0.952,0.636,1.653,0.636
+		c0.788,0,1.512-0.26,2.173-0.779v1.052c-0.615,0.446-1.428,0.67-2.439,0.67c-0.988,0-1.765-0.317-2.329-0.953
+		c-0.564-0.635-0.847-1.529-0.847-2.682c0-1.088,0.308-1.975,0.925-2.66s1.384-1.028,2.299-1.028c0.916,0,1.624,0.296,2.125,0.888
+		c0.501,0.592,0.751,1.414,0.751,2.466V15.769z M110.421,14.819c-0.005-0.646-0.16-1.15-0.468-1.51s-0.734-0.54-1.281-0.54
+		c-0.528,0-0.977,0.189-1.346,0.567s-0.597,0.872-0.683,1.482H110.421z"/>
+	<path fill="#4E4E4E" d="M114.383,18.986h-1.12V8.63h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M122.273,15.769h-4.938c0.018,0.779,0.228,1.38,0.628,1.804c0.401,0.424,0.952,0.636,1.653,0.636
+		c0.788,0,1.512-0.26,2.173-0.779v1.052c-0.615,0.446-1.428,0.67-2.439,0.67c-0.988,0-1.765-0.317-2.329-0.953
+		c-0.564-0.635-0.847-1.529-0.847-2.682c0-1.088,0.308-1.975,0.925-2.66s1.384-1.028,2.299-1.028c0.916,0,1.624,0.296,2.125,0.888
+		c0.501,0.592,0.751,1.414,0.751,2.466V15.769z M121.125,14.819c-0.005-0.646-0.16-1.15-0.468-1.51s-0.734-0.54-1.281-0.54
+		c-0.528,0-0.977,0.189-1.346,0.567s-0.597,0.872-0.683,1.482H121.125z"/>
+	<path fill="#4E4E4E" d="M128.736,18.665c-0.538,0.323-1.175,0.485-1.913,0.485c-0.997,0-1.802-0.324-2.415-0.974
+		c-0.612-0.648-0.918-1.49-0.918-2.524c0-1.152,0.33-2.077,0.99-2.776s1.541-1.049,2.644-1.049c0.614,0,1.156,0.114,1.626,0.342
+		v1.147c-0.52-0.364-1.075-0.546-1.667-0.546c-0.715,0-1.302,0.256-1.759,0.769c-0.458,0.512-0.687,1.185-0.687,2.018
+		c0,0.82,0.215,1.467,0.646,1.94c0.43,0.474,1.008,0.711,1.731,0.711c0.61,0,1.184-0.203,1.722-0.608V18.665z"/>
+	<path fill="#4E4E4E" d="M133.674,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.139h-1.202
+		v-0.957h1.202v-1.708l1.12-0.362v2.07h1.763v0.957h-1.763v3.942c0,0.469,0.08,0.804,0.239,1.004s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+	<path fill="#4E4E4E" d="M140.792,15.769h-4.938c0.018,0.779,0.228,1.38,0.628,1.804c0.401,0.424,0.952,0.636,1.653,0.636
+		c0.788,0,1.512-0.26,2.173-0.779v1.052c-0.615,0.446-1.428,0.67-2.439,0.67c-0.988,0-1.765-0.317-2.329-0.953
+		c-0.564-0.635-0.847-1.529-0.847-2.682c0-1.088,0.308-1.975,0.925-2.66s1.384-1.028,2.299-1.028c0.916,0,1.624,0.296,2.125,0.888
+		c0.501,0.592,0.751,1.414,0.751,2.466V15.769z M139.645,14.819c-0.005-0.646-0.16-1.15-0.468-1.51s-0.734-0.54-1.281-0.54
+		c-0.528,0-0.977,0.189-1.346,0.567s-0.597,0.872-0.683,1.482H139.645z"/>
+	<path fill="#4E4E4E" d="M148.458,18.986h-1.12v-1.188h-0.027c-0.52,0.901-1.321,1.353-2.405,1.353
+		c-0.879,0-1.581-0.313-2.107-0.939c-0.525-0.626-0.788-1.479-0.788-2.559c0-1.156,0.291-2.083,0.874-2.78s1.359-1.045,2.329-1.045
+		c0.961,0,1.66,0.378,2.098,1.134h0.027V8.63h1.12V18.986z M147.337,15.823v-1.031c0-0.564-0.188-1.043-0.561-1.435
+		s-0.847-0.587-1.421-0.587c-0.683,0-1.221,0.25-1.612,0.751s-0.587,1.193-0.587,2.076c0,0.807,0.188,1.443,0.563,1.91
+		s0.88,0.7,1.513,0.7c0.624,0,1.131-0.226,1.521-0.677C147.142,17.08,147.337,16.511,147.337,15.823z"/>
+</g>
+<path opacity="0.8745" fill="#FFFDFB" d="M19.039,10.493c-0.613-0.012-1.114,0.502-1.114,1.113v2.384h-0.219V9.176
+	c0-0.614-0.502-1.127-1.114-1.115c-0.595,0.012-1.072,0.496-1.072,1.094v4.836h-0.218V8.109c0-0.612-0.502-1.126-1.114-1.114
+	c-0.595,0.012-1.072,0.497-1.072,1.093v5.902h-0.219V9.202c0-0.611-0.502-1.126-1.114-1.114c-0.595,0.012-1.072,0.497-1.072,1.094
+	v6.448L9.846,14.44c-0.355-0.488-1.038-0.596-1.526-0.242c-0.488,0.356-0.596,1.04-0.241,1.527l3.431,4.72
+	c0.263,0.36,0.616,0.54,1.061,0.54h5.4c0.607,0,1.137-0.419,1.276-1.011l0.725-3.079c0.093-0.395,0.14-0.795,0.14-1.201v-4.108
+	C20.111,10.99,19.633,10.505,19.039,10.493z"/>
+</svg>
diff --git a/website/static/img/Explorer_Save_button.svg b/website/static/img/Explorer_Save_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..a74453b42ebb36ca1c92cc7dd6e63ca884b4402f
--- /dev/null
+++ b/website/static/img/Explorer_Save_button.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="62.419px" height="27.98px" viewBox="0 0 62.419 27.98" enable-background="new 0 0 62.419 27.98" xml:space="preserve">
+<circle fill="#037281" cx="13.99" cy="13.99" r="13.99"/>
+<path opacity="0.8745" fill="#FFFDFB" d="M19.236,12.679h-3.935V8.744c0-0.483-0.392-0.875-0.875-0.875h-0.874
+	c-0.483,0-0.875,0.392-0.875,0.875v3.935H8.744c-0.483,0-0.875,0.392-0.875,0.874v0.875c0,0.483,0.392,0.874,0.875,0.874h3.935
+	v3.935c0,0.484,0.392,0.875,0.875,0.875h0.874c0.483,0,0.875-0.391,0.875-0.875v-3.935h3.935c0.483,0,0.875-0.391,0.875-0.874
+	v-0.875C20.111,13.07,19.719,12.679,19.236,12.679z"/>
+<g>
+	<path fill="#4E4E4E" d="M34.678,18.59v-1.353c0.155,0.137,0.34,0.26,0.557,0.369s0.444,0.201,0.683,0.276s0.479,0.134,0.721,0.175
+		s0.464,0.062,0.669,0.062c0.706,0,1.233-0.131,1.582-0.394c0.348-0.262,0.522-0.639,0.522-1.13c0-0.265-0.058-0.494-0.174-0.69
+		c-0.116-0.195-0.276-0.374-0.481-0.536c-0.205-0.161-0.447-0.316-0.728-0.465c-0.28-0.147-0.582-0.304-0.905-0.468
+		c-0.341-0.173-0.66-0.349-0.956-0.525c-0.296-0.178-0.554-0.374-0.772-0.588c-0.219-0.214-0.391-0.456-0.516-0.728
+		c-0.125-0.271-0.188-0.589-0.188-0.953c0-0.446,0.098-0.834,0.293-1.165s0.453-0.602,0.772-0.816
+		c0.319-0.214,0.682-0.373,1.09-0.478c0.407-0.104,0.823-0.157,1.247-0.157c0.965,0,1.669,0.116,2.111,0.349v1.291
+		c-0.579-0.401-1.321-0.601-2.227-0.601c-0.25,0-0.501,0.026-0.751,0.079s-0.474,0.138-0.669,0.256
+		c-0.196,0.119-0.355,0.271-0.478,0.458c-0.123,0.187-0.185,0.414-0.185,0.684c0,0.25,0.047,0.466,0.14,0.648
+		c0.093,0.182,0.231,0.349,0.413,0.498c0.182,0.15,0.404,0.297,0.666,0.438c0.262,0.142,0.564,0.296,0.905,0.465
+		c0.351,0.173,0.683,0.355,0.998,0.546c0.314,0.191,0.589,0.403,0.826,0.636s0.425,0.489,0.564,0.771
+		c0.139,0.283,0.208,0.606,0.208,0.971c0,0.482-0.094,0.892-0.283,1.226c-0.189,0.335-0.444,0.607-0.765,0.816
+		c-0.321,0.21-0.691,0.361-1.11,0.454c-0.419,0.094-0.86,0.141-1.325,0.141c-0.155,0-0.346-0.013-0.574-0.038
+		c-0.228-0.024-0.46-0.062-0.697-0.109c-0.237-0.047-0.461-0.106-0.673-0.177C34.975,18.755,34.806,18.677,34.678,18.59z"/>
+	<path fill="#4E4E4E" d="M47.425,18.986h-1.12v-1.093h-0.027c-0.487,0.838-1.205,1.257-2.152,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.394-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.843,0-1.603,0.287-2.282,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.644,0,2.466,0.87,2.466,2.609V18.986z M46.305,15.448l-1.688,0.231c-0.519,0.073-0.911,0.202-1.175,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.122,0.621,0.366,0.837c0.244,0.217,0.568,0.325,0.974,0.325
+		c0.555,0,1.014-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M55.035,11.991l-2.787,6.995h-1.1l-2.65-6.995h1.229l1.776,5.082c0.132,0.374,0.214,0.699,0.246,0.978
+		h0.027c0.045-0.351,0.119-0.667,0.219-0.95l1.858-5.109H55.035z"/>
+	<path fill="#4E4E4E" d="M61.859,15.769H56.92c0.019,0.779,0.228,1.38,0.629,1.804c0.4,0.424,0.952,0.636,1.653,0.636
+		c0.788,0,1.512-0.26,2.172-0.779v1.052c-0.615,0.446-1.428,0.67-2.438,0.67c-0.988,0-1.765-0.317-2.33-0.953
+		c-0.565-0.635-0.847-1.529-0.847-2.682c0-1.088,0.309-1.975,0.926-2.66c0.617-0.686,1.383-1.028,2.298-1.028
+		c0.916,0,1.624,0.296,2.125,0.888c0.501,0.593,0.751,1.414,0.751,2.467V15.769z M60.712,14.819
+		c-0.004-0.646-0.161-1.149-0.468-1.51c-0.308-0.359-0.734-0.54-1.281-0.54c-0.528,0-0.977,0.189-1.346,0.567
+		c-0.369,0.378-0.597,0.872-0.683,1.482H60.712z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/website/static/img/Explorer_Sign_and_Submit_button.svg b/website/static/img/Explorer_Sign_and_Submit_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b92f2a121b2edd3baeb725f770ed98a9fabfe564
--- /dev/null
+++ b/website/static/img/Explorer_Sign_and_Submit_button.svg
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="135.52px" height="27.98px" viewBox="0 0 135.52 27.98" enable-background="new 0 0 135.52 27.98" xml:space="preserve">
+<circle fill="#037281" cx="13.99" cy="13.99" r="13.99"/>
+<g>
+	<path fill="#4E4E4E" d="M34.678,18.59v-1.353c0.155,0.137,0.34,0.26,0.557,0.369s0.444,0.201,0.683,0.276s0.479,0.134,0.721,0.175
+		s0.464,0.062,0.669,0.062c0.706,0,1.233-0.131,1.582-0.394c0.348-0.262,0.522-0.639,0.522-1.13c0-0.265-0.058-0.494-0.174-0.69
+		c-0.116-0.195-0.276-0.374-0.481-0.536c-0.205-0.161-0.447-0.316-0.728-0.465c-0.28-0.147-0.582-0.304-0.905-0.468
+		c-0.341-0.173-0.66-0.349-0.956-0.525c-0.296-0.178-0.554-0.374-0.772-0.588c-0.219-0.214-0.391-0.456-0.516-0.728
+		c-0.125-0.271-0.188-0.589-0.188-0.953c0-0.446,0.098-0.834,0.293-1.165s0.453-0.602,0.772-0.816
+		c0.319-0.214,0.682-0.373,1.09-0.478c0.407-0.104,0.823-0.157,1.247-0.157c0.965,0,1.669,0.116,2.111,0.349v1.291
+		c-0.579-0.401-1.321-0.601-2.227-0.601c-0.25,0-0.501,0.026-0.751,0.079s-0.474,0.138-0.669,0.256
+		c-0.196,0.119-0.355,0.271-0.478,0.458c-0.123,0.187-0.185,0.414-0.185,0.684c0,0.25,0.047,0.466,0.14,0.648
+		c0.093,0.182,0.231,0.349,0.413,0.498c0.182,0.15,0.404,0.297,0.666,0.438c0.262,0.142,0.564,0.296,0.905,0.465
+		c0.351,0.173,0.683,0.355,0.998,0.546c0.314,0.191,0.589,0.403,0.826,0.636s0.425,0.489,0.564,0.771
+		c0.139,0.283,0.208,0.606,0.208,0.971c0,0.482-0.094,0.892-0.283,1.226c-0.189,0.335-0.444,0.607-0.765,0.816
+		c-0.321,0.21-0.691,0.361-1.11,0.454c-0.419,0.094-0.86,0.141-1.325,0.141c-0.155,0-0.346-0.013-0.574-0.038
+		c-0.228-0.024-0.46-0.062-0.697-0.109c-0.237-0.047-0.461-0.106-0.673-0.177C34.975,18.755,34.806,18.677,34.678,18.59z"/>
+	<path fill="#4E4E4E" d="M42.992,10.215c-0.201,0-0.372-0.068-0.513-0.205s-0.211-0.31-0.211-0.519s0.07-0.384,0.211-0.523
+		C42.62,8.83,42.791,8.76,42.992,8.76c0.205,0,0.379,0.069,0.522,0.208c0.144,0.139,0.215,0.313,0.215,0.523
+		c0,0.2-0.072,0.371-0.215,0.512S43.196,10.215,42.992,10.215z M43.538,18.986h-1.121v-6.995h1.121V18.986z"/>
+	<path fill="#4E4E4E" d="M51.777,18.426c0,2.569-1.23,3.854-3.689,3.854c-0.865,0-1.621-0.164-2.268-0.492v-1.12
+		c0.788,0.437,1.54,0.655,2.254,0.655c1.722,0,2.582-0.915,2.582-2.746v-0.765h-0.027c-0.533,0.893-1.334,1.339-2.404,1.339
+		c-0.87,0-1.57-0.311-2.101-0.933c-0.531-0.622-0.796-1.456-0.796-2.504c0-1.188,0.286-2.133,0.857-2.835
+		c0.571-0.701,1.354-1.052,2.346-1.052c0.943,0,1.642,0.378,2.097,1.134h0.027v-0.97h1.121V18.426z M50.656,15.823v-1.031
+		c0-0.556-0.188-1.031-0.563-1.428c-0.375-0.396-0.844-0.595-1.404-0.595c-0.692,0-1.234,0.252-1.625,0.755
+		c-0.392,0.504-0.588,1.208-0.588,2.114c0,0.779,0.188,1.402,0.564,1.869c0.375,0.467,0.873,0.7,1.492,0.7
+		c0.629,0,1.14-0.224,1.534-0.67S50.656,16.521,50.656,15.823z"/>
+	<path fill="#4E4E4E" d="M59.852,18.986H58.73v-3.989c0-1.484-0.541-2.228-1.625-2.228c-0.561,0-1.023,0.211-1.391,0.632
+		c-0.367,0.422-0.55,0.953-0.55,1.596v3.989h-1.12v-6.995h1.12v1.161h0.027c0.528-0.883,1.293-1.325,2.295-1.325
+		c0.765,0,1.351,0.247,1.756,0.741s0.608,1.208,0.608,2.142V18.986z"/>
+	<path fill="#4E4E4E" d="M70.802,18.986h-1.121v-1.093h-0.027c-0.487,0.838-1.204,1.257-2.151,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.395-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.842,0-1.603,0.287-2.281,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.645,0,2.467,0.87,2.467,2.609V18.986z M69.681,15.448l-1.687,0.231c-0.52,0.073-0.911,0.202-1.176,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.121,0.621,0.365,0.837c0.243,0.217,0.568,0.325,0.974,0.325
+		c0.556,0,1.015-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M78.719,18.986h-1.12v-3.989c0-1.484-0.542-2.228-1.626-2.228c-0.561,0-1.023,0.211-1.391,0.632
+		c-0.366,0.422-0.55,0.953-0.55,1.596v3.989h-1.12v-6.995h1.12v1.161h0.027c0.528-0.883,1.294-1.325,2.296-1.325
+		c0.765,0,1.35,0.247,1.755,0.741s0.608,1.208,0.608,2.142V18.986z"/>
+	<path fill="#4E4E4E" d="M86.8,18.986h-1.12v-1.188h-0.027c-0.52,0.901-1.321,1.353-2.405,1.353c-0.879,0-1.581-0.313-2.107-0.939
+		c-0.525-0.626-0.788-1.479-0.788-2.559c0-1.156,0.291-2.083,0.874-2.78c0.583-0.696,1.359-1.045,2.329-1.045
+		c0.961,0,1.66,0.378,2.098,1.134h0.027V8.63h1.12V18.986z M85.68,15.823v-1.031c0-0.564-0.188-1.043-0.561-1.435
+		s-0.847-0.588-1.421-0.588c-0.683,0-1.221,0.251-1.612,0.752s-0.587,1.193-0.587,2.076c0,0.807,0.188,1.443,0.563,1.91
+		s0.88,0.7,1.513,0.7c0.624,0,1.131-0.226,1.521-0.677C85.484,17.08,85.68,16.511,85.68,15.823z"/>
+	<path fill="#4E4E4E" d="M92.593,18.59v-1.353c0.155,0.137,0.341,0.26,0.558,0.369c0.216,0.109,0.443,0.201,0.683,0.276
+		s0.479,0.134,0.721,0.175s0.465,0.062,0.67,0.062c0.705,0,1.232-0.131,1.581-0.394c0.349-0.262,0.522-0.639,0.522-1.13
+		c0-0.265-0.058-0.494-0.174-0.69c-0.116-0.195-0.277-0.374-0.482-0.536c-0.204-0.161-0.447-0.316-0.727-0.465
+		c-0.28-0.147-0.582-0.304-0.905-0.468c-0.342-0.173-0.661-0.349-0.957-0.525c-0.296-0.178-0.553-0.374-0.771-0.588
+		s-0.391-0.456-0.516-0.728c-0.126-0.271-0.188-0.589-0.188-0.953c0-0.446,0.099-0.834,0.294-1.165
+		c0.196-0.33,0.453-0.602,0.772-0.816c0.318-0.214,0.682-0.373,1.089-0.478c0.408-0.104,0.823-0.157,1.247-0.157
+		c0.966,0,1.669,0.116,2.11,0.349v1.291c-0.578-0.401-1.32-0.601-2.227-0.601c-0.25,0-0.501,0.026-0.751,0.079
+		c-0.251,0.052-0.474,0.138-0.67,0.256c-0.195,0.119-0.355,0.271-0.479,0.458c-0.123,0.187-0.184,0.414-0.184,0.684
+		c0,0.25,0.046,0.466,0.14,0.648c0.093,0.182,0.231,0.349,0.413,0.498c0.183,0.15,0.404,0.297,0.666,0.438
+		c0.262,0.142,0.563,0.296,0.905,0.465c0.351,0.173,0.684,0.355,0.997,0.546c0.314,0.191,0.59,0.403,0.827,0.636
+		c0.236,0.232,0.425,0.489,0.563,0.771c0.139,0.283,0.208,0.606,0.208,0.971c0,0.482-0.095,0.892-0.283,1.226
+		c-0.189,0.335-0.444,0.607-0.766,0.816c-0.32,0.21-0.69,0.361-1.109,0.454c-0.419,0.094-0.861,0.141-1.325,0.141
+		c-0.155,0-0.347-0.013-0.574-0.038c-0.228-0.024-0.46-0.062-0.696-0.109c-0.237-0.047-0.462-0.106-0.673-0.177
+		C92.891,18.755,92.721,18.677,92.593,18.59z"/>
+	<path fill="#4E4E4E" d="M105.988,18.986h-1.12V17.88h-0.027c-0.465,0.847-1.185,1.271-2.158,1.271
+		c-1.667,0-2.501-0.993-2.501-2.979v-4.181h1.114v4.003c0,1.476,0.564,2.214,1.693,2.214c0.547,0,0.996-0.202,1.35-0.605
+		c0.353-0.402,0.529-0.93,0.529-1.581v-4.03h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M109.397,17.976h-0.027v1.011h-1.12V8.63h1.12v4.59h0.027c0.552-0.929,1.357-1.394,2.419-1.394
+		c0.896,0,1.6,0.313,2.107,0.939s0.762,1.465,0.762,2.518c0,1.17-0.285,2.107-0.854,2.811c-0.569,0.704-1.348,1.056-2.336,1.056
+		C110.57,19.15,109.871,18.759,109.397,17.976z M109.37,15.154v0.977c0,0.578,0.188,1.069,0.563,1.472
+		c0.376,0.403,0.854,0.605,1.432,0.605c0.679,0,1.21-0.26,1.595-0.779s0.577-1.241,0.577-2.165c0-0.779-0.18-1.39-0.539-1.831
+		c-0.36-0.441-0.848-0.663-1.462-0.663c-0.651,0-1.175,0.227-1.571,0.68C109.568,13.903,109.37,14.471,109.37,15.154z"/>
+	<path fill="#4E4E4E" d="M126.407,18.986h-1.12V14.97c0-0.774-0.12-1.334-0.358-1.681c-0.239-0.346-0.642-0.52-1.206-0.52
+		c-0.479,0-0.885,0.219-1.22,0.656c-0.334,0.438-0.502,0.961-0.502,1.571v3.989h-1.12v-4.153c0-1.375-0.53-2.063-1.592-2.063
+		c-0.491,0-0.897,0.206-1.216,0.618c-0.318,0.413-0.479,0.949-0.479,1.609v3.989h-1.12v-6.995h1.12v1.106h0.027
+		c0.497-0.847,1.221-1.271,2.173-1.271c0.478,0,0.895,0.134,1.25,0.399c0.355,0.267,0.599,0.616,0.73,1.049
+		c0.52-0.966,1.294-1.448,2.323-1.448c1.539,0,2.309,0.949,2.309,2.849V18.986z"/>
+	<path fill="#4E4E4E" d="M129.099,10.215c-0.2,0-0.371-0.068-0.513-0.205c-0.141-0.137-0.212-0.31-0.212-0.519
+		s0.071-0.384,0.212-0.523c0.142-0.139,0.313-0.208,0.513-0.208c0.205,0,0.379,0.069,0.522,0.208
+		c0.144,0.139,0.215,0.313,0.215,0.523c0,0.2-0.071,0.371-0.215,0.512S129.304,10.215,129.099,10.215z M129.645,18.986h-1.12v-6.995
+		h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M135.158,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.14h-1.202
+		v-0.956h1.202v-1.708l1.12-0.362v2.07h1.763v0.956h-1.763v3.941c0,0.47,0.08,0.805,0.239,1.005s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+</g>
+<path opacity="0.8745" fill="#FFFDFB" d="M18.354,19.117h-2.29c-0.181,0-0.327-0.146-0.327-0.327v-1.091
+	c0-0.18,0.146-0.327,0.327-0.327h2.29c0.483,0,0.873-0.39,0.873-0.873v-5.236c0-0.483-0.39-0.873-0.873-0.873h-2.29
+	c-0.181,0-0.327-0.147-0.327-0.328V8.971c0-0.18,0.146-0.327,0.327-0.327h2.29c1.446,0,2.618,1.173,2.618,2.619v5.236
+	C20.972,17.945,19.8,19.117,18.354,19.117z M17.072,13.636L12.49,9.053c-0.409-0.409-1.118-0.122-1.118,0.464v2.619H7.663
+	c-0.362,0-0.654,0.292-0.654,0.655v2.617c0,0.363,0.292,0.654,0.654,0.654h3.709v2.619c0,0.586,0.709,0.872,1.118,0.463l4.582-4.582
+	C17.326,14.307,17.326,13.893,17.072,13.636z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/website/static/img/Explorer_Sign_and_Submit_toggle.svg b/website/static/img/Explorer_Sign_and_Submit_toggle.svg
new file mode 100644
index 0000000000000000000000000000000000000000..135aa78793bbf7765c5635d80f7262544e771073
--- /dev/null
+++ b/website/static/img/Explorer_Sign_and_Submit_toggle.svg
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="157.792px" height="21.923px" viewBox="0 0 157.792 21.923" enable-background="new 0 0 157.792 21.923"
+	 xml:space="preserve">
+<g>
+	<g>
+		<g opacity="0.6588">
+			<path fill="#4E4E4E" d="M0.863,16.29v-1.413c0.162,0.143,0.356,0.271,0.582,0.386c0.226,0.114,0.464,0.21,0.713,0.289
+				c0.25,0.078,0.5,0.139,0.753,0.182c0.252,0.043,0.485,0.064,0.699,0.064c0.737,0,1.288-0.137,1.652-0.411
+				c0.364-0.273,0.546-0.667,0.546-1.181c0-0.276-0.061-0.516-0.182-0.721c-0.121-0.205-0.289-0.392-0.503-0.561
+				c-0.214-0.169-0.468-0.331-0.76-0.485c-0.292-0.154-0.608-0.317-0.945-0.489c-0.357-0.181-0.69-0.364-0.999-0.549
+				c-0.31-0.186-0.578-0.39-0.807-0.614s-0.408-0.477-0.539-0.76C0.943,9.745,0.878,9.413,0.878,9.032
+				c0-0.466,0.102-0.872,0.307-1.217C1.389,7.47,1.658,7.186,1.991,6.962s0.712-0.39,1.138-0.5s0.86-0.164,1.302-0.164
+				c1.009,0,1.744,0.121,2.205,0.364v1.349c-0.604-0.419-1.38-0.628-2.326-0.628c-0.262,0-0.523,0.028-0.785,0.083
+				S3.03,7.609,2.826,7.733c-0.205,0.124-0.371,0.283-0.5,0.478C2.198,8.406,2.134,8.645,2.134,8.925
+				c0,0.262,0.049,0.488,0.146,0.678c0.097,0.19,0.241,0.364,0.432,0.521c0.19,0.157,0.422,0.309,0.696,0.457
+				c0.273,0.147,0.589,0.31,0.945,0.485c0.366,0.181,0.714,0.371,1.042,0.571s0.616,0.421,0.864,0.664
+				c0.247,0.243,0.443,0.512,0.588,0.807s0.218,0.633,0.218,1.013c0,0.504-0.099,0.932-0.296,1.281
+				c-0.198,0.35-0.464,0.634-0.799,0.853c-0.335,0.219-0.722,0.377-1.16,0.475c-0.438,0.098-0.899,0.146-1.385,0.146
+				c-0.162,0-0.361-0.013-0.599-0.04c-0.238-0.026-0.481-0.064-0.728-0.114c-0.248-0.05-0.482-0.112-0.703-0.186
+				S0.997,16.38,0.863,16.29z"/>
+			<path fill="#4E4E4E" d="M9.548,7.541c-0.209,0-0.388-0.071-0.535-0.214C8.866,7.184,8.792,7.003,8.792,6.784
+				s0.074-0.401,0.221-0.546s0.326-0.218,0.535-0.218c0.214,0,0.396,0.073,0.546,0.218s0.225,0.327,0.225,0.546
+				c0,0.209-0.075,0.388-0.225,0.535S9.762,7.541,9.548,7.541z M10.119,16.704h-1.17V9.396h1.17V16.704z"/>
+			<path fill="#4E4E4E" d="M18.726,16.119c0,2.683-1.285,4.025-3.854,4.025c-0.904,0-1.694-0.171-2.37-0.514v-1.17
+				c0.823,0.457,1.608,0.685,2.355,0.685c1.798,0,2.698-0.956,2.698-2.869v-0.799h-0.029c-0.556,0.933-1.394,1.399-2.512,1.399
+				c-0.909,0-1.64-0.325-2.194-0.974s-0.832-1.521-0.832-2.616c0-1.242,0.298-2.229,0.896-2.961
+				c0.597-0.732,1.414-1.099,2.452-1.099c0.985,0,1.715,0.395,2.19,1.185h0.029V9.396h1.17V16.119z M17.556,13.399v-1.078
+				c0-0.58-0.196-1.078-0.589-1.491c-0.393-0.414-0.881-0.621-1.466-0.621c-0.723,0-1.29,0.263-1.699,0.789
+				c-0.409,0.526-0.614,1.262-0.614,2.209c0,0.813,0.196,1.464,0.589,1.952s0.912,0.731,1.56,0.731c0.656,0,1.19-0.233,1.602-0.699
+				C17.35,14.725,17.556,14.127,17.556,13.399z"/>
+			<path fill="#4E4E4E" d="M27.161,16.704h-1.17v-4.167c0-1.551-0.566-2.327-1.698-2.327c-0.585,0-1.069,0.22-1.452,0.66
+				c-0.383,0.44-0.575,0.996-0.575,1.667v4.167h-1.17V9.396h1.17v1.213h0.028c0.552-0.923,1.352-1.385,2.398-1.385
+				c0.799,0,1.411,0.258,1.834,0.774s0.635,1.262,0.635,2.237V16.704z"/>
+			<path fill="#4E4E4E" d="M38.601,16.704h-1.17v-1.142h-0.028c-0.509,0.875-1.259,1.313-2.248,1.313
+				c-0.728,0-1.298-0.193-1.709-0.578c-0.412-0.385-0.618-0.897-0.618-1.534c0-1.366,0.804-2.16,2.412-2.384l2.191-0.307
+				c0-1.242-0.502-1.863-1.506-1.863c-0.88,0-1.674,0.3-2.383,0.899V9.91c0.718-0.457,1.546-0.685,2.483-0.685
+				c1.717,0,2.576,0.909,2.576,2.726V16.704z M37.43,13.007l-1.763,0.243c-0.542,0.076-0.952,0.21-1.228,0.403
+				s-0.414,0.534-0.414,1.024c0,0.357,0.127,0.648,0.382,0.875c0.254,0.226,0.593,0.339,1.017,0.339c0.581,0,1.06-0.204,1.438-0.61
+				c0.378-0.407,0.567-0.921,0.567-1.545V13.007z"/>
+			<path fill="#4E4E4E" d="M46.872,16.704h-1.17v-4.167c0-1.551-0.566-2.327-1.698-2.327c-0.585,0-1.069,0.22-1.452,0.66
+				c-0.383,0.44-0.575,0.996-0.575,1.667v4.167h-1.17V9.396h1.17v1.213h0.028c0.552-0.923,1.352-1.385,2.398-1.385
+				c0.799,0,1.411,0.258,1.834,0.774s0.635,1.262,0.635,2.237V16.704z"/>
+			<path fill="#4E4E4E" d="M55.314,16.704h-1.17v-1.242h-0.029c-0.542,0.942-1.379,1.413-2.512,1.413
+				c-0.918,0-1.652-0.327-2.202-0.981c-0.549-0.654-0.824-1.545-0.824-2.672c0-1.208,0.304-2.177,0.914-2.905
+				c0.609-0.728,1.42-1.092,2.434-1.092c1.003,0,1.734,0.395,2.19,1.185h0.029V5.885h1.17V16.704z M54.144,13.399v-1.078
+				c0-0.59-0.195-1.089-0.585-1.499c-0.391-0.409-0.885-0.614-1.484-0.614c-0.714,0-1.275,0.262-1.685,0.785
+				s-0.614,1.247-0.614,2.169c0,0.842,0.196,1.507,0.589,1.995s0.919,0.731,1.581,0.731c0.652,0,1.181-0.235,1.588-0.707
+				S54.144,14.118,54.144,13.399z"/>
+			<path fill="#4E4E4E" d="M61.365,16.29v-1.413c0.162,0.143,0.356,0.271,0.582,0.386c0.227,0.114,0.465,0.21,0.714,0.289
+				c0.25,0.078,0.501,0.139,0.753,0.182c0.252,0.043,0.485,0.064,0.699,0.064c0.737,0,1.288-0.137,1.652-0.411
+				c0.363-0.273,0.546-0.667,0.546-1.181c0-0.276-0.061-0.516-0.183-0.721c-0.121-0.205-0.289-0.392-0.502-0.561
+				c-0.215-0.169-0.469-0.331-0.761-0.485c-0.292-0.154-0.608-0.317-0.945-0.489c-0.356-0.181-0.69-0.364-0.999-0.549
+				c-0.31-0.186-0.578-0.39-0.807-0.614s-0.408-0.477-0.539-0.76c-0.131-0.283-0.195-0.615-0.195-0.995
+				c0-0.466,0.102-0.872,0.307-1.217c0.204-0.345,0.473-0.629,0.807-0.853c0.332-0.224,0.712-0.39,1.138-0.5s0.86-0.164,1.302-0.164
+				c1.01,0,1.744,0.121,2.205,0.364v1.349c-0.604-0.419-1.379-0.628-2.326-0.628c-0.262,0-0.523,0.028-0.785,0.083
+				s-0.494,0.144-0.699,0.268c-0.204,0.124-0.371,0.283-0.499,0.478c-0.129,0.195-0.192,0.433-0.192,0.713
+				c0,0.262,0.049,0.488,0.146,0.678c0.097,0.19,0.24,0.364,0.432,0.521c0.189,0.157,0.422,0.309,0.695,0.457
+				s0.589,0.31,0.945,0.485c0.366,0.181,0.714,0.371,1.042,0.571s0.616,0.421,0.864,0.664c0.246,0.243,0.443,0.512,0.588,0.807
+				s0.218,0.633,0.218,1.013c0,0.504-0.099,0.932-0.296,1.281s-0.464,0.634-0.799,0.853c-0.336,0.219-0.723,0.377-1.16,0.475
+				c-0.438,0.098-0.899,0.146-1.385,0.146c-0.162,0-0.361-0.013-0.6-0.04c-0.238-0.026-0.48-0.064-0.728-0.114
+				c-0.247-0.05-0.481-0.112-0.703-0.186S61.499,16.38,61.365,16.29z"/>
+			<path fill="#4E4E4E" d="M75.36,16.704h-1.171v-1.156h-0.028c-0.485,0.885-1.237,1.328-2.255,1.328
+				c-1.741,0-2.611-1.037-2.611-3.111V9.396h1.162v4.182c0,1.541,0.59,2.312,1.77,2.312c0.572,0,1.041-0.21,1.41-0.632
+				c0.369-0.421,0.553-0.972,0.553-1.652v-4.21h1.171V16.704z"/>
+			<path fill="#4E4E4E" d="M78.92,15.647h-0.028v1.056h-1.17V5.885h1.17v4.796h0.028c0.575-0.971,1.418-1.456,2.526-1.456
+				c0.938,0,1.672,0.327,2.201,0.981c0.531,0.654,0.797,1.531,0.797,2.63c0,1.223-0.298,2.201-0.893,2.937
+				c-0.595,0.735-1.408,1.103-2.441,1.103C80.146,16.875,79.416,16.466,78.92,15.647z M78.892,12.7v1.021
+				c0,0.604,0.196,1.117,0.589,1.538c0.393,0.421,0.891,0.632,1.495,0.632c0.709,0,1.264-0.271,1.666-0.813
+				c0.402-0.542,0.604-1.296,0.604-2.262c0-0.813-0.188-1.451-0.564-1.913c-0.375-0.461-0.885-0.692-1.527-0.692
+				c-0.68,0-1.227,0.237-1.641,0.71C79.099,11.393,78.892,11.986,78.892,12.7z"/>
+			<path fill="#4E4E4E" d="M96.691,16.704H95.52v-4.196c0-0.809-0.125-1.394-0.375-1.755c-0.249-0.361-0.669-0.542-1.259-0.542
+				c-0.5,0-0.925,0.229-1.274,0.685c-0.35,0.457-0.524,1.004-0.524,1.642v4.167h-1.17v-4.339c0-1.437-0.555-2.155-1.663-2.155
+				c-0.515,0-0.938,0.215-1.271,0.646s-0.5,0.991-0.5,1.681v4.167h-1.17V9.396h1.17v1.156h0.029c0.518-0.885,1.275-1.328,2.27-1.328
+				c0.499,0,0.935,0.139,1.306,0.417s0.626,0.644,0.764,1.096c0.542-1.009,1.351-1.513,2.427-1.513c1.607,0,2.412,0.992,2.412,2.976
+				V16.704z"/>
+			<path fill="#4E4E4E" d="M99.501,7.541c-0.209,0-0.387-0.071-0.535-0.214c-0.146-0.143-0.221-0.324-0.221-0.542
+				s0.074-0.401,0.221-0.546c0.148-0.145,0.326-0.218,0.535-0.218c0.215,0,0.396,0.073,0.547,0.218
+				c0.149,0.145,0.225,0.327,0.225,0.546c0,0.209-0.075,0.388-0.225,0.535C99.898,7.467,99.716,7.541,99.501,7.541z M100.073,16.704
+				h-1.171V9.396h1.171V16.704z"/>
+			<path fill="#4E4E4E" d="M105.832,16.632c-0.275,0.152-0.639,0.229-1.092,0.229c-1.279,0-1.919-0.714-1.919-2.141v-4.325h-1.257
+				V9.396h1.257V7.612l1.171-0.378v2.162h1.84v0.999h-1.84v4.118c0,0.49,0.082,0.84,0.249,1.049
+				c0.167,0.209,0.442,0.314,0.828,0.314c0.295,0,0.55-0.081,0.763-0.243V16.632z"/>
+		</g>
+	</g>
+	<g>
+		<path fill="#037281" d="M124.864,0h21.967c6.054,0,10.961,4.908,10.961,10.961c0,6.054-4.907,10.961-10.961,10.961h-21.967
+			c-6.055,0-10.962-4.907-10.962-10.961C113.902,4.908,118.809,0,124.864,0z"/>
+		<circle fill="#FFFFFF" cx="146.831" cy="10.961" r="10.049"/>
+	</g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/website/static/img/Explorer_Stash_button.svg b/website/static/img/Explorer_Stash_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1b00e34993fc283ccefa85054caa4bb2ace82e53
--- /dev/null
+++ b/website/static/img/Explorer_Stash_button.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="66.996px" height="27.98px" viewBox="0 0 66.996 27.98" enable-background="new 0 0 66.996 27.98" xml:space="preserve">
+<circle fill="#037281" cx="13.99" cy="13.99" r="13.99"/>
+<path opacity="0.8745" fill="#FFFDFB" d="M19.236,12.679h-3.935V8.744c0-0.483-0.392-0.875-0.875-0.875h-0.874
+	c-0.483,0-0.875,0.392-0.875,0.875v3.935H8.744c-0.483,0-0.875,0.392-0.875,0.874v0.875c0,0.483,0.392,0.874,0.875,0.874h3.935
+	v3.935c0,0.484,0.392,0.875,0.875,0.875h0.874c0.483,0,0.875-0.391,0.875-0.875v-3.935h3.935c0.483,0,0.875-0.391,0.875-0.874
+	v-0.875C20.111,13.07,19.719,12.679,19.236,12.679z"/>
+<g>
+	<path fill="#4E4E4E" d="M34.678,18.59v-1.353c0.155,0.137,0.34,0.26,0.557,0.369s0.444,0.201,0.683,0.276s0.479,0.134,0.721,0.175
+		s0.464,0.062,0.669,0.062c0.706,0,1.233-0.131,1.582-0.394c0.348-0.262,0.522-0.639,0.522-1.13c0-0.265-0.058-0.494-0.174-0.69
+		c-0.116-0.195-0.276-0.374-0.481-0.536c-0.205-0.161-0.447-0.316-0.728-0.465c-0.28-0.147-0.582-0.304-0.905-0.468
+		c-0.341-0.173-0.66-0.349-0.956-0.525c-0.296-0.178-0.554-0.374-0.772-0.588c-0.219-0.214-0.391-0.456-0.516-0.728
+		c-0.125-0.271-0.188-0.589-0.188-0.953c0-0.446,0.098-0.834,0.293-1.165s0.453-0.602,0.772-0.816
+		c0.319-0.214,0.682-0.373,1.09-0.478c0.407-0.104,0.823-0.157,1.247-0.157c0.965,0,1.669,0.116,2.111,0.349v1.291
+		c-0.579-0.401-1.321-0.601-2.227-0.601c-0.25,0-0.501,0.026-0.751,0.079s-0.474,0.138-0.669,0.256
+		c-0.196,0.119-0.355,0.271-0.478,0.458c-0.123,0.187-0.185,0.414-0.185,0.684c0,0.25,0.047,0.466,0.14,0.648
+		c0.093,0.182,0.231,0.349,0.413,0.498c0.182,0.15,0.404,0.297,0.666,0.438c0.262,0.142,0.564,0.296,0.905,0.465
+		c0.351,0.173,0.683,0.355,0.998,0.546c0.314,0.191,0.589,0.403,0.826,0.636s0.425,0.489,0.564,0.771
+		c0.139,0.283,0.208,0.606,0.208,0.971c0,0.482-0.094,0.892-0.283,1.226c-0.189,0.335-0.444,0.607-0.765,0.816
+		c-0.321,0.21-0.691,0.361-1.11,0.454c-0.419,0.094-0.86,0.141-1.325,0.141c-0.155,0-0.346-0.013-0.574-0.038
+		c-0.228-0.024-0.46-0.062-0.697-0.109c-0.237-0.047-0.461-0.106-0.673-0.177C34.975,18.755,34.806,18.677,34.678,18.59z"/>
+	<path fill="#4E4E4E" d="M45.663,18.918c-0.264,0.146-0.613,0.219-1.045,0.219c-1.225,0-1.837-0.684-1.837-2.05v-4.14h-1.202v-0.956
+		h1.202v-1.708l1.12-0.362v2.07h1.763v0.956H43.9v3.941c0,0.47,0.08,0.805,0.239,1.005c0.159,0.2,0.423,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+	<path fill="#4E4E4E" d="M52.166,18.986h-1.12v-1.093h-0.027c-0.487,0.838-1.205,1.257-2.152,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.394-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.843,0-1.603,0.287-2.282,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.644,0,2.466,0.87,2.466,2.609V18.986z M51.046,15.448l-1.688,0.231c-0.519,0.073-0.911,0.202-1.175,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.122,0.621,0.366,0.837c0.244,0.217,0.568,0.325,0.974,0.325
+		c0.555,0,1.014-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M53.853,18.733v-1.202c0.61,0.451,1.282,0.677,2.015,0.677c0.984,0,1.476-0.328,1.476-0.984
+		c0-0.187-0.042-0.345-0.126-0.475s-0.198-0.245-0.341-0.345c-0.144-0.101-0.312-0.19-0.506-0.27
+		c-0.193-0.08-0.402-0.163-0.625-0.25c-0.31-0.123-0.582-0.247-0.816-0.372c-0.234-0.125-0.43-0.267-0.587-0.424
+		c-0.157-0.157-0.275-0.336-0.355-0.536s-0.12-0.435-0.12-0.703c0-0.328,0.075-0.618,0.226-0.871
+		c0.15-0.253,0.351-0.465,0.601-0.636s0.536-0.299,0.857-0.386c0.321-0.086,0.652-0.13,0.994-0.13c0.605,0,1.148,0.104,1.626,0.314
+		v1.134c-0.515-0.337-1.107-0.506-1.776-0.506c-0.209,0-0.398,0.024-0.567,0.072s-0.313,0.115-0.434,0.201
+		c-0.121,0.087-0.214,0.19-0.28,0.312c-0.066,0.12-0.099,0.254-0.099,0.399c0,0.182,0.033,0.334,0.099,0.457
+		s0.163,0.232,0.291,0.328s0.282,0.183,0.464,0.26s0.39,0.162,0.622,0.253c0.31,0.118,0.587,0.24,0.833,0.365
+		s0.456,0.267,0.628,0.424s0.306,0.338,0.4,0.543c0.093,0.205,0.14,0.448,0.14,0.73c0,0.347-0.076,0.647-0.229,0.902
+		c-0.153,0.255-0.356,0.467-0.611,0.635c-0.255,0.169-0.549,0.294-0.881,0.376s-0.681,0.123-1.045,0.123
+		C55.005,19.15,54.381,19.012,53.853,18.733z"/>
+	<path fill="#4E4E4E" d="M66.02,18.986h-1.12v-4.03c0-1.457-0.542-2.187-1.626-2.187c-0.547,0-1.006,0.211-1.38,0.632
+		c-0.374,0.422-0.56,0.963-0.56,1.623v3.962h-1.121V8.63h1.121v4.522h0.027c0.537-0.883,1.302-1.325,2.295-1.325
+		c1.575,0,2.363,0.949,2.363,2.849V18.986z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/website/static/img/Explorer_Submit_button.svg b/website/static/img/Explorer_Submit_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..a940fe06ba2dd6427ab7bbfd5ba59e5180d7e331
--- /dev/null
+++ b/website/static/img/Explorer_Submit_button.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="77.605px" height="27.98px" viewBox="0 0 77.605 27.98" enable-background="new 0 0 77.605 27.98" xml:space="preserve">
+<path fill="#037281" d="M27.98,13.99c0,7.727-6.264,13.99-13.99,13.99C6.263,27.98,0,21.717,0,13.99C0,6.263,6.263,0,13.99,0
+	C21.716,0,27.98,6.263,27.98,13.99"/>
+<g>
+	<path fill="#4E4E4E" d="M34.677,18.59v-1.353c0.155,0.137,0.341,0.26,0.558,0.369c0.216,0.109,0.443,0.201,0.683,0.276
+		s0.479,0.134,0.721,0.175s0.465,0.062,0.67,0.062c0.705,0,1.232-0.131,1.581-0.394c0.349-0.262,0.522-0.639,0.522-1.13
+		c0-0.265-0.058-0.494-0.174-0.69c-0.116-0.195-0.277-0.374-0.482-0.536c-0.204-0.161-0.447-0.316-0.727-0.464
+		c-0.28-0.148-0.582-0.304-0.905-0.468c-0.342-0.173-0.661-0.349-0.957-0.526c-0.296-0.177-0.553-0.373-0.771-0.587
+		c-0.219-0.214-0.391-0.457-0.516-0.728c-0.126-0.271-0.188-0.588-0.188-0.953c0-0.446,0.099-0.834,0.294-1.165
+		c0.196-0.33,0.453-0.602,0.772-0.816c0.318-0.214,0.682-0.373,1.089-0.478c0.408-0.104,0.823-0.157,1.247-0.157
+		c0.966,0,1.669,0.116,2.11,0.349v1.291c-0.578-0.401-1.32-0.601-2.227-0.601c-0.25,0-0.501,0.026-0.751,0.079
+		c-0.251,0.052-0.474,0.138-0.67,0.256c-0.196,0.119-0.355,0.271-0.479,0.458c-0.123,0.187-0.184,0.414-0.184,0.683
+		c0,0.25,0.046,0.467,0.14,0.649c0.093,0.182,0.231,0.348,0.413,0.499c0.183,0.15,0.404,0.296,0.666,0.437
+		c0.262,0.142,0.563,0.296,0.905,0.465c0.351,0.173,0.684,0.355,0.997,0.546c0.314,0.191,0.59,0.403,0.827,0.635
+		c0.236,0.232,0.424,0.489,0.563,0.771c0.139,0.283,0.208,0.606,0.208,0.971c0,0.482-0.095,0.892-0.283,1.226
+		c-0.189,0.335-0.444,0.607-0.766,0.816c-0.32,0.21-0.69,0.361-1.109,0.454c-0.419,0.094-0.861,0.141-1.325,0.141
+		c-0.155,0-0.347-0.013-0.574-0.038c-0.228-0.024-0.46-0.062-0.696-0.109c-0.237-0.047-0.462-0.106-0.673-0.177
+		C34.975,18.755,34.805,18.677,34.677,18.59z"/>
+	<path fill="#4E4E4E" d="M48.074,18.986h-1.12V17.88h-0.027c-0.465,0.847-1.185,1.271-2.158,1.271c-1.667,0-2.501-0.993-2.501-2.979
+		v-4.181h1.113v4.003c0,1.476,0.565,2.214,1.694,2.214c0.547,0,0.996-0.202,1.35-0.605c0.353-0.402,0.529-0.93,0.529-1.581v-4.03
+		h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M51.482,17.976h-0.027v1.011h-1.12V8.63h1.12v4.59h0.027c0.552-0.929,1.357-1.394,2.419-1.394
+		c0.896,0,1.6,0.313,2.107,0.939s0.762,1.465,0.762,2.518c0,1.17-0.285,2.107-0.854,2.811c-0.569,0.704-1.348,1.056-2.336,1.056
+		C52.655,19.15,51.956,18.759,51.482,17.976z M51.455,15.154v0.977c0,0.578,0.188,1.069,0.563,1.472
+		c0.376,0.403,0.854,0.605,1.432,0.605c0.679,0,1.21-0.26,1.595-0.779s0.577-1.241,0.577-2.165c0-0.779-0.18-1.389-0.539-1.831
+		c-0.36-0.442-0.848-0.663-1.462-0.663c-0.651,0-1.175,0.227-1.571,0.68S51.455,14.471,51.455,15.154z"/>
+	<path fill="#4E4E4E" d="M68.492,18.986h-1.12V14.97c0-0.774-0.12-1.334-0.358-1.681c-0.239-0.346-0.642-0.519-1.206-0.519
+		c-0.479,0-0.885,0.219-1.22,0.656c-0.334,0.437-0.502,0.961-0.502,1.571v3.989h-1.12v-4.153c0-1.375-0.53-2.063-1.592-2.063
+		c-0.491,0-0.897,0.206-1.216,0.618s-0.479,0.948-0.479,1.609v3.989h-1.12v-6.995h1.12v1.106h0.027
+		c0.497-0.847,1.221-1.271,2.173-1.271c0.478,0,0.895,0.133,1.25,0.4c0.355,0.266,0.599,0.616,0.73,1.048
+		c0.52-0.965,1.294-1.448,2.323-1.448c1.539,0,2.309,0.95,2.309,2.849V18.986z"/>
+	<path fill="#4E4E4E" d="M71.183,10.215c-0.2,0-0.371-0.068-0.513-0.205c-0.141-0.137-0.212-0.31-0.212-0.519
+		s0.071-0.384,0.212-0.523c0.142-0.139,0.313-0.208,0.513-0.208c0.205,0,0.379,0.069,0.522,0.208
+		c0.144,0.139,0.215,0.313,0.215,0.523c0,0.2-0.071,0.371-0.215,0.512S71.388,10.215,71.183,10.215z M71.729,18.986h-1.12v-6.995
+		h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M77.243,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.139h-1.202
+		v-0.957h1.202v-1.708l1.12-0.362v2.07h1.763v0.957H75.48v3.942c0,0.469,0.08,0.804,0.239,1.004s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+</g>
+<path opacity="0.8745" fill="#FFFDFB" d="M11.775,18.938l-4.489-4.489c-0.269-0.269-0.269-0.707,0-0.976l0.977-0.977
+	c0.27-0.27,0.707-0.27,0.976,0l3.024,3.024l6.477-6.477c0.27-0.27,0.707-0.27,0.977,0l0.976,0.977c0.27,0.269,0.27,0.707,0,0.976
+	l-7.941,7.942C12.482,19.208,12.045,19.208,11.775,18.938z"/>
+</svg>
diff --git a/website/static/img/Explorer_Submit_candidacy_button.svg b/website/static/img/Explorer_Submit_candidacy_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..8899a317da985b9867db52b32b648fa94eeb4aa7
--- /dev/null
+++ b/website/static/img/Explorer_Submit_candidacy_button.svg
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="143.15px" height="27.98px" viewBox="0 0 143.15 27.98" enable-background="new 0 0 143.15 27.98" xml:space="preserve">
+<circle fill="#037281" cx="13.99" cy="13.99" r="13.99"/>
+<path opacity="0.8745" fill="#FFFDFB" d="M19.236,12.679h-3.935V8.744c0-0.483-0.392-0.875-0.875-0.875h-0.874
+	c-0.483,0-0.875,0.392-0.875,0.875v3.935H8.744c-0.483,0-0.875,0.392-0.875,0.874v0.875c0,0.483,0.392,0.874,0.875,0.874h3.935
+	v3.935c0,0.484,0.392,0.875,0.875,0.875h0.874c0.483,0,0.875-0.391,0.875-0.875v-3.935h3.935c0.483,0,0.875-0.391,0.875-0.874
+	v-0.875C20.111,13.07,19.719,12.679,19.236,12.679z"/>
+<g>
+	<path fill="#4E4E4E" d="M34.678,18.59v-1.353c0.155,0.137,0.34,0.26,0.557,0.369s0.444,0.201,0.683,0.276s0.479,0.134,0.721,0.175
+		s0.464,0.062,0.669,0.062c0.706,0,1.233-0.131,1.582-0.394c0.348-0.262,0.522-0.639,0.522-1.13c0-0.265-0.058-0.494-0.174-0.69
+		c-0.116-0.195-0.276-0.374-0.481-0.536c-0.205-0.161-0.447-0.316-0.728-0.465c-0.28-0.147-0.582-0.304-0.905-0.468
+		c-0.341-0.173-0.66-0.349-0.956-0.525c-0.296-0.178-0.554-0.374-0.772-0.588c-0.219-0.214-0.391-0.456-0.516-0.728
+		c-0.125-0.271-0.188-0.589-0.188-0.953c0-0.446,0.098-0.834,0.293-1.165s0.453-0.602,0.772-0.816
+		c0.319-0.214,0.682-0.373,1.09-0.478c0.407-0.104,0.823-0.157,1.247-0.157c0.965,0,1.669,0.116,2.111,0.349v1.291
+		c-0.579-0.401-1.321-0.601-2.227-0.601c-0.25,0-0.501,0.026-0.751,0.079s-0.474,0.138-0.669,0.256
+		c-0.196,0.119-0.355,0.271-0.478,0.458c-0.123,0.187-0.185,0.414-0.185,0.684c0,0.25,0.047,0.466,0.14,0.648
+		c0.093,0.182,0.231,0.349,0.413,0.498c0.182,0.15,0.404,0.297,0.666,0.438c0.262,0.142,0.564,0.296,0.905,0.465
+		c0.351,0.173,0.683,0.355,0.998,0.546c0.314,0.191,0.589,0.403,0.826,0.636s0.425,0.489,0.564,0.771
+		c0.139,0.283,0.208,0.606,0.208,0.971c0,0.482-0.094,0.892-0.283,1.226c-0.189,0.335-0.444,0.607-0.765,0.816
+		c-0.321,0.21-0.691,0.361-1.11,0.454c-0.419,0.094-0.86,0.141-1.325,0.141c-0.155,0-0.346-0.013-0.574-0.038
+		c-0.228-0.024-0.46-0.062-0.697-0.109c-0.237-0.047-0.461-0.106-0.673-0.177C34.975,18.755,34.806,18.677,34.678,18.59z"/>
+	<path fill="#4E4E4E" d="M48.074,18.986h-1.12V17.88h-0.027c-0.464,0.847-1.184,1.271-2.159,1.271c-1.667,0-2.5-0.993-2.5-2.979
+		v-4.181h1.113v4.003c0,1.476,0.564,2.214,1.694,2.214c0.546,0,0.996-0.202,1.349-0.605c0.353-0.402,0.529-0.93,0.529-1.581v-4.03
+		h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M51.483,17.976h-0.027v1.011h-1.121V8.63h1.121v4.59h0.027c0.551-0.929,1.357-1.394,2.418-1.394
+		c0.897,0,1.6,0.313,2.107,0.939s0.762,1.465,0.762,2.518c0,1.17-0.285,2.107-0.854,2.811c-0.569,0.704-1.348,1.056-2.336,1.056
+		C52.655,19.15,51.957,18.759,51.483,17.976z M51.456,15.154v0.977c0,0.578,0.188,1.069,0.563,1.472
+		c0.375,0.403,0.853,0.605,1.431,0.605c0.679,0,1.21-0.26,1.595-0.779c0.385-0.52,0.577-1.241,0.577-2.165
+		c0-0.779-0.18-1.39-0.54-1.831c-0.36-0.441-0.847-0.663-1.462-0.663c-0.651,0-1.175,0.227-1.571,0.68
+		C51.653,13.903,51.456,14.471,51.456,15.154z"/>
+	<path fill="#4E4E4E" d="M68.492,18.986h-1.12V14.97c0-0.774-0.12-1.334-0.358-1.681c-0.239-0.346-0.642-0.52-1.206-0.52
+		c-0.479,0-0.885,0.219-1.22,0.656c-0.334,0.438-0.502,0.961-0.502,1.571v3.989h-1.12v-4.153c0-1.375-0.531-2.063-1.592-2.063
+		c-0.492,0-0.897,0.206-1.216,0.618c-0.319,0.413-0.478,0.949-0.478,1.609v3.989H58.56v-6.995h1.121v1.106h0.027
+		c0.496-0.847,1.22-1.271,2.172-1.271c0.478,0,0.895,0.134,1.25,0.399c0.355,0.267,0.599,0.616,0.73,1.049
+		c0.52-0.966,1.294-1.448,2.323-1.448c1.539,0,2.309,0.949,2.309,2.849V18.986z"/>
+	<path fill="#4E4E4E" d="M71.185,10.215c-0.2,0-0.371-0.068-0.513-0.205c-0.141-0.137-0.212-0.31-0.212-0.519
+		s0.071-0.384,0.212-0.523c0.142-0.139,0.313-0.208,0.513-0.208c0.205,0,0.379,0.069,0.522,0.208
+		c0.144,0.139,0.215,0.313,0.215,0.523c0,0.2-0.071,0.371-0.215,0.512S71.39,10.215,71.185,10.215z M71.73,18.986h-1.12v-6.995h1.12
+		V18.986z"/>
+	<path fill="#4E4E4E" d="M77.243,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.14h-1.202v-0.956
+		h1.202v-1.708l1.12-0.362v2.07h1.763v0.956H75.48v3.941c0,0.47,0.08,0.805,0.239,1.005s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+	<path fill="#4E4E4E" d="M87.34,18.665c-0.538,0.323-1.175,0.485-1.913,0.485c-0.997,0-1.802-0.324-2.415-0.974
+		c-0.612-0.648-0.918-1.49-0.918-2.524c0-1.151,0.33-2.077,0.99-2.776s1.541-1.049,2.644-1.049c0.614,0,1.156,0.114,1.626,0.342
+		v1.147c-0.52-0.364-1.075-0.547-1.667-0.547c-0.715,0-1.302,0.257-1.759,0.769c-0.458,0.513-0.687,1.186-0.687,2.019
+		c0,0.82,0.215,1.467,0.646,1.94c0.43,0.474,1.008,0.711,1.731,0.711c0.61,0,1.184-0.203,1.722-0.608V18.665z"/>
+	<path fill="#4E4E4E" d="M94.041,18.986H92.92v-1.093h-0.027c-0.487,0.838-1.204,1.257-2.151,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.395-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.842,0-1.603,0.287-2.281,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.645,0,2.467,0.87,2.467,2.609V18.986z M92.92,15.448l-1.687,0.231c-0.52,0.073-0.911,0.202-1.176,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.121,0.621,0.365,0.837c0.243,0.217,0.568,0.325,0.974,0.325
+		c0.556,0,1.015-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M101.958,18.986h-1.12v-3.989c0-1.484-0.542-2.228-1.626-2.228c-0.561,0-1.023,0.211-1.391,0.632
+		c-0.366,0.422-0.55,0.953-0.55,1.596v3.989h-1.12v-6.995h1.12v1.161h0.027c0.528-0.883,1.294-1.325,2.296-1.325
+		c0.765,0,1.35,0.247,1.755,0.741s0.608,1.208,0.608,2.142V18.986z"/>
+	<path fill="#4E4E4E" d="M110.04,18.986h-1.12v-1.188h-0.027c-0.52,0.901-1.321,1.353-2.405,1.353c-0.879,0-1.581-0.313-2.107-0.939
+		c-0.525-0.626-0.788-1.479-0.788-2.559c0-1.156,0.291-2.083,0.874-2.78c0.583-0.696,1.359-1.045,2.329-1.045
+		c0.961,0,1.66,0.378,2.098,1.134h0.027V8.63h1.12V18.986z M108.92,15.823v-1.031c0-0.564-0.188-1.043-0.561-1.435
+		s-0.847-0.588-1.421-0.588c-0.683,0-1.221,0.251-1.612,0.752s-0.587,1.193-0.587,2.076c0,0.807,0.188,1.443,0.563,1.91
+		s0.88,0.7,1.513,0.7c0.624,0,1.131-0.226,1.521-0.677C108.725,17.08,108.92,16.511,108.92,15.823z"/>
+	<path fill="#4E4E4E" d="M112.882,10.215c-0.2,0-0.371-0.068-0.513-0.205c-0.141-0.137-0.212-0.31-0.212-0.519
+		s0.071-0.384,0.212-0.523c0.142-0.139,0.313-0.208,0.513-0.208c0.205,0,0.379,0.069,0.522,0.208
+		c0.144,0.139,0.215,0.313,0.215,0.523c0,0.2-0.071,0.371-0.215,0.512S113.087,10.215,112.882,10.215z M113.428,18.986h-1.12v-6.995
+		h1.12V18.986z"/>
+	<path fill="#4E4E4E" d="M121.666,18.986h-1.12v-1.188h-0.027c-0.52,0.901-1.321,1.353-2.405,1.353
+		c-0.879,0-1.581-0.313-2.107-0.939c-0.525-0.626-0.788-1.479-0.788-2.559c0-1.156,0.291-2.083,0.874-2.78
+		c0.583-0.696,1.359-1.045,2.329-1.045c0.961,0,1.66,0.378,2.098,1.134h0.027V8.63h1.12V18.986z M120.546,15.823v-1.031
+		c0-0.564-0.188-1.043-0.561-1.435s-0.847-0.588-1.421-0.588c-0.683,0-1.221,0.251-1.612,0.752s-0.587,1.193-0.587,2.076
+		c0,0.807,0.188,1.443,0.563,1.91s0.88,0.7,1.513,0.7c0.624,0,1.131-0.226,1.521-0.677C120.351,17.08,120.546,16.511,120.546,15.823
+		z"/>
+	<path fill="#4E4E4E" d="M128.941,18.986h-1.121v-1.093h-0.027c-0.487,0.838-1.204,1.257-2.151,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.395-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.842,0-1.603,0.287-2.281,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.645,0,2.467,0.87,2.467,2.609V18.986z M127.82,15.448l-1.687,0.231c-0.52,0.073-0.911,0.202-1.176,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.121,0.621,0.365,0.837c0.243,0.217,0.568,0.325,0.974,0.325
+		c0.556,0,1.015-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M135.82,18.665c-0.538,0.323-1.175,0.485-1.913,0.485c-0.997,0-1.802-0.324-2.415-0.974
+		c-0.612-0.648-0.918-1.49-0.918-2.524c0-1.151,0.33-2.077,0.99-2.776s1.541-1.049,2.644-1.049c0.614,0,1.156,0.114,1.626,0.342
+		v1.147c-0.52-0.364-1.075-0.547-1.667-0.547c-0.715,0-1.302,0.257-1.759,0.769c-0.458,0.513-0.687,1.186-0.687,2.019
+		c0,0.82,0.215,1.467,0.646,1.94c0.43,0.474,1.008,0.711,1.731,0.711c0.61,0,1.184-0.203,1.722-0.608V18.665z"/>
+	<path fill="#4E4E4E" d="M143.082,11.991l-3.217,8.115c-0.574,1.448-1.381,2.173-2.419,2.173c-0.291,0-0.535-0.03-0.73-0.089v-1.005
+		c0.241,0.082,0.462,0.123,0.662,0.123c0.564,0,0.988-0.337,1.271-1.011l0.561-1.325l-2.732-6.981h1.243l1.893,5.383
+		c0.022,0.068,0.07,0.246,0.144,0.533h0.041c0.022-0.109,0.068-0.282,0.136-0.52l1.988-5.396H143.082z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/website/static/img/Explorer_Validator_button.svg b/website/static/img/Explorer_Validator_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..980151f8c852d208fc0da9d6cabc890006bcdaba
--- /dev/null
+++ b/website/static/img/Explorer_Validator_button.svg
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="89.594px" height="27.98px" viewBox="0 0 89.594 27.98" enable-background="new 0 0 89.594 27.98" xml:space="preserve">
+<circle fill="#037281" cx="13.99" cy="13.99" r="13.99"/>
+<path opacity="0.8745" fill="#FFFDFB" d="M19.236,12.679h-3.935V8.744c0-0.483-0.392-0.875-0.875-0.875h-0.874
+	c-0.483,0-0.875,0.392-0.875,0.875v3.935H8.744c-0.483,0-0.875,0.392-0.875,0.874v0.875c0,0.483,0.392,0.874,0.875,0.874h3.935
+	v3.935c0,0.484,0.392,0.875,0.875,0.875h0.874c0.483,0,0.875-0.391,0.875-0.875v-3.935h3.935c0.483,0,0.875-0.391,0.875-0.874
+	v-0.875C20.111,13.07,19.719,12.679,19.236,12.679z"/>
+<g>
+	<path fill="#4E4E4E" d="M42.418,9.19l-3.627,9.796h-1.264L33.975,9.19h1.277l2.712,7.767c0.086,0.251,0.152,0.54,0.198,0.868h0.027
+		c0.036-0.273,0.111-0.567,0.225-0.882l2.767-7.753H42.418z"/>
+	<path fill="#4E4E4E" d="M48.682,18.986h-1.12v-1.093h-0.027c-0.487,0.838-1.205,1.257-2.152,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.394-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.843,0-1.603,0.287-2.282,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.644,0,2.466,0.87,2.466,2.609V18.986z M47.562,15.448l-1.688,0.231c-0.519,0.073-0.911,0.202-1.175,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.122,0.621,0.366,0.837c0.244,0.217,0.568,0.325,0.974,0.325
+		c0.555,0,1.014-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M51.913,18.986h-1.121V8.63h1.121V18.986z"/>
+	<path fill="#4E4E4E" d="M54.755,10.215c-0.201,0-0.372-0.068-0.513-0.205s-0.211-0.31-0.211-0.519s0.07-0.384,0.211-0.523
+		c0.141-0.139,0.312-0.208,0.513-0.208c0.205,0,0.379,0.069,0.522,0.208c0.144,0.139,0.215,0.313,0.215,0.523
+		c0,0.2-0.072,0.371-0.215,0.512S54.96,10.215,54.755,10.215z M55.302,18.986h-1.121v-6.995h1.121V18.986z"/>
+	<path fill="#4E4E4E" d="M63.54,18.986h-1.121v-1.188h-0.027c-0.519,0.901-1.32,1.353-2.404,1.353c-0.879,0-1.582-0.313-2.107-0.939
+		s-0.789-1.479-0.789-2.559c0-1.156,0.292-2.083,0.875-2.78c0.583-0.696,1.359-1.045,2.329-1.045c0.961,0,1.66,0.378,2.097,1.134
+		h0.027V8.63h1.121V18.986z M62.419,15.823v-1.031c0-0.564-0.187-1.043-0.56-1.435s-0.847-0.588-1.421-0.588
+		c-0.683,0-1.22,0.251-1.612,0.752c-0.392,0.501-0.588,1.193-0.588,2.076c0,0.807,0.188,1.443,0.564,1.91
+		c0.375,0.467,0.88,0.7,1.513,0.7c0.624,0,1.131-0.226,1.52-0.677C62.225,17.08,62.419,16.511,62.419,15.823z"/>
+	<path fill="#4E4E4E" d="M70.815,18.986h-1.121v-1.093h-0.027c-0.487,0.838-1.204,1.257-2.151,1.257
+		c-0.697,0-1.242-0.185-1.636-0.554c-0.395-0.368-0.591-0.858-0.591-1.469c0-1.307,0.77-2.067,2.309-2.281l2.097-0.294
+		c0-1.188-0.48-1.783-1.441-1.783c-0.842,0-1.603,0.287-2.281,0.861v-1.147c0.688-0.438,1.48-0.656,2.377-0.656
+		c1.645,0,2.467,0.87,2.467,2.609V18.986z M69.694,15.448l-1.687,0.231c-0.52,0.073-0.911,0.202-1.176,0.387
+		c-0.264,0.184-0.396,0.511-0.396,0.979c0,0.342,0.121,0.621,0.365,0.837c0.243,0.217,0.568,0.325,0.974,0.325
+		c0.556,0,1.015-0.195,1.376-0.585c0.362-0.389,0.543-0.882,0.543-1.479V15.448z"/>
+	<path fill="#4E4E4E" d="M76.171,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.14h-1.202v-0.956
+		h1.202v-1.708l1.12-0.362v2.07h1.763v0.956h-1.763v3.941c0,0.47,0.08,0.805,0.239,1.005s0.424,0.301,0.792,0.301
+		c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+	<path fill="#4E4E4E" d="M80.59,19.15c-1.034,0-1.859-0.327-2.477-0.98s-0.925-1.52-0.925-2.6c0-1.175,0.32-2.092,0.963-2.753
+		c0.642-0.66,1.51-0.99,2.603-0.99c1.043,0,1.856,0.321,2.442,0.963c0.585,0.643,0.878,1.533,0.878,2.672
+		c0,1.115-0.315,2.009-0.946,2.681S81.651,19.15,80.59,19.15z M80.672,12.77c-0.72,0-1.289,0.245-1.708,0.734
+		c-0.419,0.49-0.628,1.165-0.628,2.025c0,0.829,0.212,1.482,0.635,1.961c0.424,0.479,0.991,0.718,1.701,0.718
+		c0.725,0,1.281-0.235,1.67-0.704c0.39-0.469,0.584-1.136,0.584-2.002c0-0.874-0.194-1.548-0.584-2.021
+		C81.953,13.007,81.396,12.77,80.672,12.77z"/>
+	<path fill="#4E4E4E" d="M89.513,13.125c-0.196-0.15-0.479-0.226-0.848-0.226c-0.478,0-0.878,0.226-1.198,0.677
+		c-0.321,0.451-0.482,1.065-0.482,1.845v3.565h-1.12v-6.995h1.12v1.441h0.027c0.16-0.492,0.403-0.876,0.731-1.151
+		s0.694-0.413,1.1-0.413c0.291,0,0.515,0.032,0.67,0.096V13.125z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/website/static/img/Explorer_Vote_button.svg b/website/static/img/Explorer_Vote_button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b58fb11dad86e09373c0a4c0b176e7967e336934
--- /dev/null
+++ b/website/static/img/Explorer_Vote_button.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="62.235px" height="27.98px" viewBox="0 0 62.235 27.98" enable-background="new 0 0 62.235 27.98" xml:space="preserve">
+<g>
+	<defs>
+		<rect id="SVGID_1_" width="62.235" height="27.98"/>
+	</defs>
+	<clipPath id="SVGID_2_">
+		<use xlink:href="#SVGID_1_"  overflow="visible"/>
+	</clipPath>
+	<g clip-path="url(#SVGID_2_)">
+		<defs>
+			<rect id="SVGID_3_" y="0" width="62.235" height="27.98"/>
+		</defs>
+		<clipPath id="SVGID_4_">
+			<use xlink:href="#SVGID_3_"  overflow="visible"/>
+		</clipPath>
+		<path clip-path="url(#SVGID_4_)" fill="#037281" d="M27.98,13.99c0,7.727-6.264,13.99-13.99,13.99C6.264,27.98,0,21.717,0,13.99
+			C0,6.263,6.264,0,13.991,0C21.716,0,27.98,6.263,27.98,13.99"/>
+		<g clip-path="url(#SVGID_4_)">
+			<path fill="#4E4E4E" d="M42.418,9.19l-3.628,9.796h-1.264L33.975,9.19h1.277l2.712,7.767c0.087,0.251,0.152,0.54,0.198,0.868
+				h0.027c0.036-0.273,0.111-0.567,0.226-0.882l2.767-7.753H42.418z"/>
+			<path fill="#4E4E4E" d="M46.599,19.15c-1.034,0-1.859-0.327-2.477-0.98s-0.925-1.52-0.925-2.6c0-1.174,0.32-2.092,0.963-2.752
+				c0.642-0.66,1.51-0.991,2.603-0.991c1.043,0,1.856,0.321,2.442,0.963c0.585,0.642,0.878,1.533,0.878,2.671
+				c0,1.115-0.315,2.009-0.946,2.681S47.66,19.15,46.599,19.15z M46.681,12.77c-0.72,0-1.289,0.245-1.708,0.734
+				s-0.628,1.165-0.628,2.025c0,0.829,0.212,1.482,0.635,1.961c0.424,0.479,0.991,0.718,1.701,0.718c0.725,0,1.281-0.235,1.67-0.704
+				c0.39-0.469,0.584-1.136,0.584-2.002c0-0.874-0.194-1.548-0.584-2.021C47.962,13.007,47.405,12.77,46.681,12.77z"/>
+			<path fill="#4E4E4E" d="M55.117,18.918c-0.265,0.146-0.612,0.219-1.045,0.219c-1.226,0-1.838-0.684-1.838-2.05v-4.139h-1.202
+				v-0.957h1.202v-1.708l1.12-0.362v2.07h1.763v0.957h-1.763v3.942c0,0.469,0.08,0.804,0.239,1.004s0.424,0.301,0.792,0.301
+				c0.282,0,0.526-0.078,0.731-0.232V18.918z"/>
+			<path fill="#4E4E4E" d="M62.234,15.769h-4.938c0.018,0.779,0.228,1.38,0.628,1.804c0.401,0.424,0.952,0.636,1.653,0.636
+				c0.788,0,1.512-0.26,2.173-0.779v1.052c-0.615,0.446-1.428,0.67-2.439,0.67c-0.988,0-1.765-0.317-2.329-0.953
+				c-0.564-0.635-0.847-1.529-0.847-2.682c0-1.088,0.308-1.975,0.925-2.66s1.384-1.028,2.299-1.028c0.916,0,1.624,0.296,2.125,0.888
+				c0.501,0.592,0.751,1.414,0.751,2.466V15.769z M61.087,14.819c-0.005-0.646-0.16-1.15-0.468-1.51s-0.734-0.54-1.281-0.54
+				c-0.528,0-0.977,0.189-1.346,0.567s-0.597,0.872-0.683,1.482H61.087z"/>
+		</g>
+		<g opacity="0.8745" clip-path="url(#SVGID_4_)">
+			<g>
+				<defs>
+					<rect id="SVGID_5_" x="7.084" y="8.84" width="13.812" height="10.299"/>
+				</defs>
+				<clipPath id="SVGID_6_">
+					<use xlink:href="#SVGID_5_"  overflow="visible"/>
+				</clipPath>
+				<path clip-path="url(#SVGID_6_)" fill="#FFFDFB" d="M11.775,18.938l-4.489-4.489c-0.269-0.269-0.269-0.707,0-0.976l0.977-0.977
+					c0.27-0.27,0.707-0.27,0.976,0l3.024,3.024l6.477-6.477c0.27-0.27,0.707-0.27,0.977,0l0.976,0.977
+					c0.27,0.269,0.27,0.707,0,0.976l-7.941,7.942C12.482,19.208,12.045,19.208,11.775,18.938z"/>
+			</g>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/website/static/img/Export.png b/website/static/img/Export.png
new file mode 100644
index 0000000000000000000000000000000000000000..89f8c9b4acf0fff8d5b34c1418f6928a29bb3948
Binary files /dev/null and b/website/static/img/Export.png differ
diff --git a/website/static/img/Flip-flopper.png b/website/static/img/Flip-flopper.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e9a56fb0d9b0635270640234bdd6bcaa8c8bc8d
Binary files /dev/null and b/website/static/img/Flip-flopper.png differ
diff --git a/website/static/img/Future_Network_Chart.png b/website/static/img/Future_Network_Chart.png
new file mode 100644
index 0000000000000000000000000000000000000000..058d27be3fd469820591c20f4ca2daab3ed58850
Binary files /dev/null and b/website/static/img/Future_Network_Chart.png differ
diff --git a/website/static/img/G._Proxxy_Connection_Finished.png b/website/static/img/G._Proxxy_Connection_Finished.png
new file mode 100644
index 0000000000000000000000000000000000000000..3530b1793118665da86a5d1d83d409d3daac9608
Binary files /dev/null and b/website/static/img/G._Proxxy_Connection_Finished.png differ
diff --git a/website/static/img/GoodAverageValidator.png b/website/static/img/GoodAverageValidator.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7d7e0e322f6b0d62453e2299f9ef65c2f82c718
Binary files /dev/null and b/website/static/img/GoodAverageValidator.png differ
diff --git a/website/static/img/Good_validator_with_drops_from_elected_list.png b/website/static/img/Good_validator_with_drops_from_elected_list.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8139deb9198dab57aceb287b39e8c16234dd243
Binary files /dev/null and b/website/static/img/Good_validator_with_drops_from_elected_list.png differ
diff --git a/website/static/img/Image.png b/website/static/img/Image.png
new file mode 100644
index 0000000000000000000000000000000000000000..c198dee87c0ccb106a0d2c7a931aa044406c586e
Binary files /dev/null and b/website/static/img/Image.png differ
diff --git a/website/static/img/Ledger_address.png b/website/static/img/Ledger_address.png
new file mode 100644
index 0000000000000000000000000000000000000000..790fb2f3ab3c8fff7390cccd818b8c8f9188b2e0
Binary files /dev/null and b/website/static/img/Ledger_address.png differ
diff --git a/website/static/img/Ledger_address_1.jpg b/website/static/img/Ledger_address_1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..71c727e4248ebde8c05376792ce4443909ac779e
Binary files /dev/null and b/website/static/img/Ledger_address_1.jpg differ
diff --git a/website/static/img/Ledger_address_2.jpg b/website/static/img/Ledger_address_2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..512164ab29c8eaa3d7cc3efc98a18d1fd642305e
Binary files /dev/null and b/website/static/img/Ledger_address_2.jpg differ
diff --git a/website/static/img/Ledger_address_approve.jpg b/website/static/img/Ledger_address_approve.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e5da7e36266ae9f26f6cdcda0e6add0fb1b8a24f
Binary files /dev/null and b/website/static/img/Ledger_address_approve.jpg differ
diff --git a/website/static/img/Ledger_balances_dest.jpg b/website/static/img/Ledger_balances_dest.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cec9215aa704f1e1213102743c73224c9187c892
Binary files /dev/null and b/website/static/img/Ledger_balances_dest.jpg differ
diff --git a/website/static/img/Ledger_balances_transfer.jpg b/website/static/img/Ledger_balances_transfer.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..39c18de7380cfe30b6fdc31fff71faaa3db3ed09
Binary files /dev/null and b/website/static/img/Ledger_balances_transfer.jpg differ
diff --git a/website/static/img/Ledger_review_screen.jpg b/website/static/img/Ledger_review_screen.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d8371197b58035e8251b9fc02be97acf725568f5
Binary files /dev/null and b/website/static/img/Ledger_review_screen.jpg differ
diff --git a/website/static/img/Ledger_transfer_amount.jpg b/website/static/img/Ledger_transfer_amount.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..f0856bf8d6e2d4a1ac034e919122fe85ce732a8c
Binary files /dev/null and b/website/static/img/Ledger_transfer_amount.jpg differ
diff --git a/website/static/img/Ledger_transfer_approve.jpg b/website/static/img/Ledger_transfer_approve.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8c4b1a9caa4900951269841b76cc91617d63aee8
Binary files /dev/null and b/website/static/img/Ledger_transfer_approve.jpg differ
diff --git a/website/static/img/MacOS_Applications_Folder_Icon.png b/website/static/img/MacOS_Applications_Folder_Icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ac77e9628fd0d83daaef9d7d00cf931bd86311d
Binary files /dev/null and b/website/static/img/MacOS_Applications_Folder_Icon.png differ
diff --git a/website/static/img/MacOS_Privacy_and_Security.png b/website/static/img/MacOS_Privacy_and_Security.png
new file mode 100644
index 0000000000000000000000000000000000000000..278df1c6a73dfd64c3f2d27234b80e814126352f
Binary files /dev/null and b/website/static/img/MacOS_Privacy_and_Security.png differ
diff --git a/website/static/img/Macos_PrivacyAndSecurity.png b/website/static/img/Macos_PrivacyAndSecurity.png
new file mode 100644
index 0000000000000000000000000000000000000000..88a11b145023e5040b5b61f040b8c1a64a3ee644
Binary files /dev/null and b/website/static/img/Macos_PrivacyAndSecurity.png differ
diff --git a/website/static/img/Main_Menu_-_Accounts,_Betanet_Rewards.png b/website/static/img/Main_Menu_-_Accounts,_Betanet_Rewards.png
new file mode 100644
index 0000000000000000000000000000000000000000..c7c36fe4fbf765abc79fa452fd243e5923be8ddc
Binary files /dev/null and b/website/static/img/Main_Menu_-_Accounts,_Betanet_Rewards.png differ
diff --git a/website/static/img/Main_Menu_-_Accounts,_Claim_Tokens.png b/website/static/img/Main_Menu_-_Accounts,_Claim_Tokens.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc207ebe427cc01f97b8a02e5920aefc1c6ccbf8
Binary files /dev/null and b/website/static/img/Main_Menu_-_Accounts,_Claim_Tokens.png differ
diff --git a/website/static/img/Main_Menu_-_Governance,_Council.png b/website/static/img/Main_Menu_-_Governance,_Council.png
new file mode 100644
index 0000000000000000000000000000000000000000..139c19ca74ed2c3aff51b7b0934734a488f50cb1
Binary files /dev/null and b/website/static/img/Main_Menu_-_Governance,_Council.png differ
diff --git a/website/static/img/Main_Menu_-_Governance,_Democracy.png b/website/static/img/Main_Menu_-_Governance,_Democracy.png
new file mode 100644
index 0000000000000000000000000000000000000000..57813bc87a3ebc81b5737d0a44ee674d26207674
Binary files /dev/null and b/website/static/img/Main_Menu_-_Governance,_Democracy.png differ
diff --git a/website/static/img/Message_Mixing_System_Comic.jpg b/website/static/img/Message_Mixing_System_Comic.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..43165be490e8ade090c1ab076aa20e4c14c72729
Binary files /dev/null and b/website/static/img/Message_Mixing_System_Comic.jpg differ
diff --git a/website/static/img/MetaMask_Sign_Request.png b/website/static/img/MetaMask_Sign_Request.png
new file mode 100644
index 0000000000000000000000000000000000000000..97e6ce031160a2e15ab3b6b33f03c3f67a73de4e
Binary files /dev/null and b/website/static/img/MetaMask_Sign_Request.png differ
diff --git a/website/static/img/MetaMask_with_Proxxy.png b/website/static/img/MetaMask_with_Proxxy.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e9506bcca5e1545639d04920cdcb76de1874444
Binary files /dev/null and b/website/static/img/MetaMask_with_Proxxy.png differ
diff --git a/website/static/img/More_Info.png b/website/static/img/More_Info.png
new file mode 100644
index 0000000000000000000000000000000000000000..0f50db5d73bdd5ed656f957cbfe6863b98536021
Binary files /dev/null and b/website/static/img/More_Info.png differ
diff --git a/website/static/img/MultiSigApprovalo.png b/website/static/img/MultiSigApprovalo.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1df31d826bc147f24b7652707d496bd5f630486
Binary files /dev/null and b/website/static/img/MultiSigApprovalo.png differ
diff --git a/website/static/img/Multisig.png b/website/static/img/Multisig.png
new file mode 100644
index 0000000000000000000000000000000000000000..08875701040c72d2a4bcf4c05172297feed0f473
Binary files /dev/null and b/website/static/img/Multisig.png differ
diff --git a/website/static/img/MultisigApprovalConfirmation.png b/website/static/img/MultisigApprovalConfirmation.png
new file mode 100644
index 0000000000000000000000000000000000000000..e00777b9d32c5b859d7dd52bb2cb044b3f8f1629
Binary files /dev/null and b/website/static/img/MultisigApprovalConfirmation.png differ
diff --git a/website/static/img/MultisigApprovalConfirmationFINAL.png b/website/static/img/MultisigApprovalConfirmationFINAL.png
new file mode 100644
index 0000000000000000000000000000000000000000..6bf7c14aa7eaf4ae780b7dc7f3d950ecaf2bbbb5
Binary files /dev/null and b/website/static/img/MultisigApprovalConfirmationFINAL.png differ
diff --git a/website/static/img/My_accounts_-_Stash_and_Controller.png b/website/static/img/My_accounts_-_Stash_and_Controller.png
new file mode 100644
index 0000000000000000000000000000000000000000..04798255f3fe92e867a95e92fef710c8f2d8ce3a
Binary files /dev/null and b/website/static/img/My_accounts_-_Stash_and_Controller.png differ
diff --git a/website/static/img/Network_Structure.svg b/website/static/img/Network_Structure.svg
new file mode 100644
index 0000000000000000000000000000000000000000..169793cb2e2731942b0e6d0b377c087503e1a567
--- /dev/null
+++ b/website/static/img/Network_Structure.svg
@@ -0,0 +1 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1366 768"><defs><style>.cls-1{fill:#ecf6f7;}.cls-2,.cls-4,.cls-8{fill:#037281;}.cls-3,.cls-8{font-size:12px;}.cls-11,.cls-16,.cls-17,.cls-23,.cls-24,.cls-3,.cls-7{fill:#fff;}.cls-11,.cls-3,.cls-4,.cls-5,.cls-6,.cls-8{font-family:Roboto-Bold, Roboto;font-weight:700;}.cls-11,.cls-4,.cls-5,.cls-6{font-size:18px;}.cls-4,.cls-5,.cls-6{letter-spacing:-0.01em;}.cls-15,.cls-5{fill:#fe7751;}.cls-22,.cls-6{fill:#0db9cb;}.cls-9{fill:#3d3d3d;}.cls-10{letter-spacing:-0.01em;}.cls-11{letter-spacing:-0.02em;}.cls-12{letter-spacing:-0.03em;}.cls-13,.cls-14{font-size:15.99px;letter-spacing:-0.01em;}.cls-13,.cls-16{font-family:Roboto-Regular, Roboto;}.cls-14,.cls-17,.cls-23,.cls-24{font-family:Roboto-Black, Roboto;font-weight:800;}.cls-16,.cls-17{font-size:17.82px;}.cls-16{letter-spacing:-0.01em;}.cls-17{letter-spacing:-0.01em;}.cls-18{letter-spacing:-0.02em;}.cls-19,.cls-21{fill:none;stroke-miterlimit:10;}.cls-19{stroke:#fe7751;stroke-width:3px;}.cls-20{opacity:0.5;}.cls-21{stroke:#3d3d3d;stroke-width:4px;}.cls-23,.cls-24{font-size:17.58px;}.cls-23{letter-spacing:-0.02em;}.cls-24{letter-spacing:-0.02em;}</style></defs><rect class="cls-1" x="618" y="60" width="96" height="203" rx="3.64"/><circle class="cls-2" cx="296.61" cy="195.27" r="102.61"/><rect class="cls-2" x="638" y="103" width="55" height="55" rx="3.15"/><path class="cls-2" d="M652.39,185H694a0,0,0,0,1,0,0v42.76A12.24,12.24,0,0,1,681.76,240H639a0,0,0,0,1,0,0V198.39A13.39,13.39,0,0,1,652.39,185Z"/><text class="cls-3" transform="translate(651.67 133.07)">chain</text><text class="cls-3" transform="translate(653.3 218.07)">cMix</text><text class="cls-4" transform="translate(645.21 87.02)">Node</text><rect class="cls-1" x="751" y="60" width="96" height="203" rx="3.64"/><rect class="cls-2" x="771" y="103" width="55" height="55" rx="3.15"/><path class="cls-2" d="M785.39,185H827a0,0,0,0,1,0,0v42.76A12.24,12.24,0,0,1,814.76,240H772a0,0,0,0,1,0,0V198.39A13.39,13.39,0,0,1,785.39,185Z"/><text class="cls-3" transform="translate(784.67 133.07)">chain</text><text class="cls-3" transform="translate(786.3 218.07)">cMix</text><text class="cls-4" transform="translate(778.21 87.02)">Node</text><text class="cls-5" transform="translate(862.57 136.02)">xx chain</text><text class="cls-6" transform="translate(880.75 209.02)">mix<tspan x="-17.62" y="21.6">network</tspan></text><rect class="cls-1" x="485" y="60" width="96" height="203" rx="3.64"/><rect class="cls-2" x="505" y="103" width="55" height="55" rx="3.15"/><path class="cls-2" d="M519.39,185H561a0,0,0,0,1,0,0v42.76A12.24,12.24,0,0,1,548.76,240H506a0,0,0,0,1,0,0V198.39A13.39,13.39,0,0,1,519.39,185Z"/><text class="cls-3" transform="translate(518.67 133.07)">chain</text><text class="cls-3" transform="translate(520.3 218.07)">cMix</text><text class="cls-4" transform="translate(512.21 87.02)">Node</text><rect class="cls-2" x="485" y="373" width="96" height="203" rx="3.64"/><path class="cls-7" d="M561.86,471H503.14a5,5,0,0,1-4.94-6l9-44.94a5,5,0,0,1,4.93-4h40.76a5,5,0,0,1,4.93,4l9,44.94A5,5,0,0,1,561.86,471Z"/><path class="cls-7" d="M541.05,498H516.69A10.68,10.68,0,0,0,506,508.69v26L525.24,553H550.5A10.5,10.5,0,0,0,561,542.5v-27Z"/><text class="cls-8" transform="translate(520.33 441.07)">light<tspan x="-1.39" y="14.4">node</tspan></text><path class="cls-9" d="M579,695.4V652.6A12.6,12.6,0,0,1,566.4,640H499.6A12.6,12.6,0,0,1,487,652.6v42.8A12.6,12.6,0,0,1,499.6,708h66.8A12.6,12.6,0,0,1,579,695.4Z"/><text class="cls-8" transform="translate(520.3 520.07)">cMix<tspan x="-10.14" y="14.4">Gatew</tspan><tspan class="cls-10" x="23.83" y="14.4">a</tspan><tspan x="30.17" y="14.4">y</tspan></text><text class="cls-3" transform="translate(520.3 670.07)">cMix<tspan x="-1.91" y="14.4">client</tspan></text><path class="cls-9" d="M712,695.4V652.6A12.6,12.6,0,0,1,699.4,640H632.6A12.6,12.6,0,0,1,620,652.6v42.8A12.6,12.6,0,0,1,632.6,708h66.8A12.6,12.6,0,0,1,712,695.4Z"/><text class="cls-3" transform="translate(653.3 670.07)">cMix<tspan x="-1.91" y="14.4">client</tspan></text><path class="cls-9" d="M845,695.4V652.6A12.6,12.6,0,0,1,832.4,640H765.6A12.6,12.6,0,0,1,753,652.6v42.8A12.6,12.6,0,0,1,765.6,708h66.8A12.6,12.6,0,0,1,845,695.4Z"/><text class="cls-3" transform="translate(786.3 670.07)">cMix<tspan x="-1.91" y="14.4">client</tspan></text><text class="cls-11" transform="translate(499.65 400.02)">Gatew<tspan class="cls-12" x="49.15" y="0">a</tspan><tspan x="58.31" y="0">y</tspan></text><rect class="cls-2" x="619" y="373" width="96" height="203" rx="3.64"/><path class="cls-7" d="M695.86,471H637.14a5,5,0,0,1-4.94-6l9-44.94a5,5,0,0,1,4.93-4h40.76a5,5,0,0,1,4.93,4l9,44.94A5,5,0,0,1,695.86,471Z"/><path class="cls-7" d="M675.05,498H650.69A10.68,10.68,0,0,0,640,508.69v26L659.24,553H684.5A10.5,10.5,0,0,0,695,542.5v-27Z"/><text class="cls-8" transform="translate(654.33 441.07)">light<tspan x="-1.39" y="14.4">node</tspan></text><text class="cls-8" transform="translate(654.3 520.07)">cMix<tspan x="-10.14" y="14.4">Gatew</tspan><tspan class="cls-10" x="23.83" y="14.4">a</tspan><tspan x="30.17" y="14.4">y</tspan></text><text class="cls-11" transform="translate(633.65 400.02)">Gatew<tspan class="cls-12" x="49.15" y="0">a</tspan><tspan x="58.31" y="0">y</tspan></text><rect class="cls-2" x="751" y="373" width="96" height="203" rx="3.64"/><path class="cls-7" d="M827.86,471H769.14a5,5,0,0,1-4.94-6l9-44.94a5,5,0,0,1,4.93-4h40.76a5,5,0,0,1,4.93,4l9,44.94A5,5,0,0,1,827.86,471Z"/><path class="cls-7" d="M807.05,498H782.69A10.68,10.68,0,0,0,772,508.69v26L791.24,553H816.5A10.5,10.5,0,0,0,827,542.5v-27Z"/><text class="cls-8" transform="translate(786.33 441.07)">light<tspan x="-1.39" y="14.4">node</tspan></text><text class="cls-8" transform="translate(786.3 520.07)">cMix<tspan x="-10.14" y="14.4">Gatew</tspan><tspan class="cls-10" x="23.83" y="14.4">a</tspan><tspan x="30.17" y="14.4">y</tspan></text><text class="cls-11" transform="translate(765.65 400.02)">Gatew<tspan class="cls-12" x="49.15" y="0">a</tspan><tspan x="58.31" y="0">y</tspan></text><text class="cls-13" transform="translate(369 64.37)">Network</text><text class="cls-14" transform="translate(369 83.03)">Membership</text><rect class="cls-15" x="1068" y="84" width="105" height="116" rx="8.28"/><text class="cls-16" transform="translate(1100.05 138.38)">Block</text><text class="cls-17" transform="translate(1088.32 159.17)">Explo<tspan class="cls-18" x="43.19" y="0">r</tspan><tspan x="49.6" y="0">er</tspan></text><rect class="cls-19" x="474" y="94" width="467" height="77" rx="15.74"/><g class="cls-20"><path class="cls-21" d="M484.42,201.74H436.57a8.17,8.17,0,0,0-8.17,8.17v26.31a11.57,11.57,0,0,1-11.57,11.57H360.3v2.61A18.69,18.69,0,0,0,379,269.09H588.54A12.46,12.46,0,0,0,601,256.63v-46a8.13,8.13,0,0,1,8.14-8.14h4"/><polygon class="cls-9" points="495.71 201.74 479.8 195.23 483.57 201.74 479.8 208.24 495.71 201.74"/><polygon class="cls-9" points="624.43 202.5 608.51 209 612.29 202.5 608.51 196 624.43 202.5"/></g><g class="cls-20"><path class="cls-21" d="M360.3,244.79v23.67a11.84,11.84,0,0,0,11.84,11.84H715a16,16,0,0,0,16-16V210.1a10.61,10.61,0,0,1,10.6-10.6h4"/><polygon class="cls-9" points="756.9 199.5 740.98 206 744.76 199.5 740.98 193 756.9 199.5"/></g><path class="cls-22" d="M925.26,177A12.75,12.75,0,0,1,938,189.74v45.52A12.75,12.75,0,0,1,925.26,248H489.74A12.75,12.75,0,0,1,477,235.26V189.74A12.75,12.75,0,0,1,489.74,177H925.26m0-3H489.74A15.74,15.74,0,0,0,474,189.74v45.52A15.74,15.74,0,0,0,489.74,251H925.26A15.74,15.74,0,0,0,941,235.26V189.74A15.74,15.74,0,0,0,925.26,174Z"/><path class="cls-21" d="M987.94,157h8.64a22.85,22.85,0,0,1,22.84,22.85v220.3A22.85,22.85,0,0,1,996.58,423H893.12"/><polygon class="cls-9" points="993.56 164.41 990.41 157 993.56 149.59 976 157 993.56 164.41"/><polygon class="cls-9" points="879 423 898.9 414.87 894.18 423 898.9 431.13 879 423"/><line class="cls-21" x1="988.12" y1="126.5" x2="1020.93" y2="126.5"/><polygon class="cls-9" points="974 126.5 993.9 134.63 989.18 126.5 993.9 118.37 974 126.5"/><path class="cls-9" d="M1033,126.5c-5.68,2.11-12.73,5.7-17.09,9.51l3.44-9.51-3.44-9.51C1020.27,120.8,1027.32,124.39,1033,126.5Z"/><line class="cls-21" x1="798.5" y1="263" x2="798.5" y2="343.93"/><path class="cls-9" d="M798.5,356c-2.11-5.68-5.7-12.73-9.51-17.1l9.51,3.45L808,338.9C804.2,343.27,800.61,350.32,798.5,356Z"/><line class="cls-21" x1="666.5" y1="263" x2="666.5" y2="343.93"/><path class="cls-9" d="M666.5,356c-2.11-5.68-5.7-12.73-9.51-17.1l9.51,3.45L676,338.9C672.2,343.27,668.61,350.32,666.5,356Z"/><line class="cls-21" x1="532.5" y1="263" x2="532.5" y2="343.93"/><path class="cls-9" d="M532.5,356c-2.11-5.68-5.7-12.73-9.51-17.1l9.51,3.45L542,338.9C538.2,343.27,534.61,350.32,532.5,356Z"/><line class="cls-21" x1="798.5" y1="584" x2="798.5" y2="607.43"/><path class="cls-9" d="M798.5,619.5c-2.11-5.68-5.7-12.73-9.51-17.09l9.51,3.44,9.51-3.44C804.2,606.77,800.61,613.82,798.5,619.5Z"/><line class="cls-21" x1="666.5" y1="584" x2="666.5" y2="607.43"/><path class="cls-9" d="M666.5,619.5c-2.11-5.68-5.7-12.73-9.51-17.09l9.51,3.44,9.51-3.44C672.2,606.77,668.61,613.82,666.5,619.5Z"/><line class="cls-21" x1="532.5" y1="584" x2="532.5" y2="607.43"/><path class="cls-9" d="M532.5,619.5c-2.11-5.68-5.7-12.73-9.51-17.09l9.51,3.44,9.51-3.44C538.2,606.77,534.61,613.82,532.5,619.5Z"/><path class="cls-9" d="M293.36,156.63l-63.73,90.71a4,4,0,0,0,3.25,6.26H360.35a4,4,0,0,0,3.25-6.26l-63.73-90.71A4,4,0,0,0,293.36,156.63Z"/><text class="cls-23" transform="translate(255.38 237.24)">scheduling</text><text class="cls-24" transform="translate(251.38 138.24)">DDos Shield</text><line class="cls-21" x1="422.88" y1="102.51" x2="376.35" y2="102.51"/><polygon class="cls-9" points="437 102.51 417.1 94.38 421.82 102.51 417.1 110.64 437 102.51"/><polygon class="cls-9" points="362.22 102.51 382.12 94.38 377.4 102.51 382.12 110.64 362.22 102.51"/></svg>
\ No newline at end of file
diff --git a/website/static/img/Next_Button.svg b/website/static/img/Next_Button.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4e1e740e006fab9951e7296af79e41ea653df692
--- /dev/null
+++ b/website/static/img/Next_Button.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="63px" height="27.954px" viewBox="0 0 63 27.954" enable-background="new 0 0 63 27.954" xml:space="preserve">
+<circle fill="#037281" cx="13.977" cy="13.977" r="13.977"/>
+<path opacity="0.8745" fill="#FFFDFB" d="M18.345,8.189v11.574c0,0.182-0.147,0.328-0.328,0.328h-1.311
+	c-0.181,0-0.327-0.146-0.327-0.328v-4.814l-5.338,4.941c-0.563,0.467-1.432,0.076-1.432-0.673V8.735
+	c0-0.749,0.869-1.139,1.432-0.672l5.338,4.911V8.189c0-0.181,0.146-0.328,0.327-0.328h1.311C18.198,7.862,18.345,8.009,18.345,8.189
+	z"/>
+<g>
+	<path fill="#4E4E4E" d="M43.256,18.97h-1.405l-5.037-7.801c-0.127-0.195-0.231-0.4-0.313-0.614h-0.041
+		c0.036,0.209,0.055,0.658,0.055,1.345v7.07h-1.146V9.183h1.487l4.9,7.679c0.205,0.318,0.337,0.536,0.396,0.654h0.027
+		c-0.045-0.281-0.068-0.762-0.068-1.439V9.183h1.146V18.97z"/>
+	<path fill="#4E4E4E" d="M51.289,15.755h-4.935c0.018,0.778,0.228,1.379,0.628,1.802c0.4,0.424,0.951,0.635,1.651,0.635
+		c0.787,0,1.511-0.259,2.17-0.777v1.051c-0.614,0.446-1.426,0.669-2.436,0.669c-0.988,0-1.764-0.317-2.328-0.952
+		c-0.563-0.635-0.846-1.527-0.846-2.679c0-1.088,0.308-1.974,0.925-2.658c0.616-0.685,1.382-1.027,2.296-1.027
+		c0.915,0,1.622,0.296,2.123,0.888c0.5,0.591,0.751,1.412,0.751,2.463V15.755z M50.143,14.807c-0.005-0.646-0.161-1.148-0.468-1.508
+		c-0.308-0.359-0.733-0.539-1.28-0.539c-0.527,0-0.976,0.188-1.344,0.566c-0.369,0.377-0.597,0.871-0.683,1.48H50.143z"/>
+	<path fill="#4E4E4E" d="M58.086,11.981l-2.348,3.535l2.308,3.453h-1.304l-1.372-2.266c-0.087-0.142-0.188-0.318-0.307-0.532h-0.027
+		c-0.023,0.041-0.13,0.218-0.321,0.532l-1.398,2.266h-1.29l2.382-3.426l-2.279-3.563h1.303l1.352,2.389
+		c0.1,0.177,0.198,0.359,0.294,0.546h0.026l1.748-2.935H58.086z"/>
+	<path fill="#4E4E4E" d="M62.639,18.901c-0.265,0.146-0.612,0.219-1.045,0.219c-1.224,0-1.836-0.683-1.836-2.048v-4.136h-1.2v-0.955
+		h1.2v-1.707l1.12-0.361v2.068h1.761v0.955h-1.761v3.938c0,0.468,0.079,0.803,0.238,1.003s0.423,0.3,0.792,0.3
+		c0.282,0,0.525-0.077,0.73-0.231V18.901z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/website/static/img/Node_performance_gif.gif b/website/static/img/Node_performance_gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..536261642ce3a791d83b5c4f96bf4810c2d81bfc
Binary files /dev/null and b/website/static/img/Node_performance_gif.gif differ
diff --git a/website/static/img/Nominate_from_targets_gif.gif b/website/static/img/Nominate_from_targets_gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c2aa1ff518b1e9c10dbe51a051ee611573bc3bf0
Binary files /dev/null and b/website/static/img/Nominate_from_targets_gif.gif differ
diff --git a/website/static/img/Nominator_Info.png b/website/static/img/Nominator_Info.png
new file mode 100644
index 0000000000000000000000000000000000000000..e6019f511a363bdd6fe08ce57a13ff1dff069708
Binary files /dev/null and b/website/static/img/Nominator_Info.png differ
diff --git a/website/static/img/Nominator_columns.png b/website/static/img/Nominator_columns.png
new file mode 100644
index 0000000000000000000000000000000000000000..0be4ac1c4e678f79575c44d2fcec206c3a8d558d
Binary files /dev/null and b/website/static/img/Nominator_columns.png differ
diff --git a/website/static/img/Open_Blocked_App_Quantum-Wallet_Generator (1).png b/website/static/img/Open_Blocked_App_Quantum-Wallet_Generator (1).png
new file mode 100644
index 0000000000000000000000000000000000000000..5a4ab8c3af744df1040232a5ee2ed561f7384546
Binary files /dev/null and b/website/static/img/Open_Blocked_App_Quantum-Wallet_Generator (1).png differ
diff --git a/website/static/img/Open_Blocked_App_Quantum-Wallet_Generator.png b/website/static/img/Open_Blocked_App_Quantum-Wallet_Generator.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a4ab8c3af744df1040232a5ee2ed561f7384546
Binary files /dev/null and b/website/static/img/Open_Blocked_App_Quantum-Wallet_Generator.png differ
diff --git a/website/static/img/Open_ProtoNet_Wallet_Generator_dmg_File.png b/website/static/img/Open_ProtoNet_Wallet_Generator_dmg_File.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2090fcfa0e67705b4e77e2d6cebde48ca75b2dd
Binary files /dev/null and b/website/static/img/Open_ProtoNet_Wallet_Generator_dmg_File.png differ
diff --git a/website/static/img/Open_Quantum-Ready_Wallet_Generator_.dmg_from_Dock.png b/website/static/img/Open_Quantum-Ready_Wallet_Generator_.dmg_from_Dock.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7d682c7aa072bc22f32c9ea17b1c55b1b51a923
Binary files /dev/null and b/website/static/img/Open_Quantum-Ready_Wallet_Generator_.dmg_from_Dock.png differ
diff --git a/website/static/img/Open_System_Preferences_from_Apple_Menu.png b/website/static/img/Open_System_Preferences_from_Apple_Menu.png
new file mode 100644
index 0000000000000000000000000000000000000000..36fb730d22471242242d1d8131a0e69f1c599751
Binary files /dev/null and b/website/static/img/Open_System_Preferences_from_Apple_Menu.png differ
diff --git a/website/static/img/Open_Unverified_Quantum-Ready_Wallet_Generator.png b/website/static/img/Open_Unverified_Quantum-Ready_Wallet_Generator.png
new file mode 100644
index 0000000000000000000000000000000000000000..76e4f5f990e8b83619a2a8c849e9e5f015892d47
Binary files /dev/null and b/website/static/img/Open_Unverified_Quantum-Ready_Wallet_Generator.png differ
diff --git a/website/static/img/Open_Warning_for_Quantum-Ready_Wallet_Generator_App.png b/website/static/img/Open_Warning_for_Quantum-Ready_Wallet_Generator_App.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ba629563a5a5779188c0d31a9c5376f7af0d39d
Binary files /dev/null and b/website/static/img/Open_Warning_for_Quantum-Ready_Wallet_Generator_App.png differ
diff --git a/website/static/img/Open_anyway.png b/website/static/img/Open_anyway.png
new file mode 100644
index 0000000000000000000000000000000000000000..765828751f43b5c047bf4e92da30052a58a30264
Binary files /dev/null and b/website/static/img/Open_anyway.png differ
diff --git a/website/static/img/Open_proxxy.png b/website/static/img/Open_proxxy.png
new file mode 100644
index 0000000000000000000000000000000000000000..3fb7a230c59590668ede5f2a3a85ebf503d80147
Binary files /dev/null and b/website/static/img/Open_proxxy.png differ
diff --git a/website/static/img/Payouts_tab.png b/website/static/img/Payouts_tab.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7ee3cd3b5e5baf3457446553d78e78c75960a2e
Binary files /dev/null and b/website/static/img/Payouts_tab.png differ
diff --git a/website/static/img/Present_Network_Chart.png b/website/static/img/Present_Network_Chart.png
new file mode 100644
index 0000000000000000000000000000000000000000..00212b63a7304510693d03298c77e6831750dbaf
Binary files /dev/null and b/website/static/img/Present_Network_Chart.png differ
diff --git a/website/static/img/Proxxy-placeholder-image.png b/website/static/img/Proxxy-placeholder-image.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8db3c15f2fc35ebfebd9556a0d27be152056431
Binary files /dev/null and b/website/static/img/Proxxy-placeholder-image.png differ
diff --git a/website/static/img/Proxxy.png b/website/static/img/Proxxy.png
new file mode 100644
index 0000000000000000000000000000000000000000..9bbcc93f6c790ec1b1b205ccc280129118a4f2c3
Binary files /dev/null and b/website/static/img/Proxxy.png differ
diff --git a/website/static/img/Proxxy_Connected_to_Website.png b/website/static/img/Proxxy_Connected_to_Website.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a1ad75b6cbbf7d52ae5cbcc1925edd5879c6b8f
Binary files /dev/null and b/website/static/img/Proxxy_Connected_to_Website.png differ
diff --git a/website/static/img/Proxxy_Loading_.png b/website/static/img/Proxxy_Loading_.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab5916b1719e789a7d0967ad4469bc76c01906a2
Binary files /dev/null and b/website/static/img/Proxxy_Loading_.png differ
diff --git a/website/static/img/Proxxy_app_verified_warning.png b/website/static/img/Proxxy_app_verified_warning.png
new file mode 100644
index 0000000000000000000000000000000000000000..d7db7e18977e106feace34afb0b1451969655f5a
Binary files /dev/null and b/website/static/img/Proxxy_app_verified_warning.png differ
diff --git a/website/static/img/Proxxy_application.gif b/website/static/img/Proxxy_application.gif
new file mode 100644
index 0000000000000000000000000000000000000000..12063233864115844ad16d021b364635c206eac4
Binary files /dev/null and b/website/static/img/Proxxy_application.gif differ
diff --git a/website/static/img/Proxxy_in_applications.png b/website/static/img/Proxxy_in_applications.png
new file mode 100644
index 0000000000000000000000000000000000000000..46d0e2d7ca91d4c13991bf57085465627ef9d102
Binary files /dev/null and b/website/static/img/Proxxy_in_applications.png differ
diff --git a/website/static/img/Proxxy_to_applications_folder.png b/website/static/img/Proxxy_to_applications_folder.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a043f166aa7e42c1d5d05f33e393111b1a6cc61
Binary files /dev/null and b/website/static/img/Proxxy_to_applications_folder.png differ
diff --git a/website/static/img/Proxxy_warning.png b/website/static/img/Proxxy_warning.png
new file mode 100644
index 0000000000000000000000000000000000000000..e73634da956cd1e3ec5b684d0f91196c46ee5f92
Binary files /dev/null and b/website/static/img/Proxxy_warning.png differ
diff --git a/website/static/img/Quantum-Ready_Wallet_Generator_Setup_Window.png b/website/static/img/Quantum-Ready_Wallet_Generator_Setup_Window.png
new file mode 100644
index 0000000000000000000000000000000000000000..57021a350fd405bb4de5b3489707c99d4b917038
Binary files /dev/null and b/website/static/img/Quantum-Ready_Wallet_Generator_Setup_Window.png differ
diff --git a/website/static/img/Regular_MetaMask.png b/website/static/img/Regular_MetaMask.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e46122ee80e172ab12a7eaa56b303809375de9f
Binary files /dev/null and b/website/static/img/Regular_MetaMask.png differ
diff --git a/website/static/img/Reporting_and_Banning_App_Settings.png b/website/static/img/Reporting_and_Banning_App_Settings.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c7ecf9aa89f6cc09b316d69ed866b332317e5db
Binary files /dev/null and b/website/static/img/Reporting_and_Banning_App_Settings.png differ
diff --git a/website/static/img/Run_Anyway.png b/website/static/img/Run_Anyway.png
new file mode 100644
index 0000000000000000000000000000000000000000..9bfb75a9f74fb619294d07b1b3afdfe60906f33e
Binary files /dev/null and b/website/static/img/Run_Anyway.png differ
diff --git a/website/static/img/Screen_Shot_2022-03-17_at_10.14.29_PM.png b/website/static/img/Screen_Shot_2022-03-17_at_10.14.29_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..2198ae91adbe46ad4ea1158b3d877ec110d815b8
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-03-17_at_10.14.29_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-03-17_at_11.41.57_PM.png b/website/static/img/Screen_Shot_2022-03-17_at_11.41.57_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..a12ed5d0b7405841757a4a8b61df7a15d04ea767
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-03-17_at_11.41.57_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-05_at_6.57.53_PM.png b/website/static/img/Screen_Shot_2022-04-05_at_6.57.53_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..88987dab91f00d80c76c47367eb8578315ee7394
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-05_at_6.57.53_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-05_at_7.03.39_PM.png b/website/static/img/Screen_Shot_2022-04-05_at_7.03.39_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..353c0627f2785d31371e68c0d091e22d73a4aeac
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-05_at_7.03.39_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-05_at_7.04.01_PM.png b/website/static/img/Screen_Shot_2022-04-05_at_7.04.01_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..5307f0c50dbe33ee8fd213c706598e4ecfd68f51
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-05_at_7.04.01_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-05_at_7.05.04_PM.png b/website/static/img/Screen_Shot_2022-04-05_at_7.05.04_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..09f59816656adb4abd03103723df6a8cc028f701
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-05_at_7.05.04_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-26_at_2.06.27_PM.png b/website/static/img/Screen_Shot_2022-04-26_at_2.06.27_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc396a2d9b0aa42bf39648293a6615777d3032a8
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-26_at_2.06.27_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-26_at_2.07.48_PM.png b/website/static/img/Screen_Shot_2022-04-26_at_2.07.48_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..2215834dddc9d6ae50ff9eb69addd08c542b45dc
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-26_at_2.07.48_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-26_at_2.19.45_PM.png b/website/static/img/Screen_Shot_2022-04-26_at_2.19.45_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..e39bde9d7f367d8b50350e391e5f9ce3c1857bfb
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-26_at_2.19.45_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-26_at_2.20.26_PM.png b/website/static/img/Screen_Shot_2022-04-26_at_2.20.26_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa5dcf0c844facd5ba10ea57931261a205f31a7c
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-26_at_2.20.26_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-26_at_2.20.37_PM.png b/website/static/img/Screen_Shot_2022-04-26_at_2.20.37_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..4ac129fcd86fde4e772b9f4ccd3fd0d0e1411fc2
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-26_at_2.20.37_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-26_at_2.20.49_PM.png b/website/static/img/Screen_Shot_2022-04-26_at_2.20.49_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..c71d81e6e899da804a8319b67989691753741bbc
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-26_at_2.20.49_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-26_at_2.21.07_PM.png b/website/static/img/Screen_Shot_2022-04-26_at_2.21.07_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ca8644d0b0649a9df74795b9b337ac2de2a7fb5
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-26_at_2.21.07_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-04-26_at_2.21.51_PM.png b/website/static/img/Screen_Shot_2022-04-26_at_2.21.51_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..f296db9e99fb8498cd484505e1a0a549c02f6017
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-04-26_at_2.21.51_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-05-17_at_1.08.30_PM.png b/website/static/img/Screen_Shot_2022-05-17_at_1.08.30_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3dba762466ce8535cc26b1c0ef0ca20a974c102
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-05-17_at_1.08.30_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-05-17_at_1.10.51_PM.png b/website/static/img/Screen_Shot_2022-05-17_at_1.10.51_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..5ee14cea39fc55361750ef792c13060988a103f3
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-05-17_at_1.10.51_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-05-17_at_1.10.59_PM.png b/website/static/img/Screen_Shot_2022-05-17_at_1.10.59_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca9e4520bbcc189007d50ea7c564ac8360007d6f
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-05-17_at_1.10.59_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-05-17_at_9.44.48_AM.png b/website/static/img/Screen_Shot_2022-05-17_at_9.44.48_AM.png
new file mode 100644
index 0000000000000000000000000000000000000000..55527604232082e47b3aac95398fcba3ae18e603
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-05-17_at_9.44.48_AM.png differ
diff --git a/website/static/img/Screen_Shot_2022-05-17_at_9.44.56_AM.png b/website/static/img/Screen_Shot_2022-05-17_at_9.44.56_AM.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c71a931529152c04978dafa77f6f33ee3b076e5
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-05-17_at_9.44.56_AM.png differ
diff --git a/website/static/img/Screen_Shot_2022-05-17_at_9.45.09_AM.png b/website/static/img/Screen_Shot_2022-05-17_at_9.45.09_AM.png
new file mode 100644
index 0000000000000000000000000000000000000000..457d82f36e1e4cb3d861aaf09c64c930c573e70f
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-05-17_at_9.45.09_AM.png differ
diff --git a/website/static/img/Screen_Shot_2022-05-17_at_9.45.23_AM.png b/website/static/img/Screen_Shot_2022-05-17_at_9.45.23_AM.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8baa60e01ffd19d109a48a4b88c2d08e227600f
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-05-17_at_9.45.23_AM.png differ
diff --git a/website/static/img/Screen_Shot_2022-05-17_at_9.45.28_AM.png b/website/static/img/Screen_Shot_2022-05-17_at_9.45.28_AM.png
new file mode 100644
index 0000000000000000000000000000000000000000..70b14c11098086d7a27828ae6aafcb910d7ba3e1
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-05-17_at_9.45.28_AM.png differ
diff --git a/website/static/img/Screen_Shot_2022-05-17_at_9.45.42_AM.png b/website/static/img/Screen_Shot_2022-05-17_at_9.45.42_AM.png
new file mode 100644
index 0000000000000000000000000000000000000000..9124daae138aeed506cd7f49ebc32dd669318730
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-05-17_at_9.45.42_AM.png differ
diff --git a/website/static/img/Screen_Shot_2022-06-22_at_3.59.21_PM.png b/website/static/img/Screen_Shot_2022-06-22_at_3.59.21_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..4bdf6509f9d8b860287e6acfe1af169ef6748e1f
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-06-22_at_3.59.21_PM.png differ
diff --git a/website/static/img/Screen_Shot_2022-06-22_at_3.59.43_PM.png b/website/static/img/Screen_Shot_2022-06-22_at_3.59.43_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..76a903ce58f0ba42782fdd17127b428d54766560
Binary files /dev/null and b/website/static/img/Screen_Shot_2022-06-22_at_3.59.43_PM.png differ
diff --git a/website/static/img/Screen_Shot_2023-01-10_at_6.00.32_PM.png b/website/static/img/Screen_Shot_2023-01-10_at_6.00.32_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..2607f3cbd15a801d296d5c842faf1e96dddc64f1
Binary files /dev/null and b/website/static/img/Screen_Shot_2023-01-10_at_6.00.32_PM.png differ
diff --git a/website/static/img/Screen_Shot_2023-01-10_at_6.02.33_PM.png b/website/static/img/Screen_Shot_2023-01-10_at_6.02.33_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..7a6bcfdc0716206d875c23f6c27047b2728f4f66
Binary files /dev/null and b/website/static/img/Screen_Shot_2023-01-10_at_6.02.33_PM.png differ
diff --git a/website/static/img/Screen_Shot_2023-01-10_at_6.02.49_PM.png b/website/static/img/Screen_Shot_2023-01-10_at_6.02.49_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..c325ba4fc0c85b82366063eba5f2d3929115bc12
Binary files /dev/null and b/website/static/img/Screen_Shot_2023-01-10_at_6.02.49_PM.png differ
diff --git a/website/static/img/Screen_Shot_2023-01-10_at_6.11.28_PM.png b/website/static/img/Screen_Shot_2023-01-10_at_6.11.28_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..1dfed52db7949c4807d19e021a4772cb11a8649f
Binary files /dev/null and b/website/static/img/Screen_Shot_2023-01-10_at_6.11.28_PM.png differ
diff --git a/website/static/img/Screen_Shot_2023-01-10_at_6.11.36_PM.png b/website/static/img/Screen_Shot_2023-01-10_at_6.11.36_PM.png
new file mode 100644
index 0000000000000000000000000000000000000000..9be65c8df5daf762d2ff3de24f005eda0937b4e6
Binary files /dev/null and b/website/static/img/Screen_Shot_2023-01-10_at_6.11.36_PM.png differ
diff --git a/website/static/img/Security_&_Privacy_in_System_Preferences.png b/website/static/img/Security_&_Privacy_in_System_Preferences.png
new file mode 100644
index 0000000000000000000000000000000000000000..414cf892fa7fd77da30d04e60739c3ad2cddee86
Binary files /dev/null and b/website/static/img/Security_&_Privacy_in_System_Preferences.png differ
diff --git a/website/static/img/Select_Account_to_Claim_Tokens.png b/website/static/img/Select_Account_to_Claim_Tokens.png
new file mode 100644
index 0000000000000000000000000000000000000000..94ae23f46a4589ffca7e9732bd73cc45ad8f8236
Binary files /dev/null and b/website/static/img/Select_Account_to_Claim_Tokens.png differ
diff --git a/website/static/img/Select_BetaNet_Rewards_Option_Window.png b/website/static/img/Select_BetaNet_Rewards_Option_Window.png
new file mode 100644
index 0000000000000000000000000000000000000000..90719d07ebad303a65817dc0863abeae388e835c
Binary files /dev/null and b/website/static/img/Select_BetaNet_Rewards_Option_Window.png differ
diff --git a/website/static/img/Select_BetaNet_Rewards_Option_Window_-_Account_Not_Valid.png b/website/static/img/Select_BetaNet_Rewards_Option_Window_-_Account_Not_Valid.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2bc7b0319b579d8231482660b74ee5c1c51fbd8
Binary files /dev/null and b/website/static/img/Select_BetaNet_Rewards_Option_Window_-_Account_Not_Valid.png differ
diff --git a/website/static/img/Select_a_Wallet.png b/website/static/img/Select_a_Wallet.png
new file mode 100644
index 0000000000000000000000000000000000000000..843d9d38887ed2343a0b9e34650d8c556417dbfc
Binary files /dev/null and b/website/static/img/Select_a_Wallet.png differ
diff --git a/website/static/img/Send_Funds_Window.png b/website/static/img/Send_Funds_Window.png
new file mode 100644
index 0000000000000000000000000000000000000000..51924f7d6e304fd4a11158098cc00a06676140d5
Binary files /dev/null and b/website/static/img/Send_Funds_Window.png differ
diff --git a/website/static/img/Send_xx.png b/website/static/img/Send_xx.png
new file mode 100644
index 0000000000000000000000000000000000000000..88e4e85e4a2340ce9345e70b735f7a9d3c6983a2
Binary files /dev/null and b/website/static/img/Send_xx.png differ
diff --git a/website/static/img/Simple-architecture.png b/website/static/img/Simple-architecture.png
new file mode 100644
index 0000000000000000000000000000000000000000..994edf16f03b7353672f011ad3d082dc411c09c8
Binary files /dev/null and b/website/static/img/Simple-architecture.png differ
diff --git a/website/static/img/Stashing_xx_coins.gif b/website/static/img/Stashing_xx_coins.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e0b9f389bfa0d0a1dae8e66d8bb5ae4f26994b8c
Binary files /dev/null and b/website/static/img/Stashing_xx_coins.gif differ
diff --git a/website/static/img/StatsIcon.png b/website/static/img/StatsIcon.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc242d11a4cf4f3d8124f9626dae662fb045eff1
Binary files /dev/null and b/website/static/img/StatsIcon.png differ
diff --git a/website/static/img/Straight_Arrow_1.svg b/website/static/img/Straight_Arrow_1.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b7f64dcaaf10f65b7977b7050fe42024c4d04320
--- /dev/null
+++ b/website/static/img/Straight_Arrow_1.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="60px" height="11.967px" viewBox="44.428 50.38 60 11.967" enable-background="new 44.428 50.38 60 11.967"
+	 xml:space="preserve">
+<g>
+	<g>
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="8" x1="53.039" y1="56.363" x2="104.428" y2="56.363"/>
+		<g>
+			<polygon fill="#FFFFFF" points="54.79,62.347 44.428,56.363 54.79,50.38 			"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/website/static/img/Submit_Candidacy_.png b/website/static/img/Submit_Candidacy_.png
new file mode 100644
index 0000000000000000000000000000000000000000..114565f49bfb2fcf17ce5d89e97b3335a510390b
Binary files /dev/null and b/website/static/img/Submit_Candidacy_.png differ
diff --git a/website/static/img/Submit_candidacy.png b/website/static/img/Submit_candidacy.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c5e2f4cf3dd9744ecd9f803b632bd2bbd87c5e2
Binary files /dev/null and b/website/static/img/Submit_candidacy.png differ
diff --git a/website/static/img/System_settings.png b/website/static/img/System_settings.png
new file mode 100644
index 0000000000000000000000000000000000000000..d13dd342570241cbfc2e7c3c9b1757eb858fb0a0
Binary files /dev/null and b/website/static/img/System_settings.png differ
diff --git a/website/static/img/Targets_tab_gif.gif b/website/static/img/Targets_tab_gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..16122a997faa0dbd7eb2a00a8d912e087cb37749
Binary files /dev/null and b/website/static/img/Targets_tab_gif.gif differ
diff --git a/website/static/img/Three_Node_Mix_Network.png b/website/static/img/Three_Node_Mix_Network.png
new file mode 100644
index 0000000000000000000000000000000000000000..836ad760a3aab0f22c5496418edc7fa55175ad8f
Binary files /dev/null and b/website/static/img/Three_Node_Mix_Network.png differ
diff --git a/website/static/img/Touchid_confirm.png b/website/static/img/Touchid_confirm.png
new file mode 100644
index 0000000000000000000000000000000000000000..13a2ac2be681e2f895a92e04015e28bbf74f27a4
Binary files /dev/null and b/website/static/img/Touchid_confirm.png differ
diff --git a/website/static/img/Transaction_Action_Notification.png b/website/static/img/Transaction_Action_Notification.png
new file mode 100644
index 0000000000000000000000000000000000000000..0944e1aa724e89993982ff7fd44740a73f7eddd7
Binary files /dev/null and b/website/static/img/Transaction_Action_Notification.png differ
diff --git a/website/static/img/Tx_submission.png b/website/static/img/Tx_submission.png
new file mode 100644
index 0000000000000000000000000000000000000000..5ddc84be730826d16d196c40687f002c7ba2818c
Binary files /dev/null and b/website/static/img/Tx_submission.png differ
diff --git a/website/static/img/Tx_success.png b/website/static/img/Tx_success.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ec40151c6388398bce1d8b8d01c54fce92125aa
Binary files /dev/null and b/website/static/img/Tx_success.png differ
diff --git a/website/static/img/UAP_Dialogue_for_ProtoNet_Wallet_Generator_GUI.png b/website/static/img/UAP_Dialogue_for_ProtoNet_Wallet_Generator_GUI.png
new file mode 100644
index 0000000000000000000000000000000000000000..7bf608cf5617e8b3c5585623128e40e9f3fcaa4d
Binary files /dev/null and b/website/static/img/UAP_Dialogue_for_ProtoNet_Wallet_Generator_GUI.png differ
diff --git a/website/static/img/Unzip_proxxy.png b/website/static/img/Unzip_proxxy.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad19cc30e321dfc49859ebd9e0eff6e782b13054
Binary files /dev/null and b/website/static/img/Unzip_proxxy.png differ
diff --git a/website/static/img/Updated-signed-statement-example-output.png b/website/static/img/Updated-signed-statement-example-output.png
new file mode 100644
index 0000000000000000000000000000000000000000..50e18f0a118b1e2b4bc807291520e3662780653f
Binary files /dev/null and b/website/static/img/Updated-signed-statement-example-output.png differ
diff --git a/website/static/img/Validator.png b/website/static/img/Validator.png
new file mode 100644
index 0000000000000000000000000000000000000000..0da0d8061cdfc7298c20ab744b2b6af7317d9138
Binary files /dev/null and b/website/static/img/Validator.png differ
diff --git a/website/static/img/ValidatorBadCommission.png b/website/static/img/ValidatorBadCommission.png
new file mode 100644
index 0000000000000000000000000000000000000000..7419310097c6b79e3be5189437d67f1a35f7da3e
Binary files /dev/null and b/website/static/img/ValidatorBadCommission.png differ
diff --git a/website/static/img/ValidatorConfirm.png b/website/static/img/ValidatorConfirm.png
new file mode 100644
index 0000000000000000000000000000000000000000..86a64adbbc1caa163e2f9ef7accf28d0a3a0efe8
Binary files /dev/null and b/website/static/img/ValidatorConfirm.png differ
diff --git a/website/static/img/ValidatorFINAL.png b/website/static/img/ValidatorFINAL.png
new file mode 100644
index 0000000000000000000000000000000000000000..a712ed4eabda497a807c644f774137ab5db2049c
Binary files /dev/null and b/website/static/img/ValidatorFINAL.png differ
diff --git a/website/static/img/Validatoro.png b/website/static/img/Validatoro.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd769584cc5bc76bb4702e933207cfe06a14dbd0
Binary files /dev/null and b/website/static/img/Validatoro.png differ
diff --git a/website/static/img/Verify_Connection.png b/website/static/img/Verify_Connection.png
new file mode 100644
index 0000000000000000000000000000000000000000..264d22eff4d56a2e7057d5222615f610fa5bb439
Binary files /dev/null and b/website/static/img/Verify_Connection.png differ
diff --git a/website/static/img/Verify_Connection_1.png b/website/static/img/Verify_Connection_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..4bf3e228f76cc00284979aa965c2aedd41aa23eb
Binary files /dev/null and b/website/static/img/Verify_Connection_1.png differ
diff --git a/website/static/img/Verify_Connection_2.png b/website/static/img/Verify_Connection_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..93b8a552910826e22d493113bc51d69c52224f0d
Binary files /dev/null and b/website/static/img/Verify_Connection_2.png differ
diff --git a/website/static/img/Waiting_Validators.png b/website/static/img/Waiting_Validators.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf6540a8fec5866c01454e756acf47df32932df1
Binary files /dev/null and b/website/static/img/Waiting_Validators.png differ
diff --git a/website/static/img/Wallet_Generator_GUI.png b/website/static/img/Wallet_Generator_GUI.png
new file mode 100644
index 0000000000000000000000000000000000000000..487076584e678d255d609b21cb4e66eb18c31e19
Binary files /dev/null and b/website/static/img/Wallet_Generator_GUI.png differ
diff --git a/website/static/img/Wiki-chart-02-compressed.png b/website/static/img/Wiki-chart-02-compressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..058d27be3fd469820591c20f4ca2daab3ed58850
Binary files /dev/null and b/website/static/img/Wiki-chart-02-compressed.png differ
diff --git a/website/static/img/Windows_SmartScreen_Window_More_Info_Link.png b/website/static/img/Windows_SmartScreen_Window_More_Info_Link.png
new file mode 100644
index 0000000000000000000000000000000000000000..f14e448a7c2509e91b603493719234c3d7d3b851
Binary files /dev/null and b/website/static/img/Windows_SmartScreen_Window_More_Info_Link.png differ
diff --git a/website/static/img/Windows_SmartScreen_Window_Run_Anyway_Button.png b/website/static/img/Windows_SmartScreen_Window_Run_Anyway_Button.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d6e7e75e128226f687ca4786186f49ca248623c
Binary files /dev/null and b/website/static/img/Windows_SmartScreen_Window_Run_Anyway_Button.png differ
diff --git a/website/static/img/Windows_SmartScreen_Window_Run_Anyway_Button_for_Wallet_Generator_GUI_Tool.png b/website/static/img/Windows_SmartScreen_Window_Run_Anyway_Button_for_Wallet_Generator_GUI_Tool.png
new file mode 100644
index 0000000000000000000000000000000000000000..f68c95e8ec902c5ab840617d23bdef05678c114f
Binary files /dev/null and b/website/static/img/Windows_SmartScreen_Window_Run_Anyway_Button_for_Wallet_Generator_GUI_Tool.png differ
diff --git a/website/static/img/Xx_network_Explorer-_Account_Page.png b/website/static/img/Xx_network_Explorer-_Account_Page.png
new file mode 100644
index 0000000000000000000000000000000000000000..f39c9051713132215f2f9ea4c6f77c1019e355e7
Binary files /dev/null and b/website/static/img/Xx_network_Explorer-_Account_Page.png differ
diff --git a/website/static/img/Xx_network_Logo.svg b/website/static/img/Xx_network_Logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..cdf6f364c4370b9181f618c3271473568d7c3635
--- /dev/null
+++ b/website/static/img/Xx_network_Logo.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="560.378px" height="107.773px" viewBox="25.811 342.129 560.378 107.773"
+	 enable-background="new 25.811 342.129 560.378 107.773" xml:space="preserve">
+<title>xxnetwork_LogoCombo</title>
+<path fill="#46B9CA" d="M98.777,363.61c2.508,5.473,3.807,11.422,3.81,17.442c0,0.199,0,0.383,0,0.582l20.227-17.962v-21.42
+	L98.777,363.61z"/>
+<path fill="#46B9CA" d="M96.176,381.052c0-21.42-19.156-38.801-42.687-38.801v16.019c14.367,0,26.01,9.762,26.622,21.94
+	l-10.894,9.669c2.953,5.092,4.804,10.748,5.432,16.601l9.715-8.629c6.9,13.02,21.558,22.017,38.479,22.017v-16.02
+	C108.141,403.849,96.176,393.628,96.176,381.052z"/>
+<path fill="#46B9CA" d="M95.151,449.765v-16.02c-14.704,0-26.668-10.235-26.668-22.797c0-21.42-19.141-38.816-42.672-38.816v16.02
+	c12.485,0,22.95,7.39,25.842,17.319l-5.615,5.003l-11.659,10.358l0,0l-8.568,7.649v21.421l29.146-25.888
+	C60.848,438.993,76.638,449.765,95.151,449.765z"/>
+<path d="M198.242,387.814v32.054H185.13v-30.386c0-9.945-4.926-14.765-13.311-14.765c-9.333,0-15.606,5.646-15.606,16.83v28.32
+	h-13.082V363.87h12.47v7.237c4.284-5.141,11.092-7.864,19.263-7.864C188.282,363.289,198.242,370.938,198.242,387.814z"/>
+<path d="M263.619,396.092h-43.911c1.53,8.17,8.384,13.402,18.13,13.402c5.705,0.217,11.231-2.009,15.193-6.119l7.023,8.063
+	c-5.034,5.982-12.898,9.18-22.537,9.18c-18.742,0-30.906-12.056-30.906-28.702s12.24-28.611,28.917-28.611
+	c16.355,0,28.29,11.429,28.29,28.917C263.818,393.261,263.711,394.822,263.619,396.092z M219.601,387.386h31.748
+	c-0.878-7.99-7.789-13.938-15.82-13.617C227.487,373.48,220.565,379.398,219.601,387.386z"/>
+<path d="M310.023,416.823c-3.664,2.604-8.083,3.932-12.576,3.779c-12.24,0-19.278-6.503-19.278-18.865V374.81h-9.18v-10.465h9.18
+	V351.63h13.097v12.791h14.979v10.465h-14.979v26.622c0,5.447,2.723,8.385,7.757,8.385c2.633,0.074,5.214-0.74,7.328-2.311
+	L310.023,416.823z"/>
+<path d="M411.233,363.87l-20.64,55.998h-12.576l-14.459-38.556l-14.719,38.556h-12.562l-20.486-55.998h12.362l14.765,41.31
+	l15.407-41.31h11l15.086,41.493l15.193-41.493H411.233z"/>
+<path d="M414.063,391.899c0-16.83,12.562-28.611,29.743-28.611c17.183,0,29.866,11.842,29.866,28.611s-12.47,28.703-29.866,28.703
+	C426.411,420.603,414.063,408.653,414.063,391.899z M460.469,391.899c0-10.71-7.114-17.503-16.662-17.503
+	c-9.547,0-16.555,6.809-16.555,17.503c0,10.695,7.13,17.488,16.555,17.488s16.724-6.809,16.724-17.488H460.469z"/>
+<path d="M516.528,363.289v12.47c-1.009-0.199-2.033-0.301-3.061-0.306c-9.944,0-16.233,5.86-16.233,17.273v27.143h-13.097V363.87
+	h12.47v8.17C500.387,366.226,507.195,363.289,516.528,363.289z"/>
+<path d="M550.892,395.877l-9.746,9.18v14.78h-13.097v-77.709h13.097v46.94l27.127-25.199h15.729l-23.363,23.47l25.552,32.482
+	h-15.912L550.892,395.877z"/>
+</svg>
diff --git a/website/static/img/Xx_network_Logo_messaging_payments_security.JPG.png b/website/static/img/Xx_network_Logo_messaging_payments_security.JPG.png
new file mode 100644
index 0000000000000000000000000000000000000000..11f03ff0c20daf99a47cab6d8e520ec2f1983001
Binary files /dev/null and b/website/static/img/Xx_network_Logo_messaging_payments_security.JPG.png differ
diff --git a/website/static/img/Xx_network_Logo_messaging_payments_security_SVG.svg b/website/static/img/Xx_network_Logo_messaging_payments_security_SVG.svg
new file mode 100644
index 0000000000000000000000000000000000000000..9f27ef8002eb050f62a25c4389b68986537b1797
--- /dev/null
+++ b/website/static/img/Xx_network_Logo_messaging_payments_security_SVG.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 5334 4267" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><circle cx="2666.67" cy="2133.33" r="1596.22"/><g><g><path d="M3008.44,1289.39c34.176,75.027 53.118,157.345 53.118,243.671c0,2.741 0.389,5.4 0.507,8.114l282.559,-251.007l0,-299.421l-336.184,298.643Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M2972.02,1533.06c0,-299.041 -267.57,-542.34 -596.444,-542.34l-0,223.842c200.765,-0 364.524,136.539 371.897,306.648l-152.081,135.101c40.517,70.532 67.022,148.879 75.923,231.966l135.662,-120.501c96.403,181.832 301.167,307.625 537.637,307.625l-0,-223.851c-205.443,0 -372.594,-142.863 -372.594,-318.49" style="fill:#fff;fill-rule:nonzero;"/><path d="M2957.77,2493.11l-0,-223.851c-205.461,0 -372.612,-142.871 -372.612,-318.489c-0,-299.05 -267.57,-542.35 -596.445,-542.35l0,223.851c174.569,-0 321.068,103.287 361.286,242.033l-78.636,69.853l-162.872,144.681l0.009,-0l-119.787,106.398l0,299.43l407.294,-361.801c82.472,209.721 303.112,360.245 561.763,360.245" style="fill:#fff;fill-rule:nonzero;"/></g><g transform="matrix(4.16667,0,0,4.16667,41.7054,10.5159)"><text x="476.025px" y="670.683px" style="font-family:'ArialMT', 'Arial', sans-serif;font-size:64px;fill:#fff;">xx.network</text><text x="371.856px" y="718.683px" style="font-family:'ArialMT', 'Arial', sans-serif;font-size:36px;fill:#fff;">messaging / payments / security</text></g></g></svg>
\ No newline at end of file
diff --git a/website/static/img/Xx_network_Portal,_Accounts,_Add_account.svg b/website/static/img/Xx_network_Portal,_Accounts,_Add_account.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1fd430d8095d0ca49e14173418683052eaebf3cf
--- /dev/null
+++ b/website/static/img/Xx_network_Portal,_Accounts,_Add_account.svg
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="924.704px" height="124px" viewBox="0 0 924.704 124" enable-background="new 0 0 924.704 124" xml:space="preserve">
+<font horiz-adv-x="2048">
+<!-- Segoe is a trademark of the Microsoft group of companies. -->
+<!-- Copyright: Copyright 2021 Adobe System Incorporated. All rights reserved. -->
+<font-face font-family="SegoeUI" units-per-em="2048" underline-position="-178" underline-thickness="119"/>
+<missing-glyph horiz-adv-x="1322" d="M166,0l0,1398l990,0l0,-1398M314,148l694,0l0,1102l-694,0z"/>
+<glyph unicode=" " horiz-adv-x="561"/>
+<glyph unicode="#" horiz-adv-x="1210" d="M1166,1032l-23,-106l-261,0l-63,-300l281,0l-27,-106l-275,0l-88,-397l-126,0l86,397l-250,0l-84,-397l-125,0l84,397l-262,0l20,106l265,0l61,300l-277,0l21,106l277,0l84,402l126,0l-84,-402l252,0l86,402l123,0l-84,-402M758,926l-252,0l-66,-300l254,0z"/>
+<glyph unicode="," horiz-adv-x="444" d="M316,228l-160,-492l-117,0l117,492z"/>
+<glyph unicode="-" horiz-adv-x="819" d="M690,506l-546,0l0,129l546,0z"/>
+<glyph unicode="." horiz-adv-x="444" d="M223,-22C192,-22 166,-11 145,11C123,33 112,59 112,90C112,121 123,147 145,170C166,192 192,203 223,203C254,203 281,192 303,170C325,147 336,121 336,90C336,59 325,33 303,11C281,-11 254,-22 223,-22z"/>
+<glyph unicode="/" horiz-adv-x="798" d="M813,1434l-688,-1672l-153,0l686,1672z"/>
+<glyph unicode="0" horiz-adv-x="1104" d="M1020,723C1020,603 1009,497 988,404C966,311 935,233 894,170C853,106 802,58 743,25C683,-8 615,-25 539,-25C467,-25 403,-9 347,23C290,54 243,100 204,161C165,222 136,296 116,385C96,473 86,574 86,688C86,813 97,924 118,1020C139,1116 169,1197 210,1262C251,1327 301,1376 362,1409C422,1442 491,1458 569,1458C870,1458 1020,1213 1020,723M852,707C852,1115 755,1319 561,1319C356,1319 254,1111 254,696C254,309 354,115 555,115C753,115 852,312 852,707z"/>
+<glyph unicode="1" horiz-adv-x="1104" d="M724,0l-164,0l0,1239C547,1226 529,1212 505,1196C480,1179 453,1163 423,1147C392,1131 360,1116 327,1102C293,1088 260,1077 228,1069l0,166C264,1245 302,1259 343,1276C383,1293 423,1312 462,1333C501,1354 537,1376 572,1399C607,1422 637,1444 662,1466l62,0z"/>
+<glyph unicode="2" horiz-adv-x="1104" d="M772,1058C772,1102 765,1140 752,1173C738,1206 719,1233 696,1255C672,1276 644,1292 612,1303C580,1314 545,1319 508,1319C476,1319 445,1315 414,1306C383,1297 354,1285 325,1270C296,1255 268,1236 241,1215C214,1194 188,1170 165,1144l0,176C211,1365 263,1399 320,1423C377,1446 446,1458 528,1458C587,1458 641,1450 691,1433C741,1416 784,1391 821,1358C858,1325 887,1285 908,1237C929,1189 939,1134 939,1072C939,1015 933,964 920,918C907,872 887,829 861,788C834,747 801,708 761,671C721,634 674,596 620,557C553,509 497,468 454,434C410,400 375,368 350,339C324,309 306,279 296,250C285,220 280,186 280,147l714,0l0,-147l-885,0l0,71C109,132 116,186 129,233C142,280 164,324 195,366C226,408 266,450 316,492C365,534 426,581 498,634C550,671 594,707 629,741C664,775 692,809 713,843C734,877 750,912 759,947C768,982 772,1019 772,1058z"/>
+<glyph unicode="3" horiz-adv-x="1104" d="M953,406C953,341 941,283 917,230C892,177 858,131 814,94C769,56 716,27 654,6C592,-15 524,-25 449,-25C312,-25 204,1 123,53l0,176C220,153 330,115 455,115C505,115 550,121 591,134C631,147 666,165 695,189C724,213 746,242 762,276C777,310 785,348 785,391C785,578 652,672 385,672l-119,0l0,139l113,0C615,811 733,899 733,1075C733,1238 643,1319 463,1319C362,1319 267,1285 178,1217l0,159C269,1431 378,1458 504,1458C564,1458 618,1450 667,1433C716,1416 757,1393 792,1363C827,1333 854,1297 873,1255C892,1213 901,1167 901,1116C901,927 806,806 615,752l0,-4C664,743 709,731 750,713C791,694 827,670 857,641C887,612 911,577 928,538C945,498 953,454 953,406z"/>
+<glyph unicode="4" horiz-adv-x="1104" d="M850,1434l0,-947l184,0l0,-150l-184,0l0,-337l-162,0l0,337l-674,0l0,142C77,550 140,625 204,706C268,786 329,867 388,950C446,1033 500,1115 550,1198C599,1280 641,1359 675,1434M199,487l489,0l0,702C638,1102 591,1024 546,955C501,886 459,824 419,768C378,712 340,661 303,616C266,571 232,528 199,487z"/>
+<glyph unicode="5" horiz-adv-x="1104" d="M969,438C969,368 957,305 933,248C909,191 875,143 831,102C786,61 733,30 670,8C607,-14 538,-25 461,-25C328,-25 229,-5 164,35l0,174C261,146 361,115 463,115C515,115 562,123 604,138C645,153 681,175 710,202C739,229 762,262 778,301C793,340 801,382 801,428C801,521 770,595 707,648C644,701 553,727 434,727C415,727 394,727 373,726C352,725 330,725 309,724C288,723 267,721 247,720C226,719 208,717 191,715l49,719l663,0l0,-148l-521,0l-29,-421C374,866 397,868 421,869C445,870 466,870 485,870C561,870 629,860 689,840C749,820 800,792 842,755C883,718 915,672 937,619C958,565 969,505 969,438z"/>
+<glyph unicode="6" horiz-adv-x="1104" d="M1022,455C1022,385 1011,321 988,262C965,203 934,153 894,110C854,67 806,34 751,11C696,-13 636,-25 571,-25C499,-25 435,-10 378,20C321,50 272,93 233,150C193,206 163,275 142,356C121,437 111,529 111,631C111,756 125,869 153,971C180,1072 220,1159 271,1232C322,1304 383,1360 455,1399C527,1438 607,1458 696,1458C795,1458 874,1444 934,1417l0,-155C860,1300 782,1319 700,1319C636,1319 578,1305 527,1276C476,1247 432,1207 395,1155C358,1102 330,1039 311,965C291,891 281,809 281,718l4,0C351,837 460,897 612,897C675,897 731,886 782,865C832,844 875,814 911,775C946,736 974,689 993,635C1012,581 1022,521 1022,455M854,434C854,484 848,529 835,569C822,609 804,643 781,671C757,699 728,721 693,736C658,751 619,758 575,758C534,758 497,750 462,735C427,720 397,699 372,673C347,646 327,616 313,581C298,546 291,508 291,469C291,420 298,374 312,331C326,288 346,250 371,218C396,186 427,161 462,143C497,124 535,115 578,115C619,115 657,123 691,139C725,154 754,176 778,204C802,232 821,266 834,305C847,344 854,387 854,434z"/>
+<glyph unicode="7" horiz-adv-x="1104" d="M1010,1339C988,1301 962,1254 931,1197C900,1140 867,1077 832,1006C797,935 762,859 726,778C690,697 656,613 625,526C594,439 566,352 543,263C519,174 502,86 491,0l-176,0C327,85 346,173 371,262C396,351 424,438 456,524C487,609 521,692 556,771C591,850 626,923 659,990C692,1057 723,1116 751,1167C778,1218 800,1257 817,1286l-719,0l0,148l912,0z"/>
+<glyph unicode="9" horiz-adv-x="1104" d="M1004,803C1004,672 991,555 965,453C939,350 901,264 851,193C801,122 740,68 668,31C596,-6 514,-25 422,-25C327,-25 244,-8 172,25l0,157C251,137 336,115 426,115C491,115 549,128 600,155C651,182 694,221 729,272C764,323 791,385 810,460C829,535 838,620 838,717l-4,0C773,594 666,532 514,532C453,532 396,543 345,565C294,586 249,617 212,657C175,696 146,743 125,798C104,853 94,913 94,979C94,1050 106,1114 129,1173C152,1232 184,1282 225,1325C266,1367 314,1400 371,1423C427,1446 488,1458 555,1458C627,1458 691,1444 747,1415C802,1386 849,1343 887,1288C925,1232 954,1163 974,1082C994,1001 1004,908 1004,803M827,950C827,1005 820,1056 806,1101C791,1146 771,1185 746,1218C721,1250 691,1275 656,1293C621,1310 582,1319 541,1319C502,1319 465,1311 431,1296C397,1280 368,1258 343,1230C318,1201 298,1168 284,1129C269,1090 262,1047 262,1001C262,950 269,905 283,865C296,825 316,791 341,764C366,736 397,715 433,700C468,685 508,678 551,678C589,678 625,685 659,700C692,714 722,733 747,758C772,782 791,811 806,844C820,877 827,912 827,950z"/>
+<glyph unicode="A" horiz-adv-x="1321" d="M1298,0l-186,0l-152,402l-608,0l-143,-402l-187,0l550,1434l174,0M905,553l-225,611C673,1184 665,1216 658,1260l-4,0C647,1219 640,1187 631,1164l-223,-611z"/>
+<glyph unicode="D" horiz-adv-x="1436" d="M188,0l0,1434l396,0C1089,1434 1342,1201 1342,735C1342,514 1272,336 1132,202C991,67 803,0 568,0M356,1282l0,-1130l214,0C758,152 904,202 1009,303C1114,404 1166,546 1166,731C1166,1098 971,1282 580,1282z"/>
+<glyph unicode="G" horiz-adv-x="1405" d="M1260,98C1116,17 956,-24 780,-24C575,-24 410,42 284,174C157,306 94,481 94,698C94,920 164,1102 305,1245C445,1387 623,1458 838,1458C994,1458 1125,1433 1231,1382l0,-186C1115,1269 978,1306 819,1306C658,1306 527,1251 424,1140C321,1029 270,886 270,710C270,529 318,386 413,283C508,179 638,127 801,127C913,127 1010,149 1092,194l0,402l-314,0l0,152l482,0z"/>
+<glyph unicode="H" horiz-adv-x="1454" d="M1266,0l-168,0l0,654l-742,0l0,-654l-168,0l0,1434l168,0l0,-629l742,0l0,629l168,0z"/>
+<glyph unicode="J" horiz-adv-x="731" d="M555,514C555,344 519,212 447,118C375,23 279,-24 158,-24C102,-24 56,-16 20,0l0,166C56,140 103,127 160,127C311,127 387,255 387,512l0,922l168,0z"/>
+<glyph unicode="M" horiz-adv-x="1839" d="M1650,0l-167,0l0,962C1483,1038 1488,1131 1497,1241l-4,0C1477,1176 1463,1130 1450,1102l-490,-1102l-82,0l-489,1094C375,1126 361,1175 346,1241l-4,0C347,1184 350,1090 350,960l0,-960l-162,0l0,1434l222,0l440,-1000C884,357 906,300 916,262l6,0C951,341 974,399 991,438l449,996l210,0z"/>
+<glyph unicode="N" horiz-adv-x="1532" d="M1344,0l-206,0l-738,1143C381,1172 366,1202 354,1233l-6,0C353,1202 356,1137 356,1036l0,-1036l-168,0l0,1434l218,0l718,-1125C1154,262 1173,230 1182,213l4,0C1179,254 1176,325 1176,424l0,1010l168,0z"/>
+<glyph unicode="O" horiz-adv-x="1544" d="M766,-24C563,-24 400,43 278,177C155,311 94,485 94,700C94,931 156,1115 281,1252C406,1389 575,1458 790,1458C988,1458 1148,1391 1269,1258C1390,1125 1450,950 1450,735C1450,501 1388,316 1264,180C1140,44 974,-24 766,-24M778,1306C627,1306 505,1252 411,1143C317,1034 270,892 270,715C270,538 316,396 408,289C499,181 619,127 766,127C923,127 1047,178 1138,281C1229,384 1274,527 1274,712C1274,901 1230,1048 1142,1151C1054,1254 933,1306 778,1306z"/>
+<glyph unicode="P" horiz-adv-x="1147" d="M356,542l0,-542l-168,0l0,1434l394,0C735,1434 854,1397 939,1322C1023,1247 1065,1142 1065,1006C1065,870 1018,759 925,672C831,585 704,542 545,542M356,1282l0,-588l176,0C648,694 737,721 798,774C859,827 889,901 889,998C889,1187 777,1282 553,1282z"/>
+<glyph unicode="Q" horiz-adv-x="1544" d="M766,-24C563,-24 400,43 277,177C155,311 94,485 94,700C94,931 156,1115 281,1252C406,1389 576,1458 790,1458C987,1458 1147,1391 1268,1258C1389,1125 1450,950 1450,735C1450,501 1388,316 1264,180C1235,147 1203,119 1170,96l403,-289l-305,0l-270,202C927,-13 850,-24 766,-24M778,1306C627,1306 505,1252 411,1143C317,1034 270,892 270,715C270,539 316,397 407,288C499,181 619,127 766,127C923,127 1047,178 1138,281C1229,384 1274,527 1274,712C1274,902 1230,1048 1142,1151C1054,1254 933,1306 778,1306z"/>
+<glyph unicode="R" horiz-adv-x="1225" d="M1216,0l-200,0l-240,402C754,439 733,471 712,498C691,524 670,545 649,562C627,579 604,591 579,599C554,606 525,610 494,610l-138,0l0,-610l-168,0l0,1434l428,0C679,1434 737,1426 790,1411C843,1395 889,1371 928,1339C967,1307 997,1267 1019,1220C1041,1172 1052,1116 1052,1052C1052,1002 1045,956 1030,915C1015,873 993,836 966,803C938,770 905,743 866,720C827,697 783,679 734,666l0,-4C758,651 779,639 797,626C814,612 831,596 847,577C863,558 879,537 895,514C910,490 928,462 947,431M356,1282l0,-520l228,0C626,762 665,768 701,781C736,794 767,812 793,836C819,859 839,888 854,923C869,957 876,995 876,1038C876,1115 851,1175 802,1218C752,1261 680,1282 586,1282z"/>
+<glyph unicode="S" horiz-adv-x="1088" d="M121,58l0,198C144,236 171,218 203,202C234,186 268,173 303,162C338,151 373,142 408,136C443,130 476,127 506,127C609,127 687,146 738,185C789,223 814,278 814,350C814,389 806,422 789,451C772,480 748,506 718,530C688,553 653,576 612,598C571,619 526,642 479,666C429,691 382,717 339,743C296,769 258,798 226,829C194,860 169,896 151,936C132,975 123,1022 123,1075C123,1140 137,1197 166,1246C195,1294 232,1334 279,1365C326,1396 379,1420 439,1435C498,1450 559,1458 621,1458C762,1458 865,1441 930,1407l0,-189C845,1277 737,1306 604,1306C567,1306 531,1302 494,1295C457,1287 425,1274 396,1257C367,1240 344,1217 326,1190C308,1163 299,1129 299,1090C299,1053 306,1022 320,995C333,968 353,944 380,922C407,900 439,879 478,858C516,837 560,815 610,790C661,765 710,738 756,710C802,682 842,651 877,617C912,583 939,545 960,504C980,463 990,415 990,362C990,291 976,232 949,183C921,134 884,94 837,63C790,32 735,10 674,-3C613,-17 548,-24 480,-24C457,-24 429,-22 396,-18C363,-15 329,-9 294,-2C259,5 227,13 196,24C165,34 140,45 121,58z"/>
+<glyph unicode="W" horiz-adv-x="1913" d="M1888,1434l-405,-1434l-197,0l-295,1048C978,1093 971,1141 968,1194l-4,0C960,1145 951,1097 938,1050l-297,-1050l-195,0l-420,1434l185,0l305,-1100C529,288 537,240 540,190l5,0C548,225 559,273 576,334l317,1100l161,0l304,-1108C1369,288 1377,243 1382,192l4,0C1389,227 1398,273 1413,330l293,1104z"/>
+<glyph unicode="a" horiz-adv-x="1042" d="M899,0l-164,0l0,160l-4,0C660,37 555,-24 416,-24C314,-24 234,3 177,57C119,111 90,183 90,272C90,463 203,575 428,606l307,43C735,823 665,910 524,910C401,910 289,868 190,784l0,168C291,1016 407,1048 538,1048C779,1048 899,921 899,666M735,518l-247,-34C412,473 355,455 316,428C277,401 258,353 258,284C258,234 276,193 312,162C347,130 395,114 454,114C535,114 603,143 656,200C709,257 735,329 735,416z"/>
+<glyph unicode="b" horiz-adv-x="1204" d="M334,148l-4,0l0,-148l-164,0l0,1516l164,0l0,-672l4,0C415,980 533,1048 688,1048C819,1048 922,1002 997,911C1071,819 1108,696 1108,542C1108,371 1066,234 983,131C900,28 786,-24 641,-24C506,-24 403,33 334,148M330,561l0,-143C330,333 358,262 413,203C468,144 537,114 622,114C721,114 799,152 856,228C912,304 940,410 940,545C940,659 914,748 861,813C808,878 737,910 647,910C552,910 475,877 417,811C359,744 330,661 330,561z"/>
+<glyph unicode="c" horiz-adv-x="946" d="M864,47C785,0 692,-24 584,-24C438,-24 320,24 231,119C141,214 96,337 96,488C96,657 144,792 241,895C338,997 467,1048 628,1048C718,1048 797,1031 866,998l0,-168C790,883 709,910 622,910C517,910 432,873 365,798C298,723 264,624 264,502C264,382 296,287 359,218C422,149 506,114 612,114C701,114 785,144 864,203z"/>
+<glyph unicode="d" horiz-adv-x="1206" d="M1040,0l-164,0l0,174l-4,0C796,42 679,-24 520,-24C391,-24 289,22 212,114C135,205 96,330 96,488C96,657 139,793 224,895C309,997 423,1048 565,1048C706,1048 808,993 872,882l4,0l0,634l164,0M876,463l0,151C876,697 849,767 794,824C739,881 670,910 586,910C486,910 407,873 350,800C293,727 264,625 264,496C264,378 292,285 347,217C402,148 475,114 568,114C659,114 734,147 791,213C848,279 876,362 876,463z"/>
+<glyph unicode="e" horiz-adv-x="1071" d="M989,471l-723,0C269,357 299,269 358,207C417,145 497,114 600,114C715,114 821,152 918,228l0,-154C828,9 709,-24 561,-24C416,-24 303,23 220,116C137,209 96,339 96,508C96,667 141,797 232,898C322,998 434,1048 568,1048C702,1048 806,1005 879,918C952,831 989,711 989,557M821,610C820,705 798,778 753,831C708,884 645,910 565,910C488,910 422,882 368,827C314,772 281,699 268,610z"/>
+<glyph unicode="g" horiz-adv-x="1206" d="M1040,82C1040,-294 860,-482 500,-482C373,-482 263,-458 168,-410l0,164C283,-310 393,-342 498,-342C750,-342 876,-208 876,60l0,112l-4,0C794,41 677,-24 520,-24C393,-24 290,22 213,113C135,204 96,326 96,479C96,653 138,791 222,894C305,997 420,1048 565,1048C703,1048 805,993 872,882l4,0l0,142l164,0M876,463l0,151C876,695 849,765 794,823C739,881 670,910 588,910C487,910 407,873 350,800C293,726 264,623 264,490C264,376 292,285 347,217C402,148 474,114 565,114C657,114 732,147 790,212C847,277 876,361 876,463z"/>
+<glyph unicode="h" horiz-adv-x="1159" d="M1016,0l-164,0l0,590C852,803 773,910 614,910C534,910 467,879 412,818C357,756 330,677 330,580l0,-580l-164,0l0,1516l164,0l0,-662l4,0C413,983 525,1048 670,1048C901,1048 1016,909 1016,631z"/>
+<glyph unicode="i" horiz-adv-x="496" d="M250,1284C221,1284 196,1294 175,1314C154,1334 144,1359 144,1390C144,1421 154,1446 175,1467C196,1487 221,1497 250,1497C280,1497 306,1487 327,1467C348,1446 358,1421 358,1390C358,1361 348,1336 327,1315C306,1294 280,1284 250,1284M330,0l-164,0l0,1024l164,0z"/>
+<glyph unicode="k" horiz-adv-x="1018" d="M1016,0l-230,0l-452,492l-4,0l0,-492l-164,0l0,1516l164,0l0,-961l4,0l430,469l215,0l-475,-494z"/>
+<glyph unicode="l" horiz-adv-x="496" d="M330,0l-164,0l0,1516l164,0z"/>
+<glyph unicode="n" horiz-adv-x="1159" d="M1016,0l-164,0l0,584C852,801 773,910 614,910C532,910 464,879 411,818C357,756 330,678 330,584l0,-584l-164,0l0,1024l164,0l0,-170l4,0C411,983 523,1048 670,1048C782,1048 868,1012 927,940C986,867 1016,763 1016,626z"/>
+<glyph unicode="o" horiz-adv-x="1200" d="M594,-24C443,-24 322,24 232,120C141,215 96,342 96,500C96,672 143,806 237,903C331,1000 458,1048 618,1048C771,1048 890,1001 976,907C1061,813 1104,683 1104,516C1104,353 1058,222 966,124C873,25 749,-24 594,-24M606,910C501,910 417,874 356,803C295,731 264,632 264,506C264,385 295,289 357,219C419,149 502,114 606,114C712,114 794,148 851,217C908,286 936,383 936,510C936,638 908,737 851,806C794,875 712,910 606,910z"/>
+<glyph unicode="p" horiz-adv-x="1204" d="M334,148l-4,0l0,-619l-164,0l0,1495l164,0l0,-180l4,0C415,980 533,1048 688,1048C820,1048 923,1002 997,911C1071,819 1108,696 1108,542C1108,371 1066,234 983,131C900,28 786,-24 641,-24C508,-24 406,33 334,148M330,561l0,-143C330,333 358,262 413,203C468,144 537,114 622,114C721,114 799,152 856,228C912,304 940,410 940,545C940,659 914,748 861,813C808,878 737,910 647,910C552,910 475,877 417,811C359,744 330,661 330,561z"/>
+<glyph unicode="r" horiz-adv-x="712" d="M700,858C671,880 630,891 576,891C506,891 448,858 401,792C354,726 330,636 330,522l0,-522l-164,0l0,1024l164,0l0,-211l4,0C357,885 393,941 441,982C489,1022 543,1042 602,1042C645,1042 677,1037 700,1028z"/>
+<glyph unicode="s" horiz-adv-x="869" d="M104,37l0,176C193,147 292,114 399,114C543,114 615,162 615,258C615,285 609,309 597,328C584,347 568,363 547,378C526,393 501,406 473,418C444,429 414,441 381,454C336,472 296,490 262,509C227,527 199,548 176,571C153,594 135,620 124,649C112,678 106,713 106,752C106,800 117,843 139,880C161,917 190,948 227,973C264,998 306,1016 353,1029C400,1042 448,1048 498,1048C587,1048 666,1033 736,1002l0,-166C661,885 574,910 476,910C445,910 418,907 393,900C368,893 347,883 330,870C312,857 298,842 289,825C279,807 274,787 274,766C274,739 279,717 289,699C298,681 312,665 331,651C350,637 372,624 399,613C426,602 456,589 490,576C535,559 576,541 612,523C648,504 679,484 704,461C729,438 749,411 763,381C776,351 783,315 783,274C783,223 772,179 750,142C727,105 697,74 660,49C623,24 580,6 531,-6C482,-18 431,-24 378,-24C273,-24 181,-4 104,37z"/>
+<glyph unicode="t" horiz-adv-x="694" d="M641,10C602,-11 551,-22 488,-22C309,-22 219,78 219,278l0,606l-176,0l0,140l176,0l0,250l164,53l0,-303l258,0l0,-140l-258,0l0,-577C383,238 395,189 418,160C441,131 480,116 534,116C575,116 611,127 641,150z"/>
+<glyph unicode="u" horiz-adv-x="1159" d="M994,0l-164,0l0,162l-4,0C758,38 653,-24 510,-24C266,-24 144,121 144,412l0,612l163,0l0,-586C307,222 390,114 555,114C635,114 701,144 753,203C804,262 830,339 830,434l0,590l164,0z"/>
+<glyph unicode="v" horiz-adv-x="981" d="M971,1024l-408,-1024l-161,0l-388,1024l180,0l260,-744C473,225 485,178 490,137l4,0C501,188 511,235 526,276l272,748z"/>
+<glyph unicode="w" horiz-adv-x="1480" d="M1456,1024l-307,-1024l-170,0l-211,733C760,761 755,793 752,828l-4,0C746,804 739,773 727,735l-229,-735l-164,0l-310,1024l172,0l212,-770C415,231 419,200 422,162l8,0C432,191 438,223 448,256l236,768l150,0l212,-772C1053,227 1058,197 1061,160l8,0C1070,186 1076,217 1086,252l208,772z"/>
+<glyph unicode="x" horiz-adv-x="940" d="M914,1024l-344,-518l338,-506l-191,0l-201,332C503,353 488,379 471,410l-4,0C464,404 448,378 420,332l-205,-332l-189,0l349,502l-334,522l191,0l198,-350C445,648 459,621 473,594l4,0l256,430z"/>
+<glyph unicode="y" horiz-adv-x="991" d="M981,1024l-471,-1188C426,-376 308,-482 156,-482C113,-482 78,-478 49,-469l0,147C84,-334 117,-340 146,-340C229,-340 291,-291 332,-192l82,194l-400,1022l182,0l277,-788C476,226 483,200 494,158l6,0C503,174 510,199 520,234l291,790z"/>
+<glyph unicode="&#xA0;" horiz-adv-x="561"/>
+</font>
+
+	<rect fill="#F5F3F1" width="924.704" height="124"/>
+<rect x="-0.046" y="36.75" fill="#FFFFFF" width="924.75" height="35.25"/>
+<rect x="-0.046" y="71.25" fill="#F1EFED" width="924.75" height="0.75"/>
+<g>
+	<defs>
+		<rect id="SVGID_1_" x="104.204" y="36.75" width="12.75" height="35.25"/>
+	</defs>
+	<clipPath id="SVGID_2_">
+		<use xlink:href="#SVGID_1_"  overflow="visible"/>
+	</clipPath>
+	<polyline clip-path="url(#SVGID_2_)" fill="none" stroke="#037281" stroke-width="0.5423" points="106.512,37.292 114.646,54.375 
+		106.512,71.458 	"/>
+</g>
+<text transform="matrix(1 0 0 1 147.1294 58.4995)" fill="#4E4E4E" font-family="'SegoeUI'" font-size="10.5">My accounts</text>
+<rect x="159.722" y="71.25" fill="#037281" width="33" height="1.5"/>
+<g>
+	<g>
+		<circle fill="#037281" cx="528.704" cy="102.75" r="10.5"/>
+		<path opacity="0.8745" fill="#FFFDFB" d="M532.642,101.766h-2.953v-2.953c0-0.362-0.295-0.656-0.656-0.656h-0.656
+			c-0.363,0-0.656,0.294-0.656,0.656v2.953h-2.953c-0.363,0-0.656,0.294-0.656,0.656v0.656c0,0.363,0.293,0.656,0.656,0.656h2.953
+			v2.953c0,0.363,0.293,0.656,0.656,0.656h0.656c0.361,0,0.656-0.293,0.656-0.656v-2.953h2.953c0.361,0,0.656-0.293,0.656-0.656
+			v-0.656C533.298,102.06,533.003,101.766,532.642,101.766z"/>
+	</g>
+	<text transform="matrix(1 0 0 1 543.6094 106.4995)" fill="#4E4E4E" font-family="'SegoeUI'" font-size="10.5">Add account</text>
+</g>
+<text transform="matrix(1 0 0 1 650.8242 106.4995)" fill="#4E4E4E" font-family="'SegoeUI'" font-size="10.5">R</text>
+<rect x="-0.046" fill="#037281" width="924.75" height="36.75"/>
+<g>
+	<text transform="matrix(1 0 0 1 15.7739 15.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="7.875">p</text>
+	<text transform="matrix(1 0 0 1 20.3247 15.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="7.875">h</text>
+	<text transform="matrix(1 0 0 1 24.7026 15.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="7.875">o</text>
+	<text transform="matrix(1 0 0 1 29.2383 15.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="7.875">e</text>
+	<text transform="matrix(1 0 0 1 33.2778 15.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="7.875">n</text>
+	<text transform="matrix(1 0 0 1 37.6553 15.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="7.875">i</text>
+	<text transform="matrix(1 0 0 1 39.4839 15.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="7.875">x</text>
+	<text transform="matrix(1 0 0 1 43.0195 15.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="7.875">x</text>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 46.5474 15.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="7.875">/</text>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 49.5356 15.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="7.875">1</text>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 20.6372 26.9995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45">#</text>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 26.2153 26.9995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45">1</text>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 31.3013 26.9995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45">4</text>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 36.3989 26.9995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45">,</text>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 38.438 26.9995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45">7</text>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 43.5239 26.9995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45">6</text>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 48.6099 26.9995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45">4</text>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 882.457 12.7495)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45"> </text>
+</g>
+<polygon fill="#FF0000" points="486.196,119.25 486.196,111.25 461.196,111.25 461.196,94.25 486.196,94.25 486.196,86.25 
+	508.196,102.75 "/>
+<g>
+	<text transform="matrix(1 0 0 1 656.7969 106.4995)" fill="#4E4E4E" font-family="'SegoeUI'" font-size="10.5">estore JSON</text>
+	<g>
+		<circle fill="#037281" cx="635.954" cy="102.75" r="10.5"/>
+		<path opacity="0.8745" fill="#FFFDFB" d="M639.741,97.758l0.082,1.697c-0.965-1.138-2.381-1.793-3.873-1.791
+			c-2.483,0-4.551,1.783-4.994,4.139c-0.024,0.134,0.063,0.262,0.197,0.287c0.015,0.002,0.03,0.004,0.045,0.004h1.006
+			c0.114,0,0.213-0.079,0.239-0.19c0.467-1.937,2.415-3.129,4.353-2.662c0.878,0.211,1.645,0.745,2.148,1.495l-2.081-0.1
+			c-0.136-0.006-0.251,0.099-0.257,0.234c0,0.004-0.001,0.008-0.001,0.012v0.973c0,0.136,0.11,0.246,0.246,0.246h4.106
+			c0.136,0,0.246-0.11,0.246-0.246v-4.109c0-0.136-0.11-0.246-0.246-0.246h-0.972c-0.136,0-0.246,0.11-0.246,0.246
+			C639.74,97.75,639.741,97.754,639.741,97.758z M635.95,106.359c-1.201,0.001-2.324-0.598-2.994-1.596l2.088,0.1
+			c0.136,0.006,0.251-0.098,0.258-0.234c0-0.004,0-0.008,0-0.012v-0.972c0-0.136-0.11-0.246-0.246-0.246h-4.105
+			c-0.136,0-0.246,0.11-0.246,0.246v4.108c0,0.136,0.11,0.246,0.246,0.246h0.971c0.137,0,0.246-0.11,0.247-0.246
+			c0-0.004,0-0.009-0.001-0.013l-0.085-1.693c0.965,1.135,2.379,1.789,3.868,1.788c2.484,0,4.552-1.783,4.995-4.139
+			c0.024-0.134-0.063-0.262-0.197-0.287c-0.015-0.002-0.029-0.004-0.045-0.004h-1.006c-0.114,0-0.213,0.079-0.239,0.19
+			C639.068,105.217,637.618,106.36,635.95,106.359z"/>
+	</g>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 762.1289 106.4995)" fill="#4E4E4E" font-family="'SegoeUI'" font-size="10.5">Add via Qr</text>
+	<g>
+		<circle fill="#037281" cx="746.954" cy="102.75" r="10.5"/>
+		<path opacity="0.8745" fill="#FFFDFB" d="M742.36,102.094h3.938v-3.938h-3.938V102.094z M743.673,99.469h1.313v1.313h-1.313
+			V99.469z M747.61,98.156v3.938h3.938v-3.938H747.61z M750.235,100.781h-1.313v-1.313h1.313V100.781z M742.36,107.344h3.938v-3.938
+			h-3.938V107.344z M743.673,104.719h1.313v1.313h-1.313V104.719z M750.892,103.406h0.656v2.625h-1.969v-0.656h-0.656v1.969h-1.313
+			v-3.938h1.969v0.656h1.313V103.406z M750.892,106.688h0.656v0.656h-0.656V106.688z M749.579,106.688h0.656v0.656h-0.656V106.688z"
+			/>
+	</g>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 860.0625 106.4995)" fill="#BCBBBA" font-family="'SegoeUI'" font-size="10.5">Proxied</text>
+	<path fill="#BCBBBA" d="M849.142,101.766h-2.953v-2.953c0-0.362-0.295-0.656-0.656-0.656h-0.656c-0.363,0-0.656,0.294-0.656,0.656
+		v2.953h-2.953c-0.363,0-0.656,0.294-0.656,0.656v0.656c0,0.363,0.293,0.656,0.656,0.656h2.953v2.953
+		c0,0.363,0.293,0.656,0.656,0.656h0.656c0.361,0,0.656-0.293,0.656-0.656v-2.953h2.953c0.361,0,0.656-0.293,0.656-0.656v-0.656
+		C849.798,102.06,849.503,101.766,849.142,101.766z"/>
+</g>
+<g>
+	<path fill="#4E4E4E" d="M898.454,44.578c-5.618,0-10.172,4.554-10.172,10.172s4.554,10.172,10.172,10.172
+		s10.172-4.554,10.172-10.172S904.072,44.578,898.454,44.578z M898.454,61.887c-1.043,0-1.887-0.845-1.887-1.887
+		s0.844-1.887,1.887-1.887c1.042,0,1.887,0.845,1.887,1.887S899.496,61.887,898.454,61.887z M900.095,56.5v0.055
+		c0,0.272-0.22,0.492-0.493,0.492h-2.296c-0.272,0-0.492-0.22-0.492-0.492v-0.164c0-1.684,1.276-2.357,2.241-2.898
+		c0.828-0.464,1.335-0.779,1.335-1.394c0-0.812-1.037-1.352-1.875-1.352c-1.115,0-1.617,0.539-2.35,1.468
+		c-0.166,0.21-0.471,0.249-0.685,0.087l-1.422-1.08c-0.208-0.158-0.257-0.45-0.111-0.667c1.119-1.674,2.545-2.615,4.779-2.615
+		c2.313,0,4.779,1.805,4.779,4.184C903.506,55.284,900.095,55.333,900.095,56.5z"/>
+</g>
+<g>
+	<g>
+		<text transform="matrix(1 0 0 1 692.4609 22.4995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="10.5">Wiki</text>
+	</g>
+	<path opacity="0.8745" fill="#FFFDFB" d="M686.954,20.133v-6.891c0-0.272-0.215-0.492-0.482-0.492h-6.589
+		c-1.064,0-1.929,0.882-1.929,1.969v6.562c0,1.087,0.864,1.969,1.929,1.969h6.589c0.268,0,0.482-0.219,0.482-0.492V22.43
+		c0-0.153-0.07-0.293-0.179-0.383c-0.084-0.316-0.084-1.216,0-1.532C686.884,20.426,686.954,20.287,686.954,20.133L686.954,20.133z
+		 M680.525,15.498c0-0.067,0.055-0.123,0.121-0.123h4.259c0.066,0,0.12,0.056,0.12,0.123v0.411c0,0.067-0.054,0.123-0.12,0.123
+		h-4.259c-0.066,0-0.121-0.056-0.121-0.123V15.498z M680.525,16.811c0-0.068,0.055-0.123,0.121-0.123h4.259
+		c0.066,0,0.12,0.055,0.12,0.123v0.41c0,0.068-0.054,0.124-0.12,0.124h-4.259c-0.066,0-0.121-0.056-0.121-0.124V16.811z
+		 M685.616,21.938h-5.733c-0.355,0-0.643-0.293-0.643-0.657c0-0.361,0.289-0.656,0.643-0.656h5.733
+		C685.578,20.976,685.578,21.587,685.616,21.938z"/>
+</g>
+<g opacity="0.87">
+	<text transform="matrix(1 0 0 1 869.8125 23.2495)" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45">api v5.3.2</text>
+</g>
+<g opacity="0.87">
+	<text transform="matrix(1 0 0 1 812.0273 12.7495)" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45">xxlabs xxnetwork v2.0.0</text>
+</g>
+<g opacity="0.87">
+	<text transform="matrix(1 0 0 1 848.5664 32.9995)" fill="#FFFDFB" font-family="'SegoeUI'" font-size="9.45">apps v0.91.3-3</text>
+</g>
+<g>
+	<g>
+		<text transform="matrix(1 0 0 1 621.7148 22.4995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="10.5">GitHub</text>
+	</g>
+	<path opacity="0.8745" fill="#FFFDFB" d="M616.454,15.703c0-0.906-0.699-1.641-1.563-1.641s-1.563,0.734-1.563,1.641
+		c0,0.747,0.475,1.376,1.123,1.575c-0.012,0.33-0.082,0.584-0.215,0.756c-0.301,0.394-0.963,0.459-1.664,0.527
+		c-0.551,0.053-1.121,0.111-1.588,0.347v-2.953c0.635-0.209,1.094-0.831,1.094-1.565c0-0.906-0.699-1.641-1.563-1.641
+		s-1.563,0.734-1.563,1.641c0,0.734,0.459,1.355,1.094,1.565v4.087c-0.635,0.211-1.094,0.833-1.094,1.567
+		c0,0.906,0.699,1.641,1.563,1.641s1.563-0.734,1.563-1.641c0-0.697-0.414-1.294-1-1.53c0.061-0.107,0.152-0.201,0.291-0.275
+		c0.316-0.168,0.789-0.213,1.291-0.263c0.824-0.08,1.758-0.172,2.309-0.89c0.273-0.357,0.412-0.816,0.422-1.393
+		C616.009,17.038,616.454,16.425,616.454,15.703L616.454,15.703z M610.517,14.063c0.172,0,0.313,0.147,0.313,0.328
+		s-0.141,0.328-0.313,0.328s-0.313-0.147-0.313-0.328S610.345,14.063,610.517,14.063z M610.517,21.938
+		c-0.172,0-0.313-0.147-0.313-0.328s0.141-0.328,0.313-0.328s0.313,0.147,0.313,0.328S610.688,21.938,610.517,21.938z
+		 M614.892,15.375c0.172,0,0.313,0.147,0.313,0.328s-0.141,0.328-0.313,0.328s-0.313-0.147-0.313-0.328
+		S614.72,15.375,614.892,15.375z"/>
+</g>
+<g>
+	<g>
+		<text transform="matrix(1 0 0 1 471.8555 22.4995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="10.5">Settings</text>
+	</g>
+	<path opacity="0.8745" fill="#FFFDFB" d="M463.905,16.667l-0.162,0.293c-0.061,0.109-0.188,0.154-0.301,0.111
+		c-0.236-0.09-0.451-0.219-0.641-0.381c-0.092-0.078-0.115-0.215-0.055-0.322l0.162-0.293c-0.137-0.165-0.244-0.355-0.316-0.562
+		h-0.328c-0.119,0-0.223-0.088-0.242-0.212c-0.041-0.246-0.043-0.504,0-0.76c0.02-0.123,0.123-0.213,0.242-0.213h0.328
+		c0.072-0.208,0.18-0.398,0.316-0.562l-0.162-0.293c-0.061-0.107-0.039-0.244,0.055-0.322c0.189-0.162,0.406-0.291,0.641-0.381
+		c0.113-0.043,0.24,0.002,0.301,0.11l0.162,0.293c0.211-0.039,0.424-0.039,0.633,0l0.162-0.293c0.061-0.108,0.188-0.154,0.301-0.11
+		c0.236,0.09,0.451,0.219,0.641,0.381c0.092,0.078,0.115,0.215,0.055,0.322l-0.162,0.293c0.137,0.164,0.244,0.354,0.316,0.562h0.328
+		c0.119,0,0.223,0.088,0.244,0.211c0.039,0.246,0.041,0.504,0,0.76c-0.021,0.123-0.125,0.214-0.244,0.214h-0.328
+		c-0.072,0.207-0.18,0.397-0.316,0.562l0.162,0.293c0.061,0.106,0.039,0.244-0.055,0.322c-0.189,0.162-0.406,0.291-0.641,0.381
+		c-0.113,0.043-0.24-0.002-0.301-0.111l-0.162-0.293C464.331,16.706,464.116,16.706,463.905,16.667z M463.696,15.461
+		c0.768,0.606,1.643-0.293,1.053-1.083C463.981,13.77,463.106,14.672,463.696,15.461z M461.399,18.617l0.672,0.344
+		c0.201,0.119,0.289,0.372,0.209,0.597c-0.178,0.496-0.525,0.951-0.848,1.349c-0.148,0.182-0.402,0.228-0.604,0.108l-0.58-0.344
+		c-0.32,0.281-0.689,0.504-1.094,0.65v0.689c0,0.238-0.166,0.443-0.393,0.484c-0.49,0.086-1.004,0.091-1.512,0
+		c-0.23-0.041-0.398-0.244-0.398-0.484v-0.689c-0.404-0.147-0.775-0.369-1.094-0.65l-0.58,0.342
+		c-0.199,0.119-0.457,0.074-0.604-0.109c-0.324-0.397-0.664-0.853-0.842-1.347c-0.08-0.224,0.008-0.476,0.209-0.597l0.664-0.344
+		c-0.078-0.429-0.078-0.87,0-1.3l-0.664-0.346c-0.201-0.119-0.291-0.372-0.209-0.595c0.178-0.496,0.518-0.951,0.842-1.349
+		c0.146-0.182,0.402-0.228,0.604-0.109l0.58,0.345c0.318-0.281,0.689-0.504,1.094-0.65v-0.691c0-0.236,0.162-0.441,0.391-0.482
+		c0.488-0.086,1.006-0.091,1.514-0.002c0.229,0.041,0.398,0.244,0.398,0.484v0.688c0.404,0.148,0.773,0.37,1.094,0.65l0.58-0.345
+		c0.199-0.119,0.455-0.074,0.604,0.109c0.322,0.397,0.66,0.853,0.838,1.349c0.08,0.224,0.002,0.476-0.199,0.597l-0.672,0.344
+		C461.478,17.746,461.478,18.187,461.399,18.617z M459.058,19.05c1.18-1.579-0.572-3.381-2.105-2.167
+		C455.772,18.461,457.522,20.264,459.058,19.05z M463.905,22.796l-0.162,0.293c-0.061,0.109-0.188,0.154-0.301,0.111
+		c-0.236-0.09-0.451-0.219-0.641-0.381c-0.092-0.078-0.115-0.215-0.055-0.322l0.162-0.293c-0.137-0.164-0.244-0.354-0.316-0.562
+		h-0.328c-0.119,0-0.223-0.088-0.242-0.211c-0.041-0.246-0.043-0.504,0-0.761c0.02-0.123,0.123-0.213,0.242-0.213h0.328
+		c0.072-0.208,0.18-0.398,0.316-0.562l-0.162-0.293c-0.061-0.106-0.039-0.244,0.055-0.321c0.189-0.163,0.406-0.292,0.641-0.382
+		c0.113-0.043,0.24,0.002,0.301,0.111l0.162,0.293c0.211-0.039,0.424-0.039,0.633,0l0.162-0.293
+		c0.061-0.109,0.188-0.154,0.301-0.111c0.236,0.09,0.451,0.219,0.641,0.382c0.092,0.078,0.115,0.215,0.055,0.321l-0.162,0.293
+		c0.137,0.164,0.244,0.354,0.316,0.562h0.328c0.119,0,0.223,0.088,0.244,0.211c0.039,0.246,0.041,0.504,0,0.76
+		c-0.021,0.123-0.125,0.213-0.244,0.213h-0.328c-0.072,0.208-0.18,0.398-0.316,0.562l0.162,0.293
+		c0.061,0.107,0.039,0.245-0.055,0.322c-0.189,0.162-0.406,0.291-0.641,0.381c-0.113,0.043-0.24-0.002-0.301-0.111l-0.162-0.293
+		C464.331,22.835,464.116,22.835,463.905,22.796z M463.696,21.588c0.768,0.607,1.643-0.293,1.053-1.083
+		C463.981,19.899,463.106,20.799,463.696,21.588L463.696,21.588z"/>
+</g>
+<g>
+	<g>
+		<text transform="matrix(1 0 0 1 362.7778 22.4995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="10.5">Developer</text>
+	</g>
+	<path opacity="0.8745" fill="#FFFDFB" d="M418.364,16.688h5.428c0.375,0,0.563,0.44,0.297,0.699l-2.712,2.64
+		c-0.165,0.16-0.433,0.16-0.597,0l-2.713-2.64C417.801,17.128,417.989,16.688,418.364,16.688z"/>
+</g>
+<g>
+	<g>
+		<text transform="matrix(1 0 0 1 260.4263 22.4995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="10.5">Governance</text>
+	</g>
+	<path opacity="0.8745" fill="#FFFDFB" d="M323.864,16.688h5.428c0.375,0,0.563,0.44,0.297,0.699l-2.712,2.64
+		c-0.165,0.16-0.433,0.16-0.597,0l-2.713-2.64C323.301,17.128,323.489,16.688,323.864,16.688z"/>
+</g>
+<g>
+	<g>
+		<text transform="matrix(1 0 0 1 173.6606 22.4995)" opacity="0.8745" fill="#FFFDFB" font-family="'SegoeUI'" font-size="10.5">Network</text>
+	</g>
+	<path opacity="0.8745" fill="#FFFDFB" d="M221.864,16.688h5.428c0.375,0,0.563,0.44,0.297,0.699l-2.712,2.64
+		c-0.165,0.16-0.433,0.16-0.597,0l-2.713-2.64C221.301,17.128,221.489,16.688,221.864,16.688z"/>
+</g>
+<g>
+	<path fill="#FFFFFF" d="M69.704,30.375v-24c0-0.348,0.066-0.683,0.2-1.004c0.133-0.322,0.323-0.605,0.569-0.852
+		c0.246-0.247,0.53-0.436,0.852-0.569c0.321-0.133,0.656-0.2,1.004-0.2h80.25c0.348,0,0.683,0.066,1.004,0.2
+		c0.322,0.133,0.605,0.323,0.852,0.569c0.246,0.246,0.436,0.53,0.569,0.852c0.133,0.321,0.2,0.656,0.2,1.004v24
+		c0,0.348-0.066,0.683-0.2,1.004c-0.133,0.322-0.323,0.605-0.569,0.852c-0.246,0.247-0.53,0.436-0.852,0.569
+		c-0.321,0.133-0.656,0.2-1.004,0.2h-80.25c-0.348,0-0.683-0.066-1.004-0.2c-0.322-0.133-0.605-0.323-0.852-0.569
+		c-0.247-0.246-0.436-0.53-0.569-0.852C69.771,31.058,69.704,30.723,69.704,30.375z"/>
+	<text transform="matrix(1 0 0 1 83.8833 22.4995)" fill="#4E4E4E" font-family="'SegoeUI'" font-size="10.5">Accounts</text>
+	<path fill="#4E4E4E" d="M134.864,16.688h5.428c0.375,0,0.563,0.44,0.297,0.699l-2.712,2.64c-0.165,0.16-0.433,0.16-0.597,0
+		l-2.713-2.64C134.301,17.128,134.489,16.688,134.864,16.688z"/>
+</g>
+<g>
+	<text transform="matrix(1 0 0 1 35.1567 58.4995)" fill="#4E4E4E" font-family="'SegoeUI'" font-size="10.5">Accounts</text>
+	<g>
+		<circle fill="#4E4E4E" cx="17.279" cy="52.425" r="1.05"/>
+		<circle fill="#4E4E4E" cx="24.629" cy="52.425" r="1.05"/>
+		<path fill="#4E4E4E" d="M25.154,54h-1.05c-0.289,0-0.549,0.117-0.74,0.305c0.661,0.363,1.13,1.017,1.232,1.795h1.083
+			c0.291,0,0.525-0.235,0.525-0.525V55.05C26.204,54.471,25.733,54,25.154,54z"/>
+		<circle fill="#4E4E4E" cx="20.954" cy="52.163" r="1.837"/>
+		<path fill="#4E4E4E" d="M22.214,54.525h-0.136c-0.341,0.164-0.72,0.263-1.124,0.263s-0.781-0.099-1.124-0.263h-0.136
+			c-1.043,0-1.89,0.847-1.89,1.89v0.473c0,0.435,0.353,0.787,0.788,0.787h4.725c0.435,0,0.788-0.353,0.788-0.787v-0.473
+			C24.104,55.372,23.257,54.525,22.214,54.525z"/>
+		<path fill="#4E4E4E" d="M18.544,54.305C18.354,54.117,18.093,54,17.804,54h-1.05c-0.579,0-1.05,0.471-1.05,1.05v0.525
+			c0,0.29,0.234,0.525,0.525,0.525h1.081C17.414,55.322,17.883,54.668,18.544,54.305L18.544,54.305z"/>
+	</g>
+</g>
+</svg>
diff --git a/website/static/img/cMix.png b/website/static/img/cMix.png
new file mode 100644
index 0000000000000000000000000000000000000000..16c0e16716d3af0dd60125caa25765d06db4bd2d
Binary files /dev/null and b/website/static/img/cMix.png differ
diff --git a/website/static/img/linux+x.png b/website/static/img/linux+x.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4c3074621cdb1ff2efaa9920adcb3840cd219da
Binary files /dev/null and b/website/static/img/linux+x.png differ
diff --git a/website/static/img/on-chain-id-form.png b/website/static/img/on-chain-id-form.png
new file mode 100644
index 0000000000000000000000000000000000000000..9d1b2e4c84e16520cd0a34a86117bd024094fe5b
Binary files /dev/null and b/website/static/img/on-chain-id-form.png differ
diff --git a/website/static/img/rm-formula-01.png b/website/static/img/rm-formula-01.png
new file mode 100644
index 0000000000000000000000000000000000000000..62fdda3bbde0c024ae06d4486fe08937cfc4caba
Binary files /dev/null and b/website/static/img/rm-formula-01.png differ
diff --git a/website/static/img/rm-formula-02.png b/website/static/img/rm-formula-02.png
new file mode 100644
index 0000000000000000000000000000000000000000..305d38c56b51d86ab33469172003e6399037b057
Binary files /dev/null and b/website/static/img/rm-formula-02.png differ
diff --git a/website/static/img/rm-formula-03.png b/website/static/img/rm-formula-03.png
new file mode 100644
index 0000000000000000000000000000000000000000..81f5083b6e412fb7b0b9976292380eaa41067e66
Binary files /dev/null and b/website/static/img/rm-formula-03.png differ
diff --git a/website/static/img/rm-formula-04.png b/website/static/img/rm-formula-04.png
new file mode 100644
index 0000000000000000000000000000000000000000..58afc7d5e6195bf5372dbe4e9b594ff3fa021c45
Binary files /dev/null and b/website/static/img/rm-formula-04.png differ
diff --git a/website/static/img/rm-formula-05.png b/website/static/img/rm-formula-05.png
new file mode 100644
index 0000000000000000000000000000000000000000..1dee6ca427bd2e8228b46eaf21781805e59a1d2e
Binary files /dev/null and b/website/static/img/rm-formula-05.png differ
diff --git a/website/static/img/sleeve-export-json.png b/website/static/img/sleeve-export-json.png
new file mode 100644
index 0000000000000000000000000000000000000000..2af90bf592598a05b391183f0c20c0e27b42e56d
Binary files /dev/null and b/website/static/img/sleeve-export-json.png differ
diff --git a/website/static/img/sleeve-finish.png b/website/static/img/sleeve-finish.png
new file mode 100644
index 0000000000000000000000000000000000000000..8a139a243be2d7c56430d93df2446753b278d0aa
Binary files /dev/null and b/website/static/img/sleeve-finish.png differ
diff --git a/website/static/img/sleeve-gen-mnemonics.png b/website/static/img/sleeve-gen-mnemonics.png
new file mode 100644
index 0000000000000000000000000000000000000000..0290f54cdce3db8dc872560bd02d711edfbf1a50
Binary files /dev/null and b/website/static/img/sleeve-gen-mnemonics.png differ
diff --git a/website/static/img/sleeve-offline.png b/website/static/img/sleeve-offline.png
new file mode 100644
index 0000000000000000000000000000000000000000..01333f7284270b02fa44ca51392a230660d0b9f2
Binary files /dev/null and b/website/static/img/sleeve-offline.png differ
diff --git a/website/static/img/sleeve-online.png b/website/static/img/sleeve-online.png
new file mode 100644
index 0000000000000000000000000000000000000000..b85ef9c42183df2dfcd3e2441cb0669a706742d3
Binary files /dev/null and b/website/static/img/sleeve-online.png differ
diff --git a/website/static/img/sleeve-ver-quant.png b/website/static/img/sleeve-ver-quant.png
new file mode 100644
index 0000000000000000000000000000000000000000..c0f137e64542a4699ad63b3f67cdff429e0e0cb1
Binary files /dev/null and b/website/static/img/sleeve-ver-quant.png differ
diff --git a/website/static/img/sleeve-ver-stan.png b/website/static/img/sleeve-ver-stan.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe729f1f0d20df30b369c0844e8f60bc8832de95
Binary files /dev/null and b/website/static/img/sleeve-ver-stan.png differ
diff --git a/website/static/img/sleeve-welcome.png b/website/static/img/sleeve-welcome.png
new file mode 100644
index 0000000000000000000000000000000000000000..d27fb64d0c0d6ca925c6d01c9233b6531a2d51f0
Binary files /dev/null and b/website/static/img/sleeve-welcome.png differ
diff --git a/website/static/img/three-dot-menu.png b/website/static/img/three-dot-menu.png
new file mode 100644
index 0000000000000000000000000000000000000000..18be43b472419c0358b3f637482a5c9ec5ba455a
Binary files /dev/null and b/website/static/img/three-dot-menu.png differ
diff --git a/website/static/img/ww-gen-finished.png b/website/static/img/ww-gen-finished.png
new file mode 100644
index 0000000000000000000000000000000000000000..cffaaa81bfe08932be2bab5086c32ceb803934d0
Binary files /dev/null and b/website/static/img/ww-gen-finished.png differ
diff --git a/website/static/img/ww-gen-mnemonics-confirmed.png b/website/static/img/ww-gen-mnemonics-confirmed.png
new file mode 100644
index 0000000000000000000000000000000000000000..84c12be4f1cdd432efc9199bf40d599e9e77e956
Binary files /dev/null and b/website/static/img/ww-gen-mnemonics-confirmed.png differ
diff --git a/website/static/img/ww-gen-mnemonics.png b/website/static/img/ww-gen-mnemonics.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0a11081ca15f47dd02dd944cbc5beb24689b585
Binary files /dev/null and b/website/static/img/ww-gen-mnemonics.png differ
diff --git a/website/static/img/ww-gen-offline.png b/website/static/img/ww-gen-offline.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e9ff6bf3f74db359a56893b1466a9349d3c0e27
Binary files /dev/null and b/website/static/img/ww-gen-offline.png differ
diff --git a/website/static/img/ww-gen-online.png b/website/static/img/ww-gen-online.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7f67e8c484fa811168f99def50843e39d572fea
Binary files /dev/null and b/website/static/img/ww-gen-online.png differ
diff --git a/website/static/img/ww-gen-ver-quant.png b/website/static/img/ww-gen-ver-quant.png
new file mode 100644
index 0000000000000000000000000000000000000000..571aa7d455461183ad8bdaf2fef00e99109b490c
Binary files /dev/null and b/website/static/img/ww-gen-ver-quant.png differ
diff --git a/website/static/img/ww-gen-ver-stan.png b/website/static/img/ww-gen-ver-stan.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0cd26f29f53efc79866ecad6809fde0d1a1ce26
Binary files /dev/null and b/website/static/img/ww-gen-ver-stan.png differ
diff --git a/website/static/img/xxchain.png b/website/static/img/xxchain.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c4952b0a226fff1ea2cc268cc93190b55910e43
Binary files /dev/null and b/website/static/img/xxchain.png differ