 public protocol VisibleMediaObject: MediaObject, Visible, Touchable, Mask, AddRemoveSubview {
     
 }
+
+//MARK: - Gesture Actions (typealiases)
 public typealias TapAction = (location: C4Point) -> ()
 public typealias PanAction = (location: C4Point, translation: C4Point, velocity: C4Point) -> ()
 public typealias PinchAction = (location: C4Point, scale: Double, velocity: Double) -> ()

    
    public init(_ direction: UISwipeGestureRecognizerDirection) {
        switch direction {
            case UISwipeGestureRecognizerDirection.Left:
                self = Left
            case UISwipeGestureRecognizerDirection.Right:
                self = Right
            case UISwipeGestureRecognizerDirection.Up:
                self = Up
            default:
                self = Down
        }
    }
}

public struct Swipe {
    weak public var gesture: UISwipeGestureRecognizer?
    
    public init(_ recognizer: UISwipeGestureRecognizer) {
        gesture = recognizer
        direction = .Left
        numberOfTouchesRequired = 1
    }

    public var direction : SwipeDirection {
        didSet {
            switch direction {

        numberOfTouchesRequired = 1
        numberOfTapsRequired = 0
        allowableMovement = 10.0
    }
}

