The coordination among a set of concurrent objects is commonly expressed through language specific synchronization mechanisms in the objects implementation. Unfortunately, such an approach makes it difficult to reuse these objects in applications with different coordination patterns. Moreover, the algorithms used for object coordination are inextricably linked to the original object implementation and cannot themselves be easily reused for the coordination of objects with different implementations. In this paper, we propose a model that promotes the reuse of both objects and coordination patterns. The model allows objects to synchronize their execution with events occurring in other objects (e.g. state changes and method invocations) in a way that is compatible with local object synchronization constraints and respects encapsulation. The model also supports the use of class inheritance while avoiding most of the problems of combining inheritance with synchronization. Finally, we consider the use of the model in the area of distributed multimedia applications. In this area active objects encapsulate media processing activities while a synchronous language is used to specify their temporal coordination.