public StructureMapRegistry()
{
// Pay attention to the order of the startup tasks!
this.ForSingletonOf<IProcessStateLogging>().Use<ProcessStateLogging>();
this.ForSingletonOf<ILoggingConfigurator>().Use<LoggingConfigurator>();
this.Forward<ILoggingConfigurator, IStartupTask>();
this.ForSingletonOf<IBrowserConfiguration>().Use<BrowserConfiguration>();
this.Forward<IBrowserConfiguration, IStartupTask>();
this.For<IGeckoBrowser>().LifecycleIs(new UniquePerRequestLifecycle()).Use<GeckoBrowser>();
this.Forward<IGeckoBrowser, IStartupTask>();
this.ForSingletonOf<App>().Use<App>();
this.Forward<App, IApp>();
this.Forward<App, IStartupTask>();
this.ForSingletonOf<IScreensaver>().Use<Screensaver>();
this.ForSingletonOf<IPowerManagement>().Use<PowerManagement>();
this.For<IEventHook>().LifecycleIs(new UniquePerRequestLifecycle()).Use<EventHook>();
this.ForSingletonOf<IScreenRefresher>().Use<ScreenRefresher>();
this.Forward<IScreenRefresher, IStartupTask>();
this.ForSingletonOf<IPrintController>().Use<PrintController>();
this.Forward<IPrintController, IStartupTask>();
this.ForSingletonOf<IWindowManager>().Use<WindowManager>();
this.Forward<IWindowManager, IStartupTask>();
this.For<IHttpProcessor>().LifecycleIs(new UniquePerRequestLifecycle()).Use<HttpProcessor>();
this.ForSingletonOf<IHttpServer>().Use<HttpServer>();
this.Forward<IHttpServer, IStartupTask>();
}