 
   public func show() {
     view.placeAtPosition(destination)
-    view.alpha = 0.0
+    view.hidden = true
   }
 
   public func play() {
-    animate(1.0)
+    view.hidden = true
+    animate()
   }
 
   public func playBack() {
-    animate(0.0)
+    view.hidden = false
+    animate()
   }
 
   public func move(offsetRatio: CGFloat) {

  public var duration: NSTimeInterval
  public var isPlaying = false

  init(view: UIView, destination: TutorialViewPosition, duration: NSTimeInterval = 1.0) {
    self.view = view
    self.view.setTranslatesAutoresizingMaskIntoConstraints(true)
    self.destination = destination

    super.init()
  }

  func animate() {
    if !isPlaying {
      isPlaying = true

      if view.hidden {
        view.transform = CGAffineTransformMakeScale(0.6, 0.6)
      }
      view.hidden = false

      UIView.animateWithDuration(duration,
        animations: {
          [unowned self] in
          self.view.transform = CGAffineTransformMakeScale(1.05, 1.05)
          self.view.alpha = 0.8
        }, completion: { [unowned self] finished in
          UIView.animateWithDuration(1 / 8.0,
            animations: {
              [unowned self] in
              self.view.transform = CGAffineTransformMakeScale(0.9, 0.9)
              self.view.alpha = 0.9
            }, completion: { [unowned self] finished in
              UIView.animateWithDuration(1 / 4.0,
                animations: {
                  [unowned self] in
                  self.view.transform = CGAffineTransformIdentity;
                  self.view.alpha = 1.0;
                }, completion: { [unowned self] finished in
                  self.isPlaying = false
                })
            })
        })
    }
  }
