public Application(ObservableEventPublisher observableEventPublisher, BusObserverAdapter <IEvent> busObserverAdapter, ICommandHandler <CreateAccountCommand> createAccountCommandHandler, ICommandHandler <CreateDepositCommand> createDepositCommandHandler, IEventHandler <CreateAccountEvent> createAccountEventHandler, IEventHandler <CreateDepositEvent> createDepositEventHandler, IEventHandler <AddDepositToAccountEvent> addDepositToAccountEventHandler, IHandlerFactoryMethod <IEvent> eventHandlerFactoryMethod, IHandlerFactoryMethod <ICommand> commandHandlerFactoryMethod) { eventHandlerFactoryMethod.AddHandler(createAccountEventHandler); eventHandlerFactoryMethod.AddHandler(createDepositEventHandler); eventHandlerFactoryMethod.AddHandler(addDepositToAccountEventHandler); commandHandlerFactoryMethod.AddHandler(createAccountCommandHandler); commandHandlerFactoryMethod.AddHandler(createDepositCommandHandler); observableEventPublisher.AddObserver(busObserverAdapter); }