diff --git a/enzevalos_iphone/persistentData/AddressRecord.swift b/enzevalos_iphone/persistentData/AddressRecord.swift
index afbec27072b03aed852ae179f1526e683f6e4fdb..e67d197b631a9d475541918c0a78ca53617010af 100644
--- a/enzevalos_iphone/persistentData/AddressRecord.swift
+++ b/enzevalos_iphone/persistentData/AddressRecord.swift
@@ -7,12 +7,13 @@
 //
 
 /* TODO: usedKeys -> associted?
-*/
+ */
 import Contacts
 import SwiftUI
 import CoreData
 
 extension AddressRecord {
+    /// Enum defining which key to to sort contacts by (name, recency).
     enum SortBy: String {
         case name = "displayname"
         case recency = "last" // still unavailable
@@ -22,6 +23,13 @@ extension AddressRecord {
         return [NSSortDescriptor(key: "email", ascending: true)]
     }
     
+    var mcoAddress: MCOAddress {
+        get {
+            let name = displayname ?? email
+            return MCOAddress.init(displayName: name, mailbox: email)
+        }
+    }
+    
     static func lookForPrefix(prefix: String) -> NSFetchRequest<AddressRecord> {
         let freq = NSFetchRequest<AddressRecord>(entityName: AddressRecord.entityName)
         freq.sortDescriptors = sorting
@@ -76,7 +84,6 @@ extension AddressRecord {
         get {
             if let contact = self.phoneBookID {
                 // TODO Look up cn contact name!
-                
             }
             if let displayname = self.displayname {
                 return displayname
@@ -113,59 +120,11 @@ extension AddressRecord {
     }
 }
 
-extension AddressRecord: MailAddress {
-    public var mailAddress: String {
-        get {
-            return email
-        }
-    }
-    
-    public var label: CNLabeledValue<NSString> {
-        return CNLabeledValue.init(label: CNLabelWork, value: (email) as NSString) // TODO
-    }
-    
-    public var isUser: Bool {
-        if let user = UserManager.loadUserValue(.userAddr) as? String {
-            return user == email
-        }
-        return false
-    }
-    
-    public var publicKeys: Set<PublicKeyRecord> {
-        if let set = usedPublicKeys, let keys = set as? Set<PublicKeyRecord> {
-            return keys
-        }
-        return Set<PublicKeyRecord> ()
-    }
-    
-    public var contact: Contact? {
-        return nil // TODO
-    }
-}
-
-extension AddressRecord: Contact {
-    public var cnContact: CNContact? {
-        // TODO FIX!
-        return nil
-    }
-    
-    public func getMailAddresses() -> [MailAddress] {
-        var addresses = [AddressRecord] ()
-        addresses.append(self)
-        for key in self.publicKeys {
-            if let set = key.usedAddress as? Set<AddressRecord> {
-                addresses.append(contentsOf: set)
-            }
-        }
-        return addresses
-    }
-}
-
 extension AddressRecord: DisplayContact {
     typealias C = AddressRecord
     
     var avatar: Image {
-        return Image(uiImage: getImageOrDefault())
+        return ContactHandler.getImageOrDefault(addr: self)
     }
     
     var isInContactBook: Bool {
@@ -173,7 +132,18 @@ extension AddressRecord: DisplayContact {
     }
     
     var otherAddresses: [C] {
-        return getMailAddresses() as! [AddressRecord]
+        get{
+            var addresses = [AddressRecord] ()
+            addresses.append(self)
+            if let keys = self.usedPublicKeys as? Set<PublicKeyRecord>  {
+                for key in keys {
+                    if let set = key.usedAddress as? Set<AddressRecord> {
+                        addresses.append(contentsOf: set)
+                    }
+                }
+            }
+            return addresses
+        }
     }
     
     var keyIDs: [String] {