Re-implement vouchers. close #159
Add vouchers.
Merge branch 'develop' into voucher
Merge branch 'develop' into voucher