diff --git a/docs/input/colors.md b/docs/input/appendix/colors.md
similarity index 98%
rename from docs/input/colors.md
rename to docs/input/appendix/colors.md
index 6d52ab1..6fc2ca0 100644
--- a/docs/input/colors.md
+++ b/docs/input/appendix/colors.md
@@ -1,5 +1,5 @@
Title: Colors
-Order: 4
+Order: 0
---
The following is a list of the standard 8-bit colors supported in terminals.
diff --git a/docs/input/appendix/index.md b/docs/input/appendix/index.md
new file mode 100644
index 0000000..f7902e6
--- /dev/null
+++ b/docs/input/appendix/index.md
@@ -0,0 +1,3 @@
+Title: Appendix
+Order: 10
+---
\ No newline at end of file
diff --git a/docs/input/appendix/styles.md b/docs/input/appendix/styles.md
new file mode 100644
index 0000000..2e8ce76
--- /dev/null
+++ b/docs/input/appendix/styles.md
@@ -0,0 +1,44 @@
+Title: Styles
+Order: 0
+---
+
+Note that what styles that can be used is defined by the system or your terminal software, and may not appear as they should.
+
+
+
+ bold |
+ Bold text |
+
+
+ dim |
+ Dim or faint text |
+
+
+ italic |
+ Italic text |
+
+
+ underline |
+ Underlined text |
+
+
+ invert |
+ Swaps the foreground and background colors |
+
+
+ conceal |
+ Hides the text |
+
+
+ slowblink |
+ Makes text blink slowly |
+
+
+ rapidblink |
+ Makes text blink |
+
+
+ strikethrough |
+ Shows text with a horizontal line through the center |
+
+
\ No newline at end of file
diff --git a/docs/input/assets/images/table.png b/docs/input/assets/images/table.png
new file mode 100644
index 0000000..7cd8802
Binary files /dev/null and b/docs/input/assets/images/table.png differ
diff --git a/docs/input/markup.md b/docs/input/markup.md
index c32dd6d..acebe0b 100644
--- a/docs/input/markup.md
+++ b/docs/input/markup.md
@@ -1,21 +1,19 @@
Title: Markup
-Order: 3
-Hidden: False
+Order: 2
---
In `Spectre.Console` there's a class called `Markup` that
allows you to output rich text to the console.
+# Syntax
+
+Console markup uses a syntax inspired by bbcode. If you write the style (see Styles)
+in square brackets, e.g. `[bold red]`, that style will apply until it is closed with a `[/]`.
+
```csharp
AnsiConsole.Render(new Markup("[bold yellow]Hello[/] [red]World![/]"));
```
-Which should output something similar to the image below. Note that the
-actual appearance might vary depending on your terminal.
-
-
-
-
The `Markup` class implements `IRenderable` which means that you
can use this in tables, grids, and panels. Most classes that support
rendering of `IRenderable` also have overloads for rendering rich text.
@@ -58,47 +56,8 @@ You can set the background color in markup by prefixing the color with
# Colors
-For a list of colors, see the [Colors](xref:colors) section.
+For a list of colors, see the [Colors](xref:colors) appendix section.
# Styles
-Note that what styles that can be used is defined by the system or your terminal software, and may not appear as they should.
-
-
-
- bold |
- Bold text |
-
-
- dim |
- Dim or faint text |
-
-
- italic |
- Italic text |
-
-
- underline |
- Underlined text |
-
-
- invert |
- Swaps the foreground and background colors |
-
-
- conceal |
- Hides the text |
-
-
- slowblink |
- Makes text blink slowly |
-
-
- rapidblink |
- Makes text blink |
-
-
- strikethrough |
- Shows text with a horizontal line through the center |
-
-
\ No newline at end of file
+For a list of styles, see the [Styles](xref:styles) appendix section.
\ No newline at end of file
diff --git a/docs/input/tables.md b/docs/input/tables.md
new file mode 100644
index 0000000..d0d7a3a
--- /dev/null
+++ b/docs/input/tables.md
@@ -0,0 +1,118 @@
+Title: Tables
+Order: 3
+---
+
+Tables are a perfect way of displaying tabular data in a terminal.
+
+`Spectre.Console` is super smart about rendering tables and will adjust
+all columns to fit whatever is inside them. Anything that implements
+`IRenderable` can be used as a column header or column cell, even another table!
+
+# Usage
+
+
+
+
+
+To render a table, create a `Table` instance, add the number of
+columns that you need, and then add the rows. Finish by passing the
+table to a console's `Render` method.
+
+```csharp
+// Create a table
+var table = new Table();
+
+// Add some columns
+table.AddColumn("Foo");
+table.AddColumn(new TableColumn("Bar").Centered());
+
+// Add some rows
+table.AddRow("Baz", "[green]Qux[/]");
+table.AddRow(new Markup("[blue]Corgi[/]"), new Panel("Waldo"));
+
+// Render the table to the console
+AnsiConsole.Render(table);
+```
+
+This will render the following output:
+
+
+
+# Table appearance
+
+
+
+
+
+## Borders
+
+```csharp
+// Sets the border kind
+table.SetBorderKind(BorderKind.None);
+table.SetBorderKind(BorderKind.Ascii);
+table.SetBorderKind(BorderKind.Square);
+table.SetBorderKind(BorderKind.Rounded);
+```
+
+## Expand / Collapse
+
+```csharp
+// Table will take up as much space as it can
+// with respect to other things.
+table.Expand();
+
+// Table will take up minimal width
+table.Collapse();
+```
+
+## Hide headers
+
+```csharp
+// Hides all column headers
+table.HideHeaders();
+```
+
+## Set table width
+
+```csharp
+// Sets the table width to 50 cells
+table.SetWidth(50);
+```
+
+# Column appearance
+
+
+
+
+
+## Alignment
+
+```csharp
+// Set the alignment explicitly
+column.SetAlignment(Justify.Right);
+```
+
+## Padding
+
+```csharp
+// Set left and right padding
+column.SetPadding(left: 3, right: 5);
+
+// Set padding individually.
+column.PadLeft(3);
+column.PadRight(5);
+```
+
+## Disable column wrapping
+
+```csharp
+// Disable column wrapping
+column.NoWrap();
+```
+
+## Set column width
+
+```csharp
+// Set the column width (no fluent extension method for this yet)
+column.Width = 15;
+```
\ No newline at end of file