add client-side-friendly text2city functionality