diff --git a/enzevalos_iphone.xcodeproj/project.pbxproj b/enzevalos_iphone.xcodeproj/project.pbxproj
index 7e9f5b164e08a8ce8f76a27f9d4db09cca0d5076..87fd74571f2dd08f3447b087d0d7d46389a59cdc 100644
--- a/enzevalos_iphone.xcodeproj/project.pbxproj
+++ b/enzevalos_iphone.xcodeproj/project.pbxproj
@@ -330,6 +330,7 @@
 		A1C09FC61DF04D650006B783 /* alice2005-private.gpg in Resources */ = {isa = PBXBuildFile; fileRef = A1C09FC51DF04D650006B783 /* alice2005-private.gpg */; };
 		A1C3270E1DB907D900CE2ED5 /* TextFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1C3270D1DB907D900CE2ED5 /* TextFormatter.swift */; };
 		A1C3DEEC1E0AB15300EB7D02 /* InitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A11E733B1E019AE3006574DD /* InitViewController.swift */; };
+		A1C62E9A2018F716000E5273 /* OnboardingValueState.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1C62E992018F716000E5273 /* OnboardingValueState.swift */; };
 		A1D5076F1E80257A00B68B38 /* KeyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1D5076E1E80257A00B68B38 /* KeyViewController.swift */; };
 		A1E2324C1F0FA13F00DC9D40 /* FolderListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1E2324B1F0FA13F00DC9D40 /* FolderListViewController.swift */; };
 		A1E2324E1F0FA41A00DC9D40 /* FolderListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1E2324D1F0FA41A00DC9D40 /* FolderListCell.swift */; };
@@ -637,6 +638,7 @@
 		A1BE3FF91E96646A0040114B /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		A1C09FC51DF04D650006B783 /* alice2005-private.gpg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "alice2005-private.gpg"; path = "keys/alice2005-private.gpg"; sourceTree = "<group>"; };
 		A1C3270D1DB907D900CE2ED5 /* TextFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFormatter.swift; sourceTree = "<group>"; };
+		A1C62E992018F716000E5273 /* OnboardingValueState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingValueState.swift; sourceTree = "<group>"; };
 		A1D5076E1E80257A00B68B38 /* KeyViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyViewController.swift; sourceTree = "<group>"; };
 		A1E2324B1F0FA13F00DC9D40 /* FolderListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolderListViewController.swift; sourceTree = "<group>"; };
 		A1E2324D1F0FA41A00DC9D40 /* FolderListCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FolderListCell.swift; sourceTree = "<group>"; };
@@ -1199,6 +1201,7 @@
 				A1F2A5681E85586300320275 /* Providers.swift */,
 				A1083A531E8BFEA6003666B7 /* Onboarding.swift */,
 				A102AA891EDDB4E80024B457 /* videoOnboarding2.m4v */,
+				A1C62E992018F716000E5273 /* OnboardingValueState.swift */,
 			);
 			name = onboarding;
 			sourceTree = "<group>";
@@ -2102,6 +2105,7 @@
 				A1EB05881D956879008659C1 /* AddressHandler.swift in Sources */,
 				472F39701E14F75C009260FB /* DataHandler.swift in Sources */,
 				471BC9191F960B7C00D64416 /* PGPSignatureSubpacketHeader.m in Sources */,
+				A1C62E9A2018F716000E5273 /* OnboardingValueState.swift in Sources */,
 				471BC9321F960B7C00D64416 /* NSData+PGPUtils.m in Sources */,
 				A1EB05901D956923008659C1 /* ReadViewController.swift in Sources */,
 				471BC9171F960B7C00D64416 /* PGPSignatureSubpacket.m in Sources */,
