         }
     }
     
-    public init(attributes: Dictionary<String, Any>) {
-        accessibility   = .WhenUnlocked
-        //isInvisible     = kCFBooleanFalse
+    public override required init(attributes: Dictionary<String, Any>) {
+        super.init(attributes: attributes)
     }
 }
 
 /*
-struct Certificate: Key {
-}
-
-struct PrivateKey: Key {
-}
-
-struct Identity: Key {
-}
-*/+TODO: Implement these classes
+
+public class Certificate: Key, KeyProtocol {
+}
+
+public class PrivateKey: Key, KeyProtocol {
+}
+
+public class Identity: Key, KeyProtocol {
+}
+*/

        }
    }
    
    public init(attributes: Dictionary<String, Any>) {
        accessibility   = .WhenUnlocked
        isInvisible     = kCFBooleanFalse
    }
    
    /*
    kSecAttrAccessible
    kSecAttrAccessGroup
    kSecAttrCreationDate
    kSecAttrModificationDate
    kSecAttrDescription
    kSecAttrComment
    kSecAttrCreator
    kSecAttrType
    kSecAttrLabel
    kSecAttrIsInvisible
    kSecAttrIsNegative
    kSecAttrAccount
    kSecAttrService
    kSecAttrGeneric
    */
}


public struct InternetKey: Key {
    
    var accessibility: Accessibility {
        get {
            return self.accessibility
        }
        set(newValue) {
            self.accessibility = newValue
        }
    }
    

    private var _creator:           CFNumberRef!
    private var _type:              CFNumberRef!
    private var _label:             CFStringRef!
    private var _isNegative:        CFBooleanRef!
    private var _account:           CFStringRef!
    private var _service:           CFStringRef!
    private var _generic:           CFDataRef!
    
    var accessibility: CFStringRef {
        get {
            return _accessibility
        }
