     public func eventRelationships() -> Promise<[GeocorePlaceEvent]> {
         if let path = buildPath("/places", withSubPath: "/events/relationships") {
             return Geocore.sharedInstance.promisedGET(path)
+        } else {
+            return Promise { fulfill, reject in reject(GeocoreError.InvalidParameter(message: "Expecting id")) }
+        }
+    }
+    
+    public func items() -> Promise<[GeocoreItem]> {
+        if let path = buildPath("/places", withSubPath: "/items") {
+            var dict = super.buildQueryParameters()
+            if let validItems = self.validItems { if validItems { dict["valid_only"] = "true" } }
+            return Geocore.sharedInstance.promisedGET(path, parameters: dict)
         } else {
             return Promise { fulfill, reject in reject(GeocoreError.InvalidParameter(message: "Expecting id")) }
         }

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

        }
    }
    
    private func circleQuery(withPath: String) -> Promise<[GeocorePlace]> {
        if let centerLatitude = self.centerLatitude, centerLongitude = self.centerLongitude, radius = self.radius {
            var dict = super.buildQueryParameters()
            dict["lat"] = centerLatitude
            dict["lon"] = centerLongitude
            dict["radius"] = radius
            if let checkinable = self.checkinable { if checkinable { dict["checkinable"] = "true" } }
            return Geocore.sharedInstance.promisedGET(withPath, parameters: dict)
        } else {
            return Promise { fulfill, reject in reject(GeocoreError.InvalidParameter(message: "Expecting center lat-lon, radius")) }
        }
    }
    
    public func withinCircle() -> Promise<[GeocorePlace]> {
        return self.circleQuery("/places/search/within/circle")
    }
    
    public func intersectsCircle() -> Promise<[GeocorePlace]> {
        return self.circleQuery("/places/search/intersects/circle")
    }
    
    private func rectangleQuery(withPath: String) -> 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
