diff --git a/README.md b/README.md
index bb9536a..a989040 100644
--- a/README.md
+++ b/README.md
@@ -194,17 +194,32 @@ For a more detail read the full
 
 # Examples
 
--   [greenlock-express.js/examples/](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples)
-    -   [Express](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/express/)
-    -   [Node's **http2**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http2/)
-    -   [Node's https](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/https/)
-    -   [**WebSockets**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/websockets/)
-    -   [Socket.IO](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/socket.io/)
-    -   [Cluster](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/cluster/)
-    -   [**Wildcards**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/wildcards/) (coming soon)
-    -   [**Localhost**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/localhost/) (coming soon)
-    -   [**CI/CD**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/ci-cd/) (coming soon)
-    -   [HTTP Proxy](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http-proxy/)
+To see all of the examples, just browse [greenlock-express.js/examples/](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples)
+
+|        Example         | Location + Description                                                                                                                     |
+| :--------------------: | :----------------------------------------------------------------------------------------------------------------------------------------- |
+|        Express         | [./examples/express/][ex-express] how to export an express app                                                                             |
+|    Node's **http2**    | [./examples/http2/][ex-http2] how to use Node's built-in http2 server                                                                      |
+|      Node's https      | [./examples/https][ex-https] how to customize the https server                                                                             |
+|     **WebSockets**     | [./examples/websockets/][ex-websockets] how to use `on('upgrade')`                                                                         |
+| Socket.IO | [./examples/socket.io][ex-socketio] how to overcomplicate a persistent connection                                                          |
+|        Cluster         | [./examples/cluster/][ex-cluster] how to use Node's built-in clustering with master and worker processes                                   |
+|     **Wildcards**      | [coming someday][ex-wildcards] (ask to help create this) how to use DNS-01 for wildcard certs                                              |
+|     **Localhost**      | [coming someday][ex-localhost] (ask to help create this) how to use DNS-01 for domains that resolve to private networks, such as 127.0.0.1 |
+|       **CI/CD**        | [coming someday][ex-cicd] (ask to help create this) how to use the `--staging` environment for test deployments                            |
+|       HTTP Proxy       | [examples/http-proxy][ex-http-proxy] how to (reverse) proxy decrypted traffic to another server                                            |
+|           -            | Build your own
Be sure to tell me about it (open an issue)                                                                              |
+
+[ex-express]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/express/
+[ex-http2]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http2/
+[ex-https]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/https2/
+[ex-websockets]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/websockets/
+[ex-socketio]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/socketo.io/
+[ex-cluster]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/cluster/
+[ex-wildcards]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/wildcards/
+[ex-localhost]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/localhost/
+[ex-cicd]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/ci-cd/
+[ex-http-proxy]: https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http-proxy/
 
 # Troubleshooting
 
@@ -257,15 +272,40 @@ See the section on **Custom** callbacks and plugins below.
 -->
 
 -   [Custom Domain Management](https://git.rootprojects.org/root/greenlock-manager-test.js)
-    -   `npx greenlock init --manager ./path-or-npm-name.js --manager-FOO 'set option FOO'`
+    -   edit `server.js` and/or `.greenlockrc` to switch from the default `configDir` manager to your config system or database
+    -   CLI example: `npx greenlock init --manager ./path-or-npm-name.js --manager-FOO 'set option FOO'`
 -   [Custom Key & Cert Storage](https://git.rootprojects.org/root/greenlock-store-test.js)
-    -   `npx greenlock defaults --store greenlock-store-fs --store-base-path ./greenlock.d`
+    -   edit the `defaults` section of `greenlock.d/config.json` to change the certificate store or database
+    -   CLI example: `npx greenlock defaults --store greenlock-store-fs --store-base-path ./greenlock.d`
 -   [Custom ACME HTTP-01 Challenges](https://git.rootprojects.org/root/acme-http-01-test.js)
-    -   `npx greenlock defaults --challenge-http-01 ./you-http-01.js`
-    -   `npx greenlock update --subject example.com --challenge-http-01 acme-http-01-standalone`
+    -   edit the `defaults` section of `greenlock.d/config.json` to change the challenges by hand
+    -   CLI example: `npx greenlock defaults --challenge-http-01 ./you-http-01.js`
 -   [Custom ACME DNS-01 Challenges](https://git.rootprojects.org/root/acme-dns-01-test.js)
-    -   `npx greenlock defaults --challenge-dns-01 acme-dns-01-ovh --challenge-dns-01-token xxxx`
-    -   `npx greenlock update --subject example.com --challenge-dns-01 ./your-dns-01.js`
+    -   edit the `defaults` section of `greenlock.d/config.json` to change the challenges by hand
+    -   CLI example: `npx greenlock defaults --challenge-dns-01 acme-dns-01-ovh --challenge-dns-01-token xxxx`
+    -   Per-site example: `npx greenlock update --subject example.com --challenge-dns-01 ./your-dns-01.js`
+    -   API example:
+        ```js
+        greenlock.sites.set({
+            subject: "example.com",
+            challenges: {
+                "dns-01": {
+                    module: "my-npm-module-name",
+                    foo: "some option",
+                    bar: "some other option"
+                }
+            }
+        });
+        ```
+
+If you're using the default `configDir` management you can edit `greenlock.d/config.json` by hand to change
+which default and per-site modules are used.
+
+You can use the CLI, even if you're using a database, buckets, or your own file storage.
+
+You can also use the API, particularly if you need to set values dynamically per-site or per-user
+rather than using the global defaults. The certificate store and all challenges can be set
+per-site, but most per-site use cases are for DNS-01.
 
 # Ready-made Integrations
 
diff --git a/examples/cluster/server.js b/examples/cluster/server.js
index f15adca..67e02f0 100644
--- a/examples/cluster/server.js
+++ b/examples/cluster/server.js
@@ -16,7 +16,12 @@ require("../../")
         // n-1 cpus, with a minimum of 2
         workers: 4
     })
-    .ready(httpsWorker);
+    // ready is only executed by workers (no-op in master)
+    .ready(httpsWorker)
+    // master is only executed by master (no-op in a worker)
+    .master(function() {
+        console.info("I'm the master");
+    });
 
 function httpsWorker(glx) {
     // WRONG