     // immediately after setting up the queue.
     // Attempting to reset currentPlaybackTime to .zero immediately after initializing the
     // queue results in prolonged (10 second) delays.
-    private var queueJustInitialized: Bool = false
+    private var queueUninitialized: Bool = true
     
     public var playbackPosition: TimeInterval {
         get {
-            queueJustInitialized ? .zero : MusicPlayer.player.currentPlaybackTime
+            queueUninitialized ? .zero : MusicPlayer.player.currentPlaybackTime
         }
         set {
             MusicPlayer.player.currentPlaybackTime = newValue

    }
    
    public func play() {
        queueJustInitialized = false
        MusicPlayer.player.play()
        
        // NOTE: Attempting to call play() immediately before or after
        // setting currentPlaybackRate introduces a race condition
        // that prevents currentPlaybackRate from taking effect.
        // This async call seems to solve that issue.
        DispatchQueue.main.async {
            MusicPlayer.player.currentPlaybackRate = self.playbackRate
            if self.isPlaying() {
                self.delegate?.playbackStarted()
            }
        }
    }
    
    public func isPlaying() -> Bool {

            // to test for playbackPosition > mediaItemDuration on .paused.
            if playbackPosition > mediaItemDuration {
                DispatchQueue.main.async {
                    //Indicate queue no longer initialized, fixes issues
                    // with track progress past end as the player likes to do.
                    self.queueUninitialized = true
                    self.delegate?.playbackStopped(trackCompleted: true)
                }
            }
