diff --git a/elections2021/constants.py b/elections2021/constants.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec2ca0a4fc55455b43ac6f6b0363fea62c5f8a44
--- /dev/null
+++ b/elections2021/constants.py
@@ -0,0 +1,77 @@
+WHITE = "white"
+BLACK = "black"
+YELLOW = "yellow"
+GREEN = "green"
+
+STYLE_CHOICES = (
+    (WHITE, "bílé pozadí"),
+    (BLACK, "černé pozadí"),
+    (YELLOW, "žluté pozadí"),
+    (GREEN, "zelené pozadí"),
+)
+
+STYLE_CSS = {
+    WHITE: "",
+    BLACK: "emphasized-black",
+    YELLOW: "emphasized-lemon",
+    GREEN: "emphasized-acidgreen",
+}
+
+RICH_TEXT_FEATURES = [
+    "h2",
+    "h3",
+    "h4",
+    "bold",
+    "italic",
+    "superscript",
+    "subscript",
+    "strikethrough",
+    "ul-elections2021",
+    "ol-elections2021",
+    "blockquote-elections2021",
+    "link",
+    "image",
+    "document-link",
+]
+
+ARTICLES_PER_PAGE = 9
+
+# cílovky
+
+CHILDLESS = "childless"
+PARENT = "parent"
+MATURE = "mature"
+GRANDPARENT = "grandparent"
+WORKING_SENIOR = "working_senior"
+STUDENT = "student"
+
+SELF_EMPLOYED = "self_employed"
+SOCIALLY_WEAK = "socially_weak"
+
+NATURE = "nature"
+SPORT = "sport"
+HEALTH = "health"
+CULTURE = "culture"
+COMPUTERS = "computers"
+COUNTRYSIDE = "countryside"
+HOUSING = "housing"
+EDUCATION = "education"
+
+TARGET_CHOICES = (
+    (CHILDLESS, "bezdětní"),
+    (PARENT, "rodiče"),
+    (MATURE, "zralý"),
+    (GRANDPARENT, "prarodiče"),
+    (WORKING_SENIOR, "pracující senioři"),
+    (STUDENT, "studenti"),
+    (SELF_EMPLOYED, "OSVČ"),
+    (SOCIALLY_WEAK, "sociálně slabí"),
+    (NATURE, "příroda"),
+    (SPORT, "sport"),
+    (HEALTH, "zdraví"),
+    (CULTURE, "kultura"),
+    (COMPUTERS, "počítače"),
+    (COUNTRYSIDE, "venkov"),
+    (HOUSING, "bydlení"),
+    (EDUCATION, "vzdělávání"),
+)
diff --git a/elections2021/models.py b/elections2021/models.py
index a2fd384ccf7125bee4892f363ae0befea5d8f997..971f1f67536d81e72eb9b4e94d4632620cae3ba4 100644
--- a/elections2021/models.py
+++ b/elections2021/models.py
@@ -13,7 +13,13 @@ from wagtailmetadata.models import MetadataPageMixin
 from shared.models import ArticleMixin, SubpageMixin
 from shared.utils import get_subpage_url
 
-ARTICLES_PER_PAGE = 9
+from .constants import (
+    ARTICLES_PER_PAGE,
+    RICH_TEXT_FEATURES,
+    STYLE_CHOICES,
+    STYLE_CSS,
+    WHITE,
+)
 
 
 class LinkBlock(blocks.StructBlock):
@@ -73,39 +79,6 @@ class Elections2021ArticleTag(TaggedItemBase):
 
 
 class Elections2021ArticlePage(ArticleMixin, SubpageMixin, MetadataPageMixin, Page):
-    WHITE = "white"
-    BLACK = "black"
-    YELLOW = "yellow"
-    GREEN = "green"
-
-    STYLE_CHOICES = (
-        (WHITE, "bílé pozadí"),
-        (BLACK, "černé pozadí"),
-        (YELLOW, "žluté pozadí"),
-        (GREEN, "zelené pozadí"),
-    )
-
-    STYLE_CSS = {
-        WHITE: "",
-        BLACK: "emphasized-black",
-        YELLOW: "emphasized-lemon",
-        GREEN: "emphasized-acidgreen",
-    }
-
-    RICH_TEXT_FEATURES = [
-        "h2",
-        "h3",
-        "h4",
-        "bold",
-        "italic",
-        "ul-elections2021",
-        "ol-elections2021",
-        "blockquote-elections2021",
-        "link",
-        "image",
-        "document-link",
-    ]
-
     ### FIELDS
 
     text = RichTextField("článek", blank=True, features=RICH_TEXT_FEATURES)
@@ -132,7 +105,7 @@ class Elections2021ArticlePage(ArticleMixin, SubpageMixin, MetadataPageMixin, Pa
         verbose_name = "Aktualita"
 
     def card_css_class(self):
-        return self.STYLE_CSS[self.card_style]
+        return STYLE_CSS[self.card_style]
 
     def get_context(self, request):
         context = super().get_context(request)