I do think it's important to keep the ordering right here (so to place the new factory next to the one it's associated with).. that said, 

we could potentially start iteration on the array, and if we encounter the need for extending the factories (so if one of the `process` calls returns more than one factory, only then copy it to a linked list and continue the iteration and at the end copy back to an array (though I'm wondering whether the complexity outweighs the benefit here... also I wonder what would be the avg use case and wether this will on avg be more effective than just shifting elements on the array)