         }
     }
     
-    func readToken() throws -> String  {
+    @discardableResult func readToken() throws -> String  {
         var query = KeychainConfiguration.query()
         
-        query[kSecMatchLimit as String] = kSecMatchLimitOne
-        query[kSecReturnAttributes as String] = kCFBooleanTrue
-        query[kSecReturnData as String] = kCFBooleanTrue
+        query[kSecMatchLimit] = kSecMatchLimitOne
+        query[kSecReturnAttributes] = kCFBooleanTrue
+        query[kSecReturnData] = kCFBooleanTrue
         
         var queryResult: AnyObject?
         let status = withUnsafeMutablePointer(to: &queryResult) {

        }
    }
    
    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) {

    }
    
    func save(gitHubClientId: String) throws {
        let encodedGitHubClientId = gitHubClientId.data(using: .utf8)!
        
        do {
            try readGitHubClientId()
            
            var attributesToUpdate = QueryDictionary()
            attributesToUpdate[kSecValueData] = encodedGitHubClientId as AnyObject
            
            let query = KeychainConfiguration.GitHub.Gist.Account.clientId.query()
            let status = SecItemUpdate(query as CFDictionary, attributesToUpdate as CFDictionary)
