     case HFSideMenuStatusUnknown
     case HFSideMenuStatusOpen
     case HFSideMenuStatusClose
+  }
+  
+  enum HFSideMenuTransitionType {
+    case HFSideMenuTransitionUnknown
+    case HFSideMenuTransitionToRight
+    case HFSideMenuTransitionResetFromLeft
   }
   
   private var menuWidth: CGFloat

    hideView.addGestureRecognizer(tapGestureRecognizer)
  }
  
  func hideViewOnTap() { // TODO: Toggle
  }
  
  private func setupViewControllerWithSideMenuType(sideMenuType: HFSideMenuType) {

    menuView.sizeThatFits(CGSizeMake(menuWidth, CGRectGetHeight(view.frame)))
  }
  
  // MARK: Toggle
  
  func toggleLeftMenuWithAnimation() {
    toggleMenuWithSideMenuType(.HFSideMenuLeft, animated: true)
  }
  
  private func toggleMenuWithSideMenuType(sideMenuType: HFSideMenuType, animated: Bool) {
    let sideMenuTransitionType = getSideMenuTransitionTypeWithSideMenuType(sideMenuType)
    beginWithSideMenuTransitionType(sideMenuTransitionType, animated: animated) {
    }
  }
  
  // MARK: Transition
  
  private func getSideMenuTransitionTypeWithSideMenuType(sideMenuType: HFSideMenuType) -> HFSideMenuTransitionType {
    if sideMenuType == .HFSideMenuLeft {
      if leftMenuStatus == .HFSideMenuStatusOpen {
        return .HFSideMenuTransitionResetFromLeft
      } else {
        return .HFSideMenuTransitionToRight
      }
    }
    return .HFSideMenuTransitionUnknown
  }
  
  private func beginWithSideMenuTransitionType(sideMenuTransitionType: HFSideMenuTransitionType, animated: Bool, completion: () -> Void) {
  }
  
}
