diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml
index 9c08f67..0411450 100644
--- a/.github/workflows/audit.yml
+++ b/.github/workflows/audit.yml
@@ -1,4 +1,4 @@
-name: Security audit
+name: Audit
 
 on:
   push:
@@ -17,7 +17,8 @@ permissions:
   contents: read
 
 jobs:
-  security_audit:
+  rust_audit:
+    name: Rust Audit
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v1
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 70b2efb..8eb93b3 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -11,7 +11,7 @@ on:
 
 jobs:
   build_and_test:
-    name: Rust project
+    name: Run Tests 
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v2
@@ -29,4 +29,4 @@ jobs:
         uses: actions-rs/cargo@v1
         with:
           command: test
-          args: --release
\ No newline at end of file
+          args: --all --release
\ No newline at end of file
diff --git a/.github/workflows/clippy.yml b/.github/workflows/clippy.yml
deleted file mode 100644
index 4cb8fdb..0000000
--- a/.github/workflows/clippy.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-name: Clippy check
-
-on:
-  push:
-    paths: 
-      - '.github/workflows/clippy.yml'
-      - '**/Cargo.toml'
-      - '**/*.rs'
-
-permissions:
-    checks: write
-    contents: read
-
-jobs:
-  clippy_check:
-    runs-on: ubuntu-latest
-    steps:
-        - uses: actions/checkout@v1
-        - run: rustup component add clippy
-        - uses: actions-rs/clippy-check@v1
-          with:
-            token: ${{ secrets.GITHUB_TOKEN }}
-            args: --all-features
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 0000000..f1519f2
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,36 @@
+name: Lint
+
+on:
+  push:
+    paths: 
+      - '.github/workflows/lint.yml'
+      - '**/Cargo.toml'
+      - '**/*.rs'
+
+permissions:
+    checks: write
+    contents: read
+
+jobs:
+  clippy:
+    name: Clippy
+    runs-on: ubuntu-latest
+    steps:
+        - uses: actions/checkout@v1
+        - name: Install clippy
+          run: rustup component add clippy
+        - name: Run clippy
+          uses: actions-rs/clippy-check@v1
+          with:
+            token: ${{ secrets.GITHUB_TOKEN }}
+            args: --all-features
+
+  rustfmt:
+    name: rustfmt
+    runs-on: ubuntu-latest
+    steps:
+        - uses: actions/checkout@v1
+        - name: Install rustfmt
+          run: rustup component add rustfmt
+        - name: Check formatting
+          run: cargo fmt --all --check
diff --git a/book.toml b/book.toml
new file mode 100644
index 0000000..9c648e5
--- /dev/null
+++ b/book.toml
@@ -0,0 +1,16 @@
+[book]
+authors = ["Evan Pratten"]
+language = "en"
+multilingual = false
+src = "docs/book"
+title = "Protomask Documentation"
+
+[rust]
+edition = "2021"
+
+[build]
+build-dir = "target/book"
+create-missing = true
+
+[output.html]
+mathjax-support = true
\ No newline at end of file
diff --git a/docs/book/SUMMARY.md b/docs/book/SUMMARY.md
new file mode 100644
index 0000000..7390c82
--- /dev/null
+++ b/docs/book/SUMMARY.md
@@ -0,0 +1,3 @@
+# Summary
+
+- [Chapter 1](./chapter_1.md)
diff --git a/docs/book/chapter_1.md b/docs/book/chapter_1.md
new file mode 100644
index 0000000..b743fda
--- /dev/null
+++ b/docs/book/chapter_1.md
@@ -0,0 +1 @@
+# Chapter 1