It is now well known that it is not easy to manage the interactions between objects in conventional object-oriented languages
[Rum92,Bos94]. The interactions are tangled in the code of the objects, specializing classes, sending messages to others objects in the
code of methods or referencing interacting objects by specific attributes. The consequence is that the semantic of the objects
participating to an interaction is modified and the application maintainability and extensibility are harder.