     public init(userInfo: UserInfo) {
         let boxData = userInfo["box"] as UserInfo
         let boxIdData = boxData["id"] as NSNumber
-        self.boxId = BoxId(boxIdData)
+        let boxId = BoxId(boxIdData)
         
         let itemData = userInfo["item"] as UserInfo
         let itemIdData = itemData["id"] as NSNumber
-        self.itemId = ItemId(itemIdData)
-        self.itemTitle = itemData["title"] as String
+        let itemId = ItemId(itemIdData)
+        let itemTitle = itemData["title"] as String
+        
+        self.init(boxId: boxId, itemId: itemId, itemTitle: itemTitle)
     }
     
     public func userInfo() -> UserInfo {

    public init(userInfo: UserInfo) {
        let boxData = userInfo["box"] as UserInfo
        let boxIdData = boxData["id"] as NSNumber
        self.boxId = BoxId(boxIdData)
        
        let itemData = userInfo["item"] as UserInfo
        let itemIdData = itemData["id"] as NSNumber
        self.itemId = ItemId(itemIdData)
        self.itemTitle = itemData["title"] as String
    }
    
    public func userInfo() -> UserInfo {

        return NSNotification(name: self.dynamicType.eventType.name, object: nil, userInfo: userInfo())
    }
}

public struct BoxItemsRedistributionFailed: DomainEvent {
    public static var eventType: DomainEventType {
        return DomainEventType.BoxItemsRedistributionFailed
    }
    
    public let boxId: BoxId
    
    public init(boxId: BoxId) {
        self.boxId = boxId
    }
    
    public init(userInfo: UserInfo) {
        let boxData = userInfo["box"] as UserInfo
        let boxIdData = boxData["id"] as NSNumber
        let boxId = BoxId(boxIdData)
        
        self.init(boxId: boxId)
    }
    
    public func userInfo() -> UserInfo {
        return [
            "box": [
                "id": boxId.number
            ]
        ]
    }
    
    public func notification() -> NSNotification {
        return NSNotification(name: self.dynamicType.eventType.name, object: nil, userInfo: userInfo())
    }
}
