diff --git a/enzevalos_iphone.xcodeproj/project.pbxproj b/enzevalos_iphone.xcodeproj/project.pbxproj
index bdfaad849cc607f19adb8c8fc06bdcdcf9d439fd..b36c8f7c8e09beb0f0af269411c8e407db68dca9 100644
--- a/enzevalos_iphone.xcodeproj/project.pbxproj
+++ b/enzevalos_iphone.xcodeproj/project.pbxproj
@@ -23,10 +23,12 @@
 		0EF73F4324237E6500932FA0 /* SMIMEHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EF73F4224237E6500932FA0 /* SMIMEHelpers.swift */; };
 		0EFEF0952417C0B400BB2FF7 /* CHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEF0942417C0B400BB2FF7 /* CHelpers.swift */; };
 		12680CE3CA4B14F980A48941 /* Pods_enzevalos_iphone.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F2D682FEE7B85A09D7E4650 /* Pods_enzevalos_iphone.framework */; };
+		32261743260C7CE60068CBD4 /* ContactMailListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32261742260C7CE60068CBD4 /* ContactMailListView.swift */; };
 		3E6B07DE2011246500E49609 /* invitationText.html in Resources */ = {isa = PBXBuildFile; fileRef = 3E6B07DD2011246500E49609 /* invitationText.html */; };
 		3EB4FAA420120096001D0625 /* DialogOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EB4FAA320120096001D0625 /* DialogOption.swift */; };
 		3EC35F2420037651008BDF95 /* InvitationHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC35F2320037651008BDF95 /* InvitationHelper.swift */; };
 		3EC35F302003838E008BDF95 /* InvitationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC35F2F2003838E008BDF95 /* InvitationTests.swift */; };
+		3F071ED32611BF6900E121F0 /* InboxRefreshModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F071ED22611BF6900E121F0 /* InboxRefreshModel.swift */; };
 		3FB75DC525FFA75C00919925 /* ComposeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FB75DC425FFA75B00919925 /* ComposeView.swift */; };
 		3FB75DC925FFA77800919925 /* RecipientRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FB75DC825FFA77800919925 /* RecipientRowView.swift */; };
 		3FB75DCD25FFD37400919925 /* RecipientListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FB75DCC25FFD37400919925 /* RecipientListView.swift */; };
@@ -70,7 +72,7 @@
 		476406822416AA6F00C7D426 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 4764060F2416AA6F00C7D426 /* LICENSE */; };
 		476406952416B54D00C7D426 /* KeyRecordRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476406892416B54D00C7D426 /* KeyRecordRow.swift */; };
 		476406972416B54D00C7D426 /* InboxCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764068B2416B54D00C7D426 /* InboxCoordinator.swift */; };
-		476406982416B54D00C7D426 /* CiricleImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764068D2416B54D00C7D426 /* CiricleImage.swift */; };
+		476406982416B54D00C7D426 /* CircleImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764068D2416B54D00C7D426 /* CircleImage.swift */; };
 		476406992416B54D00C7D426 /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764068E2416B54D00C7D426 /* SearchView.swift */; };
 		4764069A2416B54D00C7D426 /* MailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4764068F2416B54D00C7D426 /* MailView.swift */; };
 		4764069C2416B54D00C7D426 /* VCSwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476406922416B54D00C7D426 /* VCSwiftUIView.swift */; };
@@ -82,7 +84,6 @@
 		476EEF9922A872BF00BB4EF7 /* enzevalos_iphoneUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476EEF9822A872BF00BB4EF7 /* enzevalos_iphoneUITests.swift */; };
 		476EEFA122A873A800BB4EF7 /* OnboardingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476EEFA022A873A800BB4EF7 /* OnboardingTest.swift */; };
 		476EEFA722A87B9800BB4EF7 /* accounts.json in Resources */ = {isa = PBXBuildFile; fileRef = 476EEFA622A87B9800BB4EF7 /* accounts.json */; };
-		477120A8254C289B00B28C64 /* ContactTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477120A7254C289B00B28C64 /* ContactTabView.swift */; };
 		477120AE254C28F900B28C64 /* TabSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477120AD254C28F900B28C64 /* TabSupport.swift */; };
 		477120BC254C401E00B28C64 /* AddressRecord+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477120BB254C401E00B28C64 /* AddressRecord+CoreDataProperties.swift */; };
 		477120C2254C676000B28C64 /* ContactView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477120C1254C676000B28C64 /* ContactView.swift */; };
@@ -296,12 +297,14 @@
 		0EF73F4224237E6500932FA0 /* SMIMEHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SMIMEHelpers.swift; sourceTree = "<group>"; };
 		0EFEF0942417C0B400BB2FF7 /* CHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CHelpers.swift; sourceTree = "<group>"; };
 		101F3BA8A4325D747C9721A1 /* Pods-enzevalos_iphoneTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-enzevalos_iphoneTests.debug.xcconfig"; path = "Target Support Files/Pods-enzevalos_iphoneTests/Pods-enzevalos_iphoneTests.debug.xcconfig"; sourceTree = "<group>"; };
+		32261742260C7CE60068CBD4 /* ContactMailListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactMailListView.swift; sourceTree = "<group>"; };
 		3E6B07DD2011246500E49609 /* invitationText.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = invitationText.html; path = Invitation/invitationText.html; sourceTree = "<group>"; };
 		3E9708AD1FAC925D005825C9 /* enzevalos_iphone.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = enzevalos_iphone.entitlements; sourceTree = "<group>"; };
 		3E9708AE1FAC925D005825C9 /* enzevalos-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "enzevalos-Info.plist"; sourceTree = "<group>"; };
 		3EB4FAA320120096001D0625 /* DialogOption.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DialogOption.swift; sourceTree = "<group>"; };
 		3EC35F2320037651008BDF95 /* InvitationHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = InvitationHelper.swift; path = Invitation/InvitationHelper.swift; sourceTree = "<group>"; };
 		3EC35F2F2003838E008BDF95 /* InvitationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitationTests.swift; sourceTree = "<group>"; };
+		3F071ED22611BF6900E121F0 /* InboxRefreshModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InboxRefreshModel.swift; sourceTree = "<group>"; };
 		3FB75DC425FFA75B00919925 /* ComposeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeView.swift; sourceTree = "<group>"; };
 		3FB75DC825FFA77800919925 /* RecipientRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecipientRowView.swift; sourceTree = "<group>"; };
 		3FB75DCC25FFD37400919925 /* RecipientListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecipientListView.swift; sourceTree = "<group>"; };
@@ -456,7 +459,7 @@
 		4764067D2416AA6F00C7D426 /* asn1err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1err.h; sourceTree = "<group>"; };
 		476406892416B54D00C7D426 /* KeyRecordRow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyRecordRow.swift; sourceTree = "<group>"; };
 		4764068B2416B54D00C7D426 /* InboxCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InboxCoordinator.swift; sourceTree = "<group>"; };
-		4764068D2416B54D00C7D426 /* CiricleImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CiricleImage.swift; sourceTree = "<group>"; };
+		4764068D2416B54D00C7D426 /* CircleImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CircleImage.swift; sourceTree = "<group>"; };
 		4764068E2416B54D00C7D426 /* SearchView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = "<group>"; };
 		4764068F2416B54D00C7D426 /* MailView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MailView.swift; sourceTree = "<group>"; };
 		476406922416B54D00C7D426 /* VCSwiftUIView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VCSwiftUIView.swift; sourceTree = "<group>"; };
@@ -470,7 +473,6 @@
 		476EEF9A22A872BF00BB4EF7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		476EEFA022A873A800BB4EF7 /* OnboardingTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnboardingTest.swift; sourceTree = "<group>"; };
 		476EEFA622A87B9800BB4EF7 /* accounts.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = accounts.json; sourceTree = "<group>"; };
-		477120A7254C289B00B28C64 /* ContactTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactTabView.swift; sourceTree = "<group>"; };
 		477120AD254C28F900B28C64 /* TabSupport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabSupport.swift; sourceTree = "<group>"; };
 		477120BB254C401E00B28C64 /* AddressRecord+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AddressRecord+CoreDataProperties.swift"; sourceTree = "<group>"; };
 		477120C1254C676000B28C64 /* ContactView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactView.swift; sourceTree = "<group>"; };
@@ -530,7 +532,7 @@
 		47C112C92531E9B000621A07 /* AttachmentRecord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentRecord.swift; sourceTree = "<group>"; };
 		47C22280218AFD6300BD2C2B /* AutocryptTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutocryptTest.swift; sourceTree = "<group>"; };
 		47C22282218B02C700BD2C2B /* autocryptSimpleExample1.eml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = autocryptSimpleExample1.eml; sourceTree = "<group>"; };
-		47C3490125489F52008D290C /* MailRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MailRowView.swift; path = enzevalos_iphone/SwiftUI/SupportingViews/MailRowView.swift; sourceTree = SOURCE_ROOT; };
+		47C3490125489F52008D290C /* MailRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MailRowView.swift; path = enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift; sourceTree = SOURCE_ROOT; };
 		47C8224324379EAE005BCE73 /* AttachmentsViewMain.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttachmentsViewMain.swift; sourceTree = "<group>"; };
 		47C8224924379EAE005BCE73 /* DialogView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DialogView.swift; sourceTree = "<group>"; };
 		47C8224A24379EAE005BCE73 /* FloatingActionButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FloatingActionButton.swift; sourceTree = "<group>"; };
@@ -967,6 +969,7 @@
 				4750BDE02539C5FC00F6D5AB /* InboxView.swift */,
 				47FA8EAB254D77DE006883D0 /* MailListView.swift */,
 				47C3490125489F52008D290C /* MailRowView.swift */,
+				3F071ED22611BF6900E121F0 /* InboxRefreshModel.swift */,
 			);
 			path = Inbox;
 			sourceTree = "<group>";
@@ -979,7 +982,7 @@
 				47C822612438A81C005BCE73 /* MapView.swift */,
 				47EABF2A2423C20C00774A93 /* LoadingBlocker.swift */,
 				47EABF282423C1FB00774A93 /* KeyboardChecker.swift */,
-				4764068D2416B54D00C7D426 /* CiricleImage.swift */,
+				4764068D2416B54D00C7D426 /* CircleImage.swift */,
 				4764068E2416B54D00C7D426 /* SearchView.swift */,
 				4764068F2416B54D00C7D426 /* MailView.swift */,
 				476406902416B54D00C7D426 /* SwiftUI to UIKit */,
