QR generation

Addresses #708