     }
 
     // MARK: Private Methods
-    private class func updateData(value: NSData, forKey keyName: String, accessible: Accessible = .WhenUnlocked) -> Bool {
-        let keychainQueryDictionary: NSMutableDictionary = self.setupKeychainQueryDictionaryForKey(keyName)
-        var updateDictionary: NSMutableDictionary = [SecValueData:value]
-
-        // Protect the keychain entry as requested.
-        updateDictionary[SecAttrAccessible] = KeychainWrapper.accessible(accessible)
+
+    /// Update existing data associated with a specified key name. The existing data will be overwritten by the new data
+    private class func updateData(value: NSData, forKey keyName: String) -> Bool {
+        let keychainQueryDictionary: [String:AnyObject] = self.setupKeychainQueryDictionaryForKey(keyName)
+        let updateDictionary = [SecValueData:value]
 
         // Update
         let status: OSStatus = SecItemUpdate(keychainQueryDictionary, updateDictionary)

let SecAttrService: String! = kSecAttrService as String
let SecAttrGeneric: String! = kSecAttrGeneric as String
let SecAttrAccount: String! = kSecAttrAccount as String

public class KeychainWrapper {
   private struct internalVars {
        static var serviceName: String = ""
    }

    // MARK: Public Properties

    /*!
    @var serviceName
    @abstract Used for the kSecAttrService property to uniquely identify this keychain accessor.
    @discussion Service Name will default to the app's bundle identifier if it can
    */
    public class var serviceName: String {
        get {
            if internalVars.serviceName.isEmpty {

        return stringValue
    }


    /// Returns an object that conforms to NSCoding for a specified key.
    ///
    /// :param: keyName The key to lookup data for.
    /// :returns: The decoded object associated with the key if it exists. If no data exists, or the data found cannot be decoded, returns nil.
    public class func objectForKey(keyName: String) -> NSCoding? {
        let dataValue: NSData? = self.dataForKey(keyName)

        var objectValue: NSCoding?

        if let data = dataValue {
            objectValue = NSKeyedUnarchiver.unarchiveObjectWithData(data) as! NSCoding?
        }

        return objectValue;
    }


    /// Returns a NSData object for a specified key.
    ///
    /// :param: keyName The key to lookup data for.
    /// :returns: The NSData object associated with the key if it exists. If no data exists, returns nil.
    public class func dataForKey(keyName: String) -> NSData? {
        var keychainQueryDictionary = self.setupKeychainQueryDictionaryForKey(keyName)
        var result: AnyObject?

        // Limit search results to one
        keychainQueryDictionary[SecMatchLimit] = kSecMatchLimitOne
