Yes, my question on agent portrayal can apply to arbitrary objects portrayal also. I think I have gotten my answer. The main point is the method "setupPortrayals()" in GUIState does not need to know exactly what are the objects or the number of the objects. It needs only to know the classifications such as the classes of the objects then it uses "setPortrayalForClass(..)" or " setPortrayalForAll(...) to tell the way to portrayal them. Thanks Ming