 			play!.willChangeValueForKey("listCount")
 			for itemURL in items {
 				if itemURL.isFileReferenceURL() {
-					let file = itemURL.filePathURL?!.absoluteString
+					let fileURL : NSURL? = itemURL.filePathURL
+					let path = fileURL!.absoluteString//.stringByRemovingPercentEncoding
 					let item = PlayItem(name:itemURL.lastPathComponent.stringByRemovingPercentEncoding!,
-					                    link:NSURL.init(string: file!)!,
+					                    link:NSURL.init(string: path)!,
 										rank:play!.list.count + 1)
-//					print("accept \(item.name) -> \(item.link.absoluteString)")
-					playitemArrayController.addObject(item)
+					playitemArrayController.insertObject(item, atArrangedObjectIndex: row + newIndexOffset)
+					newIndexOffset += 1
 				} else {
 					print("accept item -> \(itemURL.absoluteString)")
 				}

		               NSPasteboardURLReadingContentsConformToTypesKey : [kUTTypeMovie as String]]
		var oldIndexes = [Int]()
		var items : [AnyObject]
print("acceptDrop")

		tableView.beginUpdates()


			}
			// For simplicity, the code below uses `tableView.moveRowAtIndex` to move rows around directly.
			// You may want to move rows in your content array and then call `tableView.reloadData()` instead.
			
			for oldIndex in oldIndexes {
				if oldIndex < row {
