I had the thought that co_broadcast is supposed to support polymorphism (components at least). Also, there's a point at which the scheduler and executor are somewhat "synchronizing". We could implement a send/receive operation using teams and co_broadcast. I.e. the two images involved create and join a team, and then call co_broadcast. This would allow us to support polymorphic payloads, and users wouldn't have to manually (de)serialize their data.