more interface things, add qr code generation