@@ -1035,8 +1038,8 @@
 		477120A6254C287B00B28C64 /* Contact */ = {
 			isa = PBXGroup;
 			children = (
-				477120A7254C289B00B28C64 /* ContactTabView.swift */,
 				477120C1254C676000B28C64 /* ContactView.swift */,
+				32261742260C7CE60068CBD4 /* ContactMailListView.swift */,
 			);
 			path = Contact;
 			sourceTree = "<group>";
@@ -1872,7 +1875,6 @@
 			files = (
 				476801DE21846A5A00F7F259 /* OutgoingMail.swift in Sources */,
 				47B71AAF2538354A00CA87C6 /* OnboardingValueState.swift in Sources */,
-				477120A8254C289B00B28C64 /* ContactTabView.swift in Sources */,
 				47BCAF2A259CD5CE0008FE4B /* KeyManagementModel.swift in Sources */,
 				47C09C76243B3395007F74A2 /* SmallContactListView.swift in Sources */,
 				47EABF272423BFDD00774A93 /* AuthenticationScreen.swift in Sources */,
@@ -1888,6 +1890,7 @@
 				4775D7AC243F18BC0052F2CC /* SecurityBriefingView.swift in Sources */,
 				971D404A2428C87E002FCD31 /* BadgeCaseView.swift in Sources */,
 				47C8225B24379EAE005BCE73 /* MessageViewMain.swift in Sources */,
+				3F071ED32611BF6900E121F0 /* InboxRefreshModel.swift in Sources */,
 				47FAE30E2524AA97005A1BCB /* DataModel.xcdatamodeld in Sources */,
 				47A5D6E22294BF3B0084F81D /* TempKey.swift in Sources */,
 				47C8226B2438A86B005BCE73 /* SenderViewMain.swift in Sources */,
@@ -1918,6 +1921,7 @@
 				47EABF2B2423C20C00774A93 /* LoadingBlocker.swift in Sources */,
 				475B00351F7B9565006CDD41 /* CryptoObject.swift in Sources */,
 				4706D661225CD21D00B3F1D3 /* ExportKeyHelper.swift in Sources */,
+				32261743260C7CE60068CBD4 /* ContactMailListView.swift in Sources */,
 				4775D7B02443539E0052F2CC /* DialogProtocols.swift in Sources */,
 				475B00331F7B9565006CDD41 /* SwiftPGP.swift in Sources */,
 				477548E421F77BA0000B22A8 /* StudyParameterProtocol.swift in Sources */,
@@ -1956,7 +1960,7 @@
 				47C8225324379EAE005BCE73 /* AttachmentsViewMain.swift in Sources */,
 				678942612430C3D600C746D1 /* Typosquatting.swift in Sources */,
 				47C112CA2531E9B000621A07 /* AttachmentRecord.swift in Sources */,
-				476406982416B54D00C7D426 /* CiricleImage.swift in Sources */,
+				476406982416B54D00C7D426 /* CircleImage.swift in Sources */,
 				A111F6AD1FA77B170060AFDE /* LoggerDetail.swift in Sources */,
 				47358D92244A5AEA000116D7 /* SelectableTextView.swift in Sources */,
 				0EF148052422543E00B3C198 /* Certificate.swift in Sources */,
diff --git a/enzevalos_iphone.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/enzevalos_iphone.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
new file mode 100644
index 0000000000000000000000000000000000000000..2b3d923d4b7a393c5e30f2d866e022de482c88ae
--- /dev/null
+++ b/enzevalos_iphone.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -0,0 +1,16 @@
+{
+  "object": {
+    "pins": [
+      {
+        "package": "MailCore2",
+        "repositoryURL": "https://github.com/MailCore/mailcore2",
+        "state": {
+          "branch": "master",
+          "revision": "fad23d736ed5a63cf8321469d3a98a583f55df97",
+          "version": null
+        }
+      }
+    ]
+  },
+  "version": 1
+}
diff --git a/enzevalos_iphone/Assets.xcassets/Contents.json b/enzevalos_iphone/Assets.xcassets/Contents.json
index da4a164c918651cdd1e11dca5cc62c333f097601..73c00596a7fca3f3d4bdd64053b69d86745f9e10 100644
--- a/enzevalos_iphone/Assets.xcassets/Contents.json
+++ b/enzevalos_iphone/Assets.xcassets/Contents.json
@@ -1,6 +1,6 @@
 {
   "info" : {
-    "version" : 1,
-    "author" : "xcode"
+    "author" : "xcode",
+    "version" : 1
   }
-}
\ No newline at end of file
+}
diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Bob.png b/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Bob.png
new file mode 100644
index 0000000000000000000000000000000000000000..14aa18d366980484d11953602334f7d309526d1c
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Bob.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..52101c069952788e41b9075195e29e2567a92279
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Bob.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Charlie.png b/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Charlie.png
new file mode 100644
index 0000000000000000000000000000000000000000..40d7f299dd23737684a80d4c20f43a4e55c460f1
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Charlie.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..0179af56ad3d75b3c08c86f4cd07c03f71eec8cf
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Charlie.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Contents.json b/enzevalos_iphone/Assets.xcassets/Emoji/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..73c00596a7fca3f3d4bdd64053b69d86745f9e10
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/Emoji/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..92701ba28084ee6a528c78a32a3920f94575fb6d
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Dali.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Dali.png b/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Dali.png
new file mode 100644
index 0000000000000000000000000000000000000000..48ced29b177bbf0cc4bb1bf70d07d6451bf86771
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Dali.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..73c00596a7fca3f3d4bdd64053b69d86745f9e10
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..496e8eb0268227c198956b876ecef28b9085a3cd
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs106047397033627025.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/cs106047397033627025.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/cs106047397033627025.png
new file mode 100644
index 0000000000000000000000000000000000000000..48e64f12b73d5499247817958f9ec82674ffab3a
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/cs106047397033627025.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..4cedc09fe6486b5ac03456955ae4dc30c50b4a0a
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs1048486361028912.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/cs1048486361028912.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/cs1048486361028912.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad1ac1f654e2e780532742d0173485248d98985d
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/cs1048486361028912.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..338db8581f0597c217577ed558ae41c22f9e03bc
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs11361288859011089.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/cs11361288859011089.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/cs11361288859011089.png
new file mode 100644
index 0000000000000000000000000000000000000000..d505a54998c3f5730effa737086b09409ef58397
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/cs11361288859011089.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..b7593b26054e4e53d665b853bdd38ef15b80c09c
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs11365107979606767.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/cs11365107979606767.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/cs11365107979606767.png
new file mode 100644
index 0000000000000000000000000000000000000000..2312cd74dcd5ea24f05cfa8039bc8f8fa4f060ae
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/cs11365107979606767.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..6684493348f6a7b875de71facc2fa47f84567d21
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs100214067654451312.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/cs100214067654451312.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/cs100214067654451312.png
new file mode 100644
index 0000000000000000000000000000000000000000..96bef50261f112caab347281c7fb28a08cf51dfc
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/cs100214067654451312.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..05a8819435bec81b50f2c77f07b483c7db116b42
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs100279640926771550.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/cs100279640926771550.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/cs100279640926771550.png
new file mode 100644
index 0000000000000000000000000000000000000000..f877df997deb8e22605d5c08ec5aaf72c2c6ca43
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/cs100279640926771550.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..0c696b626f520a93a3859db3c788f841f73bf682
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs100367196602765414.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/cs100367196602765414.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/cs100367196602765414.png
new file mode 100644
index 0000000000000000000000000000000000000000..c74b100d09da0bd9008e06f5ba0011bdc6117352
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/cs100367196602765414.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..f490b311fe8f84c03538e23ab7b6a9390731ca2d
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs100444304289930325.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/cs100444304289930325.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/cs100444304289930325.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d1ddbc4c127b2d919b98c34f277800d55166e38
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/cs100444304289930325.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..395c24bedef29c2de5d9ea66def18da123bc7447
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs100630750052269087.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/cs100630750052269087.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/cs100630750052269087.png
new file mode 100644
index 0000000000000000000000000000000000000000..5538bd7d7045830335dcc15f39d377133376eec7
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/cs100630750052269087.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..9a1dfe50c77304a216bad049622a49ffe88a1c2a
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs101172805621739638.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/cs101172805621739638.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/cs101172805621739638.png
new file mode 100644
index 0000000000000000000000000000000000000000..347634eda5fd41d28d019945218022d12f429ed3
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/cs101172805621739638.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..0dd2fd6e215e85f62e3a60d368f2923e4b358679
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs101724504648038815.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/cs101724504648038815.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/cs101724504648038815.png
new file mode 100644
index 0000000000000000000000000000000000000000..06fcdb878ce1df261cee59be8c09d4550e35e28e
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/cs101724504648038815.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..3ef802f763b4576c72ed21a3b7199be9df1f3469
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs101767157496046490.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/cs101767157496046490.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/cs101767157496046490.png
new file mode 100644
index 0000000000000000000000000000000000000000..e113ad31599dd6638832a7aba607359267912c8b
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/cs101767157496046490.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..38f52c2b2f958660a1768ea3097aa204e59092ef
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs1125646615313076.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/cs1125646615313076.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/cs1125646615313076.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3a55f4c1a9ff84c8df4d923f56b8c8d15c047ee
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/cs1125646615313076.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..8c1322604bf1150d333ed0a1c9dd05f85ad7db9b
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs101957715605808227.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/cs101957715605808227.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/cs101957715605808227.png
new file mode 100644
index 0000000000000000000000000000000000000000..eaaaccb1328738274c422a15ece0dc2a521ae32d
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/cs101957715605808227.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..28444de308d77cea333cc814e3eb95ae51da3c49
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs102400950696764945.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/cs102400950696764945.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/cs102400950696764945.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b49c5a2eb373e748a0ce8ef8650c4d4b54cb2dd
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/cs102400950696764945.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..219fd315a0bbfe3a0cad75a11408ad8bb06c105f
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs102422236815498498.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/cs102422236815498498.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/cs102422236815498498.png
new file mode 100644
index 0000000000000000000000000000000000000000..71299059b2d9e388ac0de18e2e6b7442e54084bf
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/cs102422236815498498.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d3c0efffa89f0f2b7038dc7529a6ca14d0a1a0a
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs102861240281778234.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/cs102861240281778234.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/cs102861240281778234.png
new file mode 100644
index 0000000000000000000000000000000000000000..067b3a5c69dae65a0659c6635a46a73ec37afeb4
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/cs102861240281778234.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..1a337b718d665279d11ddfff348b03fe7b695084
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs102996970073821635.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/cs102996970073821635.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/cs102996970073821635.png
new file mode 100644
index 0000000000000000000000000000000000000000..2751f69a935a64ffb8db5f2f565dd63a4f6cf4de
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/cs102996970073821635.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..63fabbc993eb6326906dadc667e5ba34a5268fc5
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs103078152548071803.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/cs103078152548071803.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/cs103078152548071803.png
new file mode 100644
index 0000000000000000000000000000000000000000..c288ef5fe0be6b9ba12152c15a0c500771b268d4
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/cs103078152548071803.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..fbd42b9f93d4b9d85cf3a4d6f6562c265daaf673
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs103423283580625484.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/cs103423283580625484.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/cs103423283580625484.png
new file mode 100644
index 0000000000000000000000000000000000000000..751fb817f525e7cf27d64e46a908b507ace4b89b
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/cs103423283580625484.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..6f2c97887de277cb953b9ad876cf61c6f6eb8ed3
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs103486772320911001.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/cs103486772320911001.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/cs103486772320911001.png
new file mode 100644
index 0000000000000000000000000000000000000000..52f54a89f4006422e4a7110e2009c83d7e5f0783
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/cs103486772320911001.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..8326d093abfa0a8cdc90ab184fd67a748e38fee9
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs103587423973880298.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/cs103587423973880298.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/cs103587423973880298.png
new file mode 100644
index 0000000000000000000000000000000000000000..b5d1a1c549c75d6aae45d2f2608076f2ec0601a7
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/cs103587423973880298.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..6f177f7ae25159a9772bf41347bc3901eab33314
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs103659213402785408.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/cs103659213402785408.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/cs103659213402785408.png
new file mode 100644
index 0000000000000000000000000000000000000000..330c5d5e9b683427a099d91e8706f644820940e1
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/cs103659213402785408.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..f0923e2363d779a81aa61604ad370093376d38df
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs10188651804540743.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/cs10188651804540743.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/cs10188651804540743.png
new file mode 100644
index 0000000000000000000000000000000000000000..50980539b3497d64d721534865f44378b7204f34
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/cs10188651804540743.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..087b947a0ca104c0b880f6995303438f2f6997a0
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs103663933281312281.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/cs103663933281312281.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/cs103663933281312281.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5f45e7dea862d2ad21c6e506267ac17abb89a96
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/cs103663933281312281.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..0121902d7227f15ed62798d39526dab8eee7a649
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs103822919467497853.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/cs103822919467497853.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/cs103822919467497853.png
new file mode 100644
index 0000000000000000000000000000000000000000..d10d1e1591dee487f4948ab0e2ee31f30d092af2
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/cs103822919467497853.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..3cfe11a74f52c0ec33e48e02b5fb1722b0a9432a
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs103987180036984774.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/cs103987180036984774.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/cs103987180036984774.png
new file mode 100644
index 0000000000000000000000000000000000000000..dbeb21ecf8a690b9477878c7515f8e4c6eecaa8c
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/cs103987180036984774.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..6ad87612de6e027a9da143b04d19c51554cb4d91
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs104029297788010187.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/cs104029297788010187.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/cs104029297788010187.png
new file mode 100644
index 0000000000000000000000000000000000000000..446cfadbbfeacc81c9011e775dfcee12a22e4602
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/cs104029297788010187.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..f3aa89dfd6f44dca7ea26c97969b0159d965143a
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs104058099070443101.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/cs104058099070443101.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/cs104058099070443101.png
new file mode 100644
index 0000000000000000000000000000000000000000..2135438a60379a8d88c2bf58a0cdcf713dc19392
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/cs104058099070443101.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..dec2c1a6a060079b85091dc73f4b5e848ef1f5a4
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs104393807829754417.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/cs104393807829754417.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/cs104393807829754417.png
new file mode 100644
index 0000000000000000000000000000000000000000..763f1123f18283c818dc42077357e1d147259e35
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/cs104393807829754417.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..96f398a10cc852aaa18486576992416e64efe2c4
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs104495237148868391.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/cs104495237148868391.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/cs104495237148868391.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d89152b84bc2c416d78a314db3c4b6b160ec06e
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/cs104495237148868391.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ed14548fdb989088ade439514dd13cbbe2ce592
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs104551932686398700.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/cs104551932686398700.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/cs104551932686398700.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9e12aabe39cb276ef7c1b2baab76a0a427dfac2
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/cs104551932686398700.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..32e25c04674ad9779421dbcc15e7fc24a963f8e9
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs104563437674275986.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/cs104563437674275986.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/cs104563437674275986.png
new file mode 100644
index 0000000000000000000000000000000000000000..80b8bbdee67916439d71bb83409188aea6c80caf
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/cs104563437674275986.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..75bf0a262869fe3fd5a4fcb1c2281e038d14f9aa
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs104924347815727490.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/cs104924347815727490.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/cs104924347815727490.png
new file mode 100644
index 0000000000000000000000000000000000000000..e054f4f61c806907f22c9ccbca50430e8103c726
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/cs104924347815727490.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..ae1963922e94ffef4c3191d6546fdd7d5f28abe5
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs10445905019035139.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/cs10445905019035139.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/cs10445905019035139.png
new file mode 100644
index 0000000000000000000000000000000000000000..44774132c039b46588e943150a30318182e7a07e
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/cs10445905019035139.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..9b88b2b40820b96dffb8d710a29049a4868c14b1
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs104968955657654599.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/cs104968955657654599.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/cs104968955657654599.png
new file mode 100644
index 0000000000000000000000000000000000000000..66f35cdd9bbda00f22e74d5b648a1479eeb4dc76
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/cs104968955657654599.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..e6c66436bf2dc333142f12f4a7c08e309c00998a
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs104983947614280485.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/cs104983947614280485.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/cs104983947614280485.png
new file mode 100644
index 0000000000000000000000000000000000000000..5edf414d8577b60e82353e3dbabfc7106d2891dd
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/cs104983947614280485.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..c6ff1625f739f732cfa85f3de658be1460be4a80
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs105013173991731446.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/cs105013173991731446.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/cs105013173991731446.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad8a58ea8795b1f00903f364f9599df24badbb69
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/cs105013173991731446.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..5002cf9df80fa89c505f8d526595ce9ec0972aee
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs105105240413858862.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/cs105105240413858862.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/cs105105240413858862.png
new file mode 100644
index 0000000000000000000000000000000000000000..bea0dc1c4e86d85f68f625e1eb4682db319b8eec
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/cs105105240413858862.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..3ad0622ae2fb737cc7e1395adeb962da6453bd94
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs105149584509303839.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/cs105149584509303839.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/cs105149584509303839.png
new file mode 100644
index 0000000000000000000000000000000000000000..a640b8d4a871a04da22627ef694207f10085848e
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/cs105149584509303839.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..c9b0db0adaab321308a8d6d0522485f1778f2adf
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs105316240118440367.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/cs105316240118440367.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/cs105316240118440367.png
new file mode 100644
index 0000000000000000000000000000000000000000..d29d5d1f047c75f6336e3b226e40b3018ed0bd32
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/cs105316240118440367.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c3b3024252290093c1b5404f5ca7acdd8a5039c
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs105362030430960514.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/cs105362030430960514.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/cs105362030430960514.png
new file mode 100644
index 0000000000000000000000000000000000000000..d428489cd9cc8b66f501f320e21030bfb4670e7e
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/cs105362030430960514.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..256ece6df4710932f85246a486940506b56dbb7f
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs105479796479016880.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/cs105479796479016880.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/cs105479796479016880.png
new file mode 100644
index 0000000000000000000000000000000000000000..e47b2b4bcaa0d506c9eb14174b15e65688233f42
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/cs105479796479016880.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..e3b0427819f0b763a979f3144d00c82a719afe2e
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs105703236117912354.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/cs105703236117912354.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/cs105703236117912354.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e37608f3cc7b67129d390988c7342768bc9c424
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/cs105703236117912354.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..d433ca724435ef186c049528eed3cf21aa4641cf
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs105773704768325821.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/cs105773704768325821.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/cs105773704768325821.png
new file mode 100644
index 0000000000000000000000000000000000000000..a64db374e9df610ccf4aeec5213dd2c36cedae92
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/cs105773704768325821.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..5535049bb256b2bb47d7b85166a4a8f0da044b7b
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs10562124521050923.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/cs10562124521050923.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/cs10562124521050923.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae477d1aec529fe72d47662e001cf1966ebb18c0
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/cs10562124521050923.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..d43774e8df226162f7ee9b8ac35cfa296e6e9a3e
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs10712649413789781.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/cs10712649413789781.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/cs10712649413789781.png
new file mode 100644
index 0000000000000000000000000000000000000000..f85eb18b0b8afc7321aa81812fa5d1cc0af0b1dd
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/cs10712649413789781.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..caf61571caa980625df6b9898c341f9c0c3a478a
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs10823521825795415.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/cs10823521825795415.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/cs10823521825795415.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca50dda317073731b6972f452a56be6094f19345
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/cs10823521825795415.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..f12be0f3ead14afffe1e1f5f7ff368bb578a16b2
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs11010345522393046.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/cs11010345522393046.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/cs11010345522393046.png
new file mode 100644
index 0000000000000000000000000000000000000000..211a13b985892a7a36d035f2d9b76bf512051035
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/cs11010345522393046.png differ
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..a79376486d51752d903ccac2620d7d632be7ae01
--- /dev/null
+++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "cs11096764340505821.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/cs11096764340505821.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/cs11096764340505821.png
new file mode 100644
index 0000000000000000000000000000000000000000..bedd6184ea119dddc60b011b9aea6853e91305bf
Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/cs11096764340505821.png differ
diff --git a/enzevalos_iphone/CNContactExtension.swift b/enzevalos_iphone/CNContactExtension.swift
index 32a227a323193fa6aabe6f8d9dddd5b2edfa1e1c..d7d6955d0573a7ab02b15fb5ce29507e63de1564 100644
--- a/enzevalos_iphone/CNContactExtension.swift
+++ b/enzevalos_iphone/CNContactExtension.swift
@@ -42,3 +42,12 @@ extension CNContact {
     }
 
 }
