Index: flexoentity/flexo_entity.py
===================================================================
--- flexoentity/flexo_entity.py	(revision ed4567c4ab70e065812f8be71fd11ac74a6164bc)
+++ flexoentity/flexo_entity.py	(revision a26d44747beba2f2b209c9fd97caec8eea22dca8)
@@ -157,5 +157,5 @@
     """
     _in_factory: bool = field(default=False, repr=False)
-    subtype: str = "GENERIC"
+    subtype: str = ""
     flexo_id: Optional[FlexOID] = field(default=None)
     fingerprint: str = field(default_factory=str)
@@ -251,4 +251,7 @@
             self.fingerprint = self._compute_fingerprint()
 
+        if not self.subtype:
+            self.subtype = self.__class__.__name__
+            
     def __str__(self):
         return (
@@ -261,4 +264,5 @@
         return {
             "flexo_id": str(self.flexo_id),
+            "subtype": self.subtype,
             "fingerprint": self.fingerprint,
             "origin": self.origin,
@@ -279,9 +283,10 @@
 
         flexo_id = FlexOID(data["flexo_id"])
-
+        subtype = data["subtype"]
         # canonical domain object
 
         obj = cls(
             flexo_id=flexo_id,
+            subtype=subtype,
             _in_factory=True
         )
