Add Purchase factory
Add validation specs to Purchase spec
Update some delegation specs