         return self.eventModel.touchY
     }
 
+    var touchesX: Set<CGFloat> {
+        return self.eventModel.touchesX
+    }
+
+    var touchesY: Set<CGFloat> {
+        return self.eventModel.touchesY
+    }
+
     open override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
         self.eventModel.touchesBegan(touches, with: event)
     }

    var fingerPressed = false
    var touchX: CGFloat = 0.0
    var touchY: CGFloat = 0.0
}

protocol EventModelContract {
    var fingerPressed: Bool { get }
    var touchX: CGFloat { get }
    var touchY: CGFloat { get }
    mutating func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
    mutating func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)
    mutating func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?)

        return self.eventComponents.touchY
    }

    var touchesX: Set<CGFloat> {
        return self.eventComponents.touchesX
    }

    var touchesY: Set<CGFloat> {
        return self.eventComponents.touchesY
    }

    mutating func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.storeTouches(touches)
        self.eventComponents.fingerPressed = true
        self.eventComponents.fingerTapped = true
    }

    mutating func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.storeTouches(touches)
        self.eventComponents.fingerMoved = true
    }

    mutating func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.storeTouches(touches)
        self.eventComponents.fingerTapped = false
        self.eventComponents.fingerReleased = true
    }

    private mutating func storeTouches(_ touches: Set<UITouch>) {
        self.eventComponents.touchesX.removeAll()
        self.eventComponents.touchesY.removeAll()
        for (index, touch) in touches.enumerated() {
            let touchX = touch.location(in: self.dummyView).x
            let touchY = touch.location(in: self.dummyView).y
            self.eventComponents.touchesX.insert(touchX)
            self.eventComponents.touchesY.insert(touchY)
            if index == 0 {
                self.eventComponents.touchX = touchX
                self.eventComponents.touchY = touchY
            }
        }
    }
}

