             object: sessionManager,
             queue: .main,
             using: { [weak self] noti in self?.recordingStateDidChange(noti: noti) })
-    }
-}
+
+        _didReachEndOfQueueObserver = notificationCenter.addObserver(
+            forType: DidReachEndOfPlaybackQueue.self,
+            object: sessionManager,
+            queue: .main,
+            using: { [weak self] noti in self?.didReachEndOfPlaybackQueue(noti: noti) })
+    }
+}

    private var _didEncounterErrorObserver: NotificationObserver? = nil
    private var _recordingStateDidChangeObserver: NotificationObserver? = nil
    private var _trackDidChangeObserver: NotificationObserver? = nil

    //MARK: Window Lifecycle
    override func windowDidLoad() {

        presentError(noti.error)
    }

    private func didReachEndOfPlaybackQueue(noti: DidReachEndOfPlaybackQueue) {
        let notification = NSUserNotification()
        notification.title = NSLocalizedString("SESSION_END_NOTI", comment: "Title of notification saying the session has ended.")
        notification.informativeText = NSLocalizedString("SESSION_END_NOTI_SUBT", comment: "Explanation of why session has ended.")

        NSUserNotificationCenter.default.deliver(notification)
    }

    /// Registers the window controller for notifications posted by
    /// SpotijackSessionManager
    private func registerForSpotijackNotifications() {
