             self.attributes = allAttributes
 
         }
-        init(title: String, attributes: [String: String], stringValue: String, time: NSDate) {
-            self.title = title
-            self.attributes = attributes
-            self.stringValue = stringValue
-            self.time = time
+
+        init?(dictionary: [String: String]) {
+            var attributes = dictionary
+            if let title = attributes.removeValueForKey(Keys.Title), timeString = attributes.removeValueForKey(Keys.Time), stringValue = attributes.removeValueForKey(Keys.StringValue) {
+
+                self.title = title
+                self.attributes = attributes
+                self.stringValue = stringValue
+                
+                if let date = EventLog.JSONTimeFormatter.dateFromString(timeString) {
+                    self.time = date
+                } else {
+                    self.time = NSDate()
+                }
+            }
+
+            return nil
         }
 
         func offsetSince(startTime: NSDate) -> NSTimeInterval {

                var events = [Event]()
                if let eventData = data["events"] as? [[String: String]] {
                    for data in eventData {
                        if let event = Event.fromDictionary(data) {
                            events.append(event)
                        }
                    }

            return dict
        }

    }

    var name: String
