 
     if animated {
       CATransaction.begin()
-      CATransaction.setCompletionBlock({
-        completion?()
-      })
+      CATransaction.setCompletionBlock({ completion?() })
+
       let animation = CABasicAnimation(keyPath: "transform.translation.y")
       animation.duration = 0.25
-      animation.fromValue = -view.frame.size.height
+      animation.fromValue = position == .Top ? -view.frame.size.height : +view.frame.size.height
       animation.toValue = 0
       animation.removedOnCompletion = false
       animation.fillMode = kCAFillModeForwards

      CATransaction.setCompletionBlock(complete)
      let animation = CABasicAnimation(keyPath: "transform.translation.y")
      animation.duration = 0.25
      animation.toValue = -noticeView.frame.size.height
      animation.removedOnCompletion = false
      animation.fillMode = kCAFillModeForwards


      let when = dispatch_time(DISPATCH_TIME_NOW, Int64(duration * Double(NSEC_PER_SEC)))
      dispatch_after(when, dispatch_get_main_queue()) { [weak self] in
        // only dismiss when we it's the same notice
        if self?.currentNotice?.view === view {
          self?.dismissCurrentNotice()
        }
      }
