   private var upperTaglineConstraint: NSLayoutConstraint?
   private var lowerTaglineConstraint: NSLayoutConstraint?
 
+  private var isAnimating = false
+  private let semaphore = dispatch_semaphore_create(0)
+
+  private enum Animation {
+    static let duration = NSTimeInterval(0.9)
+    static let first = (begin: Double(0), duration: Double(0.6))
+    static let second = (begin: Double(0.2), duration: Double(0.7))
+  }
+
   // MARK: - UIViewController
 
   override func loadView() {

        Debug.print(response.result.value)
        let json = try JSON(data: data)
        let categories = try json.array("data").map(Category.init)
        self?.navigationController?.setViewControllers([CategoriesViewController(categories: categories)], animated: true)
      } catch {
        self?.showAlert(error, retry: self?.fetchCategories)
      }

  }

}


private extension NSTimeInterval {

  var dispatchTime: dispatch_time_t {
    return dispatch_time(DISPATCH_TIME_NOW, Int64(self * 1e+9))
  }

}
