diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 7d3057fa75ee8477355149d9a72eacfbb5732210..1cdf3153d66622f0e9b4498a4edee12b6aef0447 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,5 +1,5 @@
 default_language_version:
-  python: python3.10
+  python: python3.11
 
 exclude: snapshots/
 repos:
diff --git a/contracts/models.py b/contracts/models.py
index 983443896025937e8c3bd3342c0689002a51bd0d..0a6098fcf4dc62138b9cc9716238df89667b8d3c 100644
--- a/contracts/models.py
+++ b/contracts/models.py
@@ -222,12 +222,7 @@ class Contract(models.Model):
         verbose_name="Typ",
     )
 
-    subtype = models.ForeignKey(
-        ContractSubtype,
-        on_delete=models.CASCADE,
-        related_name="contracts",
-        verbose_name="Podtyp",
-    )
+    subtype = models.ManyToManyField(ContractSubtype)
 
     contains_nda = models.BooleanField(
         default=False,
@@ -321,6 +316,12 @@ class Contract(models.Model):
     )
 
     issues = models.ManyToManyField(ContractIssue)
+    notes = MarkdownxField(
+        blank=True,
+        null=True,
+        verbose_name="Obsah",
+        help_text="Poznámky jsou viditelné pro všechny, kteří mohou smlouvu spravovat.",
+    )
 
     summary = models.CharField(
         max_length=65536,
@@ -356,13 +357,6 @@ class Contract(models.Model):
 
     expected_cost_hour = models.IntegerField(verbose_name="Očekáváná cena za hodinu")
 
-    intent_url = models.URLField(
-        max_length=256,
-        blank=True,
-        null=True,
-        verbose_name="Odkaz na záměr",
-    )
-
     agreement_url = models.URLField(
         max_length=256,
         blank=True,
@@ -384,28 +378,20 @@ class Contract(models.Model):
         verbose_name_plural = "Smlouvy"
 
 
-class ContractNote(models.Model):
-    contract = models.ForeignKey(
-        Contract,
-        on_delete=models.CASCADE,
-        related_name="contract",
+class ContractIntent(models.Model):
+    url = models.URLField(
+        max_length=256,
+        blank=True,
+        null=True,
+        verbose_name="Odkaz",
     )
 
-    author = models.ForeignKey(
-        User,
-        related_name="contract_notes",
+    contract = models.ForeignKey(
+        Contract,
         on_delete=models.CASCADE,
-        verbose_name="Autor",
-    )
-
-    created_date = models.DateTimeField(
-        verbose_name="Datum vytvoření",
-    )
-
-    content = MarkdownxField(
-        verbose_name="Obsah",
+        related_name="intents",
     )
 
     class Meta:
-        verbose_name = "Poznámka ke smlouvě"
-        verbose_name_plural = "Poznámky ke smlouvě"
+        verbose_name = "Záměr"
+        verbose_name_plural = "Záměry"