Fixed some layout bugs with BubbleView (always allow the arrow to have some room to display) and refactored a bit