   /// The poptip bounces following its direction. The bounce offset can be provided optionally
   case bounce(CGFloat?)
   /// The poptip floats in place. The float offset can be provided optionally. Defaults to 8 points
-  case float(CGFloat?)
+  case float(offsetX: CGFloat?, offsetY: CGFloat?)
   /// The poptip pulsates by changing its size. The maximum amount of pulse increase can be provided optionally. Defaults to 1.1 (110% of the original size)
   case pulse(CGFloat?)
   /// No animation

    case .bounce(let offset):
      shouldBounce = true
      bounceAnimation(offset: offset ?? DefaultBounceOffset)
    case .float(let offset):
      floatAnimation(offset: offset ?? DefaultFloatOffset)
    case .pulse(let offset):
      pulseAnimation(offset: offset ?? DefaultPulseOffset)
    case .none:

    }
  }
  
  fileprivate func floatAnimation(offsetX: CGFloat, offsetY: CGFloat) {
    var offsetX = offsetX
    var offsetY = offsetY
    switch direction {
    case .up, .none:
      offsetY = -offset
