     override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
         let point = touches.first!.locationInView(self)
         for (index, section) in sections.enumerate() {
-            if (section.rect.contains(point)) {
+            if (section.bubbleRect.contains(point)) {
                 points[index].touchUpInside?(point: points[index])
                 break
             }

                
                drawLine(start, end: end, color: lineColor)
            }
            let rect = sections[i].rect
            drawPoint(sections[i].point, color: .clearColor())
            drawBubble(rect, backgroundColor: bubbleColor, textColor:titleColor, titleLabel: sections[i].titleLabel)
            
            let descriptionLabel = sections[i].descriptionLabel
            if (descriptionLabel != nil) {
                let descriptionRect = CGRectMake(rect.origin.x, rect.origin.y + rect.height + 3, rect.width, descriptionLabel!.intrinsicContentSize().height)
                drawDescription(descriptionRect, textColor: descriptionColor, descriptionLabel: sections[i].descriptionLabel!)
            }
        }
        

        }
    }
    
    private var sections:[(point:CGPoint, bubbleRect:CGRect, descriptionRect:CGRect?, titleLabel:UILabel, descriptionLabel:UILabel?)] = []
    
    override func drawRect(rect: CGRect) {
        let ctx: CGContextRef = UIGraphicsGetCurrentContext()!
