support using string directly as an argument and improve API names.