         completion?()
       })
   }
+  
+  // MARK: Private helper
+  
+  private func screenSize() -> CGSize {
+    return UIScreen.mainScreen().bounds.size
+  }
+  
 }
 
 public extension Animatable where Self: UIBarItem {

  
  // MARK: - Animation methods
  public func slideInLeft(completion: AnimatableCompletion? = nil) {
    let x = -300 * force
    animateInWithX(x, completion: completion)
  }

  public func slideInRight(completion: AnimatableCompletion? = nil) {
    let x = 300 * force
    animateInWithX(x, completion: completion)
  }

  public func slideInDown(completion: AnimatableCompletion? = nil) {
    let y = -300 * force
    animateInWithY(y, completion: completion)
  }

  public func slideInUp(completion: AnimatableCompletion? = nil) {
    let y = 300 * force
    animateInWithY(y, completion: completion)
  }
  
  public func slideOutLeft(completion: AnimatableCompletion? = nil) {
    let x = -300 * force
    animateOutWithX(x, alpha: 1, completion: completion)
  }

  public func slideOutRight(completion: AnimatableCompletion? = nil) {
    let x = 300 * force
    animateOutWithX(x, alpha: 1, completion: completion)
  }
  
  public func slideOutDown(completion: AnimatableCompletion? = nil) {
    let y = 300 * force
    animateOutWithY(y, alpha: 1, completion: completion)
  }
  
  public func slideOutUp(completion: AnimatableCompletion? = nil) {
    let y = -300 * force
    animateOutWithY(y, alpha: 1, completion: completion)
  }
  
  public func squeezeInLeft(completion: AnimatableCompletion? = nil) {
    let x = -300 * force
    let scaleX = 3 * force
    animateInWithX(x, scaleX: scaleX, completion: completion)
  }
  
  public func squeezeInRight(completion: AnimatableCompletion? = nil) {
    let x = 300 * force
    let scaleX = 3 * force
    animateInWithX(x, scaleX: scaleX, completion: completion)
  }
  
  public func squeezeInDown(completion: AnimatableCompletion? = nil) {
    let y = -300 * force
    let scaleY = 3 * force
    animateInWithY(y, scaleY: scaleY, completion: completion)
  }
  
  public func squeezeInUp(completion: AnimatableCompletion? = nil) {
    let y = 300 * force
    let scaleY = 3 * force
    animateInWithY(y, scaleY: scaleY, completion: completion)
  }
  
  public func squeezeOutLeft(completion: AnimatableCompletion? = nil) {
    let x = -300 * force
    let scaleX = 3 * force
    animateOutWithX(x, scaleX: scaleX, alpha: 1, completion: completion)
  }
  
  public func squeezeOutRight(completion: AnimatableCompletion? = nil) {
    let x = 300 * force
    let scaleX = 3 * force
    animateOutWithX(x, scaleX: scaleX, alpha: 1, completion: completion)
  }
  
  public func squeezeOutDown(completion: AnimatableCompletion? = nil) {
    let y = 300 * force
    let scaleY = 3 * force
    animateOutWithY(y, scaleY: scaleY, alpha: 1, completion: completion)
  }
  
  public func squeezeOutUp(completion: AnimatableCompletion? = nil) {
    let y = -300 * force
    let scaleY = 3 * force
    animateOutWithY(y, scaleY: scaleY, alpha: 1, completion: completion)
  }

  }
  
  public func fadeOutLeft(completion: AnimatableCompletion? = nil) {
    let x = -screenSize().width * force
    animateOutWithX(x, alpha: 0, completion: completion)
  }
  
  public func fadeOutRight(completion: AnimatableCompletion? = nil) {
    let x = screenSize().width * force
    animateOutWithX(x, alpha: 0, completion: completion)
  }
  
  public func fadeOutDown(completion: AnimatableCompletion? = nil) {
    let y = screenSize().height * force
    animateOutWithY(y, alpha: 0, completion: completion)
  }
  
  public func fadeOutUp(completion: AnimatableCompletion? = nil) {
    let y = -screenSize().height * force
    animateOutWithY(y, alpha: 0, completion: completion)
  }

