This is a very good question Ronauli Silva. IMO, the first iteration should be as simple as possible. One should look at where the change requirements are coming from and adopt according to that.
If the new/change of requirement is causing us to modify our existing code (a lot), its violating the
open to suggestion, close for extension principle. In our new implementation, we can create a new offer without changing existing code.
Hope this helps!!