diff --git a/enzevalos_iphone/AppDelegate.swift b/enzevalos_iphone/AppDelegate.swift
index 89684b46dc47f314d83efc58ff4787fab9059c40..2396e2cbf56281f9beb0b105dc99f2ce02990025 100644
--- a/enzevalos_iphone/AppDelegate.swift
+++ b/enzevalos_iphone/AppDelegate.swift
@@ -64,8 +64,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
     
     func credentialCheck() {
         self.window?.rootViewController = Onboarding.checkConfigView()
-        Onboarding.setValues()
-        if !Onboarding.checkConfig(self.credentialsFailed, work: self.credentialsWork) {
+        if Onboarding.setValues() != OnboardingValueState.fine {
+            credentialsFailed()
+            return
+        }
+        else if !Onboarding.checkConfig(self.credentialsFailed, work: self.credentialsWork) {
             self.window?.rootViewController = Onboarding.detailOnboarding(self.credentialCheck)
             return
         }
@@ -73,7 +76,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
 
     func credentialsFailed() {
         Onboarding.credentialFails += 1
-        if Onboarding.credentialFails >= 3 {
+        if Onboarding.credentialFails >= 2 {
             Onboarding.manualSet = true
             self.window?.rootViewController = Onboarding.detailOnboarding(self.credentialCheck)
         } else {
diff --git a/enzevalos_iphone/MailHandler.swift b/enzevalos_iphone/MailHandler.swift
index 6356a2183e2d10bfea247aa0274e0496b8bfc3f9..c7e513a347cbb93ca307e69a6231760edfc561b8 100644
--- a/enzevalos_iphone/MailHandler.swift
+++ b/enzevalos_iphone/MailHandler.swift
@@ -258,133 +258,134 @@ class MailHandler {
     //logMail should be false, if called from Logger, otherwise 
     func send(_ toEntrys: [String], ccEntrys: [String], bccEntrys: [String], subject: String, message: String, sendEncryptedIfPossible: Bool = true, callback: @escaping (Error?) -> Void, loggingMail: Bool = false) {
 
-        let useraddr = (UserManager.loadUserValue(Attribute.userAddr) as! String)
-        let session = createSMTPSession()
-        let builder = MCOMessageBuilder()
+        if let useraddr = (UserManager.loadUserValue(Attribute.userAddr) as? String) {
+            let session = createSMTPSession()
+            let builder = MCOMessageBuilder()
 
-        createHeader(builder, toEntrys: toEntrys, ccEntrys: ccEntrys, bccEntrys: bccEntrys, subject: subject)
+            createHeader(builder, toEntrys: toEntrys, ccEntrys: ccEntrys, bccEntrys: bccEntrys, subject: subject)
 
-        var allRec: [String] = []
-        allRec.append(contentsOf: toEntrys)
-        allRec.append(contentsOf: ccEntrys)
-        allRec.append(contentsOf: bccEntrys)
+            var allRec: [String] = []
+            allRec.append(contentsOf: toEntrys)
+            allRec.append(contentsOf: ccEntrys)
+            allRec.append(contentsOf: bccEntrys)
         
-        let fromLogging: Mail_Address = DataHandler.handler.getMailAddress(useraddr, temporary: false) as! Mail_Address
-        var toLogging: [Mail_Address] = []
-        var ccLogging: [Mail_Address] = []
-        var bccLogging: [Mail_Address] = []
+            let fromLogging: Mail_Address = DataHandler.handler.getMailAddress(useraddr, temporary: false) as! Mail_Address
+            var toLogging: [Mail_Address] = []
+            var ccLogging: [Mail_Address] = []
+            var bccLogging: [Mail_Address] = []
         
-        for entry in toEntrys {
-            toLogging.append(DataHandler.handler.getMailAddress(entry, temporary: false) as! Mail_Address)
-        }
-        for entry in ccEntrys {
-            ccLogging.append(DataHandler.handler.getMailAddress(entry, temporary: false) as! Mail_Address)
-        }
-        for entry in bccEntrys {
-            bccLogging.append(DataHandler.handler.getMailAddress(entry, temporary: false) as! Mail_Address)
-        }
+            for entry in toEntrys {
+                toLogging.append(DataHandler.handler.getMailAddress(entry, temporary: false) as! Mail_Address)
+            }
+            for entry in ccEntrys {
+                ccLogging.append(DataHandler.handler.getMailAddress(entry, temporary: false) as! Mail_Address)
+            }
+            for entry in bccEntrys {
+                bccLogging.append(DataHandler.handler.getMailAddress(entry, temporary: false) as! Mail_Address)
+            }
         
-        let ordered = orderReceiver(receiver: allRec, sendEncryptedIfPossible: sendEncryptedIfPossible)
+            let ordered = orderReceiver(receiver: allRec, sendEncryptedIfPossible: sendEncryptedIfPossible)
 
-        let userID = MCOAddress(displayName: useraddr, mailbox: useraddr)
-        let sk = DataHandler.handler.prefSecretKey()
+            let userID = MCOAddress(displayName: useraddr, mailbox: useraddr)
+            let sk = DataHandler.handler.prefSecretKey()
 
-        var sendData: Data
-        var sendOperation: MCOSMTPSendOperation
-        let pgp = SwiftPGP()
+            var sendData: Data
+            var sendOperation: MCOSMTPSendOperation
+            let pgp = SwiftPGP()
 
-        if let encPGP = ordered[CryptoScheme.PGP], ordered[CryptoScheme.PGP]?.count > 0 {
-            var keyIDs = addKeys(adrs: encPGP)
-            //added own public key here, so we can decrypt our own message to read it in sent-folder
-            keyIDs.append(sk.keyID!)
+            if let encPGP = ordered[CryptoScheme.PGP], ordered[CryptoScheme.PGP]?.count > 0 {
+                var keyIDs = addKeys(adrs: encPGP)
+                //added own public key here, so we can decrypt our own message to read it in sent-folder
+                keyIDs.append(sk.keyID!)
             
-            /*
-             Attach own public key
-             */
-            var missingOwnPublic = false
-            for id in keyIDs{
-                if let key = DataHandler.handler.findKey(keyID: id){
-                    if !key.sentOwnPublicKey{
-                        missingOwnPublic = true
-                        key.sentOwnPublicKey = true
+                /*
+                Attach own public key
+                */
+                var missingOwnPublic = false
+                for id in keyIDs{
+                    if let key = DataHandler.handler.findKey(keyID: id){
+                        if !key.sentOwnPublicKey{
+                            missingOwnPublic = true
+                            key.sentOwnPublicKey = true
+                        }
                     }
                 }
-            }
             
-            var msg = message
-            if missingOwnPublic{
-                if let myPK = pgp.exportKey(id: sk.keyID!, isSecretkey: false, autocrypt: false){
-                    msg = msg + "\n" + myPK
+                var msg = message
+                if missingOwnPublic{
+                    if let myPK = pgp.exportKey(id: sk.keyID!, isSecretkey: false, autocrypt: false){
+                        msg = msg + "\n" + myPK
+                    }
                 }
-            }
-            /* ######## */
+                /* ######## */
             
             
-            let cryptoObject = pgp.encrypt(plaintext: "\n" + msg, ids: keyIDs, myId:sk.keyID!)
-            if let encData = cryptoObject.chiphertext{
-                sendData = encData
-                Logger.queue.async(flags: .barrier) {
-                    if Logger.logging && !loggingMail {
-                        let secureAddrsInString = encPGP.map{$0.mailbox}
-                        var secureAddresses: [Mail_Address] = []
-                        for addr in toLogging {
-                            for sec in secureAddrsInString {
-                                if addr.address == sec {
-                                    secureAddresses.append(addr)
+                let cryptoObject = pgp.encrypt(plaintext: "\n" + msg, ids: keyIDs, myId:sk.keyID!)
+                if let encData = cryptoObject.chiphertext{
+                    sendData = encData
+                    Logger.queue.async(flags: .barrier) {
+                        if Logger.logging && !loggingMail {
+                            let secureAddrsInString = encPGP.map{$0.mailbox}
+                            var secureAddresses: [Mail_Address] = []
+                            for addr in toLogging {
+                                for sec in secureAddrsInString {
+                                    if addr.address == sec {
+                                        secureAddresses.append(addr)
+                                    }
                                 }
                             }
-                        }
-                        for addr in ccLogging {
-                            for sec in secureAddrsInString {
-                                if addr.address == sec {
-                                    secureAddresses.append(addr)
+                            for addr in ccLogging {
+                                for sec in secureAddrsInString {
+                                    if addr.address == sec {
+                                        secureAddresses.append(addr)
+                                    }
                                 }
                             }
-                        }
-                        for addr in bccLogging {
-                            for sec in secureAddrsInString {
-                                if addr.address == sec {
-                                    secureAddresses.append(addr)
+                            for addr in bccLogging {
+                                for sec in secureAddrsInString {
+                                    if addr.address == sec {
+                                        secureAddresses.append(addr)
+                                    }
                                 }
                             }
+                            Logger.log(sent: fromLogging, to: toLogging, cc: ccLogging, bcc: bccLogging, subject: subject,  bodyLength: (String(data: cryptoObject.chiphertext!, encoding: String.Encoding.utf8) ?? "").count, isEncrypted: true, decryptedBodyLength: ("\n"+message).count, decryptedWithOldPrivateKey: false, isSigned: true, isCorrectlySigned: true, signingKeyID: sk.keyID!, myKeyID: sk.keyID!, secureAddresses: secureAddresses, encryptedForKeyIDs: keyIDs)
                         }
-                        Logger.log(sent: fromLogging, to: toLogging, cc: ccLogging, bcc: bccLogging, subject: subject,  bodyLength: (String(data: cryptoObject.chiphertext!, encoding: String.Encoding.utf8) ?? "").count, isEncrypted: true, decryptedBodyLength: ("\n"+message).count, decryptedWithOldPrivateKey: false, isSigned: true, isCorrectlySigned: true, signingKeyID: sk.keyID!, myKeyID: sk.keyID!, secureAddresses: secureAddresses, encryptedForKeyIDs: keyIDs)
                     }
-                }
-                builder.textBody = "Dies ist verschlüsselt!"
-                sendOperation = session.sendOperation(with: builder.openPGPEncryptedMessageData(withEncryptedData: sendData), from: userID, recipients: encPGP)
-                //TODO handle different callbacks
+                    builder.textBody = "Dies ist verschlüsselt!"
+                    sendOperation = session.sendOperation(with: builder.openPGPEncryptedMessageData(withEncryptedData: sendData), from: userID, recipients: encPGP)
+                    //TODO handle different callbacks
 
-                sendOperation.start(callback)
-                if (ordered[CryptoScheme.UNKNOWN] == nil || ordered[CryptoScheme.UNKNOWN]!.count == 0) && !loggingMail {
-                    createSendCopy(sendData: builder.openPGPEncryptedMessageData(withEncryptedData: sendData))
-                }
-                if Logger.logging && loggingMail {
-                    createLoggingSendCopy(sendData: builder.openPGPEncryptedMessageData(withEncryptedData: sendData))
-                }
+                    sendOperation.start(callback)
+                    if (ordered[CryptoScheme.UNKNOWN] == nil || ordered[CryptoScheme.UNKNOWN]!.count == 0) && !loggingMail {
+                        createSendCopy(sendData: builder.openPGPEncryptedMessageData(withEncryptedData: sendData))
+                    }
+                    if Logger.logging && loggingMail {
+                        createLoggingSendCopy(sendData: builder.openPGPEncryptedMessageData(withEncryptedData: sendData))
+                    }
                 
-                builder.textBody = message
-            } else {
-                //TODO do it better
-                callback(NSError(domain: NSCocoaErrorDomain, code: NSPropertyListReadCorruptError, userInfo: nil))
+                    builder.textBody = message
+                } else {
+                    //TODO do it better
+                    callback(NSError(domain: NSCocoaErrorDomain, code: NSPropertyListReadCorruptError, userInfo: nil))
+                }
             }
-        }
 
-        if let unenc = ordered[CryptoScheme.UNKNOWN], !loggingMail {
-            if unenc.count > 0 {
-                builder.textBody = message
-                sendData = builder.data()
-                sendOperation = session.sendOperation(with: sendData, from: userID, recipients: unenc)
-                //TODO handle different callbacks
-                //TODO add logging call here for the case the full email is unencrypted
-                if unenc.count == allRec.count && !loggingMail {
-                    Logger.queue.async(flags: .barrier) {
-                        Logger.log(sent: fromLogging, to: toLogging, cc: ccLogging, bcc: bccLogging, subject: subject, bodyLength: ("\n"+message).count, isEncrypted: false, decryptedBodyLength: ("\n"+message).count, decryptedWithOldPrivateKey: false, isSigned: false, isCorrectlySigned: false, signingKeyID: "", myKeyID: "", secureAddresses: [], encryptedForKeyIDs: [])
+            if let unenc = ordered[CryptoScheme.UNKNOWN], !loggingMail {
+                if unenc.count > 0 {
+                    builder.textBody = message
+                    sendData = builder.data()
+                    sendOperation = session.sendOperation(with: sendData, from: userID, recipients: unenc)
+                    //TODO handle different callbacks
+                    //TODO add logging call here for the case the full email is unencrypted
+                    if unenc.count == allRec.count && !loggingMail {
+                        Logger.queue.async(flags: .barrier) {
+                            Logger.log(sent: fromLogging, to: toLogging, cc: ccLogging, bcc: bccLogging, subject: subject, bodyLength: ("\n"+message).count, isEncrypted: false, decryptedBodyLength: ("\n"+message).count,     decryptedWithOldPrivateKey: false, isSigned: false, isCorrectlySigned: false, signingKeyID: "", myKeyID: "", secureAddresses: [], encryptedForKeyIDs: [])
+                        }
+                    }
+                    sendOperation.start(callback)
+                    if !loggingMail {
+                        createSendCopy(sendData: sendData)
                     }
-                }
-                sendOperation.start(callback)
-                if !loggingMail {
-                    createSendCopy(sendData: sendData)
                 }
             }
         }
diff --git a/enzevalos_iphone/Onboarding.swift b/enzevalos_iphone/Onboarding.swift
index 8ebf72ed7892007c8a1c3bf07a463e5cb45480d7..ac096ba917ec8c5abd46f6dc76db3427852a4857 100644
--- a/enzevalos_iphone/Onboarding.swift
+++ b/enzevalos_iphone/Onboarding.swift
@@ -485,7 +485,7 @@ class Onboarding: NSObject {
         fail()
     }
 
-    static func setValues() {
+    static func setValues() -> OnboardingValueState {
 
         if let mailAddress = mailaddress.text?.lowercased().trimmingCharacters(in: .whitespacesAndNewlines), !manualSet && mailAddress != "" {
             let guessedUserName = mailAddress.components(separatedBy: "@")[0]
@@ -502,49 +502,18 @@ class Onboarding: NSObject {
                 else if mailAddress.contains("@aol.com") || mailAddress.contains("@games.com") || mailAddress.contains("@love.com") {
                     UserManager.storeUserValue(mailAddress as AnyObject?, attribute: Attribute.userName)
             }
-            setServerValues(mailaddress: mailAddress)
             UserManager.storeUserValue(mailAddress as AnyObject?, attribute: Attribute.userAddr)
-        }
-        else{ //TODO: REMOVE BEFORE STUDY
+            //TODO: REMOVE BEFORE STUDY
             loadTestAcc()
-            return
-        }
-        if let pw = password.text, pw != "" {
-            UserManager.storeUserValue(pw as AnyObject?, attribute: Attribute.userPW)
+            return setServerValues(mailaddress: mailAddress)
         }
-        if manualSet { // TODO: @Jakob was ist manualSet und kann das weg?
-            if let mailAddress = mailaddress.text?.lowercased().trimmingCharacters(in: .whitespacesAndNewlines) {
-                switch mailAddress {
-                case "ullimuelle@web.de":
-                    UserManager.storeUserValue("Ulli Müller" as AnyObject, attribute: Attribute.accountname)
-                case "bob2005@web.de":
-                    UserManager.storeUserValue("Bob" as AnyObject, attribute: Attribute.accountname)
-                case "nchr@enzevalos.de":
-                    UserManager.storeUserValue("NC Human Resources" as AnyObject, attribute: Attribute.accountname)
-                case "ncpayroll@enzevalos.de":
-                    UserManager.storeUserValue("NC Payroll" as AnyObject, attribute: Attribute.accountname)
-                case "idsolutions@enzevalos.de":
-                    UserManager.storeUserValue("Identity Solutions" as AnyObject, attribute: Attribute.accountname)
-                default: break
-                }
-            }
-            UserManager.storeUserValue(imapServer.text as AnyObject?, attribute: Attribute.imapHostname)
-            UserManager.storeUserValue(Int(imapPort.text!) as AnyObject?, attribute: Attribute.imapPort)
-            UserManager.storeUserValue(smtpServer.text as AnyObject?, attribute: Attribute.smtpHostname)
-            UserManager.storeUserValue(Int(smtpPort.text!) as AnyObject?, attribute: Attribute.smtpPort)
-            UserManager.storeUserValue(mailaddress.text as AnyObject?, attribute: Attribute.userAddr)
-            UserManager.storeUserValue(password.text! as AnyObject?, attribute: Attribute.userPW)
-            UserManager.storeUserValue(username.text! as AnyObject?, attribute: Attribute.userName)
-            UserManager.storeUserValue(username.text! as AnyObject?, attribute: Attribute.accountname)
-            UserManager.storeUserValue(keyForValue(transportRows, value: imapTransDataDelegate.pickedValue)[0] as AnyObject?, attribute: Attribute.imapConnectionType)
-            UserManager.storeUserValue(keyForValue(authenticationRows, value: imapAuthDataDelegate.pickedValue)[0] as AnyObject?, attribute: Attribute.imapAuthType)
-            UserManager.storeUserValue(keyForValue(transportRows, value: smtpTransDataDelegate.pickedValue)[0] as AnyObject?, attribute: Attribute.smtpConnectionType)
-            UserManager.storeUserValue(keyForValue(authenticationRows, value: smtpAuthDataDelegate.pickedValue)[0] as AnyObject?, attribute: Attribute.smtpAuthType)
+        else{
+            setDefaultValues()
+            return OnboardingValueState.empty
         }
-
     }
 
-    static func setServerValues(mailaddress: String) {
+    static func setServerValues(mailaddress: String) -> OnboardingValueState {
         let manager = MCOMailProvidersManager.shared()!
         let path = Bundle.main.path(forResource: "providers", ofType: "json")
         manager.registerProviders(withFilename: path)
@@ -643,11 +612,25 @@ class Onboarding: NSObject {
             if let archive = provider.allMailFolderPath() {
                 UserManager.storeUserValue(archive as AnyObject?, attribute: Attribute.archiveFolderPath)
             }
-            
+            return OnboardingValueState.fine
+        }
+        else {
+            setDefaultValues()
+            return OnboardingValueState.noJson
         }
     }
 
-   
+    static func setDefaultValues() {
+        UserManager.storeUserValue("imap.example.de" as AnyObject?, attribute: Attribute.imapHostname)
+        UserManager.storeUserValue(MCOConnectionType.TLS.rawValue as AnyObject?, attribute: Attribute.imapConnectionType)
+        UserManager.storeUserValue(993 as AnyObject?, attribute: Attribute.imapPort)
+        UserManager.storeUserValue(MCOAuthType.saslPlain.rawValue as AnyObject?, attribute: Attribute.imapAuthType)
+        UserManager.storeUserValue("smtp.example.de" as AnyObject?, attribute: Attribute.smtpHostname)
+        UserManager.storeUserValue(MCOConnectionType.startTLS.rawValue as AnyObject?, attribute: Attribute.smtpConnectionType)
+        UserManager.storeUserValue(587 as AnyObject?, attribute: Attribute.smtpPort)
+        UserManager.storeUserValue(MCOAuthType.saslPlain.rawValue as AnyObject?, attribute: Attribute.smtpAuthType)
+    }
+    
     static func iterateEnum<T: Hashable>(_: T.Type) -> AnyIterator<T> {
         var i = 0
         return AnyIterator {
diff --git a/enzevalos_iphone/OnboardingValueState.swift b/enzevalos_iphone/OnboardingValueState.swift
new file mode 100644
index 0000000000000000000000000000000000000000..b54fcb11e2a4087301d49495c43558fc58d91996
--- /dev/null
+++ b/enzevalos_iphone/OnboardingValueState.swift
@@ -0,0 +1,13 @@
+//
+//  OnboardingValueState.swift
+//  enzevalos_iphone
+//
+//  Created by jakobsbode on 24.01.18.
+//  Copyright © 2018 fu-berlin. All rights reserved.
+//
+
+import Foundation
+
+enum OnboardingValueState {
+    case empty, noJson, fine
+}