         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())
+    }
+}

    
    public init(userInfo: UserInfo) {
        let itemData = userInfo["item"] as UserInfo
        self.itemTitle = itemData["title"] as String
    }
    
    public func userInfo() -> UserInfo {

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