diff --git a/README.md b/README.md
index b34a26fe..e6220de4 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,53 @@
# The Bitcoin Dev Kit
-The `bdk` libraries aims to be the core building block for Bitcoin wallets of any kind.
+
+
BDK
-The Bitcoin Dev Kit developers are in the process of releasing `v1.0` which is a fundamental
-re-write of how the library works.
+

-See for some background on this project: https://bitcoindevkit.org/blog/road-to-bdk-1/ (ignore the timeline 😁)
+
+ A modern, lightweight, descriptor-based wallet library written in Rust!
+
-For a release timeline see the [`bdk_core_staging`] repo where a lot of the component work is being done. The plan is that everything in the `bdk_core_staging` repo will be moved into the `crates` directory here.
+
+
+
+
+
+
+
+
+
+
+
+
+## About
+
+The `bdk` libraries aims to provide well engineered and reviewed components for Bitcoin based applications.
+It is built upon the excellent [`rust-bitcoin`] and [`rust-miniscript`] crates.
+
+> ⚠ The Bitcoin Dev Kit developers are in the process of releasing a `v1.0` which is a fundamental re-write of how the library works.
+> See for some background on this project: https://bitcoindevkit.org/blog/road-to-bdk-1/ (ignore the timeline 😁)
+> For a release timeline see the [`bdk_core_staging`] repo where a lot of the component work is being done. The plan is that everything in the `bdk_core_staging` repo will be moved into the `crates` directory here.
+
+## Architecture
+
+The project is split up into several crates in the `/crates` directory:
+
+- [`bdk`](./crates/bdk): Contains the central high level `Wallet` type that is built from the low-level mechanisms provided by the other components
+- [`chain`](./crates/chain): Tools for storing and indexing chain data
+- [`file_store`](./crates/file_store): A (experimental) persistence backend for storing chain data in a single file.
+- [`esplora`](./crates/esplora): Extends the [`esplora-client`] crate with methods to fetch chain data from an esplora HTTP server in the form that [`bdk_chain`] and `Wallet` can consume.
+- [`electrum`](./crates/electrum): Extends the [`electrum-client`] crate with methods to fetch chain data from an electrum server in the form that [`bdk_chain`] and `Wallet` can consume.
+
+Fully working examples of how to use these components are in `/example-crates`
[`bdk_core_staging`]: https://github.com/LLFourn/bdk_core_staging
-
-
-
-
-
+[`rust-miniscript`]: https://github.com/rust-bitcoin/rust-miniscript
+[`rust-bitcoin`]: https://github.com/rust-bitcoin/rust-bitcoin
+[`esplora-client`]: https://docs.rs/esplora-client/0.3.0/esplora_client/
diff --git a/crates/bdk/README.md b/crates/bdk/README.md
index 9531f1cd..2eb839d8 100644
--- a/crates/bdk/README.md
+++ b/crates/bdk/README.md
@@ -24,17 +24,25 @@
-## About
+## `bdk`
-The `bdk` library aims to be the core building block for Bitcoin wallets of any kind.
+The `bdk` crate provides the `Wallet` type which provides a high level interface to most of the low level mechanisms included in `bdk`.
+`Wallet` is the appropriate starting point for many simple applications as well as a good demonstration of how to use the other mechanisms to construct a wallet.
+It's simple. It has an external and internal keychain which both defined by two [miniscript descriptors][`rust-miniscript`] and uses them to generate addresses.
+When you give it chain data it also uses the descriptors to find transaction outputs owned by them.
+From there you can create transactions to spend the funds and even sign them
+For more information see [`Wallet`'s documentation](https://docs.rs/bdk/latest/bdk/wallet/struct.Wallet.html).
-* It uses [Miniscript](https://github.com/rust-bitcoin/rust-miniscript) to support descriptors with generalized conditions. This exact same library can be used to build
- single-sig wallets, multisigs, timelocked contracts and more.
-* It supports multiple blockchain backends and databases, allowing developers to choose exactly what's right for their projects.
-* It's built to be cross-platform: the core logic works on desktop, mobile, and even WebAssembly.
-* It's very easy to extend: developers can implement customized logic for blockchain backends, databases, signers, coin selection, and more, without having to fork and modify this library.
+### Chain data
-
+In order to get the chain data for `Wallet` to consume you have to put it into particular form.
+Right now this the [`KeychainScan`] which defined in `bdk_chain`.
+
+This can be created manually or from some of the chain data libraries provided in the `bdk` repo like [`bdk_esplora`] and [`bdk_electrum`].
+
+See [`example-crates`] for examples on how to do this.
+
+TODO: make a short `no_run` example here
@@ -60,7 +68,6 @@ The `bdk` library aims to be the core building block for Bitcoin wallets of any
-
@@ -157,25 +164,14 @@ The `bdk` library aims to be the core building block for Bitcoin wallets of any
cargo test
```
-## Running under WASM
-
-If you want to run this library under WASM you will probably have to add the following lines to you `Cargo.toml`:
-
-```toml
-[dependencies]
-getrandom = { version = "0.2", features = ["js"] }
-```
-
-This enables the `rand` crate to work in environments where JavaScript is available. See [this link](https://docs.rs/getrandom/0.2.8/getrandom/#webassembly-support) to learn more.
-
## License
Licensed under either of
* Apache License, Version 2.0
- ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
+ ([LICENSE-APACHE](LICENSE-APACHE) or