         //moved into, out of, within, or without
         let moveLocation = theEvent.allTouches()?.first?.locationInView(nil)
         if theTarget.frame.contains(moveLocation!){
-            if theTarget.dragEntered!{
+            if theTarget.dragEntered{
                 theControlEventType = UIControlEvents.TouchDragInside
             }
             else{

}

func getViewByUniqueID(containingView:UIView, anID:String) ->UIView?{
    let filteredSubviews = containingView.subviews.filter(){$0.uniqueID == anID}
    if filteredSubviews.count > 0{
        return filteredSubviews[0]

extension UIView {
    private struct AssociatedKeys {
        static var uniqueID:String? = nil
        static var dragEntered:Bool = false
        static var dragExited:Bool = false
    }
    
    var uniqueID: String? {
        get {
            return objc_getAssociatedObject(self, &AssociatedKeys.uniqueID) as? String
        }
        set {
            if let newValue = newValue {
                objc_setAssociatedObject(
