add select API, with language support