                                                     UnsafePointer<UInt8>(theIV.bytes),
                                                     UnsafePointer<UInt8>(theCipherText.bytes),
                                                     size_t(theCipherText.length),
-                                                    UnsafeMutablePointer<Void>(theClearText!.mutableBytes),
-                                                    size_t(theClearText!.length),
+                                                    UnsafeMutablePointer<Void>(theClearText.mutableBytes),
+                                                    size_t(theClearText.length),
                                                     &outLength)
         if(theCCResult == 0){
-            theClearText?.length = outLength
-            return NSData(data: theClearText!)
+            theClearText.length = outLength
+            return NSData(data: theClearText)
         } else {
             return nil
         }

        var outLength : Int = 0
        let theIV = inData.subdataWithRange(NSMakeRange(inData.length-kCCBlockSizeAES128, kCCBlockSizeAES128))
        let theCipherText = inData.subdataWithRange(NSMakeRange(0, inData.length-kCCBlockSizeAES128))
        let theClearText = NSMutableData(length: inData.length + kCCBlockSizeAES128)
        let theOperation : CCOperation = UInt32(kCCDecrypt)
        let theAlgorithm :  CCAlgorithm = UInt32(kCCAlgorithmAES128)
        let theOptions :   CCOptions = UInt32(kCCOptionPKCS7Padding)

    }
    
    func randomDataWithLength(inLength : size_t) -> NSMutableData {
        guard let theData = NSMutableData(length: inLength) else { fatalError() }
        SecRandomCopyBytes(kSecRandomDefault, inLength, UnsafeMutablePointer<UInt8>(theData.mutableBytes))
        return theData
    }
    
    func keyFromPassword(inPassword : NSString, inSalt : NSData) -> NSData {
