public Rectangle findSling()
    {
        if (_sling != null) return _sling;
        
        // use the highest sling typed component
        int minY = 999999;
        ConnectedComponent sling = null;
        for (ConnectedComponent c : _components)
        {
            int top = c.boundingBox()[1];
            if (c.getType() == ImageSegmenter.SLING 
                && top < minY)
            {
                minY = top;
                sling = c;
            }
        }
        if (sling == null)
            return null;
            
        _draw.add(sling);
        _drawShape.add(sling.getBody());
        
        // find bounding box of the slingshot and reference point
        int bound[] = sling.boundingBox();
        _sling = new Rectangle(bound[0], bound[1], bound[2]-bound[0], bound[3]-bound[1]);
        _ref = new Point();
        _ref.x = (int) (_sling.x + _sling.height * X_OFFSET);
        _ref.y = (int) (_sling.y + _sling.height * Y_OFFSET);
        
        return _sling;
    }