diff --git a/README.md b/README.md
index 2d3528b..9e0f26b 100644
--- a/README.md
+++ b/README.md
@@ -24,6 +24,12 @@ Documentation is written as Markdown files in the `content` directory, and is or
We care about the ease of writing documentation. Docbox comes with batteries included: after you `npm install` the project, you can run `npm start` and its development server, [budo](https://github.com/mattdesl/budo), will serve the website locally and update automatically.
+### Requirements
+
+* Node v4 or higher
+* NPM
+* Git
+
To run the site locally:
1. Clone this repository
diff --git a/content/example.md b/content/example.md
index 087ccb6..f3d1163 100644
--- a/content/example.md
+++ b/content/example.md
@@ -55,7 +55,7 @@ wobbles.list()
Creates a new, empty wobble.
```endpoint
-POST /wobbles/v1/{username} wobbles:write
+POST /wobbles/v1/{username}
```
#### Example request
@@ -114,7 +114,7 @@ Property | Description
Returns a single wobble.
```endpoint
-GET /wobbles/v1/{username}/{wobble_id} wobbles:read
+GET /wobbles/v1/{username}/{wobble_id}
```
Retrieve information about an existing wobble.
@@ -156,7 +156,7 @@ client.readWobble('wobble-id',
Updates the properties of a particular wobble.
```endpoint
-PATCH /wobbles/v1/{username}/{wobble_id} wobbles:write
+PATCH /wobbles/v1/{username}/{wobble_id}
```
#### Example request
@@ -217,7 +217,7 @@ Property | Description
Deletes a wobble, including all wibbles it contains.
```endpoint
-DELETE /wobbles/v1/{username}/{wobble_id} wobbles:write
+DELETE /wobbles/v1/{username}/{wobble_id}
```
#### Example request
@@ -250,7 +250,7 @@ List all the wibbles in a wobble. The response body will be a
WobbleCollection.
```endpoint
-GET /wobbles/v1/{username}/{wobble_id}/wibbles wobbles:read
+GET /wobbles/v1/{username}/{wobble_id}/wibbles
```
#### Example request
@@ -304,7 +304,7 @@ with the given ID in the wobble, it will be replaced. If there isn't
a wibble with that ID, a new wibble is created.
```endpoint
-PUT /wobbles/v1/{username}/{wobble_id}/wibbles/{wibble_id} wobbles:write
+PUT /wobbles/v1/{username}/{wobble_id}/wibbles/{wibble_id}
```
#### Example request
@@ -362,7 +362,7 @@ Property | Description
Retrieves a wibble in a wobble.
```endpoint
-GET /wobbles/v1/{username}/{wobble_id}/wibbles/{wibble_id} wobbles:read
+GET /wobbles/v1/{username}/{wobble_id}/wibbles/{wibble_id}
```
#### Example request
@@ -403,7 +403,7 @@ wibble = wobbles.read_wibble(wobble_id, '2').json()
Removes a wibble from a wobble.
```endpoint
-DELETE /wobbles/v1/{username}/{wobble_id}/wibbles/{wibble_id} wobbles:write
+DELETE /wobbles/v1/{username}/{wobble_id}/wibbles/{wibble_id}
```
#### Example request
diff --git a/custom/content.js b/custom/content.js
new file mode 100644
index 0000000..0e4f45b
--- /dev/null
+++ b/custom/content.js
@@ -0,0 +1,16 @@
+var fs = require('fs');
+
+/**
+ * This file exports the content of your website, as a bunch of concatenated
+ * Markdown files. By doing this explicitly, you can control the order
+ * of content without any level of abstraction.
+ *
+ * Using the brfs module, fs.readFileSync calls in this file are translated
+ * into strings of those files' content before the file is delivered to a
+ * browser: the content is read ahead-of-time and included in bundle.js.
+ */
+module.exports =
+ '# Introduction\n' +
+ fs.readFileSync('./content/introduction.md', 'utf8') + '\n' +
+ '# Example\n' +
+ fs.readFileSync('./content/example.md', 'utf8') + '\n';
diff --git a/custom/index.js b/custom/index.js
new file mode 100644
index 0000000..46b3746
--- /dev/null
+++ b/custom/index.js
@@ -0,0 +1,61 @@
+'use strict';
+
+/**
+ * Brand names, in order to decreasing length, for different
+ * media queries.
+ */
+module.exports.brandNames = {
+ desktop: 'Wobble API Documentation',
+ tablet: 'Wobble API Docs',
+ mobile: 'API Docs'
+};
+
+/**
+ * Classes that define the top-left brand box.
+ */
+module.exports.brandClasses = 'fill-red';
+
+
+/**
+ * Text for the link back to the linking website.
+ */
+module.exports.backLink = 'Back to wobbles.com';
+
+/**
+ * Runs after highlighting code samples. You can use this
+ * hook to, for instance, highlight a token and link it
+ * to some canonical part of documentation.
+ */
+module.exports.postHighlight = function(html) {
+ return html;
+};
+
+/**
+ * Highlight tokens in endpoint URLs, optionally linking to documentation
+ * or adding detail. This is the equivalent of postHighlight but it
+ * operates on endpoint URLs only.
+ */
+function highlightTokens(str) {
+ return str.replace(/{[\w_]+}/g,
+ (str) => '' + str + '');
+}
+
+/**
+ * Transform endpoints given as strings in a highlighted block like
+ *
+ * ```endpoint
+ * GET /foo/bar
+ * ```
+ *
+ * Into HTML nodes that format those endpoints in nice ways.
+ */
+module.exports.transformURL = function(value) {
+ let parts = value.split(/\s+/);
+ return {
+ type: 'html',
+ value: `