Index: flexoentity/flexo_entity.py
===================================================================
--- flexoentity/flexo_entity.py	(revision a26d44747beba2f2b209c9fd97caec8eea22dca8)
+++ flexoentity/flexo_entity.py	(revision 0fbb01a687097a66373b31056aaa65a85064b51a)
@@ -211,20 +211,8 @@
             raise ValueError(f"{cls.__name__} must define ENTITY_TYPE")
 
-        #if entity_type == EntityType.DOMAIN:
-        #    DomainManager.create(domain_id=domain_id,
-        #                         fullname=kwargs.get("fullname", ""),
-        #                         description=kwargs.get("description", ""))
-        #else:
-            # require that this domain already exists
-        #    if domain_id not in DomainManager.all_domain_ids():
-        #        raise ValueError(
-        #            f"Domain '{domain_id}' does not exist. "
-        #            f"Create it first via Domain.with_domain_id(...)."
-        #        )
-
         flexo_id = FlexOID.safe_generate(
             domain_id=domain_id,
             entity_type=entity_type.value,
-            state="D",
+            state=EntityState.DRAFT.value,
             text=kwargs.get("text_seed", ""),
             version=1,
@@ -260,6 +248,5 @@
         )
 
-    def to_dict(self):
-        """I return the a dictionary representation of myself"""
+    def meta_dict(self):
         return {
             "flexo_id": str(self.flexo_id),
@@ -269,4 +256,14 @@
             "originator_id": str(self.originator_id),
             "owner_id": str(self.owner_id),
+    }
+
+    @abstractmethod
+    def _serialize_content(self):
+        return {}
+
+    def to_dict(self):
+        return {
+            "meta": self.meta_dict(),
+            "content": self._serialize_content(),
         }
 
