diff --git a/_layouts/book-page.html b/_layouts/book-page.html
index 97e2f76..811425b 100644
--- a/_layouts/book-page.html
+++ b/_layouts/book-page.html
@@ -1,6 +1,8 @@
---
layout: default
---
+{% include mathjax.html %}
+
diff --git a/better-code/00-preface.md b/better-code/00-preface.md
index cc08323..91c1396 100644
--- a/better-code/00-preface.md
+++ b/better-code/00-preface.md
@@ -2,6 +2,7 @@
title: Preface
layout: book-page
tags: [ better-code ]
+chapter: 0
---
To understand what _better code_ is we first need to understand what _good code_ is. Students are often taught that good code is code that does what the specification says it should. But such an answer begs the question of what is a good specification? Nearly every experienced developer I've met has a snippet of code filed away that has profound beauty - it likely has no corresponding specification and may not even contain a single comment. So what is good code?
diff --git a/better-code/01-types.md b/better-code/01-types.md
index f4e12e0..3616f13 100644
--- a/better-code/01-types.md
+++ b/better-code/01-types.md
@@ -1,13 +1,12 @@
---
title: Types
tagline: No Incomplete Types
-
layout: book-page
tags: [ better-code ]
chapter: 1
---
-The notion of a _type_ is a fundemantal component of programming. Types are created to represent a class of objects. Types can be very general, such as “integer” or very specific such as “index into the collection of documents.”
+The notion of a _type_ is a fundamental component of programming. Types are created to represent a class of objects. Types can be very general, such as “integer” or very specific such as “index into the collection of documents.”
{::comment}This section is referenced by chapter[03]{:/comment}
diff --git a/better-code/02-algorithms.md b/better-code/02-algorithms.md
index fa32cf7..e2e0450 100644
--- a/better-code/02-algorithms.md
+++ b/better-code/02-algorithms.md
@@ -1,9 +1,9 @@
---
title: Algorithms
tagline: No Raw Loops
-
-layout: page
+layout: book-page
tags: [ better-code ]
+chapter: 2
---
Testing 1.2.3...
diff --git a/better-code/03-data-structures.md b/better-code/03-data-structures.md
index e1d269b..234e75f 100644
--- a/better-code/03-data-structures.md
+++ b/better-code/03-data-structures.md
@@ -1,7 +1,6 @@
---
title: Data Structures
tagline: No Incidental Data Structures
-
layout: book-page
tags: [ better-code ]
chapter: 3
diff --git a/better-code/04-runtime-polymorphism.md b/better-code/04-runtime-polymorphism.md
index 24eccd4..1398a95 100644
--- a/better-code/04-runtime-polymorphism.md
+++ b/better-code/04-runtime-polymorphism.md
@@ -1,9 +1,9 @@
---
title: Runtime Polymorphism
tagline: No Public Inheritance
-
-layout: page
+layout: book-page
tags: [ better-code ]
+chapter: 4
---
Object-oriented programming has been one of the paradigms supported by C++ from its invention. The idea of type inheritance and virtual functions were borrowed from Simula[^cpp-history]. Inheritance can represent a subtype or protocol relationship. Although the two are closely related, in this chapter we're primarily concerned with subtype relationships through class inheritance. Protocols are discussed in the next chapter. {::comment}link{:/comment}
diff --git a/better-code/06-relationships.md b/better-code/06-relationships.md
index c1108a9..9727577 100644
--- a/better-code/06-relationships.md
+++ b/better-code/06-relationships.md
@@ -1,9 +1,9 @@
---
title: Relationships
tagline: No Contradictions
-
layout: book-page
tags: [ better-code ]
+chapter: 6
---
### Motivation
diff --git a/better-code/07-epilogue.md b/better-code/07-epilogue.md
index 5eb14b3..3838cf9 100644
--- a/better-code/07-epilogue.md
+++ b/better-code/07-epilogue.md
@@ -1,8 +1,8 @@
---
title: Epilogue
-
-layout: page
+layout: book-page
tags: [ better-code ]
+chapter: 7
---
Testing 1,2,3...