  In this article we extend the framework of execution of concurrent functions
on different abstract levels from previous work with communication between the
concurrent functions. We classify the communications and identify problems that
can occur with these communications. We present solutions for the problems
based on encapsulation and abstraction to obtain correct behaviours. The result
is that communication on a low level of abstraction in the form of shared
memory and message passing is dealt with on an higher level of abstraction.
