             arrowPosition = .bottom
             
             // Restart the entire process
-            let flippedFrame = calulateFrame(with: font)
+            let flippedFrame = calculateFrame(with: font)
             y = flippedFrame.origin.y
             height = flippedFrame.size.height
         } else if (arrowPosition == .bottom && y < 0) {
             arrowPosition = .top
             
             // Restart the entire process
-            let flippedFrame = calulateFrame(with: font)
+            let flippedFrame = calculateFrame(with: font)
             y = flippedFrame.origin.y
             height = flippedFrame.size.height
         }

        self.arrowPosition = arrowPosition
        self.backgroundColor = UIColor.clear
        
        self.frame = calulateFrame(with: self.font)
        fixFrameIfOutOfBounds()
        
        // Make it pass touch events through to the CoachMarksView

        return CGSize(width: result.width + CGFloat(PADDING * 3.0), height: result.height + CGFloat(PADDING * 2.5))
    }

    func calculateFrame(with font: UIFont) -> CGRect {
        // Calculate bubble position
        var x = attachedFrame.origin.x
        var y = attachedFrame.origin.y
