diff --git a/README.md b/README.md
index 1a40ac0..a57a724 100644
--- a/README.md
+++ b/README.md
@@ -18,31 +18,29 @@ New chapters in **Fluent Python 2e** are marked with 🆕.
This table of contents is subject to change at any time until the book is in print.
-
-Part|Chapter|Chapter Title|Directory|1st ed. Directory
----|---:|---|---|---
-I – Prologue|1|The Python Data Model|[01-data-model](01-data-model)|01-data-model
-II – Data Structures|2|An Array of Sequences|[02-array-seq](02-array-seq)|02-array-seq
- |3|Dictionaries and Sets|[03-dict-set](03-dict-set)|03-dict-set
- |4|Text versus Bytes|[04-text-byte](04-text-byte)|04-text-byte
- |5|Record-like Data Structures 🆕|[05-record-like](05-record-like)|
-III – Functions as Objects|6|First-Class Funcions|[06-1class-func](06-1class-func)|05-1class-func
- |7|Design Patterns with First-Class Functions|[07-dp-1class-func](07-dp-1class-func)|06-dp-1class-func
- |8|Function Decorators and Closures|[08-closure-deco](08-closure-deco)|07-closure-deco
- |9|Type Hints in Function Definitions 🆕|[09-def-type-hints](09-def-type-hints)|
-IV – Object-Oriented Idioms|10|Object References, Mutability, and Recycling|[10-obj-ref](10-obj-ref)|08-obj-ref
- |11|A Pythonic Object|[11-pythonic-obj](11-pythonic-obj)|09-pythonic-obj
- |12|Sequence Hacking, Hashing, and Slicing|[12-seq-hacking](12-seq-hacking)|10-seq-hacking
- |13|Interfaces: From Protocols to ABCs|[13-iface-abc](13-iface-abc)|11-iface-abc
- |14|Inheritance: For Good or For Worse|[14-inheritance](14-inheritance)|12-inheritance
- |15|Type Hints Distilled 🆕|[15-type-hints](15-type-hints)|
- |16|Operator Overloading: Doing It Right|[16-op-overloading](16-op-overloading)|13-op-overloading
-V – Control Flow|17|Iterables, Iterators, and Generators|[17-it-generator](17-it-generator)|14-it-generator
- |18|Context Managers and else Blocks|[18-context-mngr](18-context-mngr)|15-context-mngr
- |19|Native Coroutines|[19-coroutine](19-coroutine)|16-coroutine
- |20|Concurrency with Futures|[20-futures](20-futures)|17-futures
- |21|Concurrency with asyncio|[21-asyncio](21-asyncio)|18-asyncio
-VI – Metaprogramming|22|Dynamic Attributes and Properties|[22-dyn-attr-prop](22-dyn-attr-prop)|19-dyn-attr-prop
- |23|Attribute Descriptors|[23-descriptor](23-descriptor)|20-descriptor
- |24|Class Metapgrogramming|[24-class-metaprog](24-class-metaprog)|21-class-metaprog
-
+Part|Ch. #|Chapter Title|Directory|Notebook|1st ed. Directory
+---|---:|---|---|---|---
+I – Prologue|1|The Python Data Model|[01-data-model](01-data-model)|[data-model.ipynb](01-data-model/data-model.ipynb)|01-data-model
+II – Data Structures|2|An Array of Sequences|[02-array-seq](02-array-seq)|[array-seq.ipynb](02-array-seq/array-seq.ipynb)|02-array-seq
+ |3|Dictionaries and Sets|[03-dict-set](03-dict-set)|[dict-set.ipynb](03-dict-set/dict-set.ipynb)|03-dict-set
+ |4|Text versus Bytes|[04-text-byte](04-text-byte)|[text-byte.ipynb](04-text-byte/text-byte.ipynb)|04-text-byte
+ |5|Record-like Data Structures 🆕|[05-record-like](05-record-like)|[record-like.ipynb](05-record-like/record-like.ipynb)|
+III – Functions as Objects|6|First-Class Funcions|[06-1class-func](06-1class-func)|[1class-func.ipynb](06-1class-func/1class-func.ipynb)|05-1class-func
+ |7|Design Patterns with First-Class Functions|[07-dp-1class-func](07-dp-1class-func)|[dp-1class-func.ipynb](07-dp-1class-func/dp-1class-func.ipynb)|06-dp-1class-func
+ |8|Function Decorators and Closures|[08-closure-deco](08-closure-deco)|[closure-deco.ipynb](08-closure-deco/closure-deco.ipynb)|07-closure-deco
+ |9|Type Hints in Function Definitions 🆕|[09-def-type-hints](09-def-type-hints)|[def-type-hints.ipynb](09-def-type-hints/def-type-hints.ipynb)|
+IV – Object-Oriented Idioms|10|Object References, Mutability, and Recycling|[10-obj-ref](10-obj-ref)|[obj-ref.ipynb](10-obj-ref/obj-ref.ipynb)|08-obj-ref
+ |11|A Pythonic Object|[11-pythonic-obj](11-pythonic-obj)|[pythonic-obj.ipynb](11-pythonic-obj/pythonic-obj.ipynb)|09-pythonic-obj
+ |12|Sequence Hacking, Hashing, and Slicing|[12-seq-hacking](12-seq-hacking)|[seq-hacking.ipynb](12-seq-hacking/seq-hacking.ipynb)|10-seq-hacking
+ |13|Interfaces: From Protocols to ABCs|[13-iface-abc](13-iface-abc)|[iface-abc.ipynb](13-iface-abc/iface-abc.ipynb)|11-iface-abc
+ |14|Inheritance: For Good or For Worse|[14-inheritance](14-inheritance)|[inheritance.ipynb](14-inheritance/inheritance.ipynb)|12-inheritance
+ |15|Type Hints Distilled 🆕|[15-type-hints](15-type-hints)|[type-hints.ipynb](15-type-hints/type-hints.ipynb)|
+ |16|Operator Overloading: Doing It Right|[16-op-overloading](16-op-overloading)|[op-overloading.ipynb](16-op-overloading/op-overloading.ipynb)|13-op-overloading
+V – Control Flow|17|Iterables, Iterators, and Generators|[17-it-generator](17-it-generator)|[it-generator.ipynb](17-it-generator/it-generator.ipynb)|14-it-generator
+ |18|Context Managers and else Blocks|[18-context-mngr](18-context-mngr)|[context-mngr.ipynb](18-context-mngr/context-mngr.ipynb)|15-context-mngr
+ |19|Coroutines|[19-coroutine](19-coroutine)|[coroutine.ipynb](19-coroutine/coroutine.ipynb)|16-coroutine
+ |20|Concurrency with Futures|[20-futures](20-futures)|[futures.ipynb](20-futures/futures.ipynb)|17-futures
+ |21|Concurrency with asyncio|[21-asyncio](21-asyncio)|[asyncio.ipynb](21-asyncio/asyncio.ipynb)|18-asyncio
+VI – Metaprogramming|22|Dynamic Attributes and Properties|[22-dyn-attr-prop](22-dyn-attr-prop)|[dyn-attr-prop.ipynb](22-dyn-attr-prop/dyn-attr-prop.ipynb)|19-dyn-attr-prop
+ |23|Attribute Descriptors|[23-descriptor](23-descriptor)|[descriptor.ipynb](23-descriptor/descriptor.ipynb)|20-descriptor
+ |24|Class Metapgrogramming|[24-class-metaprog](24-class-metaprog)|[class-metaprog.ipynb](24-class-metaprog/class-metaprog.ipynb)|21-class-metaprog
diff --git a/chapter-map.ods b/chapter-map.ods
index f277ba2..3538490 100644
Binary files a/chapter-map.ods and b/chapter-map.ods differ