 
     // MARK: BitwiseOperationsType
     public static var allZeros: ZLSwipeableViewDirection {
-        return self(rawValue: 0)
-    }
-
-    public static var None: ZLSwipeableViewDirection       { return self(rawValue: 0b0000) }
-    public static var Left: ZLSwipeableViewDirection       { return self(rawValue: 0b0001) }
-    public static var Right: ZLSwipeableViewDirection      { return self(rawValue: 0b0010) }
-    public static var Up: ZLSwipeableViewDirection         { return self(rawValue: 0b0100) }
-    public static var Down: ZLSwipeableViewDirection       { return self(rawValue: 0b1000) }
-    public static var Horizontal: ZLSwipeableViewDirection { return Left | Right }
-    public static var Vertical: ZLSwipeableViewDirection   { return Up | Down }
-    public static var All: ZLSwipeableViewDirection        { return Horizontal | Vertical }
+        return self.init(rawValue: 0)
+    }
+
+    public static var None: ZLSwipeableViewDirection       { return self.init(rawValue: 0b0000) }
+    public static var Left: ZLSwipeableViewDirection       { return self.init(rawValue: 0b0001) }
+    public static var Right: ZLSwipeableViewDirection      { return self.init(rawValue: 0b0010) }
+    public static var Up: ZLSwipeableViewDirection         { return self.init(rawValue: 0b0100) }
+    public static var Down: ZLSwipeableViewDirection       { return self.init(rawValue: 0b1000) }
+    public static var Horizontal: ZLSwipeableViewDirection { return [Left, Right] }
+    public static var Vertical: ZLSwipeableViewDirection   { return [Up , Down] }
+    public static var All: ZLSwipeableViewDirection        { return [Horizontal , Vertical] }
     
     public static func fromPoint(point: CGPoint) -> ZLSwipeableViewDirection {
         switch (point.x, point.y) {

        func toRadian(degree: CGFloat) -> CGFloat {
            return degree * CGFloat(M_PI/100)
        }
        func rotateView(view: UIView, forDegree degree: CGFloat, #duration: NSTimeInterval, offsetFromCenter offset: CGPoint, swipeableView: ZLSwipeableView) {
            UIView.animateWithDuration(duration, delay: 0, options: .AllowUserInteraction, animations: {
                view.center = swipeableView.convertPoint(swipeableView.center, fromView: swipeableView.superview)
                var transform = CGAffineTransformMakeTranslation(offset.x, offset.y)

        }
        
        for i in (0..<views.count) {
            let view = views[i]
            view.userInteractionEnabled = i == 0
            animateView(view: view, index: i, views: views, swipeableView: self)
        }
