Inheritance: ITopicRepository
        private IXDBroadcaster CreateNetworkBroadcaster()
        {
            var settings = AmazonAccountSettings.GetInstance();
            var amazonSnsFacade = new AmazonSnsFacade(settings);
            var respository = new TopicRepository(settings, amazonSnsFacade);
            var publishService = new PublisherService(amazonSnsFacade);

            return new XDAmazonBroadcaster(serializer, publishService, respository);
        }
        internal XDAmazonBroadcaster(ISerializer serializer, IPublisherService publisherService,
            TopicRepository topicRepository)
        {
            serializer.Requires("serializer").IsNotNull();
            publisherService.Requires("publisherService").IsNotNull();
            topicRepository.Requires("topicRepository").IsNotNull();

            this.serializer = serializer;
            this.publisherService = publisherService;
            this.topicRepository = topicRepository;
        }
        internal XDAmazonBroadcaster(ISerializer serializer, IPublisherService publisherService,
                                     TopicRepository topicRepository)
        {
            Validate.That(serializer).IsNotNull();
            Validate.That(publisherService).IsNotNull();
            Validate.That(topicRepository).IsNotNull();

            this.serializer = serializer;
            this.publisherService = publisherService;
            this.topicRepository = topicRepository;
        }
        private IXDListener CreateNetworkListener(IIdentityProvider provider)
        {
            var settings = AmazonAccountSettings.GetInstance();
            var amazonSnsFacade = new AmazonSnsFacade(settings);
            var amazonSqsFacade = new AmazonSqsFacade(settings);
            var queuePoller = new QueuePoller(amazonSqsFacade);

            var resourceCounter = new ResourceCounter();
            var respository = new TopicRepository(AmazonAccountSettings.GetInstance(), amazonSnsFacade);
            var subscriberRepository = new SubscriberRepository(settings, amazonSqsFacade);
            var subscriptionService = new SubscriptionService(
                resourceCounter,
                amazonSnsFacade,
                amazonSqsFacade,
                subscriberRepository,
                queuePoller);

            return new XDAmazonListener(provider, serializer, respository, subscriberRepository, subscriptionService);
        }