There are 2 ways to facilitate communication between cores in a MultiCore app: Interfaces and Pipes.
With interfaces, at least one core (modules and the main app are both 'cores') has a reference to the other, typed to an interface not an implementation, and invokes methods on that reference.
With the pipes utility, cores are 'plumbed' to each other using 'pipelines' composed of 'pipe fittings' that perform various functions such as filtering, splitting merging, queueing, etc. Cores communicate by sending messages down the pipelines.
Here's a short overview of MultiCore and the options for communications infrastructure:http://puremvc.tv/#P002/