public ClusterSnapshotActor(ClusterSnapshotInitializer initializer, IClusterApplication clusterApplication)
        {
            _broadcaster       = new ClusterApplicationBroadcaster(Logger);
            _communicationsHub = initializer.CommunicationsHub;
            _communicationsHub.Open(Stage, initializer.LocalNode, SelfAs <IInboundStreamInterest>(), initializer.Configuration);
            _localNode          = initializer.LocalNode;
            _clusterApplication = clusterApplication;
            _broadcaster.RegisterClusterApplication(clusterApplication);

            _clusterApplication.Start();

            initializer.Registry.RegisterRegistryInterest(SelfAs <IRegistryInterest>());

            _attributesAgent = AttributesAgentFactory.Instance(Stage, _localNode, _broadcaster,
                                                               _communicationsHub.OperationalOutboundStream, initializer.Configuration);

            _localLiveNode = LocalLiveNodeFactory.Instance(Stage, _localNode, SelfAs <IClusterSnapshot>(),
                                                           initializer.Registry, _communicationsHub.OperationalOutboundStream, initializer.Configuration);

            _localLiveNode.RegisterNodeSynchronizer(_attributesAgent);

            _communicationsHub.Start();
        }