                     let items = play[k.list] as! [Dictionary <String,AnyObject>]
                     var list : [PlayItem] = [PlayItem]()
                     for playitem in items {
-                        let item = playitem as Dictionary <String,AnyObject>
-                        let name = item[k.name] as! String
-                        let path = item[k.link] as! String
-                        let time = item[k.time] as? TimeInterval
-                        let link = URL.init(string: path)
-                        let rank = item[k.rank] as! Int
-                        let temp = PlayItem(name:name, link:link!, time:time!, rank:rank)
-                        
-                        // Non-visible (tableView) cells
-                        temp.rect = item[k.rect]?.rectValue ?? NSZeroRect
-                        temp.label = item[k.label]?.boolValue ?? false
-                        temp.hover = item[k.hover]?.boolValue ?? false
-                        temp.alpha = item[k.alpha]?.floatValue ?? 0.6
-                        temp.trans = item[k.trans]?.intValue ?? 0
-
-                        list.append(temp)
+                        let item = PlayItem.init(with: playitem)
+                        list.append(item)
                     }
                     let name = play[k.name] as? String
                     if let items = playlists[name!] {

            return nil
        }
    }

}

class PlayItem : NSObject, NSCoding {

                        let items = play[k.list] as! [Dictionary <String,AnyObject>]
                        var list : [PlayItem] = [PlayItem]()
                        for playitem in items {
                            let item = PlayItem.init(with: playitem)
                            list.append(item)
                        }
                        let name = play[k.name] as? String
                        if let items = playlists[name!] {
