def find(self,
             text,
             magicKey=None,
             sourceCountry=None,
             bbox=None,
             location=None,
             distance=3218.69,
             outSR=102100,
             category=None,
             outFields="*",
             maxLocations=20,
             forStorage=False):
        if isinstance(self._securityHandler, (AGOLTokenSecurityHandler, OAuthSecurityHandler)):
            url = self._url + "/find"
            params = {
                "f" : "json",
                "text" : text,
            }
            if not magicKey is None:
                params['magicKey'] = magicKey
            if not sourceCountry is None:
                params['sourceCountry'] = sourceCountry
            if not bbox is None:
                params['bbox'] = bbox
            if not location is None:
                if isinstance(location, Point):
                    params['location'] = location.asDictionary
                if isinstance(location, list):
                    params['location'] = "%s,%s" % (location[0], location[1])
                if not distance is None:
                    params['distance'] = distance
            if not outSR is None:
                params['outSR'] = outSR
            if not category is None:
                params['category'] = category
            if outFields is None:
                params['outFields'] = "*"
            else:
                params['outFields'] = outFields
            if not maxLocations is None:
                params['maxLocations'] = maxLocations
            if not forStorage is None:
                params['forStorage'] = forStorage
            return self._post(url=url,
                                 param_dict=params,
                                 securityHandler=self._securityHandler,
                                 proxy_url=self._proxy_url,
                                 proxy_port=self._proxy_port)
        else:
            raise Exception("This function works on the ArcGIS Online World Geocoder")