SUMMARYAn event is an action that alters a program's normal flow of execution. Events can be classified into asynchronous (such as the expiration of a timer or a request to terminate a process) and synchronous (for example, arithmetic and protection faults). When an event occurs during the execution of a process, specialized software is required, either in the kernel, the process, or both. This paper describes the experiences gained in the design, implementation and operation of the event handling mechanism developed for the message-based Lego kernel and distributed system running on the iAPx86 platform. The resulting implementation is a uniform communication interface, treating all events as messages, thereby maintaining Lego's send-receive paradigm. This implementation ensures that event messages follow processes that have migrated and permit the implementation of group event software. Several applications of the event handling software are presented, as is a discussion of the design tradeoffs. The paper concludes that although the basic concept of message-based event handling is well understood, a system's process naming technique can influence how events are handled in a migration and with process groups.