     }
     
     @discardableResult
-    public func add(point: Point) -> Bool {
-        return root.add(point: point)
+    public func add(_ annotation: MKAnnotation) -> Bool {
+        return root.add(annotation)
     }
     
-    public func points(inRect rect: Rect) -> [Point] {
-        return root.points(inRect: rect)
+    public func annotations(in rect: MKMapRect) -> [MKAnnotation] {
+        return root.annotations(in: rect)
     }
     
 }

    
}

extension QuadTreeNode: PointsContainer {
    
    @discardableResult
    func add(point: Point) -> Bool {
        if !rect.containts(point: point) {
            return false
        }
        

        }
    }
    
    func annotations(in rect: MKMapRect) -> [MKAnnotation] {
        
        // if the node's rect and the given rect don't intersect, return an empty array,
        // because there can't be any points that lie the node's (or its children's) rect and
        // in the given rect
        if !self.rect.intersects(rect) {
            return []
        }
        
        var result = [MKAnnotation]()
        
        // collect the node's points that lie in the rect
        for annotation in annotations {
            if rect.contains(annotation.coordinate) {
                result.append(annotation)
            }
        }
        
