As was discussed in MultiCaster, it is very useful (especially in distributed applications) to organize agents in "groups".
From DougLea's paper of the same name:
An object-oriented application may consist of a sea of objects; perhaps thousands or millions of objects. Subsets of these objects often possess discernible structure that is not well-captured by common object- and class-based concepts and notations... ...a group is a special kind of set, consisting of one or more objects ( members) bearing a common abstract relation, common external access policies, common connectivity, and common internal policies.
You can read the paper here: http://gee.cs.oswego.edu/dl/groups/groups.html
Some practical examples of "objects in groups":