 
     /**
     Convenient method to retrieve a Facebook oauth2 module.
-    
+
     :param: config a Facebook configuration object. See FacebookConfig.
-    
+
     :returns: a Facebook OAuth2 module.
     */
     public class func addFacebookAccount(config: FacebookConfig) -> FacebookOAuth2Module {
         return addAccount(config, moduleClass: FacebookOAuth2Module.self) as! FacebookOAuth2Module
     }
-    
+
     /**
     Convenient method to retrieve a Google oauth2 module ready to be used.
-    
+
     :param: config a google configuration object. See GoogleConfig.
-    
+
     :returns: a google OAuth2 module.
     */
     public class func addGoogleAccount(config: GoogleConfig) -> OAuth2Module {
         return addAccount(config, moduleClass: OAuth2Module.self)
     }
-    
+
     /**
     Convenient method to retrieve a Keycloak oauth2 module ready to be used.
-    
+
     :param: config a Keycloak configuration object. See KeycloakConfig.
-    
+
     :returns: a Keycloak OAuth2 module.
     */
     public class func addKeycloakAccount(config: KeycloakConfig) -> KeycloakOAuth2Module {

        }
        return Singleton.instance
    }
    
    /**
    Instantiate an OAuth2 Module using the configuration object passed in and adds it to the account manager. It uses the OAuth2Session account_id as the name that this module will be stored in.
    
    :param: config  the configuration object to use to setup an OAuth2 module.
    :param: moduleClass the type of the OAuth2 module to instantiate.
    
    :returns: the OAuth2 module
    */
    public class func addAccount(config: Config, moduleClass: OAuth2Module.Type) -> OAuth2Module {

        sharedInstance.modules[myModule.oauth2Session.accountId] = myModule
        return myModule
    }

    /**
    Removes an OAuth2 module

    :param: name  the name that the OAuth2 module was bound to.
    :param: config the configuration object to use to setup an OAuth2 module.
    :param: moduleClass the type of the OAuth2 module to instantiate.

    :returns: the OAuth2module or nil if not found
    */
    public class func removeAccount(name: String, config: Config, moduleClass: OAuth2Module.Type) -> OAuth2Module? {
        return sharedInstance.modules.removeValueForKey(name)
    }

    /**
    Retrieves an OAuth2 module by a name

    :param: name the name that the OAuth2 module was bound to.

    :returns: the OAuth2module or nil if not found.
    */
    public class func getAccountByName(name: String) -> OAuth2Module? {
        return sharedInstance.modules[name]
    }

    /**
    Retrieves a list of OAuth2 modules bound to specific clientId.

    :param: clientId  the client it that the oauth2 module was bound to.

    :returns: the OAuth2module or nil if not found.
    */
    public class func getAccountsByClienId(clientId: String) -> [OAuth2Module] {
