diff --git a/src/videoag_common/api_object/object_class.py b/src/videoag_common/api_object/object_class.py
index 8c66e50ed86756dcd1cec7d0688f31b4264b7ac7..aff041aa09d845341fce0cfefe5743e383317adb 100644
--- a/src/videoag_common/api_object/object_class.py
+++ b/src/videoag_common/api_object/object_class.py
@@ -140,6 +140,8 @@ class ApiObjectClass:
             raise Exception(f"Class '{self.orm_class.__name__}' has unknown variant '{base_variant_id}'")
     
     def _post_init_variant_fields(self, all_classes: dict[str, "ApiObjectClass"]):
+        variant_ignore_classes = set(recursive_flat_map_single(lambda c: c.__bases__, self.orm_class))
+        
         for sub_class in self.orm_class.__subclasses__():
             if not hasattr(sub_class, "__all_class_api_fields__"):
                 continue
@@ -153,13 +155,16 @@ class ApiObjectClass:
                                 f"'{self._variant_field.enum_class.__name__}'")
             
             # noinspection PyUnresolvedReferences
-            for sub_field in sub_class.__all_class_api_fields__:
-                assert isinstance(sub_field, ApiField)
-                try:
-                    self._add_field(all_classes, sub_field, sub_class, variant_id)
-                except Exception as e:
-                    raise Exception(
-                        f"While initializing field for member '{sub_field.member_name}' in class '{sub_class.__name__}'") from e
+            for super_sub_class in set(recursive_flat_map_single(lambda c: c.__bases__, sub_class)) - variant_ignore_classes:
+                if not hasattr(super_sub_class, "__all_class_api_fields__"):
+                    continue
+                for sub_field in super_sub_class.__all_class_api_fields__:
+                    assert isinstance(sub_field, ApiField)
+                    try:
+                        self._add_field(all_classes, sub_field, sub_class, variant_id)
+                    except Exception as e:
+                        raise Exception(
+                            f"While initializing field for member '{sub_field.member_name}' in class '{super_sub_class.__name__}'") from e
             
             for sub2_class in filter(
                     lambda c: hasattr(c, "__all_class_api_fields__"),
diff --git a/src/videoag_common/objects/medium.py b/src/videoag_common/objects/medium.py
index e643c1ba8539250820b03ae3005ae86cc9e5566c..dafbd122f2a66073b6ec89785ac8cef48eeba371 100644
--- a/src/videoag_common/objects/medium.py
+++ b/src/videoag_common/objects/medium.py
@@ -286,7 +286,7 @@ class PlainAudioTargetMedium(TargetMedium, FileMedium, SingleAudioContainingMedi
     )
 
 
-class ThumbnailTargetMedium(FileMedium):
+class ThumbnailTargetMedium(TargetMedium, FileMedium):
     __tablename__ = None  # Prevent our own base from adding a table name. This should be a single-table inheritance
     __mapper_args__ = {
         "polymorphic_identity": TargetMediumType.THUMBNAIL