     }
     
     private class func up(drop: Drop, after: Double, interval: NSTimeInterval) {
-        let when = dispatch_time(DISPATCH_TIME_NOW, Int64(after * Double(NSEC_PER_SEC)))
-        dispatch_after(when, dispatch_get_main_queue(), { [weak drop] () -> Void in
-            if let drop = drop {
-                if !drop.removable { return }
-                drop.topConstraint.constant = drop.heightConstraint.constant
-                UIView.animateWithDuration(
-                    interval,
-                    delay: NSTimeInterval(0.0),
-                    options: UIViewAnimationOptions.AllowUserInteraction | UIViewAnimationOptions.CurveEaseIn,
-                    animations: { [weak drop] () -> Void in
-                        if let drop = drop {
-                            drop.layoutIfNeeded()
-                        }
-                    }) { [weak drop] finished -> Void in
-                        if let drop = drop { drop.removeFromSuperview() }
+        drop.topConstraint.constant = drop.heightConstraint.constant
+        UIView.animateWithDuration(
+            interval,
+            delay: after,
+            options: UIViewAnimationOptions.AllowUserInteraction | UIViewAnimationOptions.CurveEaseIn,
+            animations: { [weak drop] () -> Void in
+                if let drop = drop {
+                    drop.layoutIfNeeded()
                 }
-            }
-            }
-        )
+            }) { [weak drop] finished -> Void in
+                if let drop = drop { drop.removeFromSuperview() }
+        }
     }
     
     public class func upAll() {

    private var heightConstraint: NSLayoutConstraint!
    private let statusTopMargin: CGFloat = 8.0
    private let statusBottomMargin: CGFloat = 8.0
    private var removable: Bool = true
    
    override init(frame: CGRect) {
        super.init(frame: frame)

                    if let drop = drop { drop.layoutIfNeeded() }
                }, completion: nil
            )
        }
    }
    
