adding qrcode generation