     private let statusTopMargin: CGFloat = 8.0
     private let statusBottomMargin: CGFloat = 8.0
     private var upTimer: NSTimer?
+    private var startTop: CGFloat?
     
     override init(frame: CGRect) {
         super.init(frame: frame)

                    }, completion: nil
                )
            }
        case .Failed, .Cancelled:
            restartUpTimer(2.0)
        case .Possible: break

        case .Began:
            upTimer?.invalidate()
            upTimer = nil
            startTop = topConstraint.constant
        case .Changed:
            let location = pan.locationInView(Drop.window())
            let translation = pan.translationInView(Drop.window())
            let top = startTop! + translation.y
            topConstraint.constant = top
        case .Ended:
            if topConstraint.constant < 0.0 {
                restartUpTimer(0.0, interval: 0.1)
            } else {
                restartUpTimer(4.0)
                topConstraint.constant = 0.0
                UIView.animateWithDuration(
                    NSTimeInterval(0.1),
