             case NoTracking
         }
         
-        let needsTracking = Binding.computed({ () -> NeedsTracking in
+        let needsTracking = Binding.computed({ [unowned self] () -> NeedsTracking in
             // If something is observing the mouse position...
             if self.mousePosition.isBound.value {
                 if !self.anyMouseDown.value {

        // Add or remove a tracking rectangle if needsTracking changes or the size of the view changes
        var tracking: NSTrackingArea?;
        
        _trackingObserverLifetime = trackingBounds.observe({ (bounds, needsTracking) in
            switch needsTracking {
            case NeedsTracking.KeepTracking: break;
                

        });
        
        // Tracking bounds tracks whether or not we need a tracking rectangle and whether or not it's active
        let trackingBounds = Binding.computed({ [unowned self] () -> (NSRect, NeedsTracking) in
            let boundsValue = bounds.value as! NSValue;
            let boundsRect  = boundsValue.rectValue;
            return (boundsRect, needsTracking.value);
