         self.init(name: name, list: list)
         self.date = date
     }
-    
+    func update(with dictionary: Dictionary<String,Any>) {
+        if let name : String = dictionary[k.name] as? String, name != self.name {
+            self.name = name
+        }
+        if let plists : [Dictionary<String,Any>] = dictionary[k.list] as? [Dictionary<String,Any>] {
+
+            for plist in plists {
+                if let item : PlayItem = list.item(plist[k.link] as! String) {
+                    item.update(with: plist)
+                }
+            }
+        }
+        if let date : TimeInterval = dictionary[k.date] as? TimeInterval, date != self.date {
+            self.date = date
+        }
+    }
+
     func encode(with coder: NSCoder) {
         coder.encode(name, forKey: k.name)
         coder.encode(list, forKey: k.list)

        if let plays : Int = dictionary[k.plays] as? Int, plays != self.plays {
            self.plays = plays
        }
        if let label : Bool = dictionary[k.label] as? Bool, label != self.label  {
            self.label  = label
        }

        self.time = time
        self.rank = rank
        self.rect = NSZeroRect
        self.plays = 1
        self.label = false
        self.hover = false
        self.alpha = 60
