public override Task Unload()
        {
            Commands      = null;
            Configuration = null;
            Provider      = null;
            Accounts      = null;

            return(Task.CompletedTask);
        }
        public override Task Load()
        {
            Commands = new CommandManager(Server, this);
            Events   = new EventManager(Server, this);

            StorageProvider.RegisterDefaultProviders();
            var types = StorageProvider.ConfigTypes;

            Configuration = ConfigManager.LoadConfig <AccountantConfig>(Path.Combine(DataFolder, "config.json"), new ConfigSettings()
            {
                PolymorphicTypes = types, Indented = true
            });

            MetadataRegistry = new MetadataHolderRegistry();

            Accounts = new AccountManager(this);

            API = new AccountantAPI(this);

            return(Task.CompletedTask);
        }