diff --git a/enzevalos_iphone/Cryptography.swift b/enzevalos_iphone/Cryptography.swift
index 248d2aaedd234cd8faf794f7b14e91a6d4808da5..ee9153c65d75c1e62e6e98197a1f9459accceb54 100644
--- a/enzevalos_iphone/Cryptography.swift
+++ b/enzevalos_iphone/Cryptography.swift
@@ -11,7 +11,7 @@ import Foundation
 public protocol Encryption{
     
     // Key handling
-    func generateKey(adr: String) -> String
+    func generateKey(adr: String, new: Bool) -> String
     func importKeys(key: String, pw: String?, isSecretKey: Bool, autocrypt: Bool) throws -> [String]
     func importKeys(data: Data,  pw: String?, secret: Bool) throws-> [String]
     func importKeysFromFile(file: String,  pw: String?) throws -> [String]
diff --git a/enzevalos_iphone/DataHandler.swift b/enzevalos_iphone/DataHandler.swift
index 1d8a01f2c6f0e596da8bc63b76e8a92c0c7d50be..82be1c3e91584434c74570207d9eabac8d138ecf 100644
--- a/enzevalos_iphone/DataHandler.swift
+++ b/enzevalos_iphone/DataHandler.swift
@@ -218,7 +218,7 @@ class DataHandler {
 
     // Save, load, search
 
-    func newSecretKey(keyID: String) -> SecretKey {
+    func newSecretKey(keyID: String, addPk: Bool) -> SecretKey {
         let sk: SecretKey
         if let key = findSecretKey(keyID: keyID) {
             sk = key
@@ -226,20 +226,23 @@ class DataHandler {
             sk = NSEntityDescription.insertNewObject(forEntityName: "SecretKey", into: managedObjectContext) as! SecretKey
             sk.keyID = keyID
             sk.obsolete = false
-            sk.importedDate = Date() //as NSDate
+            sk.importedDate = Date()
             UserManager.storeUserValue(keyID as AnyObject, attribute: Attribute.prefSecretKeyID)
             let adr = UserManager.loadUserValue(Attribute.userAddr) as! String
             let name = UserManager.loadUserValue(Attribute.accountname) as? String ?? adr
             _ = getContact(name: name, address: adr, key: keyID, prefer_enc: true)
+            if addPk {
+                newPublicKey(keyID: keyID, cryptoType: CryptoScheme.PGP, adr: adr, autocrypt: false)
+            }
         }
         save(during: "new sk")
         return sk
     }
     
-    func newSecretKeys(keyIds:[String])-> [SecretKey]{
+    func newSecretKeys(keyIds:[String], addPKs: Bool)-> [SecretKey]{
         var sks = [SecretKey]()
         for id in keyIds{
-            sks.append(newSecretKey(keyID: id))
+            sks.append(newSecretKey(keyID: id, addPk: addPKs))
         }
         return sks
     }
@@ -251,7 +254,7 @@ class DataHandler {
         }
         let pgp = SwiftPGP()
         let key = pgp.generateKey(adr: adr)
-        let sk = DataHandler.handler.newSecretKey(keyID: key)
+        let sk = DataHandler.handler.newSecretKey(keyID: key, addPk: false)
         let pk = DataHandler.handler.newPublicKey(keyID: key, cryptoType: CryptoScheme.PGP, adr: adr, autocrypt: false, newGenerated: true)
         pk.sentOwnPublicKey = true
         return sk
@@ -715,7 +718,13 @@ class DataHandler {
                     mail.unableToDecrypt = true
                     mail.isEncrypted = true
                     mail.trouble = false
-                case EncryptionState.ValidEncryptedWithOldKey, EncryptionState.ValidedEncryptedWithCurrentKey:
+                case EncryptionState.ValidEncryptedWithOldKey:
+                    mail.isEncrypted = true
+                    mail.trouble = false
+                    mail.unableToDecrypt = false
+                    mail.decryptedBody = body
+                    mail.decryptedWithOldPrivateKey = true
+                case EncryptionState.ValidedEncryptedWithCurrentKey:
                     mail.isEncrypted = true
                     mail.trouble = false
                     mail.unableToDecrypt = false
diff --git a/enzevalos_iphone/DebugSettings.swift b/enzevalos_iphone/DebugSettings.swift
index 81bfe68d18345d2d7dacd6eb77c2a2934cdd5fbd..10cdfc65d2c2bb4c43014cf56b44e9088eab3995 100644
--- a/enzevalos_iphone/DebugSettings.swift
+++ b/enzevalos_iphone/DebugSettings.swift
@@ -101,7 +101,7 @@ func importSecretKey(file: String, type: String){
     if let path = Bundle.main.path(forResource: file, ofType: type){
         let ids = try! pgp.importKeysFromFile(file: path, pw: nil)
         for id in ids{
-            _ = datahandler.newSecretKey(keyID: id)
+            _ = datahandler.newSecretKey(keyID: id, addPk: true)
         }
     }
 }
diff --git a/enzevalos_iphone/PersistentMail +CoreDataProperties.swift b/enzevalos_iphone/PersistentMail +CoreDataProperties.swift
index 48336cc5db7b087696ecf6c091933bb4b3531e7b..4636ab69d4e577c95223f408025e0cb6dcfcbc1e 100644
--- a/enzevalos_iphone/PersistentMail +CoreDataProperties.swift	
+++ b/enzevalos_iphone/PersistentMail +CoreDataProperties.swift	
@@ -190,7 +190,7 @@ extension PersistentMail {
         if let sk = secretKey{
             let pgp = SwiftPGP()
             let keyIDs = try pgp.importKeys(key: sk, pw: pw, isSecretKey: true, autocrypt: false)
-            let sks = DataHandler.handler.newSecretKeys(keyIds: keyIDs)
+            let sks = DataHandler.handler.newSecretKeys(keyIds: keyIDs, addPKs: true)
             return sks.count > 0
         }
         return false
diff --git a/enzevalos_iphone/SwiftPGP.swift b/enzevalos_iphone/SwiftPGP.swift
index aa4e160161687ac0d38073993ae0c7ce5771273a..2e98e1d1f48cb86b570520ba2286622232d0d74c 100644
--- a/enzevalos_iphone/SwiftPGP.swift
+++ b/enzevalos_iphone/SwiftPGP.swift
@@ -186,8 +186,8 @@ class SwiftPGP: Encryption{
         return nil
     }
     
-    func generateKey(adr: String) -> String{
-        if oldSecretKeys.count > 0{
+    func generateKey(adr: String, new: Bool = false) -> String{
+        if oldSecretKeys.count > 0 && !new{
             var primkey: Key?
             for key in oldSecretKeys{
                 if vaildAddress(key: key).contains(adr){
diff --git a/enzevalos_iphoneTests/CoreDataTests.swift b/enzevalos_iphoneTests/CoreDataTests.swift
index d16695a32bbaf37b507968771cf95fe7338bd6ca..b69e4038e5c6f7b944f6658be34fd838a89facc7 100644
--- a/enzevalos_iphoneTests/CoreDataTests.swift
+++ b/enzevalos_iphoneTests/CoreDataTests.swift
@@ -74,15 +74,21 @@ class CoraDataTests: XCTestCase {
     func testArrivingMail(){
         let sender = createUser()
         let folder = "INBOX"
-        XCTAssertNil(datahandler.findMailAddress(adr: sender.mailbox))
+        XCTAssertNil( datahandler.findMailAddress(adr: sender.mailbox))
         
-        if let mail = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folder){
+        if let mail = testMail(from: sender, to: [user], cc: [user], bcc: [], folder: folder){
             XCTAssertFalse(mail.isSecure)
             XCTAssertFalse(mail.isEncrypted)
             XCTAssertFalse(mail.isSigned)
             XCTAssertFalse(mail.trouble)
             XCTAssertFalse(mail.isCorrectlySigned)
             
+            XCTAssert(mail.getCCs().count == 1)
+            XCTAssert(mail.getCCs()[0].mailAddress == user.mailbox)
+            XCTAssert(mail.getReceivers().count == 1)
+            XCTAssert(mail.getReceivers()[0].mailAddress == user.mailbox)
+            
+
             XCTAssertNotNil(datahandler.findMailAddress(adr: sender.mailbox))
             let f = datahandler.findFolder(with: folder)
             XCTAssertEqual(f.mailsOfFolder.count, 1)
@@ -107,7 +113,6 @@ class CoraDataTests: XCTestCase {
         else {
             XCTFail("No mail")
         }
-        //TODO: May test cc, bbcc fields
     }
     
     func testMultiplePlainMailsFromOne() {
@@ -193,11 +198,12 @@ class CoraDataTests: XCTestCase {
         let cryptoObject1 = senderPGP.encrypt(plaintext: body , ids: [userKeyID], myId: keyID1)
         _ = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folderName, cryptoObject: cryptoObject1)
         
-        let keyID2 = pgp.generateKey(adr: sender.mailbox)
+        let keyID2 = pgp.generateKey(adr: sender.mailbox, new: true)
         let cryptoObject2 = senderPGP.encrypt(plaintext: body , ids: [userKeyID], myId: keyID2)
         _ = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folderName, cryptoObject: cryptoObject2)
 
         let folder = datahandler.findFolder(with: folderName)
+
         XCTAssertEqual(folder.records.count, 2)
         for record in folder.records {
             XCTAssertTrue(record.isSecure)
@@ -214,22 +220,24 @@ class CoraDataTests: XCTestCase {
         let (sender, keyID) = createPGPUser()
         let body = "enc with old key"
         let folderName = "INBOX"
+        let oldID = userKeyID
        
         var myrecord = datahandler.getKeyRecord(addr: userAdr, keyID: datahandler.prefSecretKey().keyID)
         XCTAssertEqual(myrecord.keyID, userKeyID)
         XCTAssertEqual(myrecord.ezContact.records.count, 1)
 
         
-        let cryptoObject1 = pgp.encrypt(plaintext: body , ids: [userKeyID], myId: keyID)
+        let cryptoObject1 = pgp.encrypt(plaintext: body , ids: [oldID], myId: keyID)
         _ = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folderName, cryptoObject: cryptoObject1)
         let myContact = datahandler.getContactByAddress(userAdr)
         
         if let newKeyIDs = try? pgp.importKeys(key: CryptoTests.importKey, pw: CryptoTests.importPW, isSecretKey: true, autocrypt: false), let newKeyId = newKeyIDs.first {
-            _ = datahandler.newSecretKey(keyID: newKeyId)
+            _ = datahandler.newSecretKey(keyID: newKeyId, addPk: true)
             XCTAssertTrue(newKeyId == datahandler.prefSecretKey().keyID)
             XCTAssertTrue(userKeyID != newKeyId)
             
-            let key = datahandler.findKey(keyID: datahandler.prefSecretKey().keyID!)
+            let key = datahandler.findSecretKey(keyID: datahandler.prefSecretKey().keyID!)
+            XCTAssertNotNil(key)
             XCTAssertTrue(key?.keyID == newKeyId)
             
             myrecord = datahandler.getKeyRecord(addr: userAdr, keyID: datahandler.prefSecretKey().keyID)
@@ -240,10 +248,13 @@ class CoraDataTests: XCTestCase {
             XCTAssertTrue(myrecord.isSecure)
             XCTAssertEqual(myContact.publicKeys.count, 2)
             let cryptoObject2 = pgp.encrypt(plaintext: body , ids: [newKeyId], myId: keyID )
-            _ = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folderName, cryptoObject: cryptoObject2)
+            let decryptObject2 = pgp.decrypt(data: cryptoObject2.chiphertext!, decryptionIDs: [newKeyId], verifyIds: [keyID], fromAdr: sender.mailbox)
+
+            _ = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folderName, cryptoObject: decryptObject2)
             
-            let cryptoObject3 = pgp.encrypt(plaintext: body , ids: [userKeyID], myId: keyID)
-            let oldMail = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folderName, cryptoObject: cryptoObject3)
+            let cryptoObject3 = pgp.encrypt(plaintext: body , ids: [oldID], myId: keyID)
+            let decryptObject3 = pgp.decrypt(data: cryptoObject3.chiphertext!, decryptionIDs: [oldID], verifyIds: [keyID], fromAdr: sender.mailbox)
+            let oldMail = testMail(from: sender, to: [user], cc: [], bcc: [], folder: folderName, cryptoObject: decryptObject3)
             
             XCTAssertTrue((oldMail?.decryptedWithOldPrivateKey)!)
             
@@ -252,14 +263,8 @@ class CoraDataTests: XCTestCase {
             XCTFail("No new key")
             return
         }
-        // teste, ob alle eigenen Keys da sind
-        
-        // teste, ob das hin und herspringen klappt.
     }
     
-    func testInbox() {
-        // Test notificationcenter!
-    }
     
     func checkOrderingOfRecord(record: KeyRecord) -> Bool{
         var prev: PersistentMail?
diff --git a/enzevalos_iphoneTests/CryptoTests.swift b/enzevalos_iphoneTests/CryptoTests.swift
index ab0eb18597791ea5d7da9d6ceb70c270b72167b3..c5cb6fad349b8f03d9022a77becbf0c965c52e7e 100644
--- a/enzevalos_iphoneTests/CryptoTests.swift
+++ b/enzevalos_iphoneTests/CryptoTests.swift
@@ -461,7 +461,7 @@ class CryptoTests: XCTestCase {
         XCTAssert(key == "008933003B986364")
         
         // Test storing a key
-        _ = datahandler.newSecretKey(keyID: key)
+        _ = datahandler.newSecretKey(keyID: key, addPk: true)
         XCTAssert(datahandler.prefSecretKey().keyID == key)
         XCTAssertNotNil(datahandler.findSecretKey(keyID: key))
         XCTAssertEqual(datahandler.findSecretKeys().count, 2)
@@ -559,7 +559,7 @@ class CryptoTests: XCTestCase {
             return 
         }
         XCTAssertEqual(keys.count, 1)
-        _ = datahandler.newSecretKeys(keyIds: keys)
+        _ = datahandler.newSecretKeys(keyIds: keys, addPKs: true)
         XCTAssertEqual(keys.first, datahandler.prefSecretKey().keyID)
         cryptoObject = pgp.decrypt(data: data, decryptionId: userKeyID, verifyIds: [senderID], fromAdr: nil)
         XCTAssertEqual(keys.first, datahandler.prefSecretKey().keyID)
diff --git a/enzevalos_iphoneTests/InvitationTests.swift b/enzevalos_iphoneTests/InvitationTests.swift
index 5caaba2f95af43271ca2311e102a16b32a21c086..abbf3e3bc351b2cd693e7be49998a19ac2716501 100644
--- a/enzevalos_iphoneTests/InvitationTests.swift
+++ b/enzevalos_iphoneTests/InvitationTests.swift
@@ -21,11 +21,9 @@ class InvitationTests: XCTestCase {
 		let firstResult = string.words(inRange: firstStringRange)
 		let secondResult = string.words(inRange: secondStringRange)
 
-		print(firstResult)
 		XCTAssertEqual(firstResult?.words, "Diese")
 		XCTAssertEqual(firstResult?.extendedRange, firstStringRange)
 
-		print(secondResult)
 		XCTAssertEqual(secondResult?.words, "App hat viele")
 		XCTAssertEqual(secondResult?.extendedRange, NSRange(location: 6, length: 13))
 	}