+
+extension UIColor {
+    static var random: UIColor {
+        return UIColor(red: .random(in: 0...1),
+                       green: .random(in: 0...1),
+                       blue: .random(in: 0...1),
+                       alpha: 1.0)
+    }
+}
diff --git a/enzevalos_iphone/ContactHandler.swift b/enzevalos_iphone/ContactHandler.swift
index 35f37d2205e573fbd091dc92667ffb28b13174ff..82c3d01f7102d31d258702353679b575fd4bf130 100644
--- a/enzevalos_iphone/ContactHandler.swift
+++ b/enzevalos_iphone/ContactHandler.swift
@@ -24,6 +24,8 @@ import SwiftUI
 
 // TODO: Mark displayname as from CNContact
 class ContactHandler {
+    static var cartoons = true
+    
     private let store = CNContactStore()
     static let handler = ContactHandler()
     let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactNicknameKey, CNContactIdentifierKey, CNContactImageDataKey] as [CNKeyDescriptor]
@@ -99,6 +101,17 @@ class ContactHandler {
         }
     }
     
+    
+    private static func mapToCartoon(name: String, key: String?) -> Image {
+        let maxCartoons = 50
+        var id = abs(name.hash % maxCartoons)
+        if let key = key {
+            id = abs(key.hash % maxCartoons)
+        }
+        return Image("cartoon\(id)")
+                .resizable()
+    }
+    
     public static func makeImageFromName(_ name: String, color: UIColor) -> UIImage {
         var text: NSAttributedString
         var tag = String()
@@ -148,6 +161,10 @@ class ContactHandler {
         if let imageData = addr.image, let image = UIImage(data: imageData) {
             return Image(uiImage: image)
         }
+        if cartoons {
+            // TODO: Fix mapping to key.
+            return mapToCartoon(name: addr.name, key: nil)
+        }
         return Image(uiImage: makeImageFromName(addr.name, color: getColor(name: addr.name)  ))
     }
 
diff --git a/enzevalos_iphone/MailHandler.swift b/enzevalos_iphone/MailHandler.swift
index f7d8dfc24db881731955f87dc94ac1a1e6e8dbf2..f3e06fee3e624ad0fc8a9062bd9e69c781b770f5 100644
--- a/enzevalos_iphone/MailHandler.swift
+++ b/enzevalos_iphone/MailHandler.swift
@@ -61,6 +61,9 @@
     static var INBOX: String {
         return UserManager.backendInboxFolderPath
     }
+    static var SENT: String {
+        return UserManager.backendSentFolderPath
+    }
     private var IMAPSes: MCOIMAPSession?
     var IMAPSession: MCOIMAPSession? {
         if IMAPSes == nil {
diff --git a/enzevalos_iphone/PreviewSampleData/SimulatorData.swift b/enzevalos_iphone/PreviewSampleData/SimulatorData.swift
index 88cd8056f6caf617fa48c4a053884bc28d1966d9..428081ad60c8119a1a478e909bb86c62b1c81398 100644
--- a/enzevalos_iphone/PreviewSampleData/SimulatorData.swift
+++ b/enzevalos_iphone/PreviewSampleData/SimulatorData.swift
@@ -37,9 +37,9 @@ struct SimulatorData_Previews: PreviewProvider {
 
 struct ProxyData {
     // Different Contacts
-    static let Alice = ProxyContact(name: "Alice", email: "alice@example.com", avatar: ProxyContact.makeImg("Alice", color: .blue))
-    static let Bob = ProxyContact(name: "Bob", email: "Bob.lord.of.kingsbridge.and.king.of.england@huge.subdomain.with. a.long.long.long.domain.example.com", avatar: ProxyContact.makeImg("Bob", color: .red))
-    static let Charlie = ProxyContact(name: "Charlie", email: "charlie@example.com", avatar: ProxyContact.makeImg("Charlie", color: .green))
+    static let Alice = ProxyContact(emails: ["salvador.felipe.jacinto.dali@abc.de"], name: "Salvador Felipe Jacinto Dalí y Domenech", email: "alice@example.com", avatar: ProxyContact.makeImg("Alice", color: .blue))
+    static let Bob = ProxyContact(emails: ["hallo@abc.de", "zweildrei.de"], name: "Bob Walker", email: "Bob.lord.of.kingsbridge.and.king.of.england@huge.subdomain.with. a.long.long.long.domain.example.com", avatar: ProxyContact.makeImg("Bob", color: .red))
+    static let Charlie = ProxyContact(emails: ["Charlie@blah.de", "zweildrei.de","charlie@gmx.not","Charlie@blah.de", "zweildrei.de","charlie@gmx.nt"], name: "Charlie Marley", email: "charlie@example.com", avatar: ProxyContact.makeImg("Charlie", color: .green))
     static let Landmarks = [
          Landmark(name: "Berlin", domain: "exampledomain.de", location: .init(latitude: 52.520008, longitude: 13.404954)),
          Landmark(name: "New York", domain: "secondexampledomain.de", location: .init(latitude: 40.730610, longitude: -73.935242)),
@@ -90,6 +90,8 @@ struct ProxyFolder: DisplayFolder {
 }
 
 struct ProxyContact: DisplayContact {
+    var emails: [String]
+    
     typealias K = ProxyPublicKey
     typealias C = ProxyContact
     
@@ -126,6 +128,15 @@ struct ProxyContact: DisplayContact {
     }
     
     public static func makeImg(_ name: String, color: UIColor) -> Image {
+        let cartoon = ContactHandler.cartoons
+        
+        if cartoon {
+            let maxCartoons = 50
+            let id = abs(name.hash % maxCartoons)
+            return Image("cartoon\(id)")
+                    .resizable()
+        }
+        
         var text: NSAttributedString
         var tag = String()
         if name.count > 0 {
@@ -172,12 +183,13 @@ struct ProxyContact: DisplayContact {
     
 }
 
-struct ProxyMail: DisplayMail {
+struct ProxyMail: DisplayMail, Identifiable {
     typealias U = ProxyContact
     typealias D = DialogStruct
     typealias K = ProxyPublicKey
 
     var previewName: String
+    let id = UUID()
 
     var displayAttachments: [DisplayAttachment] = []
         
@@ -261,3 +273,4 @@ JVBERi0xLjUKJdDUxdgKMTI1IDAgb2JqCjw8Ci9MZW5ndGggNTM1NCAgICAgIAovRmlsdGVyIC9GbGF0
 }
 
 
+
diff --git a/enzevalos_iphone/SearchHelper.swift b/enzevalos_iphone/SearchHelper.swift
index b6bffdc347dc16b1eb19dce08035fb3bdf18c4f4..bce506aa93388226e4b09e92fa3675cdc8e3c087 100644
--- a/enzevalos_iphone/SearchHelper.swift
+++ b/enzevalos_iphone/SearchHelper.swift
@@ -8,51 +8,39 @@
 
 import Foundation
 
-/**
- A collection of helper methods that are used for the different search bars
- */
-
-/**
- Function to be used to find mails that contain the search terms. All terms (separated by spaces) need to be contained in the search text.
- - parameters:
-    - content: The String that will be searched
-    - searchText: Search terms (space-separated) that will be searched for
-*/
-func containsSearchTerms ( content : String?, searchText: String) -> Bool
-{
-    guard searchText.count > 0 else {
-        ///Case empty search
-        return true
+/// Function used to find mails that contain the search terms. All terms (separated by spaces) need to be contained in the search text.
+/// - Parameters:
+///   - content: The String that will be searched
+///   - searchText: Search terms (space-separated) that will be searched for
+func containsSearchTerms(content: String?, searchTerm: String) -> Bool {
+    guard searchTerm.count > 0 else {
+        return true             // Case empty search
     }
+    
     guard let content = content else {
-        //Case Mail has no body/subject
-        return false
+        return false            // Case Mail has no body/subject
     }
         
-    var longterms : [String] = []
-    var terms : [String] = []
-    //Break String into substrings separated by quoatation marks
-    longterms = searchText.components(separatedBy: "\"")
+    var longterms: [String] = []
+    var terms: [String] = []
+    
+    // Break string into substrings separated by quotation marks
+    longterms = searchTerm.components(separatedBy: "\"")
+    
+    // Even elements will be outside the quotation marks and need to be separated again
     var i = 0
-    //even elements will be outside the quotation marks and need to be separated again
-    while (i < longterms.count)
-    {
-        if i % 2 == 0
-        {
+    while (i < longterms.count) {
+        if i % 2 == 0 {
             terms.append(contentsOf: longterms[i].lowercased().components(separatedBy: " "))
-        }
-        else
-        {
+        } else {
             terms.append(longterms[i].lowercased())
         }
-        i+=1
+        i += 1
     }
     
     var found = true
-    for t in terms
-    {
-        if !(t == "")
-        {
+    for t in terms {
+        if !t.isEmpty {
             found = found && content.lowercased().contains(t)
         }
     }
diff --git a/enzevalos_iphone/SwiftUI/Compose/ComposeHeaderView.swift b/enzevalos_iphone/SwiftUI/Compose/ComposeHeaderView.swift
index 816644928343d48cc144bb14f1250a05ea95395f..73cdca43c53f33fc5de269bdd73d7f92ae9b78e3 100644
--- a/enzevalos_iphone/SwiftUI/Compose/ComposeHeaderView.swift
+++ b/enzevalos_iphone/SwiftUI/Compose/ComposeHeaderView.swift
@@ -3,7 +3,19 @@
 //  enzevalos_iphone
 //
 //  Created by Chris Offner & Claire Bräuer on 23.03.21.
-//  Copyright © 2021 fu-berlin. All rights reserved.
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
 //
 
 import SwiftUI
diff --git a/enzevalos_iphone/SwiftUI/Compose/ComposeModel.swift b/enzevalos_iphone/SwiftUI/Compose/ComposeModel.swift
index 4818189dd7c39185371147ff1810777b5794a90a..b0208bfd360a32995f8a5e0739b56606a8d1f0c6 100644
--- a/enzevalos_iphone/SwiftUI/Compose/ComposeModel.swift
+++ b/enzevalos_iphone/SwiftUI/Compose/ComposeModel.swift
@@ -4,7 +4,19 @@
 //
 //  Created by Oliver Wiese on 12.11.20.
 //  Modified by Chris Offner & Claire Bräuer in March 2021.
-//  Copyright © 2020 fu-berlin. All rights reserved.
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
 //
 
 import Foundation
diff --git a/enzevalos_iphone/SwiftUI/Compose/ComposeView.swift b/enzevalos_iphone/SwiftUI/Compose/ComposeView.swift
index ff007ceaeecdde5aa3ad8e7696fa69cd792b3430..dd9066da3198180fdaa6c091d1b08edb96f6fc34 100644
--- a/enzevalos_iphone/SwiftUI/Compose/ComposeView.swift
+++ b/enzevalos_iphone/SwiftUI/Compose/ComposeView.swift
@@ -1,9 +1,22 @@
 //
 //  ComposeView.swift
-//  letterbox_prototyping
+//  enzevalos_iphone
 //
 //  Created by Chris Offner & Claire Bräuer on 03.03.21.
 //
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
+//
 
 import SwiftUI
 
diff --git a/enzevalos_iphone/SwiftUI/Compose/RecipientFieldModel.swift b/enzevalos_iphone/SwiftUI/Compose/RecipientFieldModel.swift
index 60215330f2281cb238b03750c82a9533c04fc5fe..8cb8b83b85856f6c0120ec3d11d4d39028f7e074 100644
--- a/enzevalos_iphone/SwiftUI/Compose/RecipientFieldModel.swift
+++ b/enzevalos_iphone/SwiftUI/Compose/RecipientFieldModel.swift
@@ -1,10 +1,22 @@
 //
-//  TokenFieldModel.swift
+//  RecipientFieldModel.swift
 //  enzevalos_iphone
 //
 //  Created by Oliver Wiese on 31.10.20.
 //  Modified by Chris Offner & Claire Bräuer in March 2021.
-//  Copyright © 2020 fu-berlin. All rights reserved.
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
 //
 
 import Combine
diff --git a/enzevalos_iphone/SwiftUI/Compose/RecipientListView.swift b/enzevalos_iphone/SwiftUI/Compose/RecipientListView.swift
index 6663d18655be20d6bded7433e67588f40309fa25..62facc14430b92574b5680892b9ef728389ff4cf 100644
--- a/enzevalos_iphone/SwiftUI/Compose/RecipientListView.swift
+++ b/enzevalos_iphone/SwiftUI/Compose/RecipientListView.swift
@@ -4,6 +4,19 @@
 //
 //  Created by Chris Offner & Claire Bräuer on 11.03.21.
 //
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
+//
 
 import SwiftUI
 
diff --git a/enzevalos_iphone/SwiftUI/Compose/RecipientRowView.swift b/enzevalos_iphone/SwiftUI/Compose/RecipientRowView.swift
index d09c63355bb6ed077e5268d068c4031b0c0d4ecc..f744f37f7c1258de05f2792899a746d6c1caf757 100644
--- a/enzevalos_iphone/SwiftUI/Compose/RecipientRowView.swift
+++ b/enzevalos_iphone/SwiftUI/Compose/RecipientRowView.swift
@@ -1,9 +1,22 @@
 //
-//  recipientRowView.swift
+//  RecipientRowView.swift
 //  letterbox_prototyping
 //
 //  Created by Chris Offner & Claire Bräuer on 11.03.21.
 //
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
+//
 
 import SwiftUI
 
diff --git a/enzevalos_iphone/SwiftUI/Compose/RecipientsModel.swift b/enzevalos_iphone/SwiftUI/Compose/RecipientsModel.swift
index e98463dab071dce87dc721aa371d811bab5b8d8c..7cad5be8c9bd5ea01301e2816420b79de05ca382 100644
--- a/enzevalos_iphone/SwiftUI/Compose/RecipientsModel.swift
+++ b/enzevalos_iphone/SwiftUI/Compose/RecipientsModel.swift
@@ -1,10 +1,22 @@
 //
-//  SelectReceiverModel.swift
+//  RecipientsModel.swift
 //  enzevalos_iphone
 //
 //  Created by Oliver Wiese on 09.11.20.
 //  Modified by Chris Offner & Claire Bräuer in March 2021.
-//  Copyright © 2020 fu-berlin. All rights reserved.
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
 //
 
 import Foundation
diff --git a/enzevalos_iphone/SwiftUI/Contact/ContactMailListView.swift b/enzevalos_iphone/SwiftUI/Contact/ContactMailListView.swift
new file mode 100644
index 0000000000000000000000000000000000000000..e2f267ef02286f42341ba8ab82e6606baefeb02c
--- /dev/null
+++ b/enzevalos_iphone/SwiftUI/Contact/ContactMailListView.swift
@@ -0,0 +1,150 @@
+//
+//  ContactMailListView.swift
+//  enzevalos_iphone
+//
+//  Created by Amir Rajabi and Goekhan Guemues on 25.03.21
+//  Copyright © 2021 fu-berlin. All rights reserved.
+//
+
+import SwiftUI
+import CoreData
+
+/// A view that shows up to three emails received from or sent to this contact depending on the folderType.
+struct ContactMailListView: View {
+    public var folderpath: String
+    public var folderName: String
+    public var emailAddresses: [String]
+    public var fetchRequest: FetchRequest<MailRecord>
+    public var emails: FetchedResults<MailRecord>{fetchRequest.wrappedValue}
+    
+    
+    init(folderpath: String, folderName: String, emailAddresses: [String]) {
+        fetchRequest = MailRecord.mailsInFolderFetchRequest(folderpath: folderpath)
+        self.folderpath = folderpath
+        self.folderName = folderName
+        self.emailAddresses = emailAddresses
+    }
+    
+    
+    var body: some View {
+        ZStack {
+            newRoundedRectangle()
+            VStack {
+                // Creates a filtered array of the array emails
+                let filteredEmails = self.emails.filter(filterEmailList)
+                
+                // Lists up to three emails of the contact from the filtered emails
+                ForEach (0..<min(3,filteredEmails.count)) { record in
+                    NavigationLink(
+                        destination: ReadMainView(model: ReadModel(mail: filteredEmails[record]))) {
+                        MailRowView(mail: filteredEmails[record], activateOnTap: false)
+                    }
+                    if record < min(2, filteredEmails.count - 1) {
+                        Divider()
+                    }
+                }
+                
+                // If the list contains more than three emails, a button is displayed
+                if filteredEmails.count > 3{
+                    HStack {
+                        Spacer()
+                        NavigationLink(
+                            destination: MoreContactMailView(folderpath: folderpath, folderName: folderName, emailAddresses: emailAddresses)) {
+                            Text(NSLocalizedString("Contact.Button.ShowMore", comment: "Contact.Button.ShowMore"))
+                        }
+                    }.padding(.top, -10)
+                }
+                
+            }
+            .padding(.trailing)
+            .padding(.vertical, 9)
+            
+        }
+        .padding(.horizontal,5)
+    }
+    
+    /// Depending on the folder type of the email, a check is made as to whether the contact is the sender or recipient of the email.
+    /// - Parameter email: the email that is being checked
+    func filterEmailList(email: MailRecord) -> Bool {
+        
+        // TODO: Checking the foldertype doesn't list (all) the emails.
+        // It seems that the set flags in foldertype are buged right now.
+        // For now it checks the folderName.
+        if folderName == "Inbox"{
+            
+            if (emailAddresses.contains(email.sender.email)) {
+                return true
+            }
+        }
+        else{
+            
+            var counter = 0
+            
+            while counter < email.addresses.count {
+                if (emailAddresses.contains(email.addresses[counter].email)) {
+                    return true
+                }
+                counter += 1}
+            
+            return false
+        }
+        
+        return false
+    }
+    
+}
+
+/// A view to list all emails received from or sent to the contact, depending on the clicked more button in ContactMailListView.
+struct MoreContactMailView: View {
+    var folderpath: String
+    var folderName: String
+    var emailAddresses: [String]
+    
+    public var fetchRequest: FetchRequest<MailRecord>
+    public var emails: FetchedResults<MailRecord>{fetchRequest.wrappedValue}
+    
+    var receivedHeader: LocalizedStringKey = "Contact.Received.Header"
+    var sentHeader: LocalizedStringKey = "Contact.Sent.Header"
+    
+    
+    init(folderpath: String, folderName: String, emailAddresses: [String]) {
+        fetchRequest = MailRecord.mailsInFolderFetchRequest(folderpath: folderpath)
+        self.folderpath = folderpath
+        self.folderName = folderName
+        self.emailAddresses = emailAddresses
+    }
+    
+    
+    var body: some View {
+        
+        // Creates an instance of ContactMailListView to use the filteredEmailList function
+        let functionCall = ContactMailListView(folderpath: folderpath, folderName: folderName, emailAddresses: emailAddresses)
+        let filteredEmails = self.emails.filter(functionCall.filterEmailList)
+        
+        // The header is set depending on the folder name of the emails retrieved
+        let header = (folderName == "Sent") ? sentHeader : receivedHeader
+        HStack{
+            Text(header)
+                .font(.title)
+                .fontWeight(.semibold)
+            Spacer()
+        }.padding(.leading, 21)
+        .padding(.top, 5)
+        
+            List (filteredEmails, id: \.self){ record in
+                NavigationLink(
+                    destination: ReadMainView(model: ReadModel(mail: record))) {
+                    MailRowView(mail: record, activateOnTap: false)
+                }
+            }
+    }
+}
+
+
+
+struct ContactMailListView_Previews: PreviewProvider {
+    static var previews: some View {
+        ContactMailListView(folderpath: "INBOX", folderName: "INBOX", emailAddresses: [])
+            .environment(\.managedObjectContext, PersistentDataProvider.proxyPersistentDataProvider.persistentContainer.viewContext)
+    }
+}
diff --git a/enzevalos_iphone/SwiftUI/Contact/ContactTabView.swift b/enzevalos_iphone/SwiftUI/Contact/ContactTabView.swift
deleted file mode 100644
index 4c6fd44cc1f90e04daf24b1461793fe8a7a61af8..0000000000000000000000000000000000000000
--- a/enzevalos_iphone/SwiftUI/Contact/ContactTabView.swift
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-//  ContactView.swift
-//  enzevalos_iphone
-//
-//  Created by Oliver Wiese on 30.10.20.
-//  Copyright © 2020 fu-berlin. All rights reserved.
-//
-
-import SwiftUI
-
-/// A subview for ContactView
-struct ContactTabView <C: DisplayContact, M: DisplayMail>: View {
-    
-    public var contact: C
-    public var fromMail: M?
-    public var derivedFromKey: Bool = true
-    
-    private var keyID: String? {
-        return fromMail?.signatureKey?.keyID
-    }
-    
-    var body: some View {
-        VStack{
-            VStack(alignment: .leading, spacing: 3) {
-                Text(contact.name)
-                    .font(.title)
-                rating
-                if contact.name != contact.email {
-                    row(label: "ContactView.EMail.Name", data: contact.email, action: composeMail)
-                        .padding(.bottom, 10)
-                }
-                key
-            }.padding(5)
-            icon
-            backgroundInfo
-            Spacer()
-        }
-    }
-    
-    private var icon: some View {
-        contact.avatar
-            .resizable()
-            .frame(width: 130, height: 110)
-            .clipShape(Circle())
-            .overlay(Circle().stroke(Color.white, lineWidth: 4))
-            .shadow(radius: 10)
-            .padding(10)
-    }
-
-    private var key: AnyView? {
-        if let keyID = keyID {
-            var label: LocalizedStringKey =  "ContactView.Key.Signature.Name"
-            if fromMail == nil {
-                label = "ContactView.Key.Primary.Name"
-            }
-            return AnyView(row(label: label, data: keyID, action: inspectKey))
-        } else {
-            return AnyView(Button("Invitation.Welcome.Try.InvitationMail", action: invite))
-        }
-    }
-    
-    private var rating: some View {
-        HStack {
-            Text("ContactView.Rating.Name")
-                .foregroundColor(.gray)
-            Text(contact.rating(mail: fromMail).name)
-                .foregroundColor(contact.rating(mail: fromMail).color)
-        }
-    }
-    
-    var backgroundInfo: some View {
-        VStack (alignment: .leading, spacing: 3){
-            if derivedFromKey, let discovery = contact.primaryKey?.discovery {
-                row(label: "ContactView.KnownSince", data: discovery.dateToString, action: nil) // TODO Add discovery mail?
-            } else if let discovery = contact.discovery {
-                row(label: "ContactView.KnownSince", data: discovery.dateToString, action: nil)
-            } else {
-                row(label: "ContactView.KnownSince.Unknown", data:nil, action: nil)
-            }
-            if derivedFromKey, let last = contact.primaryKey?.lastSeen {
-                row(label: "ContactView.LastMail.Name", data: last.dateToString, action: nil)
-            }
-            else if let last = contact.last {
-                row(label: "ContactView.LastMail.Name", data: last.dateToString, action: nil)
-            } else {
-                row(label: "ContactView.LastMail.No", data: nil, action: nil)
-            }
-        } .padding(10)
-    }
-    
-    private func row(label: LocalizedStringKey, data: String?, action: ((()->Void)?)) -> some View {
-        HStack {
-            Text(label)
-                .foregroundColor(.gray)
-            if let data = data, let action = action {
-                Button(data, action: action)
-            } else if let data = data{
-                Text(data)
-                    .foregroundColor(.gray)
-            }
-        }
-    }
-    
-    private func composeMail() {
-        print("Compose mail!")
-    }
-    
-    private func inspectKey() {
-        print("Inspect key!")
-    }
-    
-    private func invite() {
-        print("Invite user!")
-    }
-    
-}
-
-struct ContactTabView_Previews: PreviewProvider {
-    static var previews: some View {
-        ContactTabView<ProxyContact, ProxyMail>(contact: ProxyData.Alice)
-        ContactTabView<ProxyContact, ProxyMail>(contact: ProxyData.Bob)
-        ContactTabView<ProxyContact, ProxyMail>(contact: ProxyData.Charlie)
-
-    }
-}
diff --git a/enzevalos_iphone/SwiftUI/Contact/ContactView.swift b/enzevalos_iphone/SwiftUI/Contact/ContactView.swift
index aba0935a46e7feef5a54f9c86071afe5dfcb191c..310dbf7430ddb30a5ca1cb0d9d3b9c00cd375298 100644
--- a/enzevalos_iphone/SwiftUI/Contact/ContactView.swift
+++ b/enzevalos_iphone/SwiftUI/Contact/ContactView.swift
@@ -3,6 +3,7 @@
 //  enzevalos_iphone
 //
 //  Created by Oliver Wiese on 30.10.20.
+//  Modified by Amir Rajabi and Goekhan Guemues on 25.03.21
 //  Copyright © 2020 fu-berlin. All rights reserved.
 //
 
@@ -10,41 +11,307 @@ import SwiftUI
 
 // TODO: Add contact book, related addresses, related keys, related mails.
 
-struct ContactView <C: DisplayContact, M: DisplayMail>: View {
+/// A model of all published properties used in ContactView
+class ContactProperties: ObservableObject {
+    @Published var emailAddress: String = ""
+    @Published var showKeysPopup = false
+    @Published var composeMail = false
+}
+
+/// A contact view with all associated email addresses and also some emails received from or sent to  this  contact.
+/// - Parameter contact: the contact that is being viewed
+struct ContactView <C: DisplayContact>: View {
     public var contact: C
-    public var fromMail: M?
-    public var derivedFromKey: Bool = true
+    @StateObject var properties = ContactProperties()
     
+    /// Creates the view body
     var body: some View {
-        TabView{
-            ForEach(Tabs, id: \.id ){ tab in
-                tab.content
-                    .tabItem {
-                        tab.image
-                        Text(tab.description)
+        ZStack {
+            VStack {
+                HStack {
+                    avatar
+                    
+                    VStack (alignment: .leading) {
+                        contactName.padding(.bottom)
+                        knownSince
+                    }.padding(.leading)
+                    Spacer()
+                }.padding(.leading, 15)
+                ScrollView {
+                    
+                    // A list of all email addresses associated to the contact
+                    newHeader(header: NSLocalizedString("Contact.Email.Header",
+                                                        comment: "Header for the section"))
+                    listContactAddresses
+                    
+                    // Up to three emails received from this contact
+                    newHeader(header: NSLocalizedString("Contact.Received.Header",
+                                                        comment: "Header for the section"))
+                    ContactMailListView(folderpath: MailHandler.INBOX,
+                                        folderName: NSLocalizedString("Inbox", comment: "Inbox"),
+                                        emailAddresses: contact.emails)
+                    
+                    // Up to three emails sent to this contact
+                    newHeader(header: NSLocalizedString("Contact.Sent.Header",
+                                                        comment: "Header for the section"))
+                    ContactMailListView(folderpath: MailHandler.SENT,
+                                        folderName: NSLocalizedString("Sent", comment: "Sent"),
+                                        emailAddresses: contact.emails).padding(.bottom, 25)
+                    
+                    // TODO: Add a section here with all keys of this contact
                 }
+                .padding(.horizontal,5)
+                
+            }.padding(.top, 20)
+            .blur(radius: properties.showKeysPopup ? 2 : 0)
+            
+            // Toggles the popup screen of all keys
+            if properties.showKeysPopup {
+                CryptoKeysPopup
             }
+            
+        }.background(Color(.systemGroupedBackground))
+        .navigationBarItems(trailing: editButton)
+        .sheet(isPresented: $properties.composeMail) {
+            ComposeView(preData: PreMailData(body: "",
+                                             subject: "",
+                                             to: [properties.emailAddress],
+                                             cc: [],
+                                             bcc: []))
         }
-        .navigationTitle("ContactView.Title")
-    }
-    
-    var Tabs:[Tab] {
-        get {
-            return [
-                Tab(
-                    tab: 0, image: Image(systemName: "touchid"),
-                    description: "ContactView.Tab.Contact.Description",
-                    content:AnyView(ContactTabView(contact: contact, fromMail: fromMail, derivedFromKey: derivedFromKey))
-                )
-            ]
+    }
+    
+    
+    // TODO: Add an action for the Edit button
+    private var editButton: some View {
+        Button {} label: {
+            Text(NSLocalizedString("edit", comment: "edit")).font(.body)
         }
     }
+    
+    /// Styling the contact's avatar.
+    private var avatar: some View {
+        contact.avatar
+            .resizable()
+            .frame(width: 110, height: 110, alignment: .center)
+            .clipShape(Circle())
+            .overlay(Circle().stroke(Color.white, lineWidth: 4))
+            .shadow(radius: 10)
+            .padding(.bottom)
+    }
+    
+    /// Styling the contact's display name.
+    private var contactName: some View {
+        // TODO: Show proper name.
+        // Currently for debugging purposes we show the email before "@" as name
+        Text(contact.name.components(separatedBy: "@")[0])
+            .font(.title)
+            .fixedSize(horizontal: false, vertical: true)
+    }
+    
+    /// Shows how long  the contact is known.
+    /// If it is unknown, display an 'Add to contact book' button.
+    var knownSince: some View {
+        VStack (alignment: .leading){
+            
+            if let discovery = contact.primaryKey?.discovery {
+                row(label: "ContactView.KnownSince", data: discovery.dateToString)
+                // TODO Add discovery mail?
+            } else if let discovery = contact.discovery {
+                row(label: "ContactView.KnownSince", data: discovery.dateToString)
+            } else {
+                row(label: "ContactView.KnownSince.Unknown", data:nil)
+                // TODO: 'Add to contact book' button here
+            }
+        }
+    }
+    
+    /// Creates  a frame which contains all email addresses of the contact
+    var listContactAddresses: some View {
+        ZStack{
+            newRoundedRectangle()
+            VStack {
+                ForEach(contact.emails, id: \.self){ eachAddress in
+                    
+                    // This row shows the email address and the label
+                    HStack {
+                        
+                        // When an address is clicked, the ComposeView is called
+                        Button {
+                            properties.emailAddress = eachAddress
+                            
+                            properties.composeMail = true
+                        } label: {
+                            Text("\(eachAddress)")
+                                .fontWeight(.light)
+                                .font(.title2)
+                                .foregroundColor(.blue)
+                                .truncationMode(.middle)
+                                .frame(maxWidth: .infinity,
+                                       maxHeight: .infinity,
+                                       alignment: .leading)
+                            emailAddressLabel
+                        }
+                    }
+                    
+                    // This row shows the security rating and a button do display the keys
+                    HStack{
+                        rating
+                        Button {
+                            withAnimation{
+                                properties.emailAddress = eachAddress
+                                properties.showKeysPopup.toggle()
+                            }
+                            
+                        } label: {
+                            ZStack {
+                                Capsule()
+                                    .frame(height: 25, alignment: .center)
+                                    .shadow(color:.gray, radius:2)
+                                    .foregroundColor(contact.addressRating(contact).color)
+                                
+                                HStack{
+                                    Text(Image(systemName: "key.fill"))
+                                        .rotationEffect(Angle(degrees: 30))
+                                    
+                                    Text(NSLocalizedString("Contact.Key.Description", comment: "Contact.Key.Description"))
+                                        .fontWeight(.medium)
+                                    
+                                }.foregroundColor(.white)
+                                .font(.body)
+                            }
+                        }
+                    }.padding(.vertical,3)
+                    
+                    if eachAddress != contact.emails.last{
+                        Divider().padding(.top,1)
+                    }
+                    
+                }.padding(.horizontal,10)
+                
+            }.padding(5)
+            
+        }.padding(.horizontal,5)
+    }
+    
+    /// Creates a frame for the address label.
+    /// TODO: Add an addressLabel property  to the DisplayContact.
+    var emailAddressLabel: some View {
+        Text(NSLocalizedString("Email.Label", comment: "Email Label"))
+            .font(.caption)
+            .fontWeight(.light)
+            .foregroundColor(Color(.systemGray))
+            .frame(maxWidth: 50 ,
+                   maxHeight: 20,
+                   alignment: .bottomLeading)
+    }
+    
+    /// Shows a list of all keys associated to the email address in a popup screen and blurs the background.
+    var CryptoKeysPopup : some View {
+        GeometryReader{ geometry in
+            HStack{
+                if keyID == nil {
+                    Text(NSLocalizedString("Contact.Key.NotAvailable", comment: "Key not available message"))
+                    
+                } else {
+                    // TODO: keyID should be an array of keys
+                    VStack (alignment: .leading){
+                        Text(NSLocalizedString("Contact.Key.Available", comment: "Key available message")).padding(.bottom, 3)
+                        Text("   \u{2022} \(keyID!)")
+                    }
+                }
+            }
+            .padding()
+            .background(Color(.tertiarySystemBackground))
+            .cornerRadius(15)
+            .frame(maxWidth: geometry.size.width,
+                   maxHeight: geometry.size.height,
+                   alignment: .center)
+            
+        }
+        .padding(.horizontal,15)
+        .background(
+            Color.black.opacity(0.3)
+                .edgesIgnoringSafeArea(.all)
+                .onTapGesture {
+                    properties.showKeysPopup.toggle()
+                    properties.emailAddress = ""
+                }
+        )
+        
+    }
+    
+    // TODO: Change keyID to an array of keys
+    private var keyID: String? {
+        return contact.primaryKey?.keyID
+    }
+    
+    /// Creates the security rating label.
+    private var rating: some View {
+        HStack{
+            Text(Image(systemName: contact.addressRating(contact).shield))
+                .font(.title3)
+            
+            Text(contact.addressRating(contact).name)
+                .fontWeight(.medium)
+                .font(.body)
+            
+        }
+        .foregroundColor(contact.addressRating(contact).color)
+        .frame(maxWidth:.infinity,
+               maxHeight: .infinity,
+               alignment: .leading)
+    }
+    
+    /// Creates the text for the 'Known since' property.
+    private func row(label: LocalizedStringKey, data: String?) -> some View {
+        HStack {
+            Text(label)
+            
+            if let data = data{
+                Text(data)
+            }
+            
+        }
+        .font(.custom("SF Pro", size: 12, relativeTo: .caption))
+        .foregroundColor(.gray)
+    }
+}
+
+/// Creates a header for each section.
+struct newHeader: View {
+    var header: String
+    var body: some View {
+        HStack {
+            Text(header)
+                .font(.footnote)
+                .foregroundColor(.secondary)
+                .padding(.horizontal)
+                .padding(.top, 20)
+                .textCase(.uppercase)
+            Spacer()
+        }
+    }
+}
+
+/// Creates a rounded rectangle in which the emails are displayed
+struct newRoundedRectangle: View {
+    var body: some View {
+        RoundedRectangle(cornerRadius: 20)
+            .shadow(color:.gray, radius:2)
+            .background(Color(.systemGroupedBackground))
+            .foregroundColor(Color(.tertiarySystemBackground))
+    }
 }
 
 struct ContactView_Previews: PreviewProvider {
     static var previews: some View {
-        ContactView<ProxyContact, ProxyMail>(contact: ProxyData.Alice)
-        ContactView<ProxyContact, ProxyMail>(contact: ProxyData.Bob)
-        ContactView<ProxyContact, ProxyMail>(contact: ProxyData.Charlie)
+        ContactView<ProxyContact>(contact: ProxyData.Alice)
+        ContactView<ProxyContact>(contact: ProxyData.Alice)
+            .colorScheme(.dark)
+        ContactView<ProxyContact>(contact: ProxyData.Bob)
+        ContactView<ProxyContact>(contact: ProxyData.Bob)
+            .colorScheme(.dark)
+        ContactView<ProxyContact>(contact: ProxyData.Charlie)
     }
 }
diff --git a/enzevalos_iphone/SwiftUI/DisplayProtocols.swift b/enzevalos_iphone/SwiftUI/DisplayProtocols.swift
index 59ddc9046b574349d7eea04fd18bcb1f365904cc..939d5e28c00089167f9d20e9ab7a4edfb7948909 100644
--- a/enzevalos_iphone/SwiftUI/DisplayProtocols.swift
+++ b/enzevalos_iphone/SwiftUI/DisplayProtocols.swift
@@ -87,6 +87,16 @@ enum ContactSecurityRating {
         case .Forgable: return Color(ThemeManager.unencryptedMessageColor())
         }
     }
+    
+    var shield: String {
+        switch self {
+        case .Trustworthy:
+            return "checkmark.shield.fill"
+        case .Forgable:
+            return "exclamationmark.shield.fill"
+        }
+    }
+    
 }
 
 
@@ -119,6 +129,7 @@ protocol DisplayContact {
     var name: String { get }
     var email: String { get }
     var avatar: Image { get }
+    var emails: [String] { get }
     var isInContactBook: Bool { get }
     var discovery: Date? { get }
     var last: Date? { get }
@@ -136,7 +147,6 @@ protocol DisplayContact {
 
 extension DisplayContact {
 
-    
     func findAddress(temp: Bool) -> AddressRecord {
         if let addr = PersistentDataProvider.dataProvider.fetchedAddressResultController.fetchedObjects?.first {
             return addr
@@ -144,13 +154,13 @@ extension DisplayContact {
         fatalError("MISSING ADDR")
     }
     
-    func rating <T:DisplayMail> (mail: T?) -> ContactSecurityRating {
-        if let mail = mail, mail.signatureState == .ValidSignature {
-            return .Trustworthy
-        }
-        if self.primaryKey != nil && mail == nil {
+    func addressRating <C:DisplayContact> (_: C) -> ContactSecurityRating {
+        
+        // TODO: Add another check of the keys array
+        if self.primaryKey != nil  /* || !self.keys.isEmpty */ {
             return .Trustworthy
         }
+        
         // TODO Think about Rating in case of a unsigned mail from a sender with aprimary key...
         return .Forgable
     }
@@ -184,7 +194,6 @@ protocol DisplayMail {
     var signatureKey: K? { get }
     
     var persistentMail: MailRecord? { get }
-    
     func markAsRead(isRead: Bool)
 }
 
diff --git a/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift b/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift
index aabf01383b0a8350da744ef84cbd2723e137636b..67331fe3d43f94eb10d0539ef819c4a026134078 100644
--- a/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift
+++ b/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift
@@ -4,7 +4,19 @@
 //
 //  Created by Oliver Wiese on 30.10.20.
 //  Modified by Chris Offner & Claire Bräuer in March 2021.
-//  Copyright © 2020 fu-berlin. All rights reserved.
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
 //
 
 import SwiftUI
@@ -21,7 +33,7 @@ struct FolderListView: View {
             List(folders, id: \.self) { f in
                 let name = formatName(f.name)
                 
-                NavigationLink(destination: InboxView(folderPath: f.path ?? name, name: name)
+                NavigationLink(destination: InboxView(folderPath: f.path ?? name, folderName: name)
                                 .environment(\.managedObjectContext,
                                              PersistentDataProvider
                                                 .dataProvider
@@ -51,4 +63,3 @@ struct FolderOverView_Previews: PreviewProvider {
         FolderListView()
     }
 }
-
diff --git a/enzevalos_iphone/SwiftUI/FolderView/FolderRowView.swift b/enzevalos_iphone/SwiftUI/FolderView/FolderRowView.swift
index 557b31f70a9e0dccdd1b693ddc780d36f133cbc4..4fec0752b98267205d105396610fb8ed9d024053 100644
--- a/enzevalos_iphone/SwiftUI/FolderView/FolderRowView.swift
+++ b/enzevalos_iphone/SwiftUI/FolderView/FolderRowView.swift
@@ -9,8 +9,7 @@
 import SwiftUI
 
 struct FolderRowView: View {
-    
-    //TODO: increase padding for each delimiter? -> Subfolder level?
+    // TODO: increase padding for each delimiter? -> Subfolder level?
     public var folder: DisplayFolder
     var body: some View {
         HStack {
diff --git a/enzevalos_iphone/SwiftUI/Inbox/InboxRefreshModel.swift b/enzevalos_iphone/SwiftUI/Inbox/InboxRefreshModel.swift
new file mode 100644
index 0000000000000000000000000000000000000000..f092db05a3a4c4b1fd7791748f7c528dff346b08
--- /dev/null
+++ b/enzevalos_iphone/SwiftUI/Inbox/InboxRefreshModel.swift
@@ -0,0 +1,76 @@
+//
+//  InboxRefreshModel.swift
+//  enzevalos_iphone
+//
+//  Created by Chris Offner on 29.03.21.
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
+//
+
+import Foundation
+
+/// Model for Pull to Refresh and updating inbox.
+class InboxRefreshModel: ObservableObject {
+    @Published var updating = false             // updating inbox
+    @Published var refreshStarted = false       // pull to refresh sequence started
+    var folderPath: String
+    var pullOffsetBaseline: CGFloat?
+    var pullOffset: CGFloat = 0
+    
+    init(folderPath: String) {
+        self.folderPath = folderPath
+    }
+    
+    /// Text representation of inbox update state.
+    var lastUpdate: String {
+        var text = NSLocalizedString("Updating", comment: "updating...")
+        
+        if !updating {
+            let last = Date()
+            let dateFormatter = DateFormatter()
+            dateFormatter.locale = Locale.current
+            dateFormatter.timeStyle = .medium
+            let dateString = dateFormatter.string(from: last)
+            text = NSLocalizedString("LastUpdate", comment: "") + " " + dateString
+        }
+        
+        return text
+    }
+    
+    /// Retrieves new emails and updates the respective email folder.
+    func updateMails() {
+        guard !updating else {
+            return
+        }
+        
+        LetterboxModel
+            .instance
+            .mailHandler
+            .updateFolder(folderpath: folderPath) { error in
+                if error == nil {
+                    self.updating = false
+                }
+                // TODO: Add error message
+            }
+        updating = true
+    }
+    
+    /// Refreshes inbox and resets pull to refresh states.
+    func refresh() {
+        DispatchQueue.main.async {
+            self.updateMails()
+            self.refreshStarted = false
+        }
+    }
+}
diff --git a/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift b/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift
index 421e01e0462e52339a34d84d2e89202bd64e3f0c..a062bd5a7b249f0b4c7e19b02e5b194e23f9ccfe 100644
--- a/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift
+++ b/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift
@@ -1,32 +1,50 @@
 //
-//  InboView.swift
+//  InboxView.swift
 //  enzevalos_iphone
 //
 //  Created by Oliver Wiese on 16.10.20.
 //  Modified by Chris Offner & Claire Bräuer in March 2021.
-//  Copyright © 2020 fu-berlin. All rights reserved.
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
 //
 
 import SwiftUI
-import CoreData
-// TODO:    Refactor to Model!
-//          Updating text -> Last update, updating, no connection...
 
 struct InboxView: View {    
     var folderPath: String
-    var name: String
+    var folderName: String
     @State private var updating = false
     @State private var composeMail = false
     @State private var goToFolders = false
+    @ObservedObject var refreshModel: InboxRefreshModel
+    
+    init(folderPath: String, folderName: String) {
+        self.folderPath = folderPath
+        self.folderName = folderName
+        self.refreshModel = InboxRefreshModel(folderPath: folderPath)
+    }
     
     var body: some View {
         mailListView
-            .onAppear(perform: updateMails)
+            .onAppear(perform: refreshModel.updateMails)
             .sheet(isPresented: $composeMail) { ComposeView() }
             .navigationBarItems(trailing: keyManagementButton)
             .toolbar {
                 ToolbarItem(placement: .status) {
-                    lastUpdate
+                    Button(action: refreshModel.updateMails) {
+                        Text(refreshModel.lastUpdate)
+                    }
                 }
                 
                 ToolbarItemGroup(placement: .bottomBar) {
@@ -37,7 +55,7 @@ struct InboxView: View {
     }
     
     private var mailListView: some View {
-        MailListView(folderPath: folderPath, folderName: name)
+        MailListView(folderPath: folderPath, folderName: folderName, refreshModel: refreshModel)
             .environment(\.managedObjectContext,
                          PersistentDataProvider
                             .dataProvider
@@ -61,44 +79,6 @@ struct InboxView: View {
         }
     }
     
-    // TODO: Refactor lastUpdate to model
-    private var lastUpdate: some View {
-        var text = NSLocalizedString("Updating", comment: "updating...")
-        
-        if !updating {
-            let last = Date()
-            let dateFormatter = DateFormatter()
-            dateFormatter.locale = Locale.current
-            dateFormatter.timeStyle = .medium
-            let dateString = dateFormatter.string(from: last)
-            text = NSLocalizedString("LastUpdate", comment: "") + " " + dateString
-        }
-        
-        return Button(action: updateMails) {
-            Text(text).font(.callout)
-        }
-    }
-    
-    
-    // TODO: Refactor updateMails to model
-    private func updateMails() {
-        guard !updating else {
-            return
-        }
-        
-        LetterboxModel
-            .instance
-            .mailHandler
-            .updateFolder(folderpath: folderPath) { error in
-                if error == nil {
-                    self.updating = false
-                }
-                // TODO: Add error message
-            }
-        updating = true
-    }
-    
-    
     private var folderButton: some View {
         Button {
             goToFolders = true
@@ -118,7 +98,7 @@ struct InboxView: View {
 // Preview
 struct InboxView_Previews: PreviewProvider {
     static var previews: some View {
-        return InboxView(folderPath: "INBOX", name: "INBOX")
+        return InboxView(folderPath: "INBOX", folderName: "INBOX")
             .environment(\.managedObjectContext,
                          PersistentDataProvider
                             .proxyPersistentDataProvider
diff --git a/enzevalos_iphone/SwiftUI/Inbox/MailListView.swift b/enzevalos_iphone/SwiftUI/Inbox/MailListView.swift
index 18c7d5cd8e1e3e64added8dad39da7276d49f0c3..3899d844360ada38aa853832d07f60e6293d8841 100644
--- a/enzevalos_iphone/SwiftUI/Inbox/MailListView.swift
+++ b/enzevalos_iphone/SwiftUI/Inbox/MailListView.swift
@@ -4,37 +4,59 @@
 //
 //  Created by Oliver Wiese on 16.10.20.
 //  Modified by Chris Offner & Claire Bräuer in March 2021.
-//  Copyright © 2020 fu-berlin. All rights reserved.
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
 //
 
 import SwiftUI
 import CoreData
-// TODO:    Refactor to Model!
-//          Updating text -> Last update, updating, no connection....
 
+// TODO: Fix refresh on view creation!
+// Currently "pull to refresh" appears to get triggered every time MailListView (re-)appears.
+
+/// A view that lists emails in a particular folder together with a search function.
 struct MailListView: View {
     @Environment(\.managedObjectContext) var managedObjectContext
     var fetchRequest: FetchRequest<MailRecord>
     var mails: FetchedResults<MailRecord>{fetchRequest.wrappedValue}
     var folderPath: String
     var folderName: String
-    
-    @State private var showUser = false
+    @ObservedObject var model: InboxRefreshModel
     @State private var searchText = ""
     @State private var searchType = SearchType.All
     
-    init(folderPath: String, folderName: String) {
+    init(folderPath: String, folderName: String, refreshModel: InboxRefreshModel) {
         fetchRequest = MailRecord.mailsInFolderFetchRequest(folderpath: folderPath)
         self.folderPath = folderPath
         self.folderName = folderName
+        self.model = refreshModel
     }
     
     var body: some View {
-        VStack(alignment: .leading) {
-            SearchView(searchText: $searchText, searchType: $searchType)
-                .padding()
+        VStack(alignment: .leading, spacing: 0) {
+            SearchView(searchText: $searchText, searchType: $searchType).padding()
             
-            mailList
+            ScrollView {
+                refreshTrigger.frame(width: 0, height: 0)
+                
+                ZStack(alignment: topCenter) {
+                    mailList.frame(height: 600) // TODO: Make mailList use max height dynamically
+                    pullToRefreshIndicator
+                }
+                .offset(y: model.updating ? 35 : -10)
+                .animation(.default)
+            }
         }
         .navigationBarTitle(folderName, displayMode: .inline)
     }
@@ -51,6 +73,52 @@ struct MailListView: View {
         .listStyle(PlainListStyle())
     }
     
+    @ViewBuilder
+    private var pullToRefreshIndicator: some View {
+        if model.updating {
+            ProgressView().offset(y: -32)
+        } else {
+            Image(systemName: "arrow.down.circle")
+                .foregroundColor(.secondary)
+                .font(.system(size: 28, weight: .regular))
+                .rotationEffect(Angle(degrees: model.refreshStarted ? 180 : 0))
+                .offset(y: -32)
+                .animation(.easeIn)
+        }
+    }
+    
+    private var topCenter: Alignment {
+        Alignment(horizontal: .center, vertical: .top)
+    }
+    
+    /// Measures pulldown offset and triggers inbox refresh.
+    private var refreshTrigger: GeometryReader<AnyView> {
+        GeometryReader { geo -> AnyView in
+            DispatchQueue.main.async {
+                // Set initial baseline for pulldown based on dynamic layout
+                guard let baseline = model.pullOffsetBaseline else {
+                    model.pullOffsetBaseline = geo.frame(in: .global).minY
+                    return
+                }
+                
+                // Update offset dynamically as user pulls down
+                model.pullOffset = geo.frame(in: .global).minY
+                
+                // Indicate refresh start if pulldown threshold is reached
+                if model.pullOffset - baseline > 80 && !model.refreshStarted {
+                    model.refreshStarted = true
+                }
+                
+                // Trigger refresh once pulldown is fully released
+                if model.refreshStarted && model.pullOffset == baseline {
+                    withAnimation(.linear) {
+                        model.refresh()
+                    }
+                }
+            }
+            
+            return AnyView(EmptyView())
+        }
     private func deleteMails(at offsets: IndexSet) {
         var ids = [UInt64]()
         for index in offsets {
@@ -60,36 +128,31 @@ struct MailListView: View {
         MailRecord.delete(with: ids, folderPath: folderPath)
     }
     
+    /// Filters emails based on search criteria.
     func filterKeyRecord(keyRecord: MailRecord) -> Bool {
-        if self.searchText.isEmpty
-            || self.searchText == NSLocalizedString("Searchbar.Title", comment: "Search") {
+        if searchText.isEmpty
+            || searchText == NSLocalizedString("Searchbar.Title", comment: "Search") {
             return true
         }
         
-        let query = self.searchText.lowercased()
+        let query = searchText.lowercased()
         if (searchType == .All || searchType == .Sender)
-            && (containsSearchTerms(content: keyRecord.sender.displayname, searchText: query)
-                    || containsSearchTerms(content: keyRecord.sender.email, searchText: query)) {
+            && (containsSearchTerms(content: keyRecord.sender.displayname, searchTerm: query)
+                    || containsSearchTerms(content: keyRecord.sender.email, searchTerm: query)) {
             return true
         } else if (searchType == .All || searchType == .Sender)
-                    && keyRecord.addresses.filter({
-                                                    containsSearchTerms(content: $0.email,
-                                                                        searchText: query) }).count > 0 {
+                    && (keyRecord.addresses.filter {
+                            containsSearchTerms(content: $0.email,
+                                                searchTerm: query) }
+                            .count > 0) {
             return true
         } else if (searchType == .All || searchType == .Subject)
-                    && containsSearchTerms(content: keyRecord.subject, searchText: query) {
+                    && containsSearchTerms(content: keyRecord.subject, searchTerm: query) {
             return true
         } else if (searchType == .All || searchType == .Body)
-                    && containsSearchTerms(content: keyRecord.body, searchText: query) {
+                    && containsSearchTerms(content: keyRecord.body, searchTerm: query) {
             return true
         }
         return false
     }
 }
-
-struct MailListView_Previews: PreviewProvider {
-    static var previews: some View {
-        MailListView(folderPath: "INBOX", folderName: "INBOX")
-            .environment(\.managedObjectContext, PersistentDataProvider.proxyPersistentDataProvider.persistentContainer.viewContext)
-    }
-}
diff --git a/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift b/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift
new file mode 100644
index 0000000000000000000000000000000000000000..4d4c6936710b82da2880187db62b422d45b174af
--- /dev/null
+++ b/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift
@@ -0,0 +1,92 @@
+//
+//  MailRowView.swift
+//  enzevalos_iphone
+//
+//  Created by Oliver Wiese on 27.10.20.
+//  Modified by Chris Offner & Claire Bräuer in March 2021.
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
+//
+
+import SwiftUI
+
+struct MailRowView <M: DisplayMail>: View {
+    let mail: M
+    @State var isLinkActive = false
+    // ContactMailListView  toggles this to disable the onTapGesture modifier for the avatar
+    var activateOnTap: Bool = true
+    
+    var body: some View {
+        HStack {
+            avatar
+            
+            VStack(alignment: .leading) {
+                HStack {
+                    // Sender name
+                    Text(mail.sender.name)
+                        .fontWeight(mail.isRead ? .regular : .medium)
+                        .lineLimit(1)
+                    
+                    Spacer()
+                    
+                    // Arrival time
+                    Text(mail.date.timeAgoText())
+                        .font(.caption)
+                }
+                
+                HStack {
+                    // Subject
+                    Text(mail.subject)
+                        .font(.caption)
+                        .lineLimit(2)
+                    
+                    Spacer()
+                    
+                    // Attachment indicator if relevant
+                    if !mail.displayAttachments.isEmpty {
+                        Image(systemName: "paperclip")
+                            .font(.caption)
+                            .foregroundColor(.secondary)
+                    }
+                }
+            }
+            .foregroundColor(mail.isRead ? .secondary : .primary)
+        }
+        .padding(4)
+        .frame(height: 65)
+    }
+    
+
+    private var avatar: some View {
+        mail.sender.avatar
+            .resizable()
+            .aspectRatio(contentMode: .fit)
+            .shadow(radius: 2)
+            .opacity(mail.isRead ? 0.45 : 1)
+            .onTapGesture(count: 1, perform: {isLinkActive = true})
+            .allowsHitTesting(activateOnTap)
+            .background(
+                NavigationLink(destination: ContactView(contact: mail.sender), isActive: $isLinkActive) {
+                    EmptyView()
+                }
+                .hidden()
+            )
+    }
+}
+
+struct MailRowView_Previews: PreviewProvider {
+    static var previews: some View {
+        MailRowView(mail: ProxyData.PlainMail)
+    }
+}
diff --git a/enzevalos_iphone/SwiftUI/Inbox/UpdateMailsModel.swift b/enzevalos_iphone/SwiftUI/Inbox/UpdateMailsModel.swift
new file mode 100644
index 0000000000000000000000000000000000000000..7359c830edb359e0608fb061c7c8e30db8b63340
--- /dev/null
+++ b/enzevalos_iphone/SwiftUI/Inbox/UpdateMailsModel.swift
@@ -0,0 +1,50 @@
+//
+//  UpdateMailsModel.swift
+//  enzevalos_iphone
+//
+//  Created by Chris Offner on 29.03.21.
+//  Copyright © 2021 fu-berlin. All rights reserved.
+//
+
+import Foundation
+
+class InboxRefreshModel: ObservableObject {
+    @Published var updating = false
+    var folderPath: String
+    
+    init(folderPath: String) {
+        self.folderPath = folderPath
+    }
+    
+    var lastUpdate: String {
+        var text = NSLocalizedString("Updating", comment: "updating...")
+        
+        if !updating {
+            let last = Date()
+            let dateFormatter = DateFormatter()
+            dateFormatter.locale = Locale.current
+            dateFormatter.timeStyle = .medium
+            let dateString = dateFormatter.string(from: last)
+            text = NSLocalizedString("LastUpdate", comment: "") + " " + dateString
+        }
+        
+        return text
+    }
+    
+    func updateMails() {
+        guard !updating else {
+            return
+        }
+        
+        LetterboxModel
+            .instance
+            .mailHandler
+            .updateFolder(folderpath: folderPath) { error in
+                if error == nil {
+                    self.updating = false
+                }
+                // TODO: Add error message
+            }
+        updating = true
+    }
+}
diff --git a/enzevalos_iphone/SwiftUI/LetterboxApp.swift b/enzevalos_iphone/SwiftUI/LetterboxApp.swift
index 25870715d77b86cc62c85b6bfb7b574d6a413bfa..a3fb72feed3c5bf347551287b66235d91b904956 100644
--- a/enzevalos_iphone/SwiftUI/LetterboxApp.swift
+++ b/enzevalos_iphone/SwiftUI/LetterboxApp.swift
@@ -41,4 +41,3 @@ struct LetterboxApp: App {
         }
     }
 }
-
diff --git a/enzevalos_iphone/SwiftUI/Read/ReadModel.swift b/enzevalos_iphone/SwiftUI/Read/ReadModel.swift
index ea515e9ee88636cfe24a17a94551cc298776d341..9ed72bffe5acd58edddbbd9831c413ca1e3960fc 100644
--- a/enzevalos_iphone/SwiftUI/Read/ReadModel.swift
+++ b/enzevalos_iphone/SwiftUI/Read/ReadModel.swift
@@ -87,7 +87,7 @@ class ReadModel <M: DisplayMail>: ObservableObject {
         case .ReplyAll:
             return PreMailData(body: mail.preparePreviousMailBody(), subject: ResponseType.Reply.addPrefix(subject: mail.subject), to: [mail.sender.email], cc: mail.tos.map({$0.email}) + mail.ccs.map({$0.email}), bcc: mail.bccs.map({$0.email}))
         case .Forward:
-            return PreMailData(body: mail.preparePreviousMailBody(), subject: ResponseType.Reply.addPrefix(subject: mail.subject), to: [], cc: [], bcc: [])
+            return PreMailData(body: mail.preparePreviousMailBody(), subject: ResponseType.Forward.addPrefix(subject: mail.subject), to: [], cc: [], bcc: [])
         case .Archive:
             dismissView = true
             return nil
diff --git a/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SecurityBriefingView.swift b/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SecurityBriefingView.swift
index 003dd869ed924465dfbc4a1efc7e573c9df9cca4..7525dd711a40cca96da08899c7751307d2c8aa6c 100644
--- a/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SecurityBriefingView.swift	
+++ b/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SecurityBriefingView.swift	
@@ -4,7 +4,19 @@
 //
 //  Created by Oliver Wiese on 09.04.20.
 //  Modified by Chris Offner & Claire Bräuer in March 2021.
-//  Copyright © 2020 fu-berlin. All rights reserved.
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see https://www.gnu.org/licenses/.
 //
 
 import SwiftUI
diff --git a/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewChildren/SmallContactListView.swift b/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewChildren/SmallContactListView.swift
index 9c8b20ec7d5054cb25c867c0d59866f6c6c1bb6f..9e42175a945b904c3b1bee6a2540fb3492aa3de2 100644
--- a/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewChildren/SmallContactListView.swift	
+++ b/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewChildren/SmallContactListView.swift	
@@ -32,7 +32,7 @@ struct SmallContactListView <C: DisplayContact>: View {
             
             if showList {
                 ForEach(contacts, id: \.email) {contact in
-                    NavigationLink(destination: ContactView<C, MailRecord>(contact: contact, fromMail: nil)) {
+                    NavigationLink(destination: ContactView<C>(contact: contact)) {
                         HStack {
                             CircleImage(image: contact.avatar, radius: 40)
                             VStack (alignment: .leading, spacing: 2){
diff --git a/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewMain.swift b/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewMain.swift
index 2549d1d006f7af714e4e6096d0bf78dfec1b6b8b..a56b3f8a63a838f4bd65c4f7d7160011afc18e9d 100644
--- a/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewMain.swift	
+++ b/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewMain.swift	
@@ -72,7 +72,7 @@ struct SenderViewMain <M: DisplayMail>: View {
     }
     
     private var icon: some View {
-        NavigationLink(destination: ContactView(contact: model.mail.sender, fromMail: model.mail)) {
+        NavigationLink(destination: ContactView(contact: model.mail.sender)) {
             model.mail.sender.avatar
                 .resizable()
                 .frame(width: 130, height: 110)
@@ -90,7 +90,7 @@ struct SenderViewMain <M: DisplayMail>: View {
             Text(NSLocalizedString("Sender", comment: "Sender"))
                 .font(.headline)
                 .padding(.bottom, 10)
-            NavigationLink(destination: ContactView(contact: model.mail.sender, fromMail: model.mail)) {
+            NavigationLink(destination: ContactView(contact: model.mail.sender)) {
                 HStack {
                     VStack (alignment: .leading) {
                         Text(model.mail.sender.name)
diff --git a/enzevalos_iphone/SwiftUI/SupportingViews/CircleImage.swift b/enzevalos_iphone/SwiftUI/SupportingViews/CircleImage.swift
new file mode 100644
index 0000000000000000000000000000000000000000..eda6ba3e1771f919e7e669a27153ec60061677f0
--- /dev/null
+++ b/enzevalos_iphone/SwiftUI/SupportingViews/CircleImage.swift
@@ -0,0 +1,27 @@
+//
+//  CiricleImage.swift
+//  enzevalos_iphone
+//
+//  Created by Oliver Wiese on 02.03.20.
+//  Copyright © 2020 fu-berlin. All rights reserved.
+//
+
+import SwiftUI
+
+struct CircleImage: View {
+    var image: Image
+    var radius: CGFloat = 60
+    
+    var body: some View {
+        image
+            .resizable()
+            .frame(width: radius, height: radius)
+            .shadow(radius: radius/60*5)
+    }
+}
+
+struct CircleImage_Previews: PreviewProvider {
+    static var previews: some View {
+        CircleImage(image: ProxyContact.makeImg("Alice", color: .red))
+    }
+}
diff --git a/enzevalos_iphone/SwiftUI/SupportingViews/MailRowView.swift b/enzevalos_iphone/SwiftUI/SupportingViews/MailRowView.swift
index fa89a176c49db716dfca1b39e1834ee98474eb3f..1bca8d3ff29d09ebf46daaef845c9e157fbe984b 100644
--- a/enzevalos_iphone/SwiftUI/SupportingViews/MailRowView.swift
+++ b/enzevalos_iphone/SwiftUI/SupportingViews/MailRowView.swift
@@ -1,5 +1,5 @@
 //
-//  MailRow.swift
+//  MailRowView.swift
 //  enzevalos_iphone
 //
 //  Created by Oliver Wiese on 27.10.20.
diff --git a/enzevalos_iphone/SwiftUI/SupportingViews/MailView.swift b/enzevalos_iphone/SwiftUI/SupportingViews/MailView.swift
index 4b10db6ac7920358bf8873eac4cf32c9daac16ab..2ba4de7a6f72e1128e7d8df1e333f32e69b909d5 100644
--- a/enzevalos_iphone/SwiftUI/SupportingViews/MailView.swift
+++ b/enzevalos_iphone/SwiftUI/SupportingViews/MailView.swift
@@ -11,9 +11,8 @@ import SwiftUI
 
 
 struct MailView <M: DisplayMail>: View {
-    //TODO private let coord = AppDelegate.getAppDelegate().inboxCoordinator
-
-    var mail: M
+    // TODO: private let coord = AppDelegate.getAppDelegate().inboxCoordinator
+    private var mail: M
 
     init(mail: M){
         self.mail = mail
diff --git a/enzevalos_iphone/de.lproj/Localizable.strings b/enzevalos_iphone/de.lproj/Localizable.strings
index d2d4ee71864dd49b301d5678d875a4388b3c2b86..ebcad85c88877968e804b18beaee20b49c11ca1e 100644
--- a/enzevalos_iphone/de.lproj/Localizable.strings
+++ b/enzevalos_iphone/de.lproj/Localizable.strings
@@ -5,6 +5,14 @@
  Created by jakobsbode on 06.10.16.
  Copyright © 2016 fu-berlin. All rights reserved.
  */
+"Contact.Key.Description" = "Schlüssel";
+"Contact.Email.Header" = "Adressen";
+"Contact.Received.Header" = "Von diesem Kontakt empfangen";
+"Contact.Sent.Header" = "An diesen Kontakt gesendet";
+"Contact.Key.NotAvailable" = "Diese Email-Adresse hat keine Schlüssel.";
+"Contact.Key.Available" = "Diese Email-Adresse benutzt folgende Schlüssel:";
+"Contact.Button.ShowMore" = "Mehr...";
+"Email.Label" = "Privat";
 "Permission.contactDenied.Title" = "Oops! Zugriff erlauben!";
 "Permission.contactDenied.Description" = "Bitte erlaube Zugriff auf Kontakte in Einstellungen -> Datenschutz -> Kontakte";
 "Permission.Notification.Title" = "Mitteilungen erlauben";
@@ -266,7 +274,6 @@
 "you" = "Deine ID";
 "ContactView.Title" = "Kontakt";
 "ContactView.Tab.Contact.Description" = "Kontakt";
-"ContactView.Tab.EMail.Description" = "Adressen";
 "ContactView.Tab.EMail.Title" = "Verknüpfte Adressen";
 "ContactView.Tab.EMail.Data.No" = "Keine verknüpften Adressen. \n Verknüpfungen können über das Adressbuch erfolgen.";
 "ContactView.ID.Explaination.youCrypto" = "Hier ist deine vertrauenswürdige Identität."; // thisIsYou
@@ -280,9 +287,9 @@
 "ContactView.Nickname.Title" = "Nickname";
 "ContactView.PreferedIDCell.IsPrimID" = "Diese ID wird verwendet um vertrauliche Mails an die Person zu senden.";
 "ContactView.PreferedIDCell.MakePrimID" = "Diese ID zum Versand von vertraulichen Mails verwenden.";
-"ContactView.KnownSince" = "Bekannt seit";
+"ContactView.KnownSince" = "Bekannt seit:";
 "ContactView.KnownSince.Unknown" = "Das Datum des ersten Auftauchens ist unbekannt.";
-"ContactView.LastMail" = "Letzte erhaltene Mail von ";
+"ContactView.LastMail" = "Letzte erhaltene Mail: ";
 "ContactView.LastMail.Name" = "Letzte erhaltene Mail von";
 "ContactView.LastMail.Today" = "Letzte Mail heute erhalten.";
 "ContactView.LastMail.Ago" = "Letzte Mail vor %@ erhalten.";
@@ -292,7 +299,7 @@
 "ContactView.Key.Signature.Name" = "Signatur Schlüssel";
 "ContactView.Key.Primary.Name" = "Bevorzugter Schlüssel";
 "ContactView.Rating.Name" = "Einstufung";
-"ContactView.Rating.Trustworthy" = "Vertrauenswürdig";
+"ContactView.Rating.Trustworthy" = "Sicher";
 "ContactView.Rating.Forgable" = "Fälschbar";
 "didYouSendThis" = "Hallo, haben Sie mir diese E-Mail geschickt?\nIch frage nur, weil die Mail Ihnen nicht eindeutig zugeordnet werden kann und Ihre vorherigen Mails eindeutig Ihnen zuzuordnen waren. Für Erfahrende: Die Mail hat keine digitale Signatur.\n\n";
 "reactButton" = "Um Bestätigung bitten";
@@ -444,6 +451,7 @@
 "Security.Dialog.Button.Title.Ask.ForPK" = "Um senden der ID bitten";
 "Security.Dialog.Button.Title.Send.PK" = "Eigenen öffentlichen Schlüssel versenden";
 "ReadView.SecurityBriefing.Title" = "Sicherheitsbriefing";
+"ReadView.SecurityBriefing.EncryptionType.Text" = "Diese Email wurde verschlüsselt mit ";
 "ReadView.SecurityBriefing.Conf.Title" = "Wer kann die Mail lesen?";
 "ReadView.SecurityBriefing.Conf.Description" = "Deine Mails gehen durch verschiedene Hände: Deinem Mail-Provider, dem Mail-Provider der anderen Seite und vielleicht weitere Mail-Provider als Vermittler dazwischen. Außerdem transporieren dein Internet-Provider und andere auch andere Internet-Provider deine Mail.";
 "ReadView.SecurityBriefing.Conf.State.Encrypted" = "Nur du, andere Empfänger und Absender können den Inhalt der Mail lesen.";
diff --git a/enzevalos_iphone/en.lproj/Localizable.strings b/enzevalos_iphone/en.lproj/Localizable.strings
index c27a527def77c96f864fa41f3d550ad25ec34b75..5a4c6debdd34161867486764f5aadc5dce20d2af 100644
--- a/enzevalos_iphone/en.lproj/Localizable.strings
+++ b/enzevalos_iphone/en.lproj/Localizable.strings
@@ -5,6 +5,14 @@
  Created by jakobsbode on 06.10.16.
  Copyright © 2016 fu-berlin. All rights reserved.
  */
+"Contact.Key.Description" = "Show Keys";
+"Contact.Email.Header" = "Addresses";
+"Contact.Received.Header" = "Received from this contact";
+"Contact.Sent.Header" = "Sent to this contact";
+"Contact.Key.NotAvailable" = "This email address doesn't have a key.";
+"Contact.Key.Available" = "This email address is using the following keys:";
+"Contact.Button.ShowMore" = "Show more...";
+"Email.Label" = "Private";
 "Permission.contactDenied.Title" = "Oops! Please Allow!";
 "Permission.contactDenied.Description" = "Please Turn On Access Contacts In Settings -> Privacy -> Contacts .";
 "Permission.Notification.Title" = "Allow Notifications";
@@ -236,7 +244,6 @@
 "you.Secure" = "Your genuine ID";
 "ContactView.Title" = "Contact";
 "ContactView.Tab.Contact.Description" = "Contact";
-"ContactView.Tab.EMail.Description" = "Addresses";
 "ContactView.Tab.EMail.Title" = "Related Addresses";
 "ContactView.Tab.EMail.Data.No" = "No related addresses. \n You can add through your address book.";
 "ContactView.ID.Explaination.youCrypto" = "Here is your genuine identity.";
@@ -250,19 +257,19 @@
 "ContactView.Nickname.Title" = "Name";
 "ContactView.PreferedIDCell.IsPrimID" = "ID is used to send genuine mails.";
 "ContactView.PreferedIDCell.MakePrimID" = "Use this ID to send confidential mails.";
-"ContactView.KnownSince" = "Known since";
+"ContactView.KnownSince" = "Known since:";
 "ContactView.KnownSince.Unknown" = "Unknown first appearance date";
 "ContactView.LastMail.Today" = "Last mail received today.";
 "ContactView.LastMail.Ago" = "Last received mail %@ ago.";
-"ContactView.LastMail.Name" = "Last received mail from";
+"ContactView.LastMail.Name" = "Last received mail:";
 "ContactView.LastMail.No" = "No mails received.";
 "ContactView.OtherIDs.Insecure.Title" = "Insecure ID";
 "ContactView.EMail.Name" = "E-Mail";
 "ContactView.Key.Signature.Name" = "Signature Key";
 "ContactView.Key.Primary.Name" = "Primary Key";
 "ContactView.Rating.Name" = "Rating";
-"ContactView.Rating.Trustworthy" = "Trustworthy";
-"ContactView.Rating.Forgable" = "Forgable";
+"ContactView.Rating.Trustworthy" = "Secure Email";
+"ContactView.Rating.Forgable" = "Forgable Email";
 "didYouSendThis" = "Hey, did you send me this mail?\nI'm just asking because the mail is not confidential and we communicated confidentially before.\n\n";
 "reactButton" = "Request Confirmation";
 "sendSecureIfPossible" = "Send confidentially if possible";
@@ -423,6 +430,7 @@
 "Security.Dialog.Button.Title.Ask.ForPK" = "Ask to send ID";
 "Security.Dialog.Button.Title.Send.PK" = "Send own public key";
 "ReadView.SecurityBriefing.Title" = "Security Briefing";
+"ReadView.SecurityBriefing.EncryptionType.Text" = "This email was encrypted using ";
 "ReadView.SecurityBriefing.Conf.Title" = "Who can read the email?";
 "ReadView.SecurityBriefing.Conf.Description" = "Deine Mails gehen durch verschiedene Hände: Deinem Mail-Provider, dem Mail-Provider der anderen Seite und vielleicht weitere Mail-Provider als Vermittler dazwischen. Außerdem transporieren dein Internet-Provider und andere auch andere Internet-Provider deine Mail.";
 "ReadView.SecurityBriefing.Conf.State.Encrypted" = "Only you, the sender and receiver know the content of these mails.";
diff --git a/enzevalos_iphone/persistentData/AddressRecord.swift b/enzevalos_iphone/persistentData/AddressRecord.swift
index 416e9a54b7eb34e7d446344cdd827bdadabba75f..060bbcf252c4785129925bb128326495ce9cd348 100644
--- a/enzevalos_iphone/persistentData/AddressRecord.swift
+++ b/enzevalos_iphone/persistentData/AddressRecord.swift
@@ -127,6 +127,23 @@ extension AddressRecord {
 }
 
 extension AddressRecord: DisplayContact {
+    var emails: [String] {
+        get{
+            var addresses = [String]()
+            addresses.append(self.email)
+            if let keys = self.usedPublicKeys as? Set<PublicKeyRecord>  {
+                for key in keys {
+                    if let set = key.usedAddress as? Set<String> {
+                        addresses.append(contentsOf: set)
+                    }
+                }
+            }
+            return addresses
+        }
+    }
+    
+    
+    
     typealias C = AddressRecord
     
     var avatar: Image {