     override init(frame: CGRect) {
         super.init(frame: frame)
         
+        self.minSize = frame.size.width
         self.minOriginCoord = frame.origin
     }
 

        
        if didBeginOverlapping && isStillOverlapping {
            var newSize = size + sizeDifference
            var newX = self.frame.origin.x - (sizeDifference/2)
            var newY = self.frame.origin.y - (sizeDifference/2)
            
            if newSize > 32 {
                newX = self.maxOriginCoord!.x
                newY = self.maxOriginCoord!.y
                newSize = 32
            } else if newSize < 16 {
                newX = self.minOriginCoord!.x
                newY = self.minOriginCoord!.y
                newSize = 16
            }
            
            self.frame = CGRectMake(newX, newY, newSize, newSize)
        } else {
            let isFarOut = tailPosition < self.frame.origin.x
            if isFarOut && size < 32 {
                UIView.animateWithDuration(0.1, animations: { () -> Void in
                    self.frame = CGRectMake(self.maxOriginCoord!.x, self.maxOriginCoord!.y, 32, 32)
                })
            }
            
            let isFarOverlapped = tailPosition > self.frame.origin.x + size
            if isFarOverlapped && size > 16 {
                self.frame = CGRectMake(self.minOriginCoord!.x, self.minOriginCoord!.y, 16, 16)
            }
        }
    }

    var minOriginCoord: CGPoint?
    var maxOriginCoord: CGPoint? {
        get {
            return CGPointMake(minOriginCoord!.x - (minSize! / 2), minOriginCoord!.y - (minSize! / 2))
        }
    }
    
    var minSize: CGFloat?
    var maxSize: CGFloat? {
        get {
            return 2 * minSize!
        }
    }
    
