         self.arrowPosition = arrowPosition
         self.backgroundColor = UIColor.clear
         
-        self.frame = calulateFrame(with: self.font)
+        self.frame = calculateFrame(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 calulateFrame(with font: UIFont) -> CGRect {
        // Calculate bubble position
        var x = attachedFrame.origin.x
        var y = attachedFrame.origin.y

            arrowPosition = .bottom
            
            // Restart the entire process
            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 = calculateFrame(with: font)
            y = flippedFrame.origin.y
            height = flippedFrame.size.height
        }
