     }
     
     func save(token password: String) throws {
-        let encodedPassword = password.data(using: String.Encoding.utf8)!
+        let encodedPassword = password.data(using: .utf8)!
         
         do {
-            try _ = readToken()
-            
-            var attributesToUpdate = [String : AnyObject]()
-            attributesToUpdate[kSecValueData as String] = encodedPassword as AnyObject?
+            try readToken()
+            
+            var attributesToUpdate = QueryDictionary()
+            attributesToUpdate[kSecValueData] = encodedPassword as AnyObject
             
             let query = KeychainConfiguration.query()
             let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)

        }
    }
    
    func readGitHubClientSecret() throws -> String {
        var query = KeychainConfiguration.GitHub.Gist.Account.clientSecret.query()
        
        query[kSecMatchLimit as String] = kSecMatchLimitOne
        query[kSecReturnAttributes as String] = kCFBooleanTrue
        query[kSecReturnData as String] = kCFBooleanTrue
        
        var queryResult: AnyObject?
        let status = withUnsafeMutablePointer(to: &queryResult) {

                case clientId
                case clientSecret
                
                func query() -> QueryDictionary {
                    let query = KeychainConfiguration.keychainQuery(withService: KeychainConfiguration.GitHub.serviceName,
                                                                    account: self.rawValue,
                                                                    accessGroup: KeychainConfiguration.accessGroup)
                    return query
                }
            }
        }
        
        static func query() -> QueryDictionary {
            let query = KeychainConfiguration.keychainQuery(withService: KeychainConfiguration.GitHub.serviceName,
                                                            account: KeychainConfiguration.GitHub.account,
                                                            accessGroup: KeychainConfiguration.accessGroup)
            return query
        }
    }
    
    static func query() -> QueryDictionary {
        let query = KeychainConfiguration.keychainQuery(withService: KeychainConfiguration.serviceName,
                                                        account: KeychainConfiguration.account,
                                                        accessGroup: KeychainConfiguration.accessGroup)
        return query
    }
    
    private static func keychainQuery(withService service: String, account: String? = nil, accessGroup: String? = nil) -> QueryDictionary {
        var query = QueryDictionary()
        query[kSecClass] = kSecClassGenericPassword
        query[kSecAttrService] = service as AnyObject
        
        if let account = account {
            query[kSecAttrAccount] = account as AnyObject
        }
        
        if let accessGroup = accessGroup {
            query[kSecAttrAccessGroup] = accessGroup as AnyObject
        }
        
        return query
