internal EventStore(IServiceProvider provider, ILogger <EventStore> logger)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            this.streams = new EventStreams(provider, provider.GetService <ILogger <EventStreams> >());
            this.logger  = logger ?? throw new ArgumentNullException(nameof(logger));
        }
    void main()
    {
        IEventStore   eventStore   = new EventStore();
        IEventStreams eventStreams = eventStore.Connect();

        var stream = eventStreams["aggregate-1"];

        eventStreams.Categories();
        eventStreams.StreamsInCategory("aggregate");


        stream.Add(events);
        stream.ToObject <Engagement>((event, engagement) => engagement.Apply(event));