public static void UseMulticastSubscriptionClient(this ServiceBusConfigurator configurator,
		                                                  Action<MulticastSubscriptionClientConfigurator> configureCallback)
		{
			var clientConfigurator = new MulticastSubscriptionClientConfiguratorImpl();

			configureCallback(clientConfigurator);

			configurator.AddSubscriptionObserver(clientConfigurator.Create);
		}
		public static void UseSubscriptionService(this ServiceBusConfigurator configurator,
		                                          Action<SubscriptionClientConfigurator> configureCallback)
		{
			var clientConfigurator = new SubscriptionClientConfiguratorImpl();

			configureCallback(clientConfigurator);

			configurator.AddSubscriptionCoordinatorConfigurator(new SubscriptionRouterBuilderConfiguratorImpl(x => x.SetNetwork(null)));

			configurator.AddSubscriptionObserver(clientConfigurator.Create);
		}
		public static void UseMulticastSubscriptionClient(this ServiceBusConfigurator configurator,
		                                                  Action<MulticastSubscriptionClientConfigurator> configureCallback)
		{
            string network = null;

			var clientConfigurator = new MulticastSubscriptionClientConfiguratorImpl();

			configureCallback(clientConfigurator);

			configurator.AddSubscriptionObserver( (bus, router) => 
                {
                    network = router.Network;

                    return clientConfigurator.Create(bus, router);
                });

            configurator.AddService(BusServiceLayer.Presentation,
                () => new GroupMessageRouter(
                    clientConfigurator.SubscriptionBus,
                    clientConfigurator.GroupSelectionStrategy,
                    network));

		}