 
     // 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) {

        setup()
    }
    
    required public init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setup()
    }

            let degree = CGFloat(1), offset = CGPoint(x: 0, y: CGRectGetHeight(swipeableView.bounds)*0.3)
            switch index {
            case 0:
                rotateView(view, forDegree: 0, duration: 0.4, offsetFromCenter: offset, swipeableView: swipeableView)
            case 1:
                rotateView(view, forDegree: degree, duration: 0.4, offsetFromCenter: offset, swipeableView: swipeableView)
            case 2:
                rotateView(view, forDegree: -degree, duration: 0.4, offsetFromCenter: offset, swipeableView: swipeableView)
            default:
                rotateView(view, forDegree: 0, duration: 0.4, offsetFromCenter: offset, swipeableView: swipeableView)
            }
        }
    }()
