Modify design for purchase by introducing `PurchaseOrder`.