add qrcode support