protected override void ConfigureApplicationContainer(ILifetimeScope container)
        {
            Logger.Information("Collectively.Services.Storage Configuring application container");
            base.ConfigureApplicationContainer(container);

            container.Update(builder =>
            {
                builder.Populate(_services);
                builder.RegisterType <CustomJsonSerializer>().As <JsonSerializer>().SingleInstance();
                builder.RegisterInstance(_configuration.GetSettings <GeneralSettings>()).SingleInstance();
                builder.RegisterInstance(_configuration.GetSettings <MongoDbSettings>()).SingleInstance();
                builder.RegisterInstance(_configuration.GetSettings <RedisSettings>()).SingleInstance();
                builder.RegisterModule <MongoDbModule>();
                builder.RegisterType <MongoDbInitializer>().As <IDatabaseInitializer>();
                builder.RegisterType <DatabaseSeeder>().As <IDatabaseSeeder>().InstancePerLifetimeScope();
                builder.RegisterType <GroupRemarkRepository>().As <IGroupRemarkRepository>().InstancePerLifetimeScope();
                builder.RegisterType <OperationRepository>().As <IOperationRepository>().InstancePerLifetimeScope();
                builder.RegisterType <RemarkRepository>().As <IRemarkRepository>().InstancePerLifetimeScope();
                builder.RegisterType <RemarkCategoryRepository>().As <IRemarkCategoryRepository>().InstancePerLifetimeScope();
                builder.RegisterType <ReportRepository>().As <IReportRepository>().InstancePerLifetimeScope();
                builder.RegisterType <TagRepository>().As <ITagRepository>().InstancePerLifetimeScope();
                builder.RegisterType <UserRepository>().As <IUserRepository>().InstancePerLifetimeScope();
                builder.RegisterType <UserSessionRepository>().As <IUserSessionRepository>().InstancePerLifetimeScope();
                builder.RegisterType <GroupRepository>().As <IGroupRepository>().InstancePerLifetimeScope();
                builder.RegisterType <UserNotificationSettingsRepository>().As <IUserNotificationSettingsRepository>().InstancePerLifetimeScope();
                builder.RegisterType <OrganizationRepository>().As <IOrganizationRepository>().InstancePerLifetimeScope();
                builder.RegisterType <ProviderClient>().As <IProviderClient>().InstancePerLifetimeScope();
                builder.RegisterType <OperationProvider>().As <IOperationProvider>().InstancePerLifetimeScope();
                builder.RegisterType <RemarkProvider>().As <IRemarkProvider>().InstancePerLifetimeScope();
                builder.RegisterType <StatisticsProvider>().As <IStatisticsProvider>().InstancePerLifetimeScope();
                builder.RegisterType <UserProvider>().As <IUserProvider>().InstancePerLifetimeScope();
                builder.RegisterType <NotificationProvider>().As <INotificationProvider>().InstancePerLifetimeScope();
                builder.RegisterType <GroupProvider>().As <IGroupProvider>().InstancePerLifetimeScope();
                builder.RegisterType <OrganizationProvider>().As <IOrganizationProvider>().InstancePerLifetimeScope();
                builder.RegisterType <Handler>().As <IHandler>().InstancePerLifetimeScope();
                builder.RegisterInstance(_configuration.GetSettings <ExceptionlessSettings>()).SingleInstance();
                builder.RegisterType <ExceptionlessExceptionHandler>().As <IExceptionHandler>().SingleInstance();
                builder.RegisterModule <CommandHandlersModule>();
                builder.RegisterModule <EventHandlersModule>();
                builder.RegisterModule <ServiceClientModule>();
                builder.RegisterModule <ServiceClientsModule>();
                builder.RegisterModule <RedisModule>();
                builder.RegisterType <AccountStateService>().As <IAccountStateService>().InstancePerLifetimeScope();
                builder.RegisterType <TagService>().As <ITagService>().InstancePerLifetimeScope();
                builder.RegisterType <OperationCache>().As <IOperationCache>().InstancePerLifetimeScope();
                builder.RegisterType <RemarkCache>().As <IRemarkCache>().InstancePerLifetimeScope();
                builder.RegisterType <GroupCache>().As <IGroupCache>().InstancePerLifetimeScope();
                builder.RegisterType <OrganizationCache>().As <IOrganizationCache>().InstancePerLifetimeScope();
                builder.RegisterType <UserCache>().As <IUserCache>().InstancePerLifetimeScope();
                builder.RegisterType <UserNotificationSettingsCache>().As <IUserNotificationSettingsCache>().InstancePerLifetimeScope();
                SecurityContainer.Register(builder, _configuration);
                RabbitMqContainer.Register(builder, _configuration.GetSettings <RawRabbitConfiguration>());
            });
            LifeTimeScope = container;
        }