         // creating a new playlist item unless, we're dropping onto an existing.
         
         if sourceTableView == playlistTableView {
-            Swift.print("drag from playlist")
-        }
+            Swift.print("from \(String(describing: sourceTableView?.identifier)) into \(String(describing: tableView.identifier))")
+            
+        }
+        else
         
         if sourceTableView == playitemTableView {
-            Swift.print("drag into playlist")
-        }
+            Swift.print("from \(String(describing: sourceTableView?.identifier)) into \(String(describing: tableView.identifier))")
+            
+        }
+        else
 
         //    We have a Finder drag-n-drop of file URLs ?
-        let items = pasteboard.readObjects(forClasses: [NSURL.classForCoder()], options: options)!
-        if items.count > 0 {
-            var play = playlistArrayController.selectedObjects.first as? Dictionary<String,Any>
+        if let items: Array<AnyObject> = pasteboard.readObjects(forClasses: [NSURL.classForCoder()], options: options) as Array<AnyObject>? {
+             Swift.print("into \(String(describing: tableView.identifier))")
+            
+            var play = playlistArrayController.selectedObjects.first as? NSDictionaryControllerKeyValuePair
+            var okydoKey = false
             
             if (play == nil) {
-                let spec = (items.first as! URL).deletingLastPathComponent
-                let head = spec().absoluteString
-                let list = Array <PlayItem>()
-                let temp = [head:list]
-            
-                playlistArrayController.addObject(temp)
-                play = temp
+                play = playlistArrayController.newObject() as NSDictionaryControllerKeyValuePair
+                play?.value = Array <PlayItem>()
+            
+                playlistArrayController.addObject(play!)
                 
                 DispatchQueue.main.async {
                     self.playlistTableView.scrollRowToVisible(self.playlists.count - 1)
                 }
             }
+            else
+            {
+                okydoKey = true
+            }
             
             for itemURL in items {
                 if (itemURL as AnyObject).isFileReferenceURL() {
                     let fileURL : URL? = (itemURL as AnyObject).filePathURL
+
+                    // Capture playlist name from origin folder of 1st item
+                    if !okydoKey {
+                        let spec = fileURL?.deletingLastPathComponent
+                        let head = spec!().absoluteString
+                        play?.key = head
+                        okydoKey = true
+                    }
+                    
                     let path = fileURL!.absoluteString//.stringByRemovingPercentEncoding
                     let attr = appDelegate.metadataDictionaryForFileAt((fileURL?.path)!)
                     let time = attr?[kMDItemDurationSeconds] as! TimeInterval

                    let item = PlayItem(name:name!,
                                        link:URL.init(string: path)!,
                                        time:time,
                                        rank:(play?.count)! + 1)
                    playitemArrayController.insert(item, atArrangedObjectIndex: row + newIndexOffset)
                    newIndexOffset += 1
                } else {

                    }
                }
            }
            Swift.print("drag move")
            return .move
        }
        Swift.print("drag \(NSDragOperation())")
        return NSDragOperation()
    }
    
