Sure, I think that having one callback in OrderItem and always de-duping messages is fine for now. Let's just keep Order.generate_receipt_instructions return the deduped set. We can return the dict in a different method when we have an actual use case for it, and decide then whether it makes sense to add a separate method on OrderItem that generates that.