We've talked about separating the "code" from the PROGRAM structure heap item/memory, so that you can re-use the same code logic, but with multiple PROGRAM based structures (basically a nested PROGRAM structure inside your AOI structure, then have 10 copies/instances of the AOI structure).
All this is in the "TODO" list, but is non-trivial.