diff --git a/perxis/collections/helpers.py b/perxis/collections/helpers.py
index 44c99f8dceef08f1ca76c0983638528370056bb0..d4215d6a8dbc1e7b16b054aceffb05b26bdce8c0 100644
--- a/perxis/collections/helpers.py
+++ b/perxis/collections/helpers.py
@@ -1,5 +1,5 @@
 from perxis.collections import collections_pb2
-from typing import TypedDict
+from dataclasses import dataclass, asdict
 from typing_extensions import deprecated
 
 
@@ -22,11 +22,18 @@ def make_collection_instances(
     return collections
 
 
-class CollectionProps(TypedDict):
-   single: bool
-   system: bool
-   no_data: bool
-   hidden: bool
+@dataclass
+class CollectionProps:
+   single: bool = False
+   system: bool = False
+   no_data: bool = False
+   hidden: bool = False
+   no_revisions: bool = False
+   no_archive: bool = False
+   no_publish: bool = False
+
+   def to_dict(self) -> dict:
+       return asdict(self)  # noqa
 
 
 def init_collections(
@@ -40,8 +47,13 @@ def init_collections(
         with open(f"{schemes_dir}/{collection_id}.json", "r") as file:
             collection_schema = file.read()
 
+        props = collections_settings_mapping.get(collection_id) or CollectionProps()
+
+        if not isinstance(props, CollectionProps):
+            raise TypeError("collections_settings_mapping value must be an instance of CollectionProps")
+
         kwargs = {
-            **(collections_settings_mapping.get(collection_id) or {}),
+            **props.to_dict(),
             "id": collection_id,
             "name": collection_name,
             "schema": collection_schema,