     return lhs.rawValue == rhs.rawValue
 }
 
-public struct ZLSwipeableViewDirection : RawOptionSetType {
+public struct ZLSwipeableViewDirection : RawOptionSetType, Printable {
     public var rawValue: UInt
     
     public init(rawValue: UInt) {

    
    override public func layoutSubviews() {
        super.layoutSubviews()
        
        containerView.frame = bounds
    }
    
    // MARK: Animator
    private var animator: UIDynamicAnimator!
    // anchorView
    static private let anchorViewWidth = CGFloat(1000)
    private var anchorView = UIView(frame: CGRect(x: 0, y: 0, width: anchorViewWidth, height: anchorViewWidth))
    private var anchorContainerView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))

    static func fromPoint(point: CGPoint) -> ZLSwipeableViewDirection {
        switch (point.x, point.y) {
        case let (x, y) where abs(x)>=abs(y) && x>=0:
            return .Right
        case let (x, y) where abs(x)>=abs(y) && x<0:
            return .Left
        case let (x, y) where abs(x)<abs(y) && y<=0:
            return .Up
        case let (x, y) where abs(x)<abs(y) && y>0:
