     var webViewController: WebViewController? = nil
     
     @IBAction func playPlaylist(_ sender: AnyObject) {
+        //  first window might be reused, others no
+        let newWindows = UserSettings.createNewWindows.value
+        
+        //  first responder tells us who called so dispatch
+        let whoAmI = self.view.window?.firstResponder
+
         //  Quietly, do not exceed program / user specified throttle
         let throttle = UserSettings.playlistThrottle.value
 

        default:
            Swift.print("firstResponder: \(String(describing: whoAmI))")
            AudioServicesPlaySystemSound(1051);
        }
    }
    

        case playlistTableView:
            Swift.print("We are in playlistTableView")
            for selectedPlaylist in (playlistArrayController.selectedObjects.first as? [NSDictionaryControllerKeyValuePair])! {
                let list: Array<PlayItem> = (selectedPlaylist.value as! Array).sorted(by: { (lhs, rhs) -> Bool in
                    return lhs.rank < rhs.rank
                })
                
                //  Do not exceed program / user specified throttle
                if list.count > throttle {
                    let message = String(format: "Limiting playlist's %ld items to throttle.", list.count)
                    let infoMsg = String(format: "User defaults: %@ = %ld",
                                         UserSettings.playlistThrottle.keyPath,
                                         throttle)
                    appDelegate.userAlertMessage(message, info: infoMsg)
                }
                
                //  Try to restore item at its last known location
                for (i,item) in (list.enumerated()).suffix(throttle) {
                    if appDelegate.doOpenFile(fileURL: item.link) && !newWindows {
                        UserSettings.createNewWindows.value = true
                    }
                    print(String(format: "%3d %3d %@", i, item.rank, item.name))
                }
            }
            break
