public void Start(int commentScanIntervalSeconds, int editScanIntervalSeconds, int pmScanIntervalSeconds)
        {
            // Get the time of the last processed comment
            var lastActivityTimeUtc = _db4Repository.GetLastActivityTimeUtc();

            // For first time runs of DeltaBot, we need to prime the database with a comment id
            // to start at.
            var lastProcessedComments = _db4Repository.GetLastProcessedCommentIds();

            if (lastProcessedComments.Count == 0)
            {
                primeCommentMonitor(lastActivityTimeUtc);
            }

            // For first time runs of DeltaBot, we need to prime the database with an edit id
            // to start at.
            var lastProcessedEdits = _db4Repository.GetLastProcessedEditIds();

            if (lastProcessedEdits.Count == 0)
            {
                primeEditMonitor(lastActivityTimeUtc);
            }

            if (_reddit.User == null)
            {
                Task.Run(async() => await _reddit.InitOrUpdateUserAsync()).Wait();
            }

            // Process comments since last activity - subtracting commentScanIntervalSeconds
            // will guarantee it runs immediately on startup
            _lastCommentCheckUtc = lastActivityTimeUtc.AddSeconds(-commentScanIntervalSeconds);

            // Start checking for auto restart
            monitorAutoRestart(1);

            // Start comment monitoring
            monitorComments(commentScanIntervalSeconds);

            // Process edits since last activity - subtracting editScanIntervalSeconds
            // will guarantee it runs immediately on startup
            _lastEditCheckUtc = lastActivityTimeUtc.AddSeconds(-editScanIntervalSeconds);

            // Start edit monitoring
            monitorEdits(editScanIntervalSeconds);

            // Process unread private messages since last activity - subtracting pmScanIntervalSeconds
            // will guarantee monitorPrivateMessages runs immediately on startup
            _lastPMCheckUtc = lastActivityTimeUtc.AddSeconds(-pmScanIntervalSeconds);

            // Start private message monitoring
            monitorPrivateMessages(pmScanIntervalSeconds);
        }