diff --git a/Sources/XXClient/Models/Contact.swift b/Sources/XXClient/Models/Contact.swift
index 7ab589735aa8ca7028b5d3700835bd8cd5e2966c..e61a18f8c6a5826e5619c65571cbbbb4d1fcb817 100644
--- a/Sources/XXClient/Models/Contact.swift
+++ b/Sources/XXClient/Models/Contact.swift
@@ -6,18 +6,25 @@ public struct Contact {
     data: Data,
     getId: @escaping () throws -> Data,
     getPublicKey: @escaping () throws -> Data,
-    getFacts: @escaping () throws -> [Fact]
+    getFacts: @escaping () throws -> [Fact],
+    setFacts: @escaping (Data, [Fact]) throws -> Data
   ) {
     self.data = data
     self.getId = getId
     self.getPublicKey = getPublicKey
     self.getFacts = getFacts
+    self._setFacts = setFacts
   }
 
   public var data: Data
   public var getId: () throws -> Data
   public var getPublicKey: () throws -> Data
   public var getFacts: () throws -> [Fact]
+  public var _setFacts: (Data, [Fact]) throws -> Data
+
+  public mutating func setFacts(_ facts: [Fact]) throws {
+    data = try _setFacts(data, facts)
+  }
 }
 
 extension Contact: Equatable {
@@ -31,13 +38,15 @@ extension Contact {
     _ data: Data,
     getIdFromContact: GetIdFromContact = .live,
     getPublicKeyFromContact: GetPublicKeyFromContact = .live,
-    getFactsFromContact: GetFactsFromContact = .live
+    getFactsFromContact: GetFactsFromContact = .live,
+    setFactsOnContact: SetFactsOnContact = .live
   ) -> Contact {
     Contact(
       data: data,
       getId: { try getIdFromContact(data) },
       getPublicKey: { try getPublicKeyFromContact(data) },
-      getFacts: { try getFactsFromContact(data) }
+      getFacts: { try getFactsFromContact(data) },
+      setFacts: { try setFactsOnContact(contactData: $0, facts: $1) }
     )
   }
 }
@@ -48,7 +57,8 @@ extension Contact {
       data: data,
       getId: XCTUnimplemented("\(Self.self).getId"),
       getPublicKey: XCTUnimplemented("\(Self.self).getPublicKey"),
-      getFacts: XCTUnimplemented("\(Self.self).getFacts")
+      getFacts: XCTUnimplemented("\(Self.self).getFacts"),
+      setFacts: XCTUnimplemented("\(Self.self).updateFacts")
     )
   }
 }