diff --git a/apps/tgbot/tgbot/handlers/default/whois.py b/apps/tgbot/tgbot/handlers/default/whois.py
index 5b93991..0c07925 100644
--- a/apps/tgbot/tgbot/handlers/default/whois.py
+++ b/apps/tgbot/tgbot/handlers/default/whois.py
@@ -1,5 +1,8 @@
+from typing import Optional
+
 from whois import whois, parser
 from aiogram.types import Message
+from dataclasses import dataclass
 from aiogram.utils.markdown import quote_html
 
 from tgbot.handlers.base import SimpleCommandHandler
@@ -19,6 +22,30 @@ no_domain_text = """
 """
 
 
+@dataclass
+class DomainAttrClass:
+    icon: str
+    name: str
+    attr: str
+
+
+# DOMAIN_ATTR_CLASSES order have matter!
+DOMAIN_ATTR_CLASSES = [
+    DomainAttrClass("👤", "Регистратор", "registrar"),
+    DomainAttrClass("📅", "Дата создания", "creation_date"),
+    DomainAttrClass("📅", "Дата окончания", "expiration_date"),
+    DomainAttrClass("📖", "Адрес", "address"),
+    DomainAttrClass("🏘", "Город", "city"),
+    DomainAttrClass("🏘", "Страна", "country"),
+    DomainAttrClass("💬", "Имя", "name"),
+    DomainAttrClass("💼", "Организация", "org"),
+    DomainAttrClass("💬", "Zipcode", "zipcode"),
+    DomainAttrClass("✉", "Почта", "emails"),
+    DomainAttrClass("📌", "NS", "name_servers"),
+    DomainAttrClass("🔐", "DNSSec", "dnssec"),
+]
+
+
 def create_whois_message(domain: str) -> str:
     try:
         domain_info = whois(domain)
@@ -27,59 +54,36 @@ def create_whois_message(domain: str) -> str:
     domain_name = domain_info.get("domain_name")
     if domain_name is None:
         return no_domain_text
-
     if isinstance(domain_name, list):
         domain_name = domain_name[0]
 
-    message = f"\n📝 Информация о домене {domain_name.lower()}:" \
-              f"\n\n👤 Регистратор: {domain_info.get('registrar')}" \
+    message = f"\n📝 Информация о домене {domain_name.lower()}:"
 
-    if creation_date := domain_info.get('creation_date'):
-        if isinstance(creation_date, list):
-            creation_date = creation_date[0]
+    for i, domain_attr in enumerate(DOMAIN_ATTR_CLASSES):
+        # for pretty printing, DOMAIN_ATTR_CLASSES order have matter!
+        if i in [2, 10]:
+            message += "\n"
+        resp = format_domain_item(
+            domain_attr.icon, domain_attr.name, domain_info.get(domain_attr.attr)
+        )
+        if resp:
+            message += resp
 
-        message += f"\n📅 Дата создания: {creation_date}"
+    return message
 
-    if expiration_date := domain_info.get('expiration_date'):
-        if isinstance(expiration_date, list):
-            expiration_date = expiration_date[0]
 
-        message += f"\n📅 Дата окончания:: {expiration_date}\n"
-
-    if address := domain_info.get("address"):
-        if isinstance(address, list):
-            message += "\n📖 Адрес: \n" + str.join("\n", [f" * {address_obj}" for address_obj in address])
-        else:
-            message += f"\n📖 Адрес: {address}"
-    if city := domain_info.get("city"):
-        if isinstance(city, list):
-            message += "\n🏘 Город: \n" + str.join("\n", [f" * {city_obj}" for city_obj in city])
-        else:
-            message += f"\n🏘 Город: {city}"
-    if country := domain_info.get("country"):
-        message += f"\n🏳️ Страна: {country}"
-    if name := domain_info.get("name"):
-        if isinstance(name, list):
-            message += "\n🏘 💬 Имя: \n" + str.join("\n", [f" * {name_obj}" for name_obj in name])
-        else:
-            message += f"\n💬 Имя: {name}"
-    if org := domain_info.get("org"):
-        message += f"\n💼 Организация: {org}"
-    if zipcode := domain_info.get("zipcode"):
-        message += f"\n🖥 Zipcode: {zipcode}"
-    if emails := domain_info.get("emails"):
-        message += "\n✉️ Почта: \n" + str.join("\n", [f" * {email}" for email in emails])
-
-    if name_servers := domain_info.get('name_servers'):
-        message += "\n\n📌 NS: \n" + str.join("\n", [f" * {ns}" for ns in
-                                                     list(set(map(str.lower, name_servers)))])
-    if dnssec := domain_info.get("dnssec"):
-        message += f"\n🔐 DNSSec: {dnssec}"
+def format_domain_item(icon, item_name, items) -> Optional[str]:
+    if not items:
+        return
+    if isinstance(items, list):
+        message = f"\n{icon} {item_name}:\n"
+        message += str.join("\n", [f" * {ns}" for ns in list(set(map(str.lower, items)))])
+    else:
+        message = f"\n{icon} {item_name}: {items}"
     return message
 
 
 class WhoisCommandHandler(SimpleCommandHandler):
-
     help_message = whois_help_message
 
     def __init__(self):