     /// :returns: Heimdall instance ready for both public and private key operations
     ///
     public convenience init?(publicTag: String, privateTag: String, keySize: Int = 2048) {
-        self.init(scope: ScopeOptions.All, publicTag: publicTag, privateTag: privateTag, keySize: keySize)
-
-        if Heimdall.obtainKey(publicTag, keySize: keySize) == nil || Heimdall.obtainKey(privateTag, keySize: keySize) == nil {
+        self.init(scope: ScopeOptions.All, publicTag: publicTag, privateTag: privateTag)
+
+        if Heimdall.obtainKey(publicTag) == nil || Heimdall.obtainKey(privateTag) == nil {
             if Heimdall.generateKeyPair(publicTag, privateTag: privateTag, keySize: keySize) == nil {
                 return nil
             }
         }
     }
     
-    private init(scope: ScopeOptions, publicTag: String, privateTag: String?, keySize: Int) {
+    private init(scope: ScopeOptions, publicTag: String, privateTag: String?) {
         self.publicTag = publicTag
         self.privateTag = privateTag
-        self.keySize = keySize
         self.scope = scope
     }
     

    //
    private func obtainKey(key: KeyType) -> SecKeyRef? {
        if key == .Public && self.scope & ScopeOptions.PublicKey == ScopeOptions.PublicKey {
            return Heimdall.obtainKey(self.publicTag, keySize: self.keySize)
        } else if let tag = self.privateTag where key == .Private && self.scope & ScopeOptions.PrivateKey == ScopeOptions.PrivateKey {
            return Heimdall.obtainKey(tag, keySize: self.keySize)
        }
        
        return nil

    /// :returns: Heimdall instance that can handle both private and public key operations
    ///
    public convenience init?(tagPrefix: String, keySize: Int = 2048) {
        self.init(publicTag: tagPrefix, privateTag: tagPrefix + ".private")
    }
    
    ///
