modify choose_device interface