passage purchase refactor