When you create an object that object is picked for that event, and you can do anything you like to that object within that event, so long as the scope is within that tier, or sub tier of that tier. If you create a subevent on the same tier then it is no longer picked. Also, new instances will be picked, and old ones are taken out of the sol.
If you wish to use functions then you must do something like call a system wait as it takes a tick to register for conditional picking.
I don't consider the way it is as bad design. Its linear, and easy to follow. You create something, and then you talk about...
On the other hand, calling functions to modify instances is like nightmare fuel.
Imo, functions should only be called to reuse code, or to break picking.
You're doing one of those things.