public WireUpItem GetWireUp(InitializerWireUp wireup)
        {
            IStoreEvents store = Wireup.Init()
                .LogToOutputWindow()
                //.UsingSqlPersistence()
                .UsingInMemoryPersistence()
                .EnlistInAmbientTransaction()
                .InitializeStorageEngine()
                .Build();

            ObjectFactory.Inject<IStoreEvents>(store);

            return new WireUpItem(
                x =>
                    {
                        x.For<IRepository<Guid>>()
                            .Singleton()
                            .Use<EventStoreRepository>();

                        x.For<IUnitOfWorkFactory>()
                            .Use<EventStoreUnitOfWorkFactory>();

                        x.For<ISnapShotStrategy>()
                            .Singleton()
                            .Use<SnapShotBasedOnMessageCountStrategy>()
                            .Ctor<int>().Is(3);
                    }
                );
        }
        public WireUpItem GetWireUp(InitializerWireUp wireup)
        {
            OnTheWireBusConfiguration configuration = new OnTheWireBusConfiguration(10, @"tcp://127.0.0.1:5565",
                                                                                    new BinaryFormatter(), new ASCIIEncoding() );
            ObjectFactory.Inject<OnTheWireBusConfiguration>(configuration);
            return new WireUpItem(
                x =>
                    {
                        x.For<IMessageSubscriber>()
                            .Singleton()
                            .Use<MessageSubscriber>();

                        x.For<IMessagePublisher>()
                            .Singleton()
                            .Use<MessagePublisher>();

                        x.For<IHandlerResolver>()
                            .Use<AggregateRootInspector>();

                        x.Scan(
                            s =>
                                {
                                    foreach (Assembly assembly in wireup.Assemblies)
                                    {
                                        s.Assembly(assembly);
                                        s.Convention<MessageHandlerTypeConvention>();
                                        s.Convention<RequestHandlerTypeConvention>();
                                    }
                                    //s.WithDefaultConventions();
                                }
                            );
                    }
                );
        }
        public WireUpItem GetWireUp(InitializerWireUp wireup)
        {
            return new WireUpItem(
                x =>
                    {
                        x.For<IHandlerResolver>()
                            .Singleton()
                            .Use<AggregateRootInspector>();

                        x.Scan(
                            s =>
                                {
                                    foreach (Assembly assembly in wireup.Assemblies)
                                    {
                                        s.Assembly(assembly);
                                        s.Convention<MessageHandlerTypeConvention>();
                                        s.Convention<RequestHandlerTypeConvention>();
                                    }
                                    s.WithDefaultConventions();
                                });
                    }
                );
        }