diff --git a/05-record-like/README.asciidoc b/05-record-like/README.asciidoc
new file mode 100644
index 0000000..b795def
--- /dev/null
+++ b/05-record-like/README.asciidoc
@@ -0,0 +1 @@
+== Record-like Structures
diff --git a/05-1class-func/README.rst b/06-1class-func/README.rst
similarity index 100%
rename from 05-1class-func/README.rst
rename to 06-1class-func/README.rst
diff --git a/05-1class-func/bingocall.py b/06-1class-func/bingocall.py
similarity index 100%
rename from 05-1class-func/bingocall.py
rename to 06-1class-func/bingocall.py
diff --git a/05-1class-func/clip.py b/06-1class-func/clip.py
similarity index 100%
rename from 05-1class-func/clip.py
rename to 06-1class-func/clip.py
diff --git a/05-1class-func/clip_annot.py b/06-1class-func/clip_annot.py
similarity index 100%
rename from 05-1class-func/clip_annot.py
rename to 06-1class-func/clip_annot.py
diff --git a/05-1class-func/clip_annot_signature.rst b/06-1class-func/clip_annot_signature.rst
similarity index 100%
rename from 05-1class-func/clip_annot_signature.rst
rename to 06-1class-func/clip_annot_signature.rst
diff --git a/05-1class-func/clip_introspection.rst b/06-1class-func/clip_introspection.rst
similarity index 100%
rename from 05-1class-func/clip_introspection.rst
rename to 06-1class-func/clip_introspection.rst
diff --git a/05-1class-func/clip_signature.rst b/06-1class-func/clip_signature.rst
similarity index 100%
rename from 05-1class-func/clip_signature.rst
rename to 06-1class-func/clip_signature.rst
diff --git a/05-1class-func/tagger.py b/06-1class-func/tagger.py
similarity index 100%
rename from 05-1class-func/tagger.py
rename to 06-1class-func/tagger.py
diff --git a/06-dp-1class-func/README.rst b/07-dp-1class-func/README.rst
similarity index 100%
rename from 06-dp-1class-func/README.rst
rename to 07-dp-1class-func/README.rst
diff --git a/06-dp-1class-func/classic_strategy.py b/07-dp-1class-func/classic_strategy.py
similarity index 100%
rename from 06-dp-1class-func/classic_strategy.py
rename to 07-dp-1class-func/classic_strategy.py
diff --git a/06-dp-1class-func/promotions.py b/07-dp-1class-func/promotions.py
similarity index 100%
rename from 06-dp-1class-func/promotions.py
rename to 07-dp-1class-func/promotions.py
diff --git a/06-dp-1class-func/strategy.py b/07-dp-1class-func/strategy.py
similarity index 100%
rename from 06-dp-1class-func/strategy.py
rename to 07-dp-1class-func/strategy.py
diff --git a/06-dp-1class-func/strategy_best.py b/07-dp-1class-func/strategy_best.py
similarity index 100%
rename from 06-dp-1class-func/strategy_best.py
rename to 07-dp-1class-func/strategy_best.py
diff --git a/06-dp-1class-func/strategy_best2.py b/07-dp-1class-func/strategy_best2.py
similarity index 100%
rename from 06-dp-1class-func/strategy_best2.py
rename to 07-dp-1class-func/strategy_best2.py
diff --git a/06-dp-1class-func/strategy_best3.py b/07-dp-1class-func/strategy_best3.py
similarity index 100%
rename from 06-dp-1class-func/strategy_best3.py
rename to 07-dp-1class-func/strategy_best3.py
diff --git a/07-closure-deco/README.rst b/08-closure-deco/README.rst
similarity index 100%
rename from 07-closure-deco/README.rst
rename to 08-closure-deco/README.rst
diff --git a/07-closure-deco/average.py b/08-closure-deco/average.py
similarity index 100%
rename from 07-closure-deco/average.py
rename to 08-closure-deco/average.py
diff --git a/07-closure-deco/average_oo.py b/08-closure-deco/average_oo.py
similarity index 100%
rename from 07-closure-deco/average_oo.py
rename to 08-closure-deco/average_oo.py
diff --git a/07-closure-deco/clockdeco.py b/08-closure-deco/clockdeco.py
similarity index 100%
rename from 07-closure-deco/clockdeco.py
rename to 08-closure-deco/clockdeco.py
diff --git a/07-closure-deco/clockdeco_cls.py b/08-closure-deco/clockdeco_cls.py
similarity index 100%
rename from 07-closure-deco/clockdeco_cls.py
rename to 08-closure-deco/clockdeco_cls.py
diff --git a/07-closure-deco/clockdeco_demo.py b/08-closure-deco/clockdeco_demo.py
similarity index 100%
rename from 07-closure-deco/clockdeco_demo.py
rename to 08-closure-deco/clockdeco_demo.py
diff --git a/07-closure-deco/clockdeco_param.py b/08-closure-deco/clockdeco_param.py
similarity index 100%
rename from 07-closure-deco/clockdeco_param.py
rename to 08-closure-deco/clockdeco_param.py
diff --git a/07-closure-deco/clockdeco_param_demo1.py b/08-closure-deco/clockdeco_param_demo1.py
similarity index 100%
rename from 07-closure-deco/clockdeco_param_demo1.py
rename to 08-closure-deco/clockdeco_param_demo1.py
diff --git a/07-closure-deco/clockdeco_param_demo2.py b/08-closure-deco/clockdeco_param_demo2.py
similarity index 100%
rename from 07-closure-deco/clockdeco_param_demo2.py
rename to 08-closure-deco/clockdeco_param_demo2.py
diff --git a/07-closure-deco/fibo_demo.py b/08-closure-deco/fibo_demo.py
similarity index 100%
rename from 07-closure-deco/fibo_demo.py
rename to 08-closure-deco/fibo_demo.py
diff --git a/07-closure-deco/fibo_demo_lru.py b/08-closure-deco/fibo_demo_lru.py
similarity index 100%
rename from 07-closure-deco/fibo_demo_lru.py
rename to 08-closure-deco/fibo_demo_lru.py
diff --git a/07-closure-deco/generic.py b/08-closure-deco/generic.py
similarity index 100%
rename from 07-closure-deco/generic.py
rename to 08-closure-deco/generic.py
diff --git a/07-closure-deco/global_x_local.rst b/08-closure-deco/global_x_local.rst
similarity index 100%
rename from 07-closure-deco/global_x_local.rst
rename to 08-closure-deco/global_x_local.rst
diff --git a/07-closure-deco/registration.py b/08-closure-deco/registration.py
similarity index 100%
rename from 07-closure-deco/registration.py
rename to 08-closure-deco/registration.py
diff --git a/07-closure-deco/registration_abridged.py b/08-closure-deco/registration_abridged.py
similarity index 100%
rename from 07-closure-deco/registration_abridged.py
rename to 08-closure-deco/registration_abridged.py
diff --git a/07-closure-deco/registration_param.py b/08-closure-deco/registration_param.py
similarity index 100%
rename from 07-closure-deco/registration_param.py
rename to 08-closure-deco/registration_param.py
diff --git a/07-closure-deco/strategy_best4.py b/08-closure-deco/strategy_best4.py
similarity index 100%
rename from 07-closure-deco/strategy_best4.py
rename to 08-closure-deco/strategy_best4.py
diff --git a/09-def-type-hints/README.asciidoc b/09-def-type-hints/README.asciidoc
new file mode 100644
index 0000000..4d89408
--- /dev/null
+++ b/09-def-type-hints/README.asciidoc
@@ -0,0 +1 @@
+== Type Hints in Function Definitions
diff --git a/08-obj-ref/README.rst b/10-obj-ref/README.rst
similarity index 100%
rename from 08-obj-ref/README.rst
rename to 10-obj-ref/README.rst
diff --git a/08-obj-ref/bus.py b/10-obj-ref/bus.py
similarity index 100%
rename from 08-obj-ref/bus.py
rename to 10-obj-ref/bus.py
diff --git a/08-obj-ref/cheese.py b/10-obj-ref/cheese.py
similarity index 100%
rename from 08-obj-ref/cheese.py
rename to 10-obj-ref/cheese.py
diff --git a/08-obj-ref/haunted_bus.py b/10-obj-ref/haunted_bus.py
similarity index 100%
rename from 08-obj-ref/haunted_bus.py
rename to 10-obj-ref/haunted_bus.py
diff --git a/08-obj-ref/twilight_bus.py b/10-obj-ref/twilight_bus.py
similarity index 100%
rename from 08-obj-ref/twilight_bus.py
rename to 10-obj-ref/twilight_bus.py
diff --git a/09-pythonic-obj/README.rst b/11-pythonic-obj/README.rst
similarity index 100%
rename from 09-pythonic-obj/README.rst
rename to 11-pythonic-obj/README.rst
diff --git a/09-pythonic-obj/mem_test.py b/11-pythonic-obj/mem_test.py
similarity index 100%
rename from 09-pythonic-obj/mem_test.py
rename to 11-pythonic-obj/mem_test.py
diff --git a/09-pythonic-obj/private/Confidential.java b/11-pythonic-obj/private/Confidential.java
similarity index 100%
rename from 09-pythonic-obj/private/Confidential.java
rename to 11-pythonic-obj/private/Confidential.java
diff --git a/09-pythonic-obj/private/Expose.java b/11-pythonic-obj/private/Expose.java
similarity index 100%
rename from 09-pythonic-obj/private/Expose.java
rename to 11-pythonic-obj/private/Expose.java
diff --git a/09-pythonic-obj/private/expose.py b/11-pythonic-obj/private/expose.py
similarity index 100%
rename from 09-pythonic-obj/private/expose.py
rename to 11-pythonic-obj/private/expose.py
diff --git a/09-pythonic-obj/private/leakprivate.py b/11-pythonic-obj/private/leakprivate.py
similarity index 100%
rename from 09-pythonic-obj/private/leakprivate.py
rename to 11-pythonic-obj/private/leakprivate.py
diff --git a/09-pythonic-obj/private/no_respect.py b/11-pythonic-obj/private/no_respect.py
similarity index 100%
rename from 09-pythonic-obj/private/no_respect.py
rename to 11-pythonic-obj/private/no_respect.py
diff --git a/09-pythonic-obj/vector2d_v0.py b/11-pythonic-obj/vector2d_v0.py
similarity index 100%
rename from 09-pythonic-obj/vector2d_v0.py
rename to 11-pythonic-obj/vector2d_v0.py
diff --git a/09-pythonic-obj/vector2d_v1.py b/11-pythonic-obj/vector2d_v1.py
similarity index 100%
rename from 09-pythonic-obj/vector2d_v1.py
rename to 11-pythonic-obj/vector2d_v1.py
diff --git a/09-pythonic-obj/vector2d_v2.py b/11-pythonic-obj/vector2d_v2.py
similarity index 100%
rename from 09-pythonic-obj/vector2d_v2.py
rename to 11-pythonic-obj/vector2d_v2.py
diff --git a/09-pythonic-obj/vector2d_v2_fmt_snippet.py b/11-pythonic-obj/vector2d_v2_fmt_snippet.py
similarity index 100%
rename from 09-pythonic-obj/vector2d_v2_fmt_snippet.py
rename to 11-pythonic-obj/vector2d_v2_fmt_snippet.py
diff --git a/09-pythonic-obj/vector2d_v3.py b/11-pythonic-obj/vector2d_v3.py
similarity index 100%
rename from 09-pythonic-obj/vector2d_v3.py
rename to 11-pythonic-obj/vector2d_v3.py
diff --git a/09-pythonic-obj/vector2d_v3_prophash.py b/11-pythonic-obj/vector2d_v3_prophash.py
similarity index 100%
rename from 09-pythonic-obj/vector2d_v3_prophash.py
rename to 11-pythonic-obj/vector2d_v3_prophash.py
diff --git a/09-pythonic-obj/vector2d_v3_slots.py b/11-pythonic-obj/vector2d_v3_slots.py
similarity index 100%
rename from 09-pythonic-obj/vector2d_v3_slots.py
rename to 11-pythonic-obj/vector2d_v3_slots.py
diff --git a/10-seq-hacking/README.rst b/12-seq-hacking/README.rst
similarity index 100%
rename from 10-seq-hacking/README.rst
rename to 12-seq-hacking/README.rst
diff --git a/10-seq-hacking/vector_v1.py b/12-seq-hacking/vector_v1.py
similarity index 100%
rename from 10-seq-hacking/vector_v1.py
rename to 12-seq-hacking/vector_v1.py
diff --git a/10-seq-hacking/vector_v2.py b/12-seq-hacking/vector_v2.py
similarity index 100%
rename from 10-seq-hacking/vector_v2.py
rename to 12-seq-hacking/vector_v2.py
diff --git a/10-seq-hacking/vector_v3.py b/12-seq-hacking/vector_v3.py
similarity index 100%
rename from 10-seq-hacking/vector_v3.py
rename to 12-seq-hacking/vector_v3.py
diff --git a/10-seq-hacking/vector_v4.py b/12-seq-hacking/vector_v4.py
similarity index 100%
rename from 10-seq-hacking/vector_v4.py
rename to 12-seq-hacking/vector_v4.py
diff --git a/10-seq-hacking/vector_v5.py b/12-seq-hacking/vector_v5.py
similarity index 100%
rename from 10-seq-hacking/vector_v5.py
rename to 12-seq-hacking/vector_v5.py
diff --git a/11-iface-abc/README.rst b/13-iface-abc/README.rst
similarity index 100%
rename from 11-iface-abc/README.rst
rename to 13-iface-abc/README.rst
diff --git a/11-iface-abc/bingo.py b/13-iface-abc/bingo.py
similarity index 100%
rename from 11-iface-abc/bingo.py
rename to 13-iface-abc/bingo.py
diff --git a/11-iface-abc/drum.py b/13-iface-abc/drum.py
similarity index 100%
rename from 11-iface-abc/drum.py
rename to 13-iface-abc/drum.py
diff --git a/11-iface-abc/frenchdeck2.py b/13-iface-abc/frenchdeck2.py
similarity index 100%
rename from 11-iface-abc/frenchdeck2.py
rename to 13-iface-abc/frenchdeck2.py
diff --git a/11-iface-abc/lotto.py b/13-iface-abc/lotto.py
similarity index 100%
rename from 11-iface-abc/lotto.py
rename to 13-iface-abc/lotto.py
diff --git a/11-iface-abc/tombola.py b/13-iface-abc/tombola.py
similarity index 100%
rename from 11-iface-abc/tombola.py
rename to 13-iface-abc/tombola.py
diff --git a/11-iface-abc/tombola_runner.py b/13-iface-abc/tombola_runner.py
similarity index 100%
rename from 11-iface-abc/tombola_runner.py
rename to 13-iface-abc/tombola_runner.py
diff --git a/11-iface-abc/tombola_subhook.py b/13-iface-abc/tombola_subhook.py
similarity index 100%
rename from 11-iface-abc/tombola_subhook.py
rename to 13-iface-abc/tombola_subhook.py
diff --git a/11-iface-abc/tombola_tests.rst b/13-iface-abc/tombola_tests.rst
similarity index 100%
rename from 11-iface-abc/tombola_tests.rst
rename to 13-iface-abc/tombola_tests.rst
diff --git a/11-iface-abc/tombolist.py b/13-iface-abc/tombolist.py
similarity index 100%
rename from 11-iface-abc/tombolist.py
rename to 13-iface-abc/tombolist.py
diff --git a/12-inheritance/README.rst b/14-inheritance/README.rst
similarity index 100%
rename from 12-inheritance/README.rst
rename to 14-inheritance/README.rst
diff --git a/12-inheritance/diamond.py b/14-inheritance/diamond.py
similarity index 100%
rename from 12-inheritance/diamond.py
rename to 14-inheritance/diamond.py
diff --git a/15-type-hints/README.asciidoc b/15-type-hints/README.asciidoc
new file mode 100644
index 0000000..b1e64d1
--- /dev/null
+++ b/15-type-hints/README.asciidoc
@@ -0,0 +1 @@
+== Type Hints Distilled
diff --git a/13-op-overloading/README.rst b/16-op-overloading/README.rst
similarity index 100%
rename from 13-op-overloading/README.rst
rename to 16-op-overloading/README.rst
diff --git a/13-op-overloading/bingo.py b/16-op-overloading/bingo.py
similarity index 100%
rename from 13-op-overloading/bingo.py
rename to 16-op-overloading/bingo.py
diff --git a/13-op-overloading/bingoaddable.py b/16-op-overloading/bingoaddable.py
similarity index 100%
rename from 13-op-overloading/bingoaddable.py
rename to 16-op-overloading/bingoaddable.py
diff --git a/13-op-overloading/tombola.py b/16-op-overloading/tombola.py
similarity index 100%
rename from 13-op-overloading/tombola.py
rename to 16-op-overloading/tombola.py
diff --git a/13-op-overloading/unary_plus_decimal.py b/16-op-overloading/unary_plus_decimal.py
similarity index 100%
rename from 13-op-overloading/unary_plus_decimal.py
rename to 16-op-overloading/unary_plus_decimal.py
diff --git a/13-op-overloading/vector2d_v3.py b/16-op-overloading/vector2d_v3.py
similarity index 100%
rename from 13-op-overloading/vector2d_v3.py
rename to 16-op-overloading/vector2d_v3.py
diff --git a/13-op-overloading/vector_py3_5.py b/16-op-overloading/vector_py3_5.py
similarity index 100%
rename from 13-op-overloading/vector_py3_5.py
rename to 16-op-overloading/vector_py3_5.py
diff --git a/13-op-overloading/vector_v6.py b/16-op-overloading/vector_v6.py
similarity index 100%
rename from 13-op-overloading/vector_v6.py
rename to 16-op-overloading/vector_v6.py
diff --git a/13-op-overloading/vector_v7.py b/16-op-overloading/vector_v7.py
similarity index 100%
rename from 13-op-overloading/vector_v7.py
rename to 16-op-overloading/vector_v7.py
diff --git a/13-op-overloading/vector_v8.py b/16-op-overloading/vector_v8.py
similarity index 100%
rename from 13-op-overloading/vector_v8.py
rename to 16-op-overloading/vector_v8.py
diff --git a/14-it-generator/README.rst b/17-it-generator/README.rst
similarity index 100%
rename from 14-it-generator/README.rst
rename to 17-it-generator/README.rst
diff --git a/14-it-generator/aritprog.rst b/17-it-generator/aritprog.rst
similarity index 100%
rename from 14-it-generator/aritprog.rst
rename to 17-it-generator/aritprog.rst
diff --git a/14-it-generator/aritprog_float_error.py b/17-it-generator/aritprog_float_error.py
similarity index 100%
rename from 14-it-generator/aritprog_float_error.py
rename to 17-it-generator/aritprog_float_error.py
diff --git a/14-it-generator/aritprog_runner.py b/17-it-generator/aritprog_runner.py
similarity index 100%
rename from 14-it-generator/aritprog_runner.py
rename to 17-it-generator/aritprog_runner.py
diff --git a/14-it-generator/aritprog_v0.py b/17-it-generator/aritprog_v0.py
similarity index 100%
rename from 14-it-generator/aritprog_v0.py
rename to 17-it-generator/aritprog_v0.py
diff --git a/14-it-generator/aritprog_v1.py b/17-it-generator/aritprog_v1.py
similarity index 100%
rename from 14-it-generator/aritprog_v1.py
rename to 17-it-generator/aritprog_v1.py
diff --git a/14-it-generator/aritprog_v2.py b/17-it-generator/aritprog_v2.py
similarity index 100%
rename from 14-it-generator/aritprog_v2.py
rename to 17-it-generator/aritprog_v2.py
diff --git a/14-it-generator/aritprog_v3.py b/17-it-generator/aritprog_v3.py
similarity index 100%
rename from 14-it-generator/aritprog_v3.py
rename to 17-it-generator/aritprog_v3.py
diff --git a/14-it-generator/fibo_by_hand.py b/17-it-generator/fibo_by_hand.py
similarity index 100%
rename from 14-it-generator/fibo_by_hand.py
rename to 17-it-generator/fibo_by_hand.py
diff --git a/14-it-generator/isis2json/README.rst b/17-it-generator/isis2json/README.rst
similarity index 100%
rename from 14-it-generator/isis2json/README.rst
rename to 17-it-generator/isis2json/README.rst
diff --git a/14-it-generator/isis2json/isis2json.py b/17-it-generator/isis2json/isis2json.py
similarity index 100%
rename from 14-it-generator/isis2json/isis2json.py
rename to 17-it-generator/isis2json/isis2json.py
diff --git a/14-it-generator/isis2json/iso2709.py b/17-it-generator/isis2json/iso2709.py
similarity index 100%
rename from 14-it-generator/isis2json/iso2709.py
rename to 17-it-generator/isis2json/iso2709.py
diff --git a/14-it-generator/isis2json/subfield.py b/17-it-generator/isis2json/subfield.py
similarity index 100%
rename from 14-it-generator/isis2json/subfield.py
rename to 17-it-generator/isis2json/subfield.py
diff --git a/14-it-generator/sentence.py b/17-it-generator/sentence.py
similarity index 100%
rename from 14-it-generator/sentence.py
rename to 17-it-generator/sentence.py
diff --git a/14-it-generator/sentence.rst b/17-it-generator/sentence.rst
similarity index 100%
rename from 14-it-generator/sentence.rst
rename to 17-it-generator/sentence.rst
diff --git a/14-it-generator/sentence_gen.py b/17-it-generator/sentence_gen.py
similarity index 100%
rename from 14-it-generator/sentence_gen.py
rename to 17-it-generator/sentence_gen.py
diff --git a/14-it-generator/sentence_gen2.py b/17-it-generator/sentence_gen2.py
similarity index 100%
rename from 14-it-generator/sentence_gen2.py
rename to 17-it-generator/sentence_gen2.py
diff --git a/14-it-generator/sentence_genexp.py b/17-it-generator/sentence_genexp.py
similarity index 100%
rename from 14-it-generator/sentence_genexp.py
rename to 17-it-generator/sentence_genexp.py
diff --git a/14-it-generator/sentence_iter.py b/17-it-generator/sentence_iter.py
similarity index 100%
rename from 14-it-generator/sentence_iter.py
rename to 17-it-generator/sentence_iter.py
diff --git a/14-it-generator/sentence_iter2.py b/17-it-generator/sentence_iter2.py
similarity index 100%
rename from 14-it-generator/sentence_iter2.py
rename to 17-it-generator/sentence_iter2.py
diff --git a/14-it-generator/sentence_runner.py b/17-it-generator/sentence_runner.py
similarity index 100%
rename from 14-it-generator/sentence_runner.py
rename to 17-it-generator/sentence_runner.py
diff --git a/14-it-generator/yield_delegate_fail.py b/17-it-generator/yield_delegate_fail.py
similarity index 100%
rename from 14-it-generator/yield_delegate_fail.py
rename to 17-it-generator/yield_delegate_fail.py
diff --git a/14-it-generator/yield_delegate_fix.py b/17-it-generator/yield_delegate_fix.py
similarity index 100%
rename from 14-it-generator/yield_delegate_fix.py
rename to 17-it-generator/yield_delegate_fix.py
diff --git a/15-context-mngr/README.rst b/18-context-mngr/README.rst
similarity index 100%
rename from 15-context-mngr/README.rst
rename to 18-context-mngr/README.rst
diff --git a/15-context-mngr/mirror.py b/18-context-mngr/mirror.py
similarity index 100%
rename from 15-context-mngr/mirror.py
rename to 18-context-mngr/mirror.py
diff --git a/15-context-mngr/mirror_gen.py b/18-context-mngr/mirror_gen.py
similarity index 100%
rename from 15-context-mngr/mirror_gen.py
rename to 18-context-mngr/mirror_gen.py
diff --git a/15-context-mngr/mirror_gen_exc.py b/18-context-mngr/mirror_gen_exc.py
similarity index 100%
rename from 15-context-mngr/mirror_gen_exc.py
rename to 18-context-mngr/mirror_gen_exc.py
diff --git a/16-coroutine/README.rst b/19-coroutine/README.rst
similarity index 100%
rename from 16-coroutine/README.rst
rename to 19-coroutine/README.rst
diff --git a/16-coroutine/coro_exc_demo.py b/19-coroutine/coro_exc_demo.py
similarity index 100%
rename from 16-coroutine/coro_exc_demo.py
rename to 19-coroutine/coro_exc_demo.py
diff --git a/16-coroutine/coro_finally_demo.py b/19-coroutine/coro_finally_demo.py
similarity index 100%
rename from 16-coroutine/coro_finally_demo.py
rename to 19-coroutine/coro_finally_demo.py
diff --git a/16-coroutine/coroaverager0.py b/19-coroutine/coroaverager0.py
similarity index 100%
rename from 16-coroutine/coroaverager0.py
rename to 19-coroutine/coroaverager0.py
diff --git a/16-coroutine/coroaverager1.py b/19-coroutine/coroaverager1.py
similarity index 100%
rename from 16-coroutine/coroaverager1.py
rename to 19-coroutine/coroaverager1.py
diff --git a/16-coroutine/coroaverager2.py b/19-coroutine/coroaverager2.py
similarity index 100%
rename from 16-coroutine/coroaverager2.py
rename to 19-coroutine/coroaverager2.py
diff --git a/16-coroutine/coroaverager3.py b/19-coroutine/coroaverager3.py
similarity index 100%
rename from 16-coroutine/coroaverager3.py
rename to 19-coroutine/coroaverager3.py
diff --git a/16-coroutine/coroutil.py b/19-coroutine/coroutil.py
similarity index 100%
rename from 16-coroutine/coroutil.py
rename to 19-coroutine/coroutil.py
diff --git a/16-coroutine/taxi_sim.py b/19-coroutine/taxi_sim.py
similarity index 100%
rename from 16-coroutine/taxi_sim.py
rename to 19-coroutine/taxi_sim.py
diff --git a/16-coroutine/taxi_sim0.py b/19-coroutine/taxi_sim0.py
similarity index 100%
rename from 16-coroutine/taxi_sim0.py
rename to 19-coroutine/taxi_sim0.py
diff --git a/16-coroutine/taxi_sim_delay.py b/19-coroutine/taxi_sim_delay.py
similarity index 100%
rename from 16-coroutine/taxi_sim_delay.py
rename to 19-coroutine/taxi_sim_delay.py
diff --git a/16-coroutine/yield_from_expansion.py b/19-coroutine/yield_from_expansion.py
similarity index 100%
rename from 16-coroutine/yield_from_expansion.py
rename to 19-coroutine/yield_from_expansion.py
diff --git a/16-coroutine/yield_from_expansion_simplified.py b/19-coroutine/yield_from_expansion_simplified.py
similarity index 100%
rename from 16-coroutine/yield_from_expansion_simplified.py
rename to 19-coroutine/yield_from_expansion_simplified.py
diff --git a/17-futures/README.rst b/20-futures/README.rst
similarity index 100%
rename from 17-futures/README.rst
rename to 20-futures/README.rst
diff --git a/17-futures/countries/README.rst b/20-futures/countries/README.rst
similarity index 100%
rename from 17-futures/countries/README.rst
rename to 20-futures/countries/README.rst
diff --git a/17-futures/countries/country_codes.txt b/20-futures/countries/country_codes.txt
similarity index 100%
rename from 17-futures/countries/country_codes.txt
rename to 20-futures/countries/country_codes.txt
diff --git a/17-futures/countries/flags.py b/20-futures/countries/flags.py
similarity index 100%
rename from 17-futures/countries/flags.py
rename to 20-futures/countries/flags.py
diff --git a/17-futures/countries/flags.zip b/20-futures/countries/flags.zip
similarity index 100%
rename from 17-futures/countries/flags.zip
rename to 20-futures/countries/flags.zip
diff --git a/17-futures/countries/flags2_asyncio.py b/20-futures/countries/flags2_asyncio.py
similarity index 100%
rename from 17-futures/countries/flags2_asyncio.py
rename to 20-futures/countries/flags2_asyncio.py
diff --git a/17-futures/countries/flags2_asyncio_executor.py b/20-futures/countries/flags2_asyncio_executor.py
similarity index 100%
rename from 17-futures/countries/flags2_asyncio_executor.py
rename to 20-futures/countries/flags2_asyncio_executor.py
diff --git a/17-futures/countries/flags2_await.py b/20-futures/countries/flags2_await.py
similarity index 100%
rename from 17-futures/countries/flags2_await.py
rename to 20-futures/countries/flags2_await.py
diff --git a/17-futures/countries/flags2_common.py b/20-futures/countries/flags2_common.py
similarity index 100%
rename from 17-futures/countries/flags2_common.py
rename to 20-futures/countries/flags2_common.py
diff --git a/17-futures/countries/flags2_sequential.py b/20-futures/countries/flags2_sequential.py
similarity index 100%
rename from 17-futures/countries/flags2_sequential.py
rename to 20-futures/countries/flags2_sequential.py
diff --git a/17-futures/countries/flags2_threadpool.py b/20-futures/countries/flags2_threadpool.py
similarity index 100%
rename from 17-futures/countries/flags2_threadpool.py
rename to 20-futures/countries/flags2_threadpool.py
diff --git a/17-futures/countries/flags3_asyncio.py b/20-futures/countries/flags3_asyncio.py
similarity index 100%
rename from 17-futures/countries/flags3_asyncio.py
rename to 20-futures/countries/flags3_asyncio.py
diff --git a/17-futures/countries/flags3_threadpool.py b/20-futures/countries/flags3_threadpool.py
similarity index 100%
rename from 17-futures/countries/flags3_threadpool.py
rename to 20-futures/countries/flags3_threadpool.py
diff --git a/17-futures/countries/flags_asyncio.py b/20-futures/countries/flags_asyncio.py
similarity index 100%
rename from 17-futures/countries/flags_asyncio.py
rename to 20-futures/countries/flags_asyncio.py
diff --git a/17-futures/countries/flags_await.py b/20-futures/countries/flags_await.py
similarity index 100%
rename from 17-futures/countries/flags_await.py
rename to 20-futures/countries/flags_await.py
diff --git a/17-futures/countries/flags_threadpool.py b/20-futures/countries/flags_threadpool.py
similarity index 100%
rename from 17-futures/countries/flags_threadpool.py
rename to 20-futures/countries/flags_threadpool.py
diff --git a/17-futures/countries/flags_threadpool_ac.py b/20-futures/countries/flags_threadpool_ac.py
similarity index 100%
rename from 17-futures/countries/flags_threadpool_ac.py
rename to 20-futures/countries/flags_threadpool_ac.py
diff --git a/17-futures/countries/requirements.txt b/20-futures/countries/requirements.txt
similarity index 100%
rename from 17-futures/countries/requirements.txt
rename to 20-futures/countries/requirements.txt
diff --git a/17-futures/countries/vaurien_delay.sh b/20-futures/countries/vaurien_delay.sh
similarity index 100%
rename from 17-futures/countries/vaurien_delay.sh
rename to 20-futures/countries/vaurien_delay.sh
diff --git a/17-futures/countries/vaurien_error_delay.sh b/20-futures/countries/vaurien_error_delay.sh
similarity index 100%
rename from 17-futures/countries/vaurien_error_delay.sh
rename to 20-futures/countries/vaurien_error_delay.sh
diff --git a/17-futures/crypto/arcfour-timings.txt b/20-futures/crypto/arcfour-timings.txt
similarity index 100%
rename from 17-futures/crypto/arcfour-timings.txt
rename to 20-futures/crypto/arcfour-timings.txt
diff --git a/17-futures/crypto/arcfour.py b/20-futures/crypto/arcfour.py
similarity index 100%
rename from 17-futures/crypto/arcfour.py
rename to 20-futures/crypto/arcfour.py
diff --git a/17-futures/crypto/arcfour_futures.py b/20-futures/crypto/arcfour_futures.py
similarity index 100%
rename from 17-futures/crypto/arcfour_futures.py
rename to 20-futures/crypto/arcfour_futures.py
diff --git a/17-futures/crypto/arcfour_test.py b/20-futures/crypto/arcfour_test.py
similarity index 100%
rename from 17-futures/crypto/arcfour_test.py
rename to 20-futures/crypto/arcfour_test.py
diff --git a/17-futures/crypto/sha-timings.txt b/20-futures/crypto/sha-timings.txt
similarity index 100%
rename from 17-futures/crypto/sha-timings.txt
rename to 20-futures/crypto/sha-timings.txt
diff --git a/17-futures/crypto/sha_futures.py b/20-futures/crypto/sha_futures.py
similarity index 100%
rename from 17-futures/crypto/sha_futures.py
rename to 20-futures/crypto/sha_futures.py
diff --git a/17-futures/demo_executor_map.py b/20-futures/demo_executor_map.py
similarity index 100%
rename from 17-futures/demo_executor_map.py
rename to 20-futures/demo_executor_map.py
diff --git a/18-asyncio/README.rst b/21-asyncio/README.rst
similarity index 100%
rename from 18-asyncio/README.rst
rename to 21-asyncio/README.rst
diff --git a/18-asyncio/charfinder/charfinder.py b/21-asyncio/charfinder/charfinder.py
similarity index 100%
rename from 18-asyncio/charfinder/charfinder.py
rename to 21-asyncio/charfinder/charfinder.py
diff --git a/18-asyncio/charfinder/http_charfinder.html b/21-asyncio/charfinder/http_charfinder.html
similarity index 100%
rename from 18-asyncio/charfinder/http_charfinder.html
rename to 21-asyncio/charfinder/http_charfinder.html
diff --git a/18-asyncio/charfinder/http_charfinder.py b/21-asyncio/charfinder/http_charfinder.py
similarity index 100%
rename from 18-asyncio/charfinder/http_charfinder.py
rename to 21-asyncio/charfinder/http_charfinder.py
diff --git a/18-asyncio/charfinder/requirements.txt b/21-asyncio/charfinder/requirements.txt
similarity index 100%
rename from 18-asyncio/charfinder/requirements.txt
rename to 21-asyncio/charfinder/requirements.txt
diff --git a/18-asyncio/charfinder/tcp_charfinder.py b/21-asyncio/charfinder/tcp_charfinder.py
similarity index 100%
rename from 18-asyncio/charfinder/tcp_charfinder.py
rename to 21-asyncio/charfinder/tcp_charfinder.py
diff --git a/18-asyncio/charfinder/test_charfinder.py b/21-asyncio/charfinder/test_charfinder.py
similarity index 100%
rename from 18-asyncio/charfinder/test_charfinder.py
rename to 21-asyncio/charfinder/test_charfinder.py
diff --git a/18-asyncio/countries/README.rst b/21-asyncio/countries/README.rst
similarity index 100%
rename from 18-asyncio/countries/README.rst
rename to 21-asyncio/countries/README.rst
diff --git a/18-asyncio/spinner_asyncio.py b/21-asyncio/spinner_asyncio.py
similarity index 100%
rename from 18-asyncio/spinner_asyncio.py
rename to 21-asyncio/spinner_asyncio.py
diff --git a/18-asyncio/spinner_await.py b/21-asyncio/spinner_await.py
similarity index 100%
rename from 18-asyncio/spinner_await.py
rename to 21-asyncio/spinner_await.py
diff --git a/18-asyncio/spinner_curio.py b/21-asyncio/spinner_curio.py
similarity index 100%
rename from 18-asyncio/spinner_curio.py
rename to 21-asyncio/spinner_curio.py
diff --git a/18-asyncio/spinner_thread.py b/21-asyncio/spinner_thread.py
similarity index 100%
rename from 18-asyncio/spinner_thread.py
rename to 21-asyncio/spinner_thread.py
diff --git a/19-dyn-attr-prop/README.rst b/22-dyn-attr-prop/README.rst
similarity index 100%
rename from 19-dyn-attr-prop/README.rst
rename to 22-dyn-attr-prop/README.rst
diff --git a/19-dyn-attr-prop/blackknight.py b/22-dyn-attr-prop/blackknight.py
similarity index 100%
rename from 19-dyn-attr-prop/blackknight.py
rename to 22-dyn-attr-prop/blackknight.py
diff --git a/19-dyn-attr-prop/bulkfood/bulkfood_v1.py b/22-dyn-attr-prop/bulkfood/bulkfood_v1.py
similarity index 100%
rename from 19-dyn-attr-prop/bulkfood/bulkfood_v1.py
rename to 22-dyn-attr-prop/bulkfood/bulkfood_v1.py
diff --git a/19-dyn-attr-prop/bulkfood/bulkfood_v2.py b/22-dyn-attr-prop/bulkfood/bulkfood_v2.py
similarity index 100%
rename from 19-dyn-attr-prop/bulkfood/bulkfood_v2.py
rename to 22-dyn-attr-prop/bulkfood/bulkfood_v2.py
diff --git a/19-dyn-attr-prop/bulkfood/bulkfood_v2b.py b/22-dyn-attr-prop/bulkfood/bulkfood_v2b.py
similarity index 100%
rename from 19-dyn-attr-prop/bulkfood/bulkfood_v2b.py
rename to 22-dyn-attr-prop/bulkfood/bulkfood_v2b.py
diff --git a/19-dyn-attr-prop/bulkfood/bulkfood_v2prop.py b/22-dyn-attr-prop/bulkfood/bulkfood_v2prop.py
similarity index 100%
rename from 19-dyn-attr-prop/bulkfood/bulkfood_v2prop.py
rename to 22-dyn-attr-prop/bulkfood/bulkfood_v2prop.py
diff --git a/19-dyn-attr-prop/doc_property.py b/22-dyn-attr-prop/doc_property.py
similarity index 100%
rename from 19-dyn-attr-prop/doc_property.py
rename to 22-dyn-attr-prop/doc_property.py
diff --git a/19-dyn-attr-prop/oscon/data/osconfeed.json b/22-dyn-attr-prop/oscon/data/osconfeed.json
similarity index 100%
rename from 19-dyn-attr-prop/oscon/data/osconfeed.json
rename to 22-dyn-attr-prop/oscon/data/osconfeed.json
diff --git a/19-dyn-attr-prop/oscon/demo_schedule2.py b/22-dyn-attr-prop/oscon/demo_schedule2.py
similarity index 100%
rename from 19-dyn-attr-prop/oscon/demo_schedule2.py
rename to 22-dyn-attr-prop/oscon/demo_schedule2.py
diff --git a/19-dyn-attr-prop/oscon/explore0.py b/22-dyn-attr-prop/oscon/explore0.py
similarity index 100%
rename from 19-dyn-attr-prop/oscon/explore0.py
rename to 22-dyn-attr-prop/oscon/explore0.py
diff --git a/19-dyn-attr-prop/oscon/explore1.py b/22-dyn-attr-prop/oscon/explore1.py
similarity index 100%
rename from 19-dyn-attr-prop/oscon/explore1.py
rename to 22-dyn-attr-prop/oscon/explore1.py
diff --git a/19-dyn-attr-prop/oscon/explore2.py b/22-dyn-attr-prop/oscon/explore2.py
similarity index 100%
rename from 19-dyn-attr-prop/oscon/explore2.py
rename to 22-dyn-attr-prop/oscon/explore2.py
diff --git a/19-dyn-attr-prop/oscon/osconfeed-sample.json b/22-dyn-attr-prop/oscon/osconfeed-sample.json
similarity index 100%
rename from 19-dyn-attr-prop/oscon/osconfeed-sample.json
rename to 22-dyn-attr-prop/oscon/osconfeed-sample.json
diff --git a/19-dyn-attr-prop/oscon/osconfeed.py b/22-dyn-attr-prop/oscon/osconfeed.py
similarity index 100%
rename from 19-dyn-attr-prop/oscon/osconfeed.py
rename to 22-dyn-attr-prop/oscon/osconfeed.py
diff --git a/19-dyn-attr-prop/oscon/schedule1.py b/22-dyn-attr-prop/oscon/schedule1.py
similarity index 100%
rename from 19-dyn-attr-prop/oscon/schedule1.py
rename to 22-dyn-attr-prop/oscon/schedule1.py
diff --git a/19-dyn-attr-prop/oscon/schedule2.py b/22-dyn-attr-prop/oscon/schedule2.py
similarity index 100%
rename from 19-dyn-attr-prop/oscon/schedule2.py
rename to 22-dyn-attr-prop/oscon/schedule2.py
diff --git a/19-dyn-attr-prop/oscon/test_schedule1.py b/22-dyn-attr-prop/oscon/test_schedule1.py
similarity index 100%
rename from 19-dyn-attr-prop/oscon/test_schedule1.py
rename to 22-dyn-attr-prop/oscon/test_schedule1.py
diff --git a/19-dyn-attr-prop/oscon/test_schedule2.py b/22-dyn-attr-prop/oscon/test_schedule2.py
similarity index 100%
rename from 19-dyn-attr-prop/oscon/test_schedule2.py
rename to 22-dyn-attr-prop/oscon/test_schedule2.py
diff --git a/19-dyn-attr-prop/pseudo_construction.py b/22-dyn-attr-prop/pseudo_construction.py
similarity index 100%
rename from 19-dyn-attr-prop/pseudo_construction.py
rename to 22-dyn-attr-prop/pseudo_construction.py
diff --git a/20-descriptor/README.rst b/23-descriptor/README.rst
similarity index 100%
rename from 20-descriptor/README.rst
rename to 23-descriptor/README.rst
diff --git a/20-descriptor/bulkfood/bulkfood_v3.py b/23-descriptor/bulkfood/bulkfood_v3.py
similarity index 100%
rename from 20-descriptor/bulkfood/bulkfood_v3.py
rename to 23-descriptor/bulkfood/bulkfood_v3.py
diff --git a/20-descriptor/bulkfood/bulkfood_v4.py b/23-descriptor/bulkfood/bulkfood_v4.py
similarity index 100%
rename from 20-descriptor/bulkfood/bulkfood_v4.py
rename to 23-descriptor/bulkfood/bulkfood_v4.py
diff --git a/20-descriptor/bulkfood/bulkfood_v4b.py b/23-descriptor/bulkfood/bulkfood_v4b.py
similarity index 100%
rename from 20-descriptor/bulkfood/bulkfood_v4b.py
rename to 23-descriptor/bulkfood/bulkfood_v4b.py
diff --git a/20-descriptor/bulkfood/bulkfood_v4c.py b/23-descriptor/bulkfood/bulkfood_v4c.py
similarity index 100%
rename from 20-descriptor/bulkfood/bulkfood_v4c.py
rename to 23-descriptor/bulkfood/bulkfood_v4c.py
diff --git a/20-descriptor/bulkfood/bulkfood_v4prop.py b/23-descriptor/bulkfood/bulkfood_v4prop.py
similarity index 100%
rename from 20-descriptor/bulkfood/bulkfood_v4prop.py
rename to 23-descriptor/bulkfood/bulkfood_v4prop.py
diff --git a/20-descriptor/bulkfood/bulkfood_v5.py b/23-descriptor/bulkfood/bulkfood_v5.py
similarity index 100%
rename from 20-descriptor/bulkfood/bulkfood_v5.py
rename to 23-descriptor/bulkfood/bulkfood_v5.py
diff --git a/20-descriptor/bulkfood/bulkfood_v5_check.py b/23-descriptor/bulkfood/bulkfood_v5_check.py
similarity index 100%
rename from 20-descriptor/bulkfood/bulkfood_v5_check.py
rename to 23-descriptor/bulkfood/bulkfood_v5_check.py
diff --git a/20-descriptor/bulkfood/model_v4c.py b/23-descriptor/bulkfood/model_v4c.py
similarity index 100%
rename from 20-descriptor/bulkfood/model_v4c.py
rename to 23-descriptor/bulkfood/model_v4c.py
diff --git a/20-descriptor/bulkfood/model_v5.py b/23-descriptor/bulkfood/model_v5.py
similarity index 100%
rename from 20-descriptor/bulkfood/model_v5.py
rename to 23-descriptor/bulkfood/model_v5.py
diff --git a/20-descriptor/bulkfood/model_v5_check.py b/23-descriptor/bulkfood/model_v5_check.py
similarity index 100%
rename from 20-descriptor/bulkfood/model_v5_check.py
rename to 23-descriptor/bulkfood/model_v5_check.py
diff --git a/20-descriptor/descriptorkinds.py b/23-descriptor/descriptorkinds.py
similarity index 100%
rename from 20-descriptor/descriptorkinds.py
rename to 23-descriptor/descriptorkinds.py
diff --git a/20-descriptor/descriptorkinds_dump.py b/23-descriptor/descriptorkinds_dump.py
similarity index 100%
rename from 20-descriptor/descriptorkinds_dump.py
rename to 23-descriptor/descriptorkinds_dump.py
diff --git a/20-descriptor/method_is_descriptor.py b/23-descriptor/method_is_descriptor.py
similarity index 100%
rename from 20-descriptor/method_is_descriptor.py
rename to 23-descriptor/method_is_descriptor.py
diff --git a/21-class-metaprog/README.rst b/24-class-metaprog/README.rst
similarity index 100%
rename from 21-class-metaprog/README.rst
rename to 24-class-metaprog/README.rst
diff --git a/21-class-metaprog/bulkfood/bulkfood_v6.py b/24-class-metaprog/bulkfood/bulkfood_v6.py
similarity index 100%
rename from 21-class-metaprog/bulkfood/bulkfood_v6.py
rename to 24-class-metaprog/bulkfood/bulkfood_v6.py
diff --git a/21-class-metaprog/bulkfood/bulkfood_v7.py b/24-class-metaprog/bulkfood/bulkfood_v7.py
similarity index 100%
rename from 21-class-metaprog/bulkfood/bulkfood_v7.py
rename to 24-class-metaprog/bulkfood/bulkfood_v7.py
diff --git a/21-class-metaprog/bulkfood/bulkfood_v8.py b/24-class-metaprog/bulkfood/bulkfood_v8.py
similarity index 100%
rename from 21-class-metaprog/bulkfood/bulkfood_v8.py
rename to 24-class-metaprog/bulkfood/bulkfood_v8.py
diff --git a/21-class-metaprog/bulkfood/model_v6.py b/24-class-metaprog/bulkfood/model_v6.py
similarity index 100%
rename from 21-class-metaprog/bulkfood/model_v6.py
rename to 24-class-metaprog/bulkfood/model_v6.py
diff --git a/21-class-metaprog/bulkfood/model_v7.py b/24-class-metaprog/bulkfood/model_v7.py
similarity index 100%
rename from 21-class-metaprog/bulkfood/model_v7.py
rename to 24-class-metaprog/bulkfood/model_v7.py
diff --git a/21-class-metaprog/bulkfood/model_v8.py b/24-class-metaprog/bulkfood/model_v8.py
similarity index 100%
rename from 21-class-metaprog/bulkfood/model_v8.py
rename to 24-class-metaprog/bulkfood/model_v8.py
diff --git a/21-class-metaprog/evalsupport.py b/24-class-metaprog/evalsupport.py
similarity index 100%
rename from 21-class-metaprog/evalsupport.py
rename to 24-class-metaprog/evalsupport.py
diff --git a/21-class-metaprog/evaltime.py b/24-class-metaprog/evaltime.py
similarity index 100%
rename from 21-class-metaprog/evaltime.py
rename to 24-class-metaprog/evaltime.py
diff --git a/21-class-metaprog/evaltime_meta.py b/24-class-metaprog/evaltime_meta.py
similarity index 100%
rename from 21-class-metaprog/evaltime_meta.py
rename to 24-class-metaprog/evaltime_meta.py
diff --git a/21-class-metaprog/factories.py b/24-class-metaprog/factories.py
similarity index 100%
rename from 21-class-metaprog/factories.py
rename to 24-class-metaprog/factories.py
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..593abbe
--- /dev/null
+++ b/README.md
@@ -0,0 +1,42 @@
+# Fluent Python 2e example code
+
+Example code for the book **Fluent Python, 2nd edition** by Luciano Ramalho (O'Reilly, 2020).
+
+> **BEWARE**: This is a work in progress, like the book itself.
+>
+> * Code here may change and disappear without warning.
+>
+> * Major reorganizations may happen at any time.
+>
+> * No promises. No guarantees. Use at own risk.
+
+## Chapter Map
+
+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|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
+
+> New chapters are marked with 🆕
diff --git a/README.rst b/README.rst
deleted file mode 100644
index 67e5aa1..0000000
--- a/README.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-Fluent Python 2e example code
-=============================
-
-Example code for the book **Fluent Python, 2nd edition** by Luciano Ramalho (O'Reilly, 2020).
-
- **BEWARE**: This is a work in progress, like the book itself.
-
-* Code here may change and disappear without warning.
-
-* A major reorganizations may happen at any time.
-
-* No promises. No guarantees. Use at own risk.
diff --git a/chapter-map.ods b/chapter-map.ods
new file mode 100644
index 0000000..f277ba2
Binary files /dev/null and b/chapter-map.ods differ