         return .Default
     }
 
-    func parsePeriod(raw: String?) -> ParseResult<NSTimeInterval> {
-        if let string = raw {
-            if let int = string.toInt() {
-                return .Result(NSTimeInterval(int))
-            } else {
-                return .Error
-            }
-        }
-        return .Default // 30
-    }
-
-    func parseSecret(raw: String?) -> ParseResult<NSData> {
-        if let string = raw {
-            if let data = MF_Base32Codec.dataFromBase32String(string) {
-                return .Result(data)
-            } else {
-                return .Error
-            }
-        }
-        return .Default // externalSecret
-    }
-
-    func parseAlgorithm(raw: String?) -> ParseResult<Generator.Algorithm> {
-        if let string = raw {
-            if let algorithm = algorithmFromString(string) {
-                return .Result(algorithm)
-            } else {
-                return .Error
-            }
-        }
-        return .Default // Generator.Algorithm.SHA1
-    }
-
-    func parseDigits(raw: String?) -> ParseResult<Int> {
-        if let string = raw {
-            if let int = string.toInt() {
-                return .Result(int)
-            } else {
-                return .Error
-            }
-        }
-        return .Default // 6
+    func parsePeriod(string: String) -> NSTimeInterval? {
+        if let int = string.toInt() {
+            return NSTimeInterval(int)
+        }
+        return nil
+    }
+
+    func parseSecret(string: String) -> NSData? {
+        return MF_Base32Codec.dataFromBase32String(string)
+    }
+
+    func parseAlgorithm(string: String) -> Generator.Algorithm? {
+        return algorithmFromString(string)
+    }
+
+    func parseDigits(string: String) -> Int? {
+        return string.toInt()
     }
 
 

    }

    var digits: Int?
    switch parseDigits(_digitsString) {
    case .Default:
        digits = 6
    case .Result(let result):

    if let defaultSecret = externalSecret {
        secret = defaultSecret
    } else {
        switch parse(_secretString, parseSecret) {
        case .Default:
            return nil
        case .Result(let data):
