private void ConnectToSubscription(string connectionString, string username, string password)
        {
            var lastCheckpoint = _eventPositionRepository.LastPosition();

            Position lastPosition = lastCheckpoint == null ? default(Position) : new Position(lastCheckpoint.CommitPosition, lastCheckpoint.PreparePosition);

            _conn.SubscribeToAllFrom(lastPosition, new CatchUpSubscriptionSettings(10, 1000, true, true), (x, resolvedEvent) =>
            {
                if (resolvedEvent.OriginalStreamId.StartsWith("$"))
                {
                    return;
                }

                if (resolvedEvent.Event.Data.Length <= 0)
                {
                    return;
                }

                try
                {
                    var evnt = _storedEventSerializer.As(Encoding.ASCII.GetString(resolvedEvent.Event.Data));

                    if (evnt == null)
                    {
                        return;
                    }

                    _eventDispatcher.Dispatch(evnt);

                    _eventPositionRepository.StoreLastPosition(
                        resolvedEvent.OriginalPosition.Value.CommitPosition,
                        resolvedEvent.OriginalPosition.Value.PreparePosition
                        );

                    _unitOfWork.SaveChanges();

                    //TODO:logging
                    Console.WriteLine("Received: " + resolvedEvent.Event.EventStreamId + ":" + resolvedEvent.Event.EventNumber);
                }
                catch (Exception ex)
                {
                    //log
                }
            }, userCredentials: new UserCredentials(username, password));
        }