     return contentOffsetProxyAnim.velocity.value
   }
   public var activeFrame: CGRect {
+    let activeFrame: CGRect
     if let activeFrameSlop = activeFrameSlop {
-      return CGRect(x: visibleFrame.origin.x + activeFrameSlop.left, y: visibleFrame.origin.y + activeFrameSlop.top, width: visibleFrame.width - activeFrameSlop.left - activeFrameSlop.right, height: visibleFrame.height - activeFrameSlop.top - activeFrameSlop.bottom)
-    } else if wabble {
-      return visibleFrame.insetBy(dx:-200, dy: -200)
+      activeFrame = CGRect(x: visibleFrame.origin.x + activeFrameSlop.left, y: visibleFrame.origin.y + activeFrameSlop.top, width: visibleFrame.width - activeFrameSlop.left - activeFrameSlop.right, height: visibleFrame.height - activeFrameSlop.top - activeFrameSlop.bottom)
     } else {
-      return visibleFrame
+      activeFrame = visibleFrame
+    }
+    if wabble {
+      return activeFrame.insetBy(dx:-200, dy: -200)
+    } else {
+      return activeFrame
     }
   }
 

      }
    }
  }
  public override var contentOffset: CGPoint{
    didSet{
      contentOffsetProxyAnim.animateTo(contentOffset, stiffness:400, damping:40)
      print(contentOffset, scrollVelocity)
    }
  }
  public var visibleFrame: CGRect {



  public func wabbleRect(_ indexPath: IndexPath) -> CGRect {
    let cellFrame = frameForCell(at: indexPath)!
    let cellScreenCenter = absoluteLocation(for: cellFrame.center)
    let cellOffset = cellScreenCenter.distance(screenDragLocation) * scrollVelocity / 5000
    return CGRect(origin: cellFrame.origin + cellOffset, size: cellFrame.size)
  }

