The coolest thing running here is interobject communication. Objects are stuffed together into an Environment. When the Environment receives an event, all Objects living in that Environment receive it as well. The Objects are then free to respond, often by sending more events to the Environment. For details, Use the Source. Events are actually one kind of Action that can be sent to an Environment. There are several different ways to dispatch Events, for instance, by using slightly different Actions to carry them to the Environment. Other non-Event Actions are for adding and removing Objects.