diff --git a/README.md b/README.md
index 69597c4c8f112d192cf2b55c654bb5c021a9ca79..54406c840b3725ff14f8349a80ba94e34ebd3eb3 100644
--- a/README.md
+++ b/README.md
@@ -8,11 +8,13 @@ Der Client verwendet *XTA 2 Version 3.1* mit [XTA-Modul-Webservice-Version](http
 Er wird als Maven-Artefakt `xta-client-lib` bereitgestellt und kann in Java-Anwendungen eingebunden werden.
 
 ## Senden einer Nachricht
-Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client.
+Zum Senden einer Nachricht konfiguriert die Nutzer*in einen neuen XTA-Client mit einem Client-Zertifikat, welches ihn für das Senden mit einer Autor-Kennung autorisiert.
+
+Beim Aufruf von `sendMessage` wird die Nachricht an den XTA-Server übergeben und der Transport-Report zurückgegeben.
 ```mermaid
-%% Versand einer Nachricht
+%% Senden einer Nachricht
   sequenceDiagram
-    participant A as Nutzer
+    participant A as Nutzer*in
     participant B as XTA-Client
     participant C as XTA-Server
     Note left of A: (1) XTA-Client erzeugen
@@ -27,7 +29,7 @@ Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client.
     deactivate C
     B->>C: lookupService
     activate C
-    C-->>B: 
+    C-->>B:  
     deactivate C
     B->>C: createMessageID
     activate C
@@ -35,18 +37,19 @@ Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client.
     deactivate C
     B->>C: sendMessage
     activate C
+    C-->>B: 
     deactivate C
     B->>C: getTransportReport
     activate C
     C-->>B: 
     deactivate C
-    Note left of A: (4) Nachrichtenstatus prüfen
     B-->>A: 
-	deactivate B
-	deactivate A
+    deactivate B
+    deactivate A
+    Note left of A: (4) Nachrichtenstatus prüfen
 ```
 
-<small>* XTA-Server wird auch oft als Nachrichtenbroker oder Nachrichtenvermittler bezeichnet.</small>
+<small>* Der XTA-Server wird oft als Nachrichtenbroker oder Nachrichtenvermittler bezeichnet.</small>
 
 **Beispielcode:**
 
@@ -54,70 +57,109 @@ Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client.
 // (1) XTA-Client erzeugen
 var client = XtaClient.from(config);
 // (2) Nachricht erzeugen
-...
+var zipFileName = "d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.zip";
+var zipFileContentDataHandler = new DataHandler(new FileDataSource("/path/to/" + zipFileName));
+var xdomeaXtaFile = XtaFile.builder()
+        .name(zipFileName)
+        .content(zipFileContentDataHandler)
+        .contentType("application/zip")
+        .build();
+
+var message = XtaMessage.builder()
+        .metaData(XtaMessageMetaData.builder()
+                .service("urn:xoev-de:xdomea:schema:2.4.0/xdomea240Antrag.wsdl")
+                .businessScenarioCode("XDOMEAGAD_DATA")
+                .businessScenarioListUri("urn:de:dataport:codeliste:business.scenario")
+                .businessScenarioListVersionId("1.0")
+                .messageTypeCode("Geschaeftsgang.Geschaeftsgang.0201")
+                .messageTypePayloadSchema("urn:xoev-de:xdomea:schema:2.4.0")
+                .authorIdentifier(XtaIdentifier.builder()
+                        .category("Generischer Antragsdienst")
+                        .value("gad:010103000000")
+                        .build())
+                .readerIdentifier(XtaIdentifier.builder()
+                        .category("Generischer Antragsempfänger")
+                        .value("gae:test-environment@ozg-cloud.de")
+                        .build())
+                .build())
+        .messageFile(xdomeaXtaFile)
+        .attachmentFiles(emptyList())
+        .build();
+// (3) Nachricht senden
+var transportReport = client.sendMessage(message);
+// (4) Nachrichtenstatus prüfen
+assert transportReport.status() == XtaMessageStatus.OPEN;
 ```
 
 
 ## Empfangen von Nachrichten
-Zum Empfangen von Nachrichten konfiguriert der Nutzer einen neuen XTA-Client mit allen seinen Leser-Kennungen.
+Zum Empfangen von Nachrichten konfiguriert die Nutzer*in einen neuen XTA-Client mit den gewünschten Leser-Kennungen. Zudem konfiguriert er das Client-Zertifikat, welches ihn zum Lesen mit den Leser-Kennungen autorisiert.
+
+Beim Aufruf von `fetchMessages` werden alle Nachrichten für die Leser-Kennungen abgeholt und verarbeitet.
+Die Nachrichten-Verarbeitung erfolgt durch die übergebene `processMessage`-Funktion.
 
 ```mermaid
-%% Abfrage einer Nachricht
+%% Empfangen von Nachrichten
   sequenceDiagram
-    participant A as Nutzer
-    participant D as Verarbeiter
+    participant A as Nutzer*in
     participant B as XTA-Client
     participant C as XTA-Server
     Note left of A: (1) XTA-Client erzeugen
     Note left of A: (2) Nachrichten abholen
     A->>B: fetchMessages
-
     activate A
     activate B
-    B->>C: getStatusList
-    activate C
-    C-->>B: 
-    deactivate C
-    B->>C: getTransportReport
-    activate C
-    C-->>B: 
-    deactivate C
-    B->>A: 
-	deactivate B
-	Note left of B: (4) Nachricht abholen
-    A->>B: getMessage
-    activate B
-    B->>C: getMessage
-    activate C
-    C-->>B: 
-    deactivate C
-    B->>C: getTransportReport
-    activate C
-    C-->>B: 
-    deactivate C
-    B->>A: 
-	deactivate B
-	Note left of D: ...Nachricht verarbeiten...
-	Note left of B: (5) Nachricht schließen
-    A->>B: close
-    activate B
-    B->>C: close
-    activate C
-    C-->>B: 
-    deactivate C
-    B->>A: 
+    loop Für jede Leser-Kennung
+        B->>C: checkAccountActive 
+        activate C
+        C-->>B: 
+        deactivate C
+        B->>C: getStatusList
+        activate C
+        C-->>B: 
+        deactivate C
+        loop Für jede ungelesene Nachricht
+            B->>C: getMessage
+            activate C
+            Note left of B: Nachricht abholen
+            C-->>B: 
+            deactivate C
+            B->>A: processMessage
+	        deactivate B
+            Note left of A: (3) Nachricht verarbeiten
+            A-->>B: 
+            activate B
+            B->>C: close
+            activate C
+            Note left of B: Nachricht schließen
+            C-->>B: 
+            deactivate C
+            B->>C: getTransportReport
+            activate C
+            C-->>B: 
+            deactivate C
+            B->>A: 
+        end
+	end
 	deactivate B
 	deactivate A
+    Note left of A: (4) Nachrichtenstatus prüfen
 ```
-
+<small>* Sollte `processMessage` bei der Verarbeitung eine *RuntimeException* werfen, wird `Nachrichten schließen` übersprungen.</small>
 
 **Beispielcode:**
 
 ```java
 // (1) XTA-Client erzeugen
 var client = XtaClient.from(config);
-// (2) Nachricht erzeugen
-...
+// (2) Nachrichten abholen
+var transportReports = client.fetchMessages(xtaMessage -> {
+    // (3) Nachricht verarbeiten
+});
+// (4) Nachrichtenstatus prüfen
+for (var transportReport : transportReports) {
+    assert transportReport.status() == XtaMessageStatus.GREEN;
+}
 ```
 
 ## Referenzen
diff --git a/src/main/java/de/ozgcloud/xta/client/model/XtaMessage.java b/src/main/java/de/ozgcloud/xta/client/model/XtaMessage.java
index ae2d1845de39e7794519d11a3269ff29515511d4..bf636f23d196799bfcabcf14547db5a731e59616 100644
--- a/src/main/java/de/ozgcloud/xta/client/model/XtaMessage.java
+++ b/src/main/java/de/ozgcloud/xta/client/model/XtaMessage.java
@@ -8,7 +8,7 @@ import jakarta.validation.constraints.NotNull;
 import lombok.Builder;
 
 /**
- * A xta message consisting of meta data, a message file and optional attachment files.
+ * An XTA message consisting of metadata, a message file and optional attachment files.
  *
  * @param metaData Metadata of the message <p>This field is required.</p>
  * @param messageFile Main message of the message <p>This field is required.</p>