diff --git a/pythonetc/README.md b/pythonetc/README.md
index a022ed4..0118d67 100644
--- a/pythonetc/README.md
+++ b/pythonetc/README.md
@@ -14,10 +14,6 @@ You don't need telegram to read the channel using the link above. If neither of
## To publish
-+ atexit
-+ faulthandler
-+ faulthandler2
-+ future-annotations
+ union
+ lookup-error
+ is
diff --git a/pythonetc/atexit.md b/pythonetc/atexit.md
index b90bd48..e33864a 100644
--- a/pythonetc/atexit.md
+++ b/pythonetc/atexit.md
@@ -1,6 +1,6 @@
# atexit
-Published: 14 December 2021, 18:00.
+Published: 2022-07-05.
The module [atexit](https://docs.python.org/3/library/atexit.html) allows registering hooks that will be executed when the program terminates.
diff --git a/pythonetc/faulthandler.md b/pythonetc/faulthandler.md
index ec1b7f3..7a9934b 100644
--- a/pythonetc/faulthandler.md
+++ b/pythonetc/faulthandler.md
@@ -1,6 +1,6 @@
# faulthandler
-Published: 16 December 2021, 18:00.
+Published: 2022-07-12.
The module [faulthandler](https://docs.python.org/3/library/faulthandler.html) allows registering a handler that will dump the current stack trace in a specific file (stderr by default) upon receiving a specific signal or every N seconds.
diff --git a/pythonetc/faulthandler2.md b/pythonetc/faulthandler2.md
index f426ae7..9ed59b8 100644
--- a/pythonetc/faulthandler2.md
+++ b/pythonetc/faulthandler2.md
@@ -1,6 +1,6 @@
# faulthandler part 2
-Published: 21 December 2021, 18:00.
+Published: 2022-07-14.
Now, let's see how to dump stack trace when a specific signal is received. We will use [SIGUSR1](https://www.gnu.org/software/libc/manual/html_node/Miscellaneous-Signals.html) but you can do the same for any signal.
diff --git a/pythonetc/future-annotations.md b/pythonetc/future-annotations.md
index 28f337f..89ffee1 100644
--- a/pythonetc/future-annotations.md
+++ b/pythonetc/future-annotations.md
@@ -1,6 +1,6 @@
# `from __future__ import annotations` (PEP-563)
-Published: 23 December 2021, 18:00.
+Published: 2022-07-19.
[PEP-563](https://www.python.org/dev/peps/pep-0563/) (landed in Python 3.7) introduced postponed evaluation of type annotations. That means, all your type annotations aren't executed at runtime but rather considered strings.
diff --git a/pythonetc/gc_is_finalized.md b/pythonetc/gc-is-finalized.md
similarity index 100%
rename from pythonetc/gc_is_finalized.md
rename to pythonetc/gc-is-finalized.md
diff --git a/pythonetc/type-checking.md b/pythonetc/type-checking.md
new file mode 100644
index 0000000..3afd26f
--- /dev/null
+++ b/pythonetc/type-checking.md
@@ -0,0 +1,20 @@
+# typing.TYPE_CHECKING
+
+Published: 2022-07-26.
+
+Often, your type annotations will have circular dependencies. For example, `Article` has an attribute `category: Category`, and `Category` has attribute `articles: list[Article]`. If both classes are in the same file, adding `from __future__ import annotations` would solve the issue. But what if they are in different modules? Then you can hide imports that you need only for type annotations inside of the [if TYPE_CHECKING](https://docs.python.org/3/library/typing.html#typing.TYPE_CHECKING) block:
+
+```python
+from __future__ import annotations
+from dataclasses import dataclass
+from typing import TYPE_CHECKING
+
+if TYPE_CHECKING:
+ from .category import Category
+
+@dataclass
+class Article:
+ category: Category
+```
+
+Fun fact: this constant is defined as `TYPE_CHECKING = False`. It won't be executed at runtime, but the type checker is a static analyzer, it doesn't care.