             dict["min_lon"] = minlon
             dict["max_lon"] = maxlon
             if let checkinable = self.checkinable { if checkinable { dict["checkinable"] = "true" } }
-            return Geocore.sharedInstance.promisedGET("/places/search/within/rect", parameters: dict)
-        } else {
-            return Promise { fulfill, reject in reject(GeocoreError.InvalidParameter(message: "Expecting center lat-lon")) }
-        }
+            return Geocore.sharedInstance.promisedGET(withPath, parameters: dict)
+        } else {
+            return Promise { fulfill, reject in reject(GeocoreError.InvalidParameter(message: "Expecting min/max lat-lon")) }
+        }
+    }
+    
+    public func withinRectangle() -> Promise<[GeocorePlace]> {
+        return self.rectangleQuery("/places/search/within/rect")
+    }
+    
+    public func intersectsRectangle() -> Promise<[GeocorePlace]> {
+        return self.rectangleQuery("/places/search/intersects/rect")
     }
     
     public func events() -> Promise<[GeocoreEvent]> {

        }
    }
    
    public func withinRectangle() -> Promise<[GeocorePlace]> {
        if let minlat = self.minimumLatitude, maxlat = self.maximumLatitude, minlon = self.self.minimumLongitude, maxlon = self.maximumLongitude  {
            var dict = super.buildQueryParameters()
            dict["min_lat"] = minlat

    private(set) public var maximumLongitude: Double?
    
    private(set) public var checkinable: Bool?
    private(set) public var validItems: Bool?
    
    public func withCenter(latitude latitude: Double, longitude: Double) -> Self {
        self.centerLatitude = latitude
