* Don't re-create visibility observer for no reason * `IntersectionObserver.unobserve` instead of `.disconnect`
* Fix problems with visibility checking code * Tear out old contract tracking stuff per James * Use `useEvent` in VisibilityObserver per James suggestion