refactory the relationship